Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(353)

Side by Side Diff: infra_libs/ts_mon/common/test/metric_store_test.py

Issue 1531573003: Handle multiple modifications to distribution metrics correctly. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import functools 5 import functools
6 import operator 6 import operator
7 import time 7 import time
8 import unittest 8 import unittest
9 9
10 import mock 10 import mock
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 self.store.set('foo', (('field', 'value'),), 42) 126 self.store.set('foo', (('field', 'value'),), 42)
127 self.store.reset_for_unittest(name='bar') 127 self.store.reset_for_unittest(name='bar')
128 self.assertEquals(42, self.store.get('foo', (('field', 'value'),))) 128 self.assertEquals(42, self.store.get('foo', (('field', 'value'),)))
129 129
130 self.store.reset_for_unittest(name='foo') 130 self.store.reset_for_unittest(name='foo')
131 self.assertIsNone(self.store.get('foo', (('field', 'value'),))) 131 self.assertIsNone(self.store.get('foo', (('field', 'value'),)))
132 132
133 133
134 class InProcessMetricStoreTest(MetricStoreTestBase, unittest.TestCase): 134 class InProcessMetricStoreTest(MetricStoreTestBase, unittest.TestCase):
135 METRIC_STORE_CLASS = metric_store.InProcessMetricStore 135 METRIC_STORE_CLASS = metric_store.InProcessMetricStore
136
137
138 class CombineModificationsTest(unittest.TestCase):
139 def test_set_set(self):
140 self.assertEqual(
141 metric_store.Modification('two', (), 'set', (2, False)),
142 metric_store.combine_modifications(
143 metric_store.Modification('one', (), 'set', (1, False)),
144 metric_store.Modification('two', (), 'set', (2, False))))
145
146 def test_set_incr(self):
147 self.assertEqual(
148 metric_store.Modification('one', (), 'set', (3, False)),
149 metric_store.combine_modifications(
150 metric_store.Modification('one', (), 'set', (1, False)),
151 metric_store.Modification('two', (), 'incr', (2, operator.add))))
152
153 def test_incr_set(self):
154 self.assertEqual(
155 metric_store.Modification('two', (), 'set', (2, False)),
156 metric_store.combine_modifications(
157 metric_store.Modification('one', (), 'incr', (1, operator.add)),
158 metric_store.Modification('two', (), 'set', (2, False))))
159
160 def test_incr_incr(self):
161 self.assertEqual(
162 metric_store.Modification('one', (), 'incr', (3, operator.add)),
163 metric_store.combine_modifications(
164 metric_store.Modification('one', (), 'incr', (1, operator.add)),
165 metric_store.Modification('two', (), 'incr', (2, operator.add))))
166
167 def test_none_set(self):
168 self.assertEqual(
169 metric_store.Modification('two', (), 'set', (2, False)),
170 metric_store.combine_modifications(
171 None,
172 metric_store.Modification('two', (), 'set', (2, False))))
173
174 def test_none_incr(self):
175 self.assertEqual(
176 metric_store.Modification('two', (), 'incr', (2, operator.add)),
177 metric_store.combine_modifications(
178 None,
179 metric_store.Modification('two', (), 'incr', (2, operator.add))))
180
181 def test_bad_type(self):
182 with self.assertRaises(errors.UnknownModificationTypeError):
183 metric_store.combine_modifications(
184 metric_store.Modification('one', (), 'set', (1, False)),
185 metric_store.Modification('two', (), 'bad', (2, False)))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698