blob: d476554f5cbac8a0235be272e5ce1d615bd130a2 [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_CHILDREN_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(&snapshot);
// Nested one is ignored.
EXPECT_EQ(1U, snapshot.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(&snapshot);
EXPECT_EQ(2U, snapshot.tasks.size());
}
} // namespace test
} // namespace common
} // namespace mojo