sample_metadata_unittest.cc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/profiler/sample_metadata.h"
  5. #include "base/metrics/metrics_hashes.h"
  6. #include "base/threading/platform_thread.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace base {
  9. TEST(SampleMetadataTest, ScopedSampleMetadata) {
  10. MetadataRecorder::ItemArray items;
  11. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  12. PlatformThread::CurrentId())
  13. .GetItems(&items));
  14. {
  15. ScopedSampleMetadata m("myname", 100, SampleMetadataScope::kProcess);
  16. ASSERT_EQ(1u, MetadataRecorder::MetadataProvider(
  17. GetSampleMetadataRecorder(), PlatformThread::CurrentId())
  18. .GetItems(&items));
  19. EXPECT_EQ(HashMetricName("myname"), items[0].name_hash);
  20. EXPECT_FALSE(items[0].key.has_value());
  21. EXPECT_EQ(100, items[0].value);
  22. }
  23. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  24. PlatformThread::CurrentId())
  25. .GetItems(&items));
  26. }
  27. TEST(SampleMetadataTest, ScopedSampleMetadataWithKey) {
  28. MetadataRecorder::ItemArray items;
  29. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  30. PlatformThread::CurrentId())
  31. .GetItems(&items));
  32. {
  33. ScopedSampleMetadata m("myname", 10, 100, SampleMetadataScope::kProcess);
  34. ASSERT_EQ(1u, MetadataRecorder::MetadataProvider(
  35. GetSampleMetadataRecorder(), PlatformThread::CurrentId())
  36. .GetItems(&items));
  37. EXPECT_EQ(HashMetricName("myname"), items[0].name_hash);
  38. ASSERT_TRUE(items[0].key.has_value());
  39. EXPECT_EQ(10, *items[0].key);
  40. EXPECT_EQ(100, items[0].value);
  41. }
  42. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  43. PlatformThread::CurrentId())
  44. .GetItems(&items));
  45. }
  46. TEST(SampleMetadataTest, SampleMetadata) {
  47. MetadataRecorder::ItemArray items;
  48. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  49. PlatformThread::CurrentId())
  50. .GetItems(&items));
  51. SampleMetadata metadata("myname", SampleMetadataScope::kProcess);
  52. metadata.Set(100);
  53. ASSERT_EQ(1u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  54. PlatformThread::CurrentId())
  55. .GetItems(&items));
  56. EXPECT_EQ(HashMetricName("myname"), items[0].name_hash);
  57. EXPECT_FALSE(items[0].key.has_value());
  58. EXPECT_EQ(100, items[0].value);
  59. metadata.Remove();
  60. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  61. PlatformThread::CurrentId())
  62. .GetItems(&items));
  63. }
  64. TEST(SampleMetadataTest, SampleMetadataWithKey) {
  65. MetadataRecorder::ItemArray items;
  66. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  67. PlatformThread::CurrentId())
  68. .GetItems(&items));
  69. SampleMetadata metadata("myname", SampleMetadataScope::kProcess);
  70. metadata.Set(10, 100);
  71. ASSERT_EQ(1u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  72. PlatformThread::CurrentId())
  73. .GetItems(&items));
  74. EXPECT_EQ(HashMetricName("myname"), items[0].name_hash);
  75. ASSERT_TRUE(items[0].key.has_value());
  76. EXPECT_EQ(10, *items[0].key);
  77. EXPECT_EQ(100, items[0].value);
  78. metadata.Remove(10);
  79. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  80. PlatformThread::CurrentId())
  81. .GetItems(&items));
  82. }
  83. TEST(SampleMetadataTest, SampleMetadataWithThreadId) {
  84. MetadataRecorder::ItemArray items;
  85. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  86. PlatformThread::CurrentId())
  87. .GetItems(&items));
  88. SampleMetadata metadata("myname", SampleMetadataScope::kThread);
  89. metadata.Set(100);
  90. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  91. kInvalidThreadId)
  92. .GetItems(&items));
  93. ASSERT_EQ(1u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  94. PlatformThread::CurrentId())
  95. .GetItems(&items));
  96. EXPECT_EQ(HashMetricName("myname"), items[0].name_hash);
  97. EXPECT_FALSE(items[0].key.has_value());
  98. EXPECT_EQ(100, items[0].value);
  99. metadata.Remove();
  100. ASSERT_EQ(0u, MetadataRecorder::MetadataProvider(GetSampleMetadataRecorder(),
  101. PlatformThread::CurrentId())
  102. .GetItems(&items));
  103. }
  104. } // namespace base