| Index: infra_libs/ts_mon/common/test/metric_store_test.py
 | 
| diff --git a/infra_libs/ts_mon/common/test/metric_store_test.py b/infra_libs/ts_mon/common/test/metric_store_test.py
 | 
| deleted file mode 100644
 | 
| index 3fbc82489ad9f00c058649e113dcfa5fde7c41ff..0000000000000000000000000000000000000000
 | 
| --- a/infra_libs/ts_mon/common/test/metric_store_test.py
 | 
| +++ /dev/null
 | 
| @@ -1,197 +0,0 @@
 | 
| -# Copyright 2015 The Chromium Authors. All rights reserved.
 | 
| -# Use of this source code is governed by a BSD-style license that can be
 | 
| -# found in the LICENSE file.
 | 
| -
 | 
| -import functools
 | 
| -import operator
 | 
| -import time
 | 
| -import unittest
 | 
| -
 | 
| -import mock
 | 
| -
 | 
| -from infra_libs.ts_mon.common import interface
 | 
| -from infra_libs.ts_mon.common import errors
 | 
| -from infra_libs.ts_mon.common import metric_store
 | 
| -from infra_libs.ts_mon.common import metrics
 | 
| -from infra_libs.ts_mon.common import targets
 | 
| -from infra_libs.ts_mon.common.test import stubs
 | 
| -
 | 
| -
 | 
| -class DefaultModifyFnTest(unittest.TestCase):
 | 
| -  def test_adds(self):
 | 
| -    fn = metric_store.default_modify_fn('foo')
 | 
| -    self.assertEquals(5, fn(2, 3))
 | 
| -    self.assertEquals(5, fn(3, 2))
 | 
| -
 | 
| -  def test_negative(self):
 | 
| -    fn = metric_store.default_modify_fn('foo')
 | 
| -    with self.assertRaises(errors.MonitoringDecreasingValueError) as cm:
 | 
| -      fn(2, -1)
 | 
| -    self.assertIn('"foo"', str(cm.exception))
 | 
| -
 | 
| -
 | 
| -class MetricFieldsValuesTest(unittest.TestCase):
 | 
| -  def test_iteritems(self):
 | 
| -    mfv = metric_store.MetricFieldsValues()
 | 
| -    fields = (('field', 'value'),)
 | 
| -    mfv.set_value(fields, 84)
 | 
| -    self.assertEqual([(fields, 84)], list(mfv.iteritems()))
 | 
| -
 | 
| -
 | 
| -class MetricStoreTestBase(object):
 | 
| -  """Abstract base class for testing MetricStore implementations.
 | 
| -
 | 
| -  This class doesn't inherit from unittest.TestCase to prevent it from being
 | 
| -  run automatically by expect_tests.
 | 
| -
 | 
| -  Your subclass should inherit from this and unittest.TestCase, and set
 | 
| -  METRIC_STORE_CLASS to the implementation you want to test.  See
 | 
| -  InProcessMetricStoreTest in this file for an example.
 | 
| -  """
 | 
| -
 | 
| -  METRIC_STORE_CLASS = None
 | 
| -
 | 
| -  def setUp(self):
 | 
| -    super(MetricStoreTestBase, self).setUp()
 | 
| -
 | 
| -    self.mock_time = mock.create_autospec(time.time, spec_set=True)
 | 
| -    self.mock_time.return_value = 1234
 | 
| -
 | 
| -    target = targets.TaskTarget(
 | 
| -        'test_service', 'test_job', 'test_region', 'test_host')
 | 
| -    self.state = interface.State(store_ctor=self.create_store, target=target)
 | 
| -    mock.patch('infra_libs.ts_mon.common.interface.state',
 | 
| -        new=self.state).start()
 | 
| -
 | 
| -    self.store = self.state.store
 | 
| -
 | 
| -    self.metric = metrics.Metric('foo')
 | 
| -
 | 
| -  def create_store(self, *args, **kwargs):
 | 
| -    kwargs['time_fn'] = self.mock_time
 | 
| -    return self.METRIC_STORE_CLASS(*args, **kwargs)
 | 
| -
 | 
| -  def tearDown(self):
 | 
| -    super(MetricStoreTestBase, self).tearDown()
 | 
| -
 | 
| -    mock.patch.stopall()
 | 
| -
 | 
| -  def test_sets_start_time(self):
 | 
| -    self.metric._start_time = None
 | 
| -    self.mock_time.return_value = 1234
 | 
| -
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.set('foo', (('field', 'value2'),), None, 43)
 | 
| -
 | 
| -    all_metrics = list(self.store.get_all())
 | 
| -    self.assertEqual(1, len(all_metrics))
 | 
| -    self.assertEqual('foo', all_metrics[0][1].name)
 | 
| -    self.assertEqual(1234, all_metrics[0][2])
 | 
| -
 | 
| -    self.mock_time.assert_called_once_with()
 | 
| -
 | 
| -  def test_uses_start_time_from_metric(self):
 | 
| -    self.metric._start_time = 5678
 | 
| -
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.set('foo', (('field', 'value2'),), None, 43)
 | 
| -
 | 
| -    all_metrics = list(self.store.get_all())
 | 
| -    self.assertEqual(1, len(all_metrics))
 | 
| -    self.assertEqual('foo', all_metrics[0][1].name)
 | 
