Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit 6616ffa

Browse files
authored
Stats: Fix hello world example and measure_to_view_map. (#233)
1 parent 2caf7f3 commit 6616ffa

3 files changed

Lines changed: 163 additions & 82 deletions

File tree

examples/stats/helloworld/main.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222
from opencensus.tags import tag_key as tag_key_module
2323
from opencensus.tags import tag_map as tag_map_module
2424
from opencensus.tags import tag_value as tag_value_module
25+
from pprint import pprint
2526

2627
MiB = 1 << 20
2728
FRONTEND_KEY = tag_key_module.TagKey("my.org/keys/frontend")
2829
VIDEO_SIZE_MEASURE = measure_module.MeasureInt(
29-
"my.org/measure/video_size", "size of processed videos", "By")
30+
"my.org/measures/video_size", "size of processed videos", "By")
3031
VIDEO_SIZE_VIEW_NAME = "my.org/views/video_size"
3132
VIDEO_SIZE_DISTRIBUTION = aggregation_module.DistributionAggregation(
3233
[0.0, 16.0 * MiB, 256.0 * MiB])
@@ -51,14 +52,15 @@ def main():
5152
# Process video.
5253
# Record the processed video size.
5354
tag_value = tag_value_module.TagValue("mobile-ios9.3.5")
54-
tag_map = tag_map_module.TagMap().insert(FRONTEND_KEY, tag_value)
55+
tag_map = tag_map_module.TagMap()
56+
tag_map.insert(FRONTEND_KEY, tag_value)
5557
measure_map = stats_recorder.new_measurement_map()
5658
measure_map.measure_int_put(VIDEO_SIZE_MEASURE, 25 * MiB)
5759
measure_map.record(tag_map)
5860

5961
# Get aggregated stats and print it to console.
6062
view_data = view_manager.get_view(VIDEO_SIZE_VIEW_NAME)
61-
print(view_data) # TODO: print more meaningful info for view_data
63+
pprint(vars(view_data)) # TODO: print more meaningful info for view_data
6264

6365

6466
if __name__ == '__main__':

opencensus/stats/measure_to_view_map.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ class MeasureToViewMap(object):
2323
specific View Datas
2424
2525
"""
26+
2627
def __init__(self):
2728
# stores the one-to-many mapping from Measures to View Datas
28-
self._map = defaultdict(list)
29+
self._measure_to_view_data_list_map = defaultdict(list)
2930
# stores a map from the registered View names to the Views
3031
self._registered_views = {}
3132
# stores a map from the registered Measure names to the Measures
@@ -44,11 +45,14 @@ def get_view(self, view_name, timestamp):
4445
if view is None:
4546
return None
4647

47-
views = self._map.get(view.measure.name)
48-
if views is not None:
49-
for view_data in views:
48+
view_data_list = self._measure_to_view_data_list_map.get(
49+
view.measure.name)
50+
if view_data_list is not None:
51+
for view_data in view_data_list:
5052
if view_data.view.name == view_name:
51-
return copy.deepcopy(view_data)
53+
view_data_copy = copy.deepcopy(view_data)
54+
view_data_copy.end()
55+
return view_data_copy
5256

5357
def filter_exported_views(self, all_views):
5458
"""returns the subset of the given view that should be exported"""
@@ -72,24 +76,22 @@ def register_view(self, view, timestamp):
7276
if registered_measure is not None and registered_measure != measure:
7377
logging.warning(
7478
"A different measure with the same name is already registered")
75-
self._registered_views[measure.name] = view
79+
self._registered_views[view.name] = view
7680
if registered_measure is None:
7781
self._registered_measures[measure.name] = measure
78-
self._map[view.measure.name].append(ViewData(view=view,
79-
start_time=timestamp,
80-
end_time=timestamp))
82+
self._measure_to_view_data_list_map[view.measure.name].append(
83+
ViewData(view=view, start_time=timestamp, end_time=timestamp))
8184

8285
def record(self, tags, measurement_map, timestamp):
8386
"""records stats with a set of tags"""
8487
for measure, value in measurement_map.items():
8588
if measure != self._registered_measures.get(measure.name):
8689
return
8790
view_datas = []
88-
for key, value in self._map.items():
89-
if key == measure.name:
90-
# note that self._map is a multi-map.
91-
view_datas.extend(self._map[key])
91+
for measure_name, view_data_list \
92+
in self._measure_to_view_data_list_map.items():
93+
if measure_name == measure.name:
94+
view_datas.extend(view_data_list)
9295
for view_data in view_datas:
93-
view_data.record(context=tags,
94-
value=view_data.view.measure,
95-
timestamp=timestamp)
96+
view_data.record(
97+
context=tags, value=value, timestamp=timestamp)

0 commit comments

Comments
 (0)