|
31 | 31 | #include "opencensus/stats/testing/test_utils.h" |
32 | 32 |
|
33 | 33 | using opencensus::stats::testing::TestUtils; |
| 34 | +using opencensus::stats::testing::TestViewValue; |
34 | 35 |
|
35 | 36 | namespace opencensus { |
36 | 37 | namespace exporters { |
@@ -67,6 +68,19 @@ DefaultPerMetricResource() { |
67 | 68 | return std::unordered_map<std::string, google::api::MonitoredResource>(); |
68 | 69 | } |
69 | 70 |
|
| 71 | +std::vector<std::string> ToDataMapKeys( |
| 72 | + const std::initializer_list<std::string> label_names, |
| 73 | + const google::monitoring::v3::TimeSeries& time_series) { |
| 74 | + // label_names defines the key order and is needed because |
| 75 | + // time_series.metric().labels() does not maintain the original order. |
| 76 | + std::vector<std::string> data_map_keys; |
| 77 | + const auto& label_map = time_series.metric().labels(); |
| 78 | + for (const auto& label_name : label_names) { |
| 79 | + data_map_keys.push_back(label_map.at(label_name)); |
| 80 | + } |
| 81 | + return data_map_keys; |
| 82 | +} |
| 83 | + |
70 | 84 | // TODO: MonitoredResourceForView |
71 | 85 | TEST(StackdriverUtilsTest, MonitoredResourceForViewIsDefault) { |
72 | 86 | const auto view_descriptor = |
@@ -368,6 +382,9 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesSumDoubleAndTypes) { |
368 | 382 | for (const auto& ts : time_series) { |
369 | 383 | EXPECT_EQ("custom.googleapis.com/test/test_view", ts.metric().type()); |
370 | 384 | ASSERT_EQ(1, ts.points_size()); |
| 385 | + const auto& tags = ToDataMapKeys({"foo", "bar"}, ts); |
| 386 | + EXPECT_EQ(absl::ToUnixSeconds(data.start_times().at(tags)), |
| 387 | + ts.points(0).interval().start_time().seconds()); |
371 | 388 | EXPECT_EQ(absl::ToUnixSeconds(data.start_time()), |
372 | 389 | ts.points(0).interval().start_time().seconds()); |
373 | 390 | EXPECT_EQ(absl::ToUnixSeconds(data.end_time()), |
@@ -400,19 +417,42 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesSumInt) { |
400 | 417 | .set_aggregation(opencensus::stats::Aggregation::Sum()) |
401 | 418 | .add_column(tag_key_1) |
402 | 419 | .add_column(tag_key_2); |
403 | | - const opencensus::stats::ViewData data = TestUtils::MakeViewData( |
404 | | - view_descriptor, {{{"v1", "v1"}, 1.0}, {{"v1", "v2"}, 2.0}}); |
| 420 | + absl::Time t1 = absl::UnixEpoch(); |
| 421 | + absl::Time t2 = t1 + absl::Seconds(15); |
| 422 | + std::map<std::vector<std::string>, absl::Time> start_times{ |
| 423 | + {{"v1", "v1"}, t1}, |
| 424 | + {{"v1", "v2"}, t2}, |
| 425 | + }; |
| 426 | + |
| 427 | + std::vector<TestViewValue> view_values; |
| 428 | + TestViewValue view_value1; |
| 429 | + view_value1.tag_values = {"v1", "v1"}; |
| 430 | + view_value1.value = 1.0; |
| 431 | + view_value1.start_time = t1; |
| 432 | + view_values.push_back(view_value1); |
| 433 | + |
| 434 | + TestViewValue view_value2; |
| 435 | + view_value2.tag_values = {"v1", "v2"}; |
| 436 | + view_value2.value = 2.0; |
| 437 | + view_value2.start_time = t2; |
| 438 | + view_values.push_back(view_value2); |
| 439 | + |
| 440 | + const opencensus::stats::ViewData data = |
| 441 | + TestUtils::MakeViewDataWithStartTimes(view_descriptor, view_values); |
405 | 442 | const std::vector<google::monitoring::v3::TimeSeries> time_series = |
406 | 443 | MakeTimeSeries(kMetricNamePrefix, kDefaultResource, view_descriptor, data, |
407 | 444 | kAddTaskLabel, task); |
408 | 445 |
|
409 | 446 | for (const auto& ts : time_series) { |
410 | 447 | ASSERT_EQ(1, ts.points_size()); |
411 | | - EXPECT_EQ(absl::ToUnixSeconds(data.start_time()), |
| 448 | + const auto& tags = ToDataMapKeys({"foo", "bar"}, ts); |
| 449 | + EXPECT_EQ(absl::ToUnixSeconds(start_times[tags]), |
412 | 450 | ts.points(0).interval().start_time().seconds()); |
413 | 451 | EXPECT_EQ(absl::ToUnixSeconds(data.end_time()), |
414 | 452 | ts.points(0).interval().end_time().seconds()); |
415 | 453 | } |
| 454 | + EXPECT_EQ(absl::ToUnixSeconds(data.start_time()), |
| 455 | + absl::ToUnixSeconds(absl::UnixEpoch())); |
416 | 456 |
|
417 | 457 | EXPECT_THAT(time_series, |
418 | 458 | ::testing::UnorderedElementsAre( |
@@ -449,6 +489,9 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesCountDouble) { |
449 | 489 |
|
450 | 490 | for (const auto& ts : time_series) { |
451 | 491 | ASSERT_EQ(1, ts.points_size()); |
| 492 | + const auto& tags = ToDataMapKeys({"foo", "bar"}, ts); |
| 493 | + EXPECT_EQ(absl::ToUnixSeconds(data.start_times().at(tags)), |
| 494 | + ts.points(0).interval().start_time().seconds()); |
452 | 495 | EXPECT_EQ(absl::ToUnixSeconds(data.start_time()), |
453 | 496 | ts.points(0).interval().start_time().seconds()); |
454 | 497 | EXPECT_EQ(absl::ToUnixSeconds(data.end_time()), |
@@ -493,6 +536,9 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesDistributionDouble) { |
493 | 536 |
|
494 | 537 | for (const auto& ts : time_series) { |
495 | 538 | ASSERT_EQ(1, ts.points_size()); |
| 539 | + const auto& tags = ToDataMapKeys({"foo", "bar"}, ts); |
| 540 | + EXPECT_EQ(absl::ToUnixSeconds(data.start_times().at(tags)), |
| 541 | + ts.points(0).interval().start_time().seconds()); |
496 | 542 | EXPECT_EQ(absl::ToUnixSeconds(data.start_time()), |
497 | 543 | ts.points(0).interval().start_time().seconds()); |
498 | 544 | EXPECT_EQ(absl::ToUnixSeconds(data.end_time()), |
@@ -540,6 +586,9 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesLastValueInt) { |
540 | 586 |
|
541 | 587 | for (const auto& ts : time_series) { |
542 | 588 | ASSERT_EQ(1, ts.points_size()); |
| 589 | + const auto& tags = ToDataMapKeys({"foo", "bar"}, ts); |
| 590 | + EXPECT_EQ(absl::ToUnixSeconds(data.start_times().at(tags)), |
| 591 | + ts.points(0).interval().start_time().seconds()); |
543 | 592 | EXPECT_FALSE(ts.points(0).interval().has_start_time()); |
544 | 593 | EXPECT_EQ(absl::ToUnixSeconds(data.end_time()), |
545 | 594 | ts.points(0).interval().end_time().seconds()); |
|
0 commit comments