def test_get_options_returns_right_option(self): # only have the defaults options = leadbutt.get_options(None, None, None) self.assertEqual(options['Period'], 1) self.assertEqual(options['Count'], 5) # config options were specified config_options = { 'Period': 2, } options = leadbutt.get_options(config_options, None, None) self.assertEqual(options['Period'], 2) self.assertEqual(options['Count'], 5) # local_options were specified local_options = { 'Period': 3, } options = leadbutt.get_options(config_options, local_options, None) self.assertEqual(options['Period'], 3) self.assertEqual(options['Count'], 5) # cli_options were specified cli_options = { 'Period': 4, 'Count': 10, } options = leadbutt.get_options(config_options, local_options, cli_options) self.assertEqual(options['Period'], 4) self.assertEqual(options['Count'], 10)
def test_custom_formatter_used(self, mock_sysout): mock_results = [{ 'Timestamp': datetime.datetime.utcnow(), 'Unit': 'Count', 'Sum': 1337.0, }] metric = { 'Namespace': 'AWS/Foo', 'MetricName': 'RequestCount', 'Statistics': 'Sum', 'Unit': 'Count', 'Dimensions': { 'Krang': 'X' }, 'Options': { 'Formatter': 'tmnt.%(dimension)s' } } options = leadbutt.get_options(None, metric.get('Options'), None) leadbutt.output_results(mock_results, metric, options) self.assertTrue(mock_sysout.write.called) out = mock_sysout.write.call_args[0][0] name, value, timestamp = out.split() # assert custom formatter was used self.assertEqual(name, 'tmnt.x') self.assertEqual(value, '1337.0')
def test_multiple_statistics_get_multiple_lines(self, mock_sysout): mock_results = [{ 'Timestamp': datetime.datetime.utcnow(), 'Maximum': 9001.0, 'Average': 1337.0, }] metric = { 'Namespace': 'AWS/Foo', 'MetricName': 'RequestCount', 'Statistics': ['Maximum', 'Average'], 'Unit': 'Count', 'Dimensions': {'Krang': 'X'}, } options = leadbutt.get_options(None, metric.get('Options'), None) leadbutt.output_results(mock_results, metric, options) self.assertEqual( mock_sysout.write.call_count, len(metric['Statistics']))
def test_default_formatter_used(self, mock_sysout): mock_results = [{ 'Timestamp': datetime.datetime.utcnow(), 'Sum': 1337.0, }] metric = { 'Namespace': 'AWS/Foo', 'MetricName': 'RequestCount', 'Statistics': 'Sum', 'Unit': 'Count', 'Dimensions': {'Krang': 'X'}, } options = leadbutt.get_options(None, metric.get('Options'), None) leadbutt.output_results(mock_results, metric, options) self.assertTrue(mock_sysout.write.called) out = mock_sysout.write.call_args[0][0] name, value, timestamp = out.split() # assert default formatter was used self.assertEqual(name, 'cloudwatch.aws.foo.x.requestcount.sum.count') self.assertEqual(value, '1337.0')