| // Copyright 2019 The Fuchsia 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 "src/lib/cobalt/cpp/cobalt_event_builder.h" |
| |
| #include <gtest/gtest.h> |
| |
| namespace cobalt { |
| |
| using fuchsia::cobalt::CobaltEvent; |
| using fuchsia::cobalt::CountEvent; |
| using fuchsia::cobalt::HistogramBucket; |
| |
| const uint32_t kMetricId = 123; |
| const uint32_t kDimension1 = 456; |
| const uint32_t kDimension2 = 789; |
| const std::string kComponent = "Component1"; |
| |
| TEST(CobaltEventBuilder, CountEvent) { |
| uint64_t duration = 10101; |
| uint64_t count = 100; |
| |
| CobaltEvent event; |
| event.metric_id = kMetricId; |
| CountEvent payload; |
| payload.period_duration_micros = duration; |
| payload.count = count; |
| event.payload.set_event_count(std::move(payload)); |
| |
| ASSERT_TRUE(fidl::Equals(event, CobaltEventBuilder(kMetricId).as_count_event(duration, count))); |
| } |
| |
| TEST(CobaltEventBuilder, ElapsedTimeEvent) { |
| uint64_t elapsed_micros = 5678; |
| |
| CobaltEvent event; |
| event.metric_id = kMetricId; |
| event.event_codes.push_back(kDimension1); |
| event.event_codes.push_back(kDimension2); |
| event.payload.set_elapsed_micros(elapsed_micros); |
| |
| ASSERT_TRUE(fidl::Equals(event, CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .as_elapsed_time(elapsed_micros))); |
| } |
| |
| TEST(CobaltEventBuilder, FrameRateEvent) { |
| float fps = 29.98; |
| |
| CobaltEvent event; |
| event.metric_id = kMetricId; |
| event.event_codes.push_back(kDimension1); |
| event.event_codes.push_back(kDimension2); |
| event.component = kComponent; |
| event.payload.set_fps(fps); |
| |
| ASSERT_TRUE(fidl::Equals(event, CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .with_component(kComponent) |
| .as_frame_rate(fps))); |
| } |
| |
| TEST(CobaltEventBuilder, MemoryUsage) { |
| int64_t bytes_used = 13428; |
| |
| CobaltEvent event; |
| event.metric_id = kMetricId; |
| event.event_codes.push_back(kDimension1); |
| event.event_codes.push_back(kDimension2); |
| event.component = kComponent; |
| event.payload.set_memory_bytes_used(bytes_used); |
| |
| ASSERT_TRUE(fidl::Equals(event, CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .with_component(kComponent) |
| .as_memory_usage(bytes_used))); |
| } |
| |
| TEST(CobaltEventBuilder, IntHistogram) { |
| std::vector<HistogramBucket> int_histogram; |
| int_histogram.push_back({0, 10}); |
| int_histogram.push_back({1, 20}); |
| int_histogram.push_back({2, 30}); |
| int_histogram.push_back({3, 40}); |
| |
| CobaltEvent event; |
| event.metric_id = kMetricId; |
| event.event_codes.push_back(kDimension1); |
| event.event_codes.push_back(kDimension2); |
| event.component = kComponent; |
| event.payload.set_int_histogram(int_histogram); |
| |
| ASSERT_TRUE(fidl::Equals(event, CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .with_component(kComponent) |
| .as_int_histogram(int_histogram))); |
| } |
| |
| TEST(CobaltEventBuilder, Clone) { |
| uint64_t elapsed_micros = 5678; |
| auto b = std::move(CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .with_component(kComponent)); |
| |
| ASSERT_FALSE(fidl::Equals(b.as_elapsed_time(elapsed_micros), b.as_elapsed_time(elapsed_micros))); |
| |
| auto b2 = std::move(CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .with_component(kComponent)); |
| |
| ASSERT_TRUE( |
| fidl::Equals(b2.Clone().as_elapsed_time(elapsed_micros), b2.as_elapsed_time(elapsed_micros))); |
| } |
| |
| TEST(CobaltEventBuilder, event_code_at) { |
| uint64_t elapsed_micros = 5678; |
| ASSERT_TRUE(fidl::Equals(CobaltEventBuilder(kMetricId) |
| .with_event_codes({kDimension1, kDimension2}) |
| .as_elapsed_time(elapsed_micros), |
| CobaltEventBuilder(kMetricId) |
| .with_event_code_at(1, kDimension2) |
| .with_event_code_at(0, kDimension1) |
| .as_elapsed_time(elapsed_micros))); |
| } |
| |
| TEST(CobaltEventBuilderDeathTest, event_code_at) { |
| // Event code indices >= 5 are invalid. |
| ASSERT_DEATH_IF_SUPPORTED(CobaltEventBuilder(kMetricId).with_event_code_at(5, 10), |
| "Invalid index"); |
| } |
| |
| } // namespace cobalt |