blob: 02e9cfd0b1aca07582e6b888e47fb824b39995e8 [file] [log] [blame]
// 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