Skip to content

Commit 32017dd

Browse files
committed
Second round of comments (Metrics)
1 parent fed80f0 commit 32017dd

File tree

2 files changed

+29
-33
lines changed

2 files changed

+29
-33
lines changed

metrics.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import uuid
4141

4242
import requests
43-
from typing import Dict, Optional
43+
from typing import Dict, Optional, Text
4444

4545
_CLEARCUT_ENDPOINT = 'https://play.googleapis.com/log'
4646
_CLOUD_HCLS = 'CLOUD_HCLS'
@@ -69,12 +69,12 @@ class _ConcordEvent(object):
6969
"""Encapsulates information representing a Concord event."""
7070

7171
def __init__(self,
72-
event_name: str,
73-
event_type: str,
72+
event_name: Text,
73+
event_type: Text,
7474
project_number: int,
75-
console_type: str,
76-
page_hostname: str,
77-
event_metadata: Optional[Dict[str, str]] = None) -> None:
75+
console_type: Text,
76+
page_hostname: Text,
77+
event_metadata: Optional[Dict[Text, Text]] = None) -> None:
7878
self._event_name = event_name
7979
self._event_type = event_type
8080
self._project_number = project_number
@@ -108,19 +108,19 @@ class _MetricsCollector(object):
108108
Instances of this class share the same internal state, and thus behave the
109109
same all the time.
110110
"""
111-
_shared_events = []
112-
_shared_session_identifier = uuid.uuid4().hex
111+
_events = []
112+
_session_identifier = uuid.uuid4().hex
113113

114114
def add_metrics(self, project_number: int,
115-
metrics_name: str, **metrics_kw: str) -> None:
115+
metrics_name: Text, **metrics_kw: Text) -> None:
116116
concord_event = _ConcordEvent(
117117
event_name=metrics_name,
118118
event_type=_DEEP_VARIANT_RUN,
119119
project_number=project_number,
120120
console_type=_CLOUD_HCLS,
121121
page_hostname=_VIRTUAL_CHC_DEEPVARIANT,
122122
event_metadata={k: v for k, v in metrics_kw.items()})
123-
self._shared_events.append(concord_event)
123+
self._events.append(concord_event)
124124

125125
def submit_metrics(self):
126126
"""Submits all the collected metrics to Concord endpoint.
@@ -145,12 +145,12 @@ def _clearcut_request(self):
145145
'log_source_name':
146146
_CONCORD,
147147
'zwieback_cookie':
148-
self._shared_session_identifier,
148+
self._session_identifier,
149149
'request_time_ms':
150150
_now_ms(),
151151
'log_event': [{
152152
'source_extension_json': e.to_json(sort_keys=True)
153-
} for e in self._shared_events]
153+
} for e in self._events]
154154
}
155155

156156

@@ -159,7 +159,7 @@ def _now_ms():
159159
return int(round(time.time() * 1000))
160160

161161

162-
def add(project_number: int, metrics_name: str, **metrics_kw: str) -> None:
162+
def add(project_number: int, metrics_name: Text, **metrics_kw: Text) -> None:
163163
"""Adds the given metric to the metrics to be submitted to Concord.
164164
165165
Note: All metrics are submitted at exit.

metrics_test.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,41 +42,38 @@
4242

4343
import json
4444
import unittest
45-
from metrics import _CLEARCUT_ENDPOINT as CLEARCUT_ENDPOINT
46-
from metrics import _MetricsCollector as MetricsCollector
45+
46+
import metrics
4747
import mock
4848

4949

5050
# This is to test if all metrics collector instances share same session
51-
# identifier. Mocks '_shared_session_identifier' on import.
52-
@mock.patch('metrics._MetricsCollector._shared_session_identifier', 'abcd')
51+
# identifier. Mocks '_session_identifier' on import.
52+
@mock.patch('metrics._MetricsCollector._session_identifier', 'abcd')
5353
class MetricsCollectorTest(unittest.TestCase):
5454
"""Tests for MetricsCollector class."""
5555

56-
def _clear_metrics_collector(self):
57-
# 'metrics_collector' is a singleton. Remove any shared state before
58-
# starting next test.
59-
MetricsCollector()._shared_events[:] = []
56+
def setUp(self):
57+
super(MetricsCollectorTest, self).setUp()
58+
# 'metrics_collector' has class attributes, clear them before each test.
59+
metrics._MetricsCollector()._events[:] = []
6060

6161
@mock.patch('requests.post')
6262
@mock.patch('time.time', return_value=1234)
6363
def test_submit_metrics(self, unused_mock_time, mock_requests_post):
64-
self._clear_metrics_collector()
65-
metrics_collector = MetricsCollector()
66-
67-
metrics_collector.add_metrics(
64+
metrics.add(
6865
123,
6966
'test-metrics-1',
7067
attribute_1=1,
7168
attribute_2='string-1',
7269
attribute_3=True)
73-
metrics_collector.add_metrics(
70+
metrics.add(
7471
123,
7572
'test-metrics-2',
7673
attribute_1=2,
7774
attribute_2='string-2',
7875
attribute_3=True)
79-
metrics_collector.submit_metrics()
76+
metrics._MetricsCollector().submit_metrics()
8077

8178
mock_requests_post.assert_called_with(
8279
data=json.dumps(
@@ -138,14 +135,13 @@ def test_submit_metrics(self, unused_mock_time, mock_requests_post):
138135
sort_keys=True),
139136
headers=None,
140137
timeout=10,
141-
url=CLEARCUT_ENDPOINT)
138+
url=metrics._CLEARCUT_ENDPOINT)
142139

143140
@mock.patch('requests.post')
144141
@mock.patch('time.time', side_effect=(1234, 1235))
145142
def test_two_metrics_collector(self, unused_mock_time, mock_requests_post):
146-
self._clear_metrics_collector()
147-
first_metric_collector = MetricsCollector()
148-
second_metric_collector = MetricsCollector()
143+
first_metric_collector = metrics._MetricsCollector()
144+
second_metric_collector = metrics._MetricsCollector()
149145

150146
first_metric_collector.add_metrics(123, 'test-metrics-1', attribute_1=1)
151147
second_metric_collector.add_metrics(123, 'test-metrics-2', attribute_2=2)
@@ -196,14 +192,14 @@ def expected_post_data(request_time_ms):
196192
data=expected_post_data(1234000),
197193
headers=None,
198194
timeout=10,
199-
url=CLEARCUT_ENDPOINT)
195+
url=metrics._CLEARCUT_ENDPOINT)
200196

201197
second_metric_collector.submit_metrics()
202198
mock_requests_post.assert_called_with(
203199
data=expected_post_data(1235000),
204200
headers=None,
205201
timeout=10,
206-
url=CLEARCUT_ENDPOINT)
202+
url=metrics._CLEARCUT_ENDPOINT)
207203

208204

209205
if __name__ == '__main__':

0 commit comments

Comments
 (0)