// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/trace_event/memory_allocator_dump.h" #include "base/trace_event/process_memory_dump.h" #include "base/trace_event/trace_event_argument.h" #include "components/tracing/graphics_memory_dump_provider_android.h" #include "testing/gtest/include/gtest/gtest.h" namespace tracing { TEST(GraphicsMemoryDumpProviderTest, ParseResponse) { const char* kDumpBaseName = GraphicsMemoryDumpProvider::kDumpBaseName; base::trace_event::ProcessMemoryDump pmd(nullptr); auto instance = GraphicsMemoryDumpProvider::GetInstance(); char buf[] = "graphics_total 12\ngraphics_pss 34\ngl_total 56\ngl_pss 78"; instance->ParseResponseAndAddToDump(buf, strlen(buf), &pmd); // Check the "graphics" row. auto mad = pmd.GetAllocatorDump(kDumpBaseName + std::string("graphics")); ASSERT_TRUE(mad); std::string json; mad->attributes_for_testing()->AppendAsTraceFormat(&json); ASSERT_EQ( "{\"memtrack_pss\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":" "\"22\"}," "\"memtrack_total\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":" "\"c\"}}", json); // Check the "gl" row. mad = pmd.GetAllocatorDump(kDumpBaseName + std::string("gl")); ASSERT_TRUE(mad); json = ""; mad->attributes_for_testing()->AppendAsTraceFormat(&json); ASSERT_EQ( "{\"memtrack_pss\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":" "\"4e\"}," "\"memtrack_total\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":" "\"38\"}}", json); // Test for truncated input. pmd.Clear(); instance->ParseResponseAndAddToDump(buf, strlen(buf) - 14, &pmd); ASSERT_TRUE(pmd.GetAllocatorDump(kDumpBaseName + std::string("graphics"))); ASSERT_FALSE(pmd.GetAllocatorDump(kDumpBaseName + std::string("gl"))); } } // namespace tracing