def test_metric_with_category(self, mock_categorize): """The ``metric`` method should call ``_categorize`` if passed a ``category`` argument.""" category = "Some Category" slug = 'categorized-metric' n = 1 # get the keys used for the metric, so we can check for calls day, week, month, year = self.r._build_keys(slug) self.r.metric(slug, num=n, category=category) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, day, week, month, year), call.incr(day, n), call.incr(week, n), call.incr(month, n), call.incr(year, n), ]) # Make sure this gets categorized. mock_categorize.assert_called_once_with(slug, category) # Expiration should not have gotten called self.assertFalse(self.redis.expire.called)
def test_metric_with_expiration(self, mock_categorize): """The ``metric`` method should call the redis ``expire`` method if passed an ``expire`` argument.""" slug = 'categorized-metric' n = 1 # get the keys used for the metric, so we can check for calls day, week, month, year = self.r._build_keys(slug) self.r.metric(slug, num=n, expire=3600) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, day, week, month, year), call.incr(day, n), call.incr(week, n), call.incr(month, n), call.incr(year, n), ]) # Make sure nothing was categorized. self.assertFalse(mock_categorize.called) # Expiration should have gotten called self.redis.expire.assert_has_calls([ call.expire(day, 3600), call.expire(week, 3600), call.expire(month, 3600), call.expire(year, 3600), ])
def test_statistics_all_missing_prefix_and_missing_name(self): d = DotDict() d.statsd_host = "localhost" d.statsd_port = 666 d.prefix = None d.active_counters_list = ["x", "y", "z"] with patch("socorro.lib.statistics.StatsClient") as StatsClientMocked: s = StatisticsForStatsd(d, None) StatsClientMocked.assert_called_with("localhost", 666, "") s.incr("x") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("x")]) s.incr("y") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("y")]) s.incr("z") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("z")]) s.incr("w") StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr("y"), call.incr("x"), call.incr("y")] ) s.incr(None) StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr("y"), call.incr("x"), call.incr("y"), call.incr("unknown")] )
def test_statistics_all_missing_prefix(self): d = DotDict() d.statsd_host = 'localhost' d.statsd_port = 666 d.prefix = None d.active_counters_list = ['x', 'y', 'z'] with patch('socorro.lib.statistics.StatsClient') as StatsClientMocked: s = StatisticsForStatsd(d, 'processor') StatsClientMocked.assert_called_with( 'localhost', 666, 'processor') s.incr('x') StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr('processor.x')] ) s.incr('y') StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr('processor.y')] ) s.incr('z') StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr('processor.z')] ) s.incr('w') StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [ call.incr('processor.y'), call.incr('processor.x'), call.incr('processor.y') ] ) s.incr(None) StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [ call.incr('processor.y'), call.incr('processor.x'), call.incr('processor.y'), call.incr('processor.unknown') ] )
def test_metric_with_category(self, mock_categorize): """The ``metric`` method should call ``_categorize`` if passed a ``category`` argument.""" category = "Some Category" slug = 'categorized-metric' n = 1 # get the keys used for the metric, so we can check for calls keys = self.r._build_keys(slug) second, minute, hour, day, week, month, year = keys self.r.metric(slug, num=n, category=category) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, slug), call.incr(second, n), call.incr(minute, n), call.incr(hour, n), call.incr(day, n), call.incr(week, n), call.incr(month, n), call.incr(year, n), ]) # Make sure this gets categorized. mock_categorize.assert_called_once_with(slug, category) # Expiration should not have gotten called self.assertFalse(self.redis.expire.called)
def test_metric(self): """Test setting metrics using ``R.metric``.""" slug = 'test-metric' n = 1 # get the keys used for the metric, so we can check for the appropriate # calls keys = self.r._build_keys(slug) second, minute, hour, day, week, month, year = keys self.r.metric(slug, num=n) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, slug), call.incr(second, n), call.incr(minute, n), call.incr(hour, n), call.incr(day, n), call.incr(week, n), call.incr(month, n), call.incr(year, n), ]) # Expiration should not have gotten called self.assertFalse(self.redis.expire.called)
def test_metric_with_overridden_granularities(self): slug = 'test-metric' n = 1 # get the keys used for the metric, so we can check for the appropriate # calls daily, weekly = self.r._build_keys(slug) self.r.metric(slug, num=n) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, slug), call.incr(daily, n), call.incr(weekly, n), ]) # Expiration should not have gotten called self.assertFalse(self.redis.expire.called)
def test_metric(self): """Test setting metrics using ``R.metric``.""" slug = 'test-metric' n = 1 # get the keys used for the metric, so we can check for the appropriate # calls day, week, month, year = self.r._build_keys(slug) self.r.metric(slug, num=n) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key self.redis.assert_has_calls([ call.sadd(self.r._metric_slugs_key, day, week, month, year), call.incr(day, n), call.incr(week, n), call.incr(month, n), call.incr(year, n), ])
def test_statistics_all_good(self): d = DotDict() d.statsd_host = "localhost" d.statsd_port = 666 d.prefix = "a.b" d.active_counters_list = ["x", "y", "z"] with patch("socorro.lib.statistics.StatsClient") as StatsClientMocked: s = StatisticsForStatsd(d, "processor") StatsClientMocked.assert_called_with("localhost", 666, "a.b.processor") s.incr("x") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("a.b.processor.x")]) s.incr("y") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("a.b.processor.y")]) s.incr("z") StatsClientMocked.assert_has_calls(StatsClientMocked.mock_calls, [call.incr("a.b.processor.z")]) s.incr("w") StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [call.incr("a.b.processor.y"), call.incr("a.b.processor.x"), call.incr("a.b.processor.y")], ) s.incr(None) StatsClientMocked.assert_has_calls( StatsClientMocked.mock_calls, [ call.incr("a.b.processor.y"), call.incr("a.b.processor.x"), call.incr("a.b.processor.y"), call.incr("a.b.processor.unknown"), ], )
def test_metric_with_expiration(self, mock_categorize): """The ``metric`` method should call the redis ``expire`` method if passed an ``expire`` argument.""" slug = 'categorized-metric' n = 1 # get the keys used for the metric, so we can check for calls keys = self.r._build_keys(slug) self.r.metric(slug, num=n, expire=3600) # Verify that setting a metric adds the appropriate slugs to the keys # set and then incrememts each key call_list = [call.sadd(self.r._metric_slugs_key, slug)] for k in keys: call_list.append(call.incr(k, n)) call_list.append(call.expire(k, 3600)) self.redis.assert_has_calls(call_list) # Make sure nothing was categorized. self.assertFalse(mock_categorize.called)