@@ -41,6 +41,11 @@ google::api::MonitoredResource DefaultResource() {
4141 return google::api::MonitoredResource ();
4242}
4343
44+ std::unordered_map<std::string, google::api::MonitoredResource>
45+ DefaultPerMetricResource () {
46+ return std::unordered_map<std::string, google::api::MonitoredResource>();
47+ }
48+
4449TEST (StackdriverUtilsTest, SetMetricDescriptorNameAndType) {
4550 const std::string project_id = " projects/test-id" ;
4651 const std::string metric_name_prefix = " custom.googleapis.com/test/" ;
@@ -191,7 +196,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesDefaultResource) {
191196 const opencensus::stats::ViewData data =
192197 TestUtils::MakeViewData (view_descriptor, {{{}, 1.0 }});
193198 const std::vector<google::monitoring::v3::TimeSeries> time_series =
194- MakeTimeSeries (" " , DefaultResource (), view_descriptor, data, task);
199+ MakeTimeSeries (" " , DefaultResource (), DefaultPerMetricResource (),
200+ view_descriptor, data, task);
195201 ASSERT_EQ (1 , time_series.size ());
196202 const auto & ts = time_series.front ();
197203 EXPECT_EQ (" global" , ts.resource ().type ());
@@ -216,7 +222,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesCustomResource) {
216222 (*resource.mutable_labels ())[" instance_id" ] = " 1234" ;
217223 (*resource.mutable_labels ())[" zone" ] = " my_zone" ;
218224 const std::vector<google::monitoring::v3::TimeSeries> time_series =
219- MakeTimeSeries (" " , resource, view_descriptor, data, task);
225+ MakeTimeSeries (" " , resource, DefaultPerMetricResource (), view_descriptor,
226+ data, task);
220227 ASSERT_EQ (1 , time_series.size ());
221228 const auto & ts = time_series.front ();
222229 EXPECT_EQ (" gce_instance" , ts.resource ().type ());
@@ -230,6 +237,70 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesCustomResource) {
230237 << ts.resource().DebugString();
231238}
232239
240+ TEST (StackdriverUtilsTest, MakeTimeSeriesPerMetricCustomResource) {
241+ const auto measure =
242+ opencensus::stats::MeasureDouble::Register (" my_measure" , " " , " " );
243+ const std::string task = " test_task" ;
244+ const std::string view_name = " test_view" ;
245+ const auto view_descriptor =
246+ opencensus::stats::ViewDescriptor ()
247+ .set_name (view_name)
248+ .set_measure (measure.GetDescriptor ().name ())
249+ .set_aggregation (opencensus::stats::Aggregation::Sum ());
250+ const opencensus::stats::ViewData data =
251+ TestUtils::MakeViewData (view_descriptor, {{{}, 1.0 }});
252+ google::api::MonitoredResource resource;
253+ resource.set_type (" gce_instance" );
254+ (*resource.mutable_labels ())[" project_id" ] = " my_project" ;
255+ (*resource.mutable_labels ())[" instance_id" ] = " 1234" ;
256+ (*resource.mutable_labels ())[" zone" ] = " my_zone" ;
257+ std::unordered_map<std::string, google::api::MonitoredResource>
258+ per_metric_resources;
259+ per_metric_resources[view_name] = resource;
260+ const std::vector<google::monitoring::v3::TimeSeries> time_series =
261+ MakeTimeSeries (" " , DefaultResource (), per_metric_resources,
262+ view_descriptor, data, task);
263+ ASSERT_EQ (1 , time_series.size ());
264+ const auto & ts = time_series.front ();
265+ EXPECT_EQ (" gce_instance" , ts.resource ().type ());
266+ using ::testing::Pair;
267+ EXPECT_THAT (ts.resource ().labels (),
268+ ::testing::UnorderedElementsAre (Pair(" project_id" , " my_project" ),
269+ Pair(" instance_id" , " 1234" ),
270+ Pair(" zone" , " my_zone" )))
271+ << " resource() is:\n"
272+ << ts.resource().DebugString();
273+ }
274+
275+ TEST (StackdriverUtilsTest, MakeTimeSeriesPerMetricCustomResourceNotMatch) {
276+ const auto measure =
277+ opencensus::stats::MeasureDouble::Register (" my_measure" , " " , " " );
278+ const std::string task = " test_task" ;
279+ const std::string view_name = " test_view" ;
280+ const auto view_descriptor =
281+ opencensus::stats::ViewDescriptor ()
282+ .set_name (view_name)
283+ .set_measure (measure.GetDescriptor ().name ())
284+ .set_aggregation (opencensus::stats::Aggregation::Sum ());
285+ const opencensus::stats::ViewData data =
286+ TestUtils::MakeViewData (view_descriptor, {{{}, 1.0 }});
287+ google::api::MonitoredResource resource;
288+ resource.set_type (" gce_instance" );
289+ (*resource.mutable_labels ())[" project_id" ] = " my_project" ;
290+ (*resource.mutable_labels ())[" instance_id" ] = " 1234" ;
291+ (*resource.mutable_labels ())[" zone" ] = " my_zone" ;
292+ std::unordered_map<std::string, google::api::MonitoredResource>
293+ per_metric_resources;
294+ per_metric_resources[" some_other_view" ] = resource;
295+ const std::vector<google::monitoring::v3::TimeSeries> time_series =
296+ MakeTimeSeries (" " , DefaultResource (), per_metric_resources,
297+ view_descriptor, data, task);
298+ ASSERT_EQ (1 , time_series.size ());
299+ const auto & ts = time_series.front ();
300+ EXPECT_EQ (" global" , ts.resource ().type ());
301+ EXPECT_EQ (0 , ts.resource ().labels_size ());
302+ }
303+
233304TEST (StackdriverUtilsTest, MakeTimeSeriesSumDoubleAndTypes) {
234305 const std::string metric_name_prefix = " custom.googleapis.com/test/" ;
235306 const auto measure =
@@ -248,8 +319,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesSumDoubleAndTypes) {
248319 const opencensus::stats::ViewData data = TestUtils::MakeViewData (
249320 view_descriptor, {{{" v1" , " v1" }, 1.0 }, {{" v1" , " v2" }, 2.0 }});
250321 const std::vector<google::monitoring::v3::TimeSeries> time_series =
251- MakeTimeSeries (metric_name_prefix, DefaultResource (), view_descriptor,
252- data, task);
322+ MakeTimeSeries (metric_name_prefix, DefaultResource (),
323+ DefaultPerMetricResource (), view_descriptor, data, task);
253324
254325 for (const auto & ts : time_series) {
255326 EXPECT_EQ (" custom.googleapis.com/test/test_view" , ts.metric ().type ());
@@ -289,7 +360,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesSumInt) {
289360 const opencensus::stats::ViewData data = TestUtils::MakeViewData (
290361 view_descriptor, {{{" v1" , " v1" }, 1.0 }, {{" v1" , " v2" }, 2.0 }});
291362 const std::vector<google::monitoring::v3::TimeSeries> time_series =
292- MakeTimeSeries (" " , DefaultResource (), view_descriptor, data, task);
363+ MakeTimeSeries (" " , DefaultResource (), DefaultPerMetricResource (),
364+ view_descriptor, data, task);
293365
294366 for (const auto & ts : time_series) {
295367 ASSERT_EQ (1 , ts.points_size ());
@@ -329,7 +401,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesCountDouble) {
329401 view_descriptor,
330402 {{{" v1" , " v1" }, 1.0 }, {{" v1" , " v1" }, 3.0 }, {{" v1" , " v2" }, 2.0 }});
331403 const std::vector<google::monitoring::v3::TimeSeries> time_series =
332- MakeTimeSeries (" " , DefaultResource (), view_descriptor, data, task);
404+ MakeTimeSeries (" " , DefaultResource (), DefaultPerMetricResource (),
405+ view_descriptor, data, task);
333406
334407 for (const auto & ts : time_series) {
335408 ASSERT_EQ (1 , ts.points_size ());
@@ -372,7 +445,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesDistributionDouble) {
372445 view_descriptor,
373446 {{{" v1" , " v1" }, -1.0 }, {{" v1" , " v1" }, 7.0 }, {{" v1" , " v2" }, 1.0 }});
374447 const std::vector<google::monitoring::v3::TimeSeries> time_series =
375- MakeTimeSeries (" " , DefaultResource (), view_descriptor, data, task);
448+ MakeTimeSeries (" " , DefaultResource (), DefaultPerMetricResource (),
449+ view_descriptor, data, task);
376450
377451 for (const auto & ts : time_series) {
378452 ASSERT_EQ (1 , ts.points_size ());
@@ -418,7 +492,8 @@ TEST(StackdriverUtilsTest, MakeTimeSeriesLastValueInt) {
418492 const opencensus::stats::ViewData data = TestUtils::MakeViewData (
419493 view_descriptor, {{{" v1" , " v1" }, 1.0 }, {{" v1" , " v2" }, 2.0 }});
420494 const std::vector<google::monitoring::v3::TimeSeries> time_series =
421- MakeTimeSeries (" " , DefaultResource (), view_descriptor, data, task);
495+ MakeTimeSeries (" " , DefaultResource (), DefaultPerMetricResource (),
496+ view_descriptor, data, task);
422497
423498 for (const auto & ts : time_series) {
424499 ASSERT_EQ (1 , ts.points_size ());
0 commit comments