blob: 090e58695de5375f49087dcd133f9a1905118a42 [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 "mojo/common/task_tracker.h"
#include "base/tracked_objects.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mojo {
namespace common {
namespace test {
class TaskTrackerTest : public testing::Test {
public:
void SetUp() override {
tracked_objects::ThreadData::InitializeAndSetTrackingStatus(
tracked_objects::ThreadData::PROFILING_ACTIVE);
}
void TearDown() override {
tracked_objects::ThreadData::InitializeAndSetTrackingStatus(
tracked_objects::ThreadData::DEACTIVATED);
}
};
TEST_F(TaskTrackerTest, Nesting) {
intptr_t id0 = TaskTracker::StartTracking("Foo", "foo.cc", 1, nullptr);
intptr_t id1 = TaskTracker::StartTracking("Bar", "bar.cc", 1, nullptr);
TaskTracker::EndTracking(id1);
TaskTracker::EndTracking(id0);
tracked_objects::ProcessDataSnapshot snapshot;
tracked_objects::ThreadData::Snapshot(0, &snapshot);
// Nested one is ignored.
EXPECT_EQ(1U, snapshot.phased_snapshots[0].tasks.size());
}
TEST_F(TaskTrackerTest, Twice) {
intptr_t id0 = TaskTracker::StartTracking("Foo", "foo.cc", 1, nullptr);
TaskTracker::EndTracking(id0);
intptr_t id1 = TaskTracker::StartTracking("Bar", "bar.cc", 1, nullptr);
TaskTracker::EndTracking(id1);
tracked_objects::ProcessDataSnapshot snapshot;
tracked_objects::ThreadData::Snapshot(0, &snapshot);
EXPECT_EQ(2U, snapshot.phased_snapshots[0].tasks.size());
}
} // namespace test
} // namespace common
} // namespace mojo