1313# limitations under the License.
1414
1515from datetime import datetime
16+ import copy
1617import mock
1718import unittest
1819
20+ from prometheus_client .core import Sample
21+
1922from opencensus .stats import aggregation as aggregation_module
2023from opencensus .stats import measure as measure_module
2124from opencensus .stats import stats as stats_module
2629from opencensus .tags import tag_map as tag_map_module
2730from opencensus .tags import tag_value as tag_value_module
2831
29-
3032MiB = 1 << 20
3133FRONTEND_KEY = tag_key_module .TagKey ("myorg_keys_frontend" )
3234FRONTEND_KEY_FLOAT = tag_key_module .TagKey ("myorg_keys_frontend_FLOAT" )
@@ -138,7 +140,7 @@ def test_collector_to_metric_count(self):
138140 collector .register_view (view )
139141 desc = collector .registered_views [list (REGISTERED_VIEW )[0 ]]
140142 metric = collector .to_metric (
141- desc = desc , tag_values = [], agg_data = agg .aggregation_data )
143+ desc = desc , tag_values = [None ], agg_data = agg .aggregation_data )
142144
143145 self .assertEqual (desc ['name' ], metric .name )
144146 self .assertEqual (desc ['documentation' ], metric .documentation )
@@ -156,11 +158,11 @@ def test_collector_to_metric_sum(self):
156158 collector .register_view (view )
157159 desc = collector .registered_views [list (REGISTERED_VIEW )[0 ]]
158160 metric = collector .to_metric (
159- desc = desc , tag_values = [], agg_data = agg .aggregation_data )
161+ desc = desc , tag_values = [None ], agg_data = agg .aggregation_data )
160162
161163 self .assertEqual (desc ['name' ], metric .name )
162164 self .assertEqual (desc ['documentation' ], metric .documentation )
163- self .assertEqual ('untyped ' , metric .type )
165+ self .assertEqual ('unknown ' , metric .type )
164166 self .assertEqual (1 , len (metric .samples ))
165167
166168 def test_collector_to_metric_last_value (self ):
@@ -174,7 +176,7 @@ def test_collector_to_metric_last_value(self):
174176 collector .register_view (view )
175177 desc = collector .registered_views [list (REGISTERED_VIEW )[0 ]]
176178 metric = collector .to_metric (
177- desc = desc , tag_values = [], agg_data = agg .aggregation_data )
179+ desc = desc , tag_values = [None ], agg_data = agg .aggregation_data )
178180
179181 self .assertEqual (desc ['name' ], metric .name )
180182 self .assertEqual (desc ['documentation' ], metric .documentation )
@@ -187,15 +189,31 @@ def test_collector_to_metric_histogram(self):
187189 collector = prometheus .Collector (options = options )
188190 collector .register_view (VIDEO_SIZE_VIEW )
189191 desc = collector .registered_views [list (REGISTERED_VIEW )[0 ]]
192+ distribution = copy .deepcopy (VIDEO_SIZE_DISTRIBUTION .aggregation_data )
193+ distribution .add_sample (280.0 * MiB , None , None )
190194 metric = collector .to_metric (
191195 desc = desc ,
192- tag_values = [],
193- agg_data = VIDEO_SIZE_DISTRIBUTION . aggregation_data )
196+ tag_values = [tag_value_module . TagValue ( "ios" ) ],
197+ agg_data = distribution )
194198
195199 self .assertEqual (desc ['name' ], metric .name )
196200 self .assertEqual (desc ['documentation' ], metric .documentation )
197201 self .assertEqual ('histogram' , metric .type )
198- self .assertEqual (5 , len (metric .samples ))
202+ expected_samples = [
203+ Sample (metric .name + '_bucket' ,
204+ {"myorg_keys_frontend" : "ios" , "le" : str (16.0 * MiB )},
205+ 0 ),
206+ Sample (metric .name + '_bucket' ,
207+ {"myorg_keys_frontend" : "ios" , "le" : str (256.0 * MiB )},
208+ 0 ),
209+ Sample (metric .name + '_bucket' ,
210+ {"myorg_keys_frontend" : "ios" , "le" : "+Inf" },
211+ 1 ),
212+ Sample (metric .name + '_count' , {"myorg_keys_frontend" : "ios" }, 1 ),
213+ Sample (metric .name + '_sum' ,
214+ {"myorg_keys_frontend" : "ios" },
215+ 280.0 * MiB )]
216+ self .assertEqual (expected_samples , metric .samples )
199217
200218 def test_collector_to_metric_invalid_dist (self ):
201219 agg = mock .Mock ()
@@ -211,7 +229,7 @@ def test_collector_to_metric_invalid_dist(self):
211229 with self .assertRaisesRegexp (
212230 ValueError ,
213231 'unsupported aggregation type <class \' mock.mock.Mock\' >' ):
214- collector .to_metric (desc = desc , tag_values = [], agg_data = agg )
232+ collector .to_metric (desc = desc , tag_values = [None ], agg_data = agg )
215233
216234 def test_collector_collect (self ):
217235 agg = aggregation_module .LastValueAggregation (256 )
@@ -222,23 +240,17 @@ def test_collector_collect(self):
222240 collector = prometheus .Collector (options = options )
223241 collector .register_view (view )
224242 desc = collector .registered_views ['test2_new_view' ]
225- collector .to_metric (
226- desc = desc , tag_values = [], agg_data = agg .aggregation_data )
227-
228- registry = mock .Mock ()
229- options = prometheus .Options ("test1" , 8001 , "localhost" , registry )
230- collector = prometheus .Collector (options = options )
231- collector .register_view (VIDEO_SIZE_VIEW )
232- desc = collector .registered_views [list (REGISTERED_VIEW )[0 ]]
233243 metric = collector .to_metric (
234244 desc = desc ,
235- tag_values = [],
236- agg_data = VIDEO_SIZE_DISTRIBUTION .aggregation_data )
245+ tag_values = [tag_value_module . TagValue ( "value" ) ],
246+ agg_data = agg .aggregation_data )
237247
238248 self .assertEqual (desc ['name' ], metric .name )
239249 self .assertEqual (desc ['documentation' ], metric .documentation )
240- self .assertEqual ('histogram' , metric .type )
241- self .assertEqual (5 , len (metric .samples ))
250+ self .assertEqual ('gauge' , metric .type )
251+ expected_samples = [
252+ Sample (metric .name , {"myorg_keys_frontend" : "value" }, 256 )]
253+ self .assertEqual (expected_samples , metric .samples )
242254
243255 def test_collector_collect_with_none_label_value (self ):
244256 agg = aggregation_module .LastValueAggregation (256 )
0 commit comments