thread_id_name_manager_unittest.cc 1.33 KB
Newer Older
gejun's avatar
gejun committed
1 2 3 4
// Copyright (c) 2012 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.

5
#include "butil/threading/thread_id_name_manager.h"
gejun's avatar
gejun committed
6

7
#include "butil/threading/platform_thread.h"
gejun's avatar
gejun committed
8 9 10 11 12 13 14
#include <gtest/gtest.h>

typedef testing::Test ThreadIdNameManagerTest;

namespace {

TEST_F(ThreadIdNameManagerTest, ThreadNameInterning) {
15
  butil::ThreadIdNameManager* manager = butil::ThreadIdNameManager::GetInstance();
gejun's avatar
gejun committed
16

17 18
  butil::PlatformThreadId a_id = butil::PlatformThread::CurrentId();
  butil::PlatformThread::SetName("First Name");
gejun's avatar
gejun committed
19 20
  std::string version = manager->GetName(a_id);

21
  butil::PlatformThread::SetName("New name");
gejun's avatar
gejun committed
22
  EXPECT_NE(version, manager->GetName(a_id));
23
  butil::PlatformThread::SetName("");
gejun's avatar
gejun committed
24 25 26
}

TEST_F(ThreadIdNameManagerTest, ResettingNameKeepsCorrectInternedValue) {
27
  butil::ThreadIdNameManager* manager = butil::ThreadIdNameManager::GetInstance();
gejun's avatar
gejun committed
28

29 30
  butil::PlatformThreadId a_id = butil::PlatformThread::CurrentId();
  butil::PlatformThread::SetName("Test Name");
gejun's avatar
gejun committed
31 32
  std::string version = manager->GetName(a_id);

33
  butil::PlatformThread::SetName("New name");
gejun's avatar
gejun committed
34 35
  EXPECT_NE(version, manager->GetName(a_id));

36
  butil::PlatformThread::SetName("Test Name");
gejun's avatar
gejun committed
37 38
  EXPECT_EQ(version, manager->GetName(a_id));

39
  butil::PlatformThread::SetName("");
gejun's avatar
gejun committed
40 41 42
}

}  // namespace