def test_alarm_create_time_constraints(self): shell = base_shell.CeilometerShell() argv = [ 'alarm-threshold-create', '--name', 'cpu_high', '--meter-name', 'cpu_util', '--threshold', '70.0', '--time-constraint', 'name=cons1;start="0 11 * * *";duration=300', '--time-constraint', 'name=cons2;start="0 23 * * *";duration=600', ] _, args = shell.parse_args(argv) alarm = alarms.Alarm(mock.Mock(), self.ALARM) self.cc.alarms.create.return_value = alarm ceilometer_shell.do_alarm_threshold_create(self.cc, args) _, kwargs = self.cc.alarms.create.call_args time_constraints = [ dict(name='cons1', start='0 11 * * *', duration='300'), dict(name='cons2', start='0 23 * * *', duration='600') ] self.assertEqual(time_constraints, kwargs['time_constraints'])
def _test_entity_obsoleted(self, entity, value, positional, *args): new_args = [value] if positional else ['--%s' % entity, value] argv = list(args) + new_args shell = base_shell.CeilometerShell() with mock.patch('sys.stdout', new_callable=six.StringIO) as stdout: shell.parse_args(argv) self.assertIn('obsolete', stdout.getvalue())
def shell(self, argstr): try: _shell = ceilometer_shell.CeilometerShell() _shell.main(argstr.split()) except SystemExit: exc_type, exc_value, exc_traceback = sys.exc_info() self.assertEqual(0, exc_value.code) return sys.stdout.getvalue()
def shell(self, argstr, mock_ksclient, mock_json, mock_raw): try: _shell = ceilometer_shell.CeilometerShell() _shell.main(argstr.split()) except SystemExit: exc_type, exc_value, exc_traceback = sys.exc_info() self.assertEqual(exc_value.code, 0) return sys.stdout.getvalue()
def _test_entity_action_with_empty_value(self, entity, value, positional, *args): new_args = [value] if positional else ['--%s' % entity, value] argv = list(args) + new_args shell = base_shell.CeilometerShell() with mock.patch('ceilometerclient.exc.CommandError') as e: e.return_value = exc.BaseException() self.assertRaises(exc.BaseException, shell.parse_args, argv) entity = entity.replace('-', '_') e.assert_called_with('%s should not be empty' % entity)
def _test_alarm_threshold_action_args(self, action, argv): shell = base_shell.CeilometerShell() _, args = shell.parse_args(argv) alarm = alarms.Alarm(mock.Mock(), self.ALARM) getattr(self.cc.alarms, action).return_value = alarm func = getattr(ceilometer_shell, 'do_alarm_threshold_' + action) func(self.cc, args) _, kwargs = getattr(self.cc.alarms, action).call_args self._check_alarm_threshold_args(kwargs)
def shell(self, argstr, mock_ksclient, mock_json, mock_raw): orig = sys.stdout try: sys.stdout = six.StringIO() _shell = ceilometer_shell.CeilometerShell() _shell.main(argstr.split()) except SystemExit: exc_type, exc_value, exc_traceback = sys.exc_info() self.assertEqual(exc_value.code, 0) finally: out = sys.stdout.getvalue() sys.stdout.close() sys.stdout = orig return out
def test_alarm_threshold_create_args(self): shell = base_shell.CeilometerShell() argv = [ 'alarm-threshold-create', '--name', 'cpu_high', '--description', 'instance running hot', '--meter-name', 'cpu_util', '--threshold', '70.0', '--comparison-operator', 'gt', '--statistic', 'avg', '--period', '600', '--evaluation-periods', '3', '--alarm-action', 'log://', '--alarm-action', 'http://example.com/alarm/state', '--query', 'resource_id=INSTANCE_ID' ] _, args = shell.parse_args(argv) orig = sys.stdout sys.stdout = six.StringIO() alarm = alarms.Alarm(mock.Mock(), self.ALARM) self.cc.alarms.create.return_value = alarm try: ceilometer_shell.do_alarm_threshold_create(self.cc, args) _, kwargs = self.cc.alarms.create.call_args self.assertEqual('cpu_high', kwargs.get('name')) self.assertEqual('instance running hot', kwargs.get('description')) actions = ['log://', 'http://example.com/alarm/state'] self.assertEqual(actions, kwargs.get('alarm_actions')) self.assertTrue('threshold_rule' in kwargs) rule = kwargs['threshold_rule'] self.assertEqual('cpu_util', rule.get('meter_name')) self.assertEqual(70.0, rule.get('threshold')) self.assertEqual('gt', rule.get('comparison_operator')) self.assertEqual('avg', rule.get('statistic')) self.assertEqual(600, rule.get('period')) self.assertEqual(3, rule.get('evaluation_periods')) query = dict(field='resource_id', type='', value='INSTANCE_ID', op='eq') self.assertEqual([query], rule['query']) finally: sys.stdout.close() sys.stdout = orig
def test_get_base_parser(self): standalone_shell = ceilometer_shell.CeilometerShell() parser = standalone_shell.get_base_parser() self.assertEqual(600, parser.get_default('timeout'))