| -    self.assertEqual(5678, all_metrics[0][2])
 | 
| -
 | 
| -    self.assertFalse(self.mock_time.called)
 | 
| -
 | 
| -  def test_get(self):
 | 
| -    fields1 = (('field', 'value'),)
 | 
| -    fields2 = (('field', 'value2'),)
 | 
| -    fields3 = (('field', 'value3'),)
 | 
| -    target_fields1 = {'region': 'rrr'}
 | 
| -    target_fields2 = {'region': 'rrr', 'hostname': 'hhh'}
 | 
| -
 | 
| -    self.store.set('foo', fields1, None, 42)
 | 
| -    self.store.set('foo', fields2, None, 43)
 | 
| -    self.store.set('foo', fields1, target_fields1, 24)
 | 
| -    self.store.set('foo', fields2, target_fields2, 34)
 | 
| -
 | 
| -    self.assertEquals(42, self.store.get('foo', fields1, None))
 | 
| -    self.assertEquals(43, self.store.get('foo', fields2, None))
 | 
| -    self.assertEquals(24, self.store.get('foo', fields1, target_fields1))
 | 
| -    self.assertEquals(34, self.store.get('foo', fields2, target_fields2))
 | 
| -
 | 
| -    self.assertIsNone(self.store.get('foo', fields3, None))
 | 
| -    self.assertIsNone(self.store.get('foo', (), None))
 | 
| -    self.assertIsNone(self.store.get('foo', fields1, target_fields2))
 | 
| -    self.assertEquals(44, self.store.get('foo', fields3, None, default=44))
 | 
| -
 | 
| -    self.assertIsNone(self.store.get('bar', (), None))
 | 
| -
 | 
| -  def test_iter_field_values(self):
 | 
| -    fields1 = (('field', 'value'),)
 | 
| -    fields2 = (('field', 'value2'),)
 | 
| -    target_fields1 = {'region': 'rrr'}
 | 
| -
 | 
| -    self.store.set('foo', fields1, None, 42)
 | 
| -    self.store.set('foo', fields2, None, 43)
 | 
| -    self.store.set('foo', fields2, target_fields1, 44)
 | 
| -
 | 
| -    field_values = list(self.store.iter_field_values('foo'))
 | 
| -    self.assertEquals([
 | 
| -        ((('field', 'value'),), 42),
 | 
| -        ((('field', 'value2'),), 43),
 | 
| -        ((('field', 'value2'),), 44),
 | 
| -    ], sorted(field_values))
 | 
| -
 | 
| -  def test_set_enforce_ge(self):
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42, enforce_ge=True)
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 43, enforce_ge=True)
 | 
| -
 | 
| -    with self.assertRaises(errors.MonitoringDecreasingValueError):
 | 
| -      self.store.set('foo', (('field', 'value'),), None, 42, enforce_ge=True)
 | 
| -
 | 
| -  def test_incr(self):
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.incr('foo', (('field', 'value'),), None, 4)
 | 
| -
 | 
| -    self.assertEquals(46, self.store.get('foo', (('field', 'value'),), None))
 | 
| -
 | 
| -    with self.assertRaises(errors.MonitoringDecreasingValueError):
 | 
| -      self.store.incr('foo', (('field', 'value'),), None, -1)
 | 
| -
 | 
| -  def test_incr_modify_fn(self):
 | 
| -    def spec_fn(n, i): # pragma: no cover
 | 
| -      return n+i
 | 
| -    modify_fn = mock.create_autospec(spec_fn, spec_set=True)
 | 
| -    modify_fn.return_value = 7
 | 
| -
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.incr('foo', (('field', 'value'),), None, 3, modify_fn=modify_fn)
 | 
| -
 | 
| -    self.assertEquals(7, self.store.get('foo', (('field', 'value'),), None))
 | 
| -    modify_fn.assert_called_once_with(42, 3)
 | 
| -
 | 
| -  def test_reset_for_unittest(self):
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.reset_for_unittest()
 | 
| -    self.assertIsNone(self.store.get('foo', (('field', 'value'),), None))
 | 
| -
 | 
| -  def test_reset_for_unittest_name(self):
 | 
| -    self.store.set('foo', (('field', 'value'),), None, 42)
 | 
| -    self.store.reset_for_unittest(name='bar')
 | 
| -    self.assertEquals(42, self.store.get('foo', (('field', 'value'),), None))
 | 
| -
 | 
| -    self.store.reset_for_unittest(name='foo')
 | 
| -    self.assertIsNone(self.store.get('foo', (('field', 'value'),), None))
 | 
| -
 | 
| -  def test_unregister_metric(self):
 | 
| -    fields = (('field', 'value'),)
 | 
| -    self.store.set('foo', fields, None, 42)  # Registered in setUp().
 | 
| -    self.store.set('bar', fields, None, 24)  # Unregistered.
 | 
| -    all_metrics = list(self.store.get_all())
 | 
| -    self.assertEqual(1, len(all_metrics))
 | 
| -    self.assertEqual('foo', all_metrics[0][1].name)
 | 
| -
 | 
| -
 | 
| -class InProcessMetricStoreTest(MetricStoreTestBase, unittest.TestCase):
 | 
| -  METRIC_STORE_CLASS = metric_store.InProcessMetricStore
 | 
| 
 |