blob: 01f5ad1f53f589374dd2c29b05540748cfe98551 [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 "components/tracing/common/graphics_memory_dump_provider_android.h"
#include "base/trace_event/memory_allocator_dump.h"
#include "base/trace_event/process_memory_dump.h"
#include "base/trace_event/traced_value.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace tracing {
using testing::Contains;
using testing::Eq;
using testing::ByRef;
using base::trace_event::MemoryAllocatorDump;
TEST(GraphicsMemoryDumpProviderTest, ParseResponse) {
const char* kDumpBaseName = GraphicsMemoryDumpProvider::kDumpBaseName;
base::trace_event::ProcessMemoryDump pmd(
{base::trace_event::MemoryDumpLevelOfDetail::DETAILED});
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);
MemoryAllocatorDump::Entry total("memtrack_total", "bytes", 12);
MemoryAllocatorDump::Entry pss("memtrack_pss", "bytes", 34);
ASSERT_THAT(mad->entries(), Contains(Eq(ByRef(total))));
ASSERT_THAT(mad->entries(), Contains(Eq(ByRef(pss))));
}
{
// Check the "gl" row.
auto* mad = pmd.GetAllocatorDump(kDumpBaseName + std::string("gl"));
ASSERT_TRUE(mad);
MemoryAllocatorDump::Entry total("memtrack_total", "bytes", 56);
MemoryAllocatorDump::Entry pss("memtrack_pss", "bytes", 78);
ASSERT_THAT(mad->entries(), Contains(Eq(ByRef(total))));
ASSERT_THAT(mad->entries(), Contains(Eq(ByRef(pss))));
}
// 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