def test_check_limits_crit_verbose(self, colored, capsys):
        def se_colored(s, color):
            return "(%s)%s" % (color, s)

        colored.side_effect = se_colored

        mock_foo_limit1 = Mock()
        mock_foo_limit1.get_warnings.return_value = []
        mock_foo_limit1.get_criticals.return_value = []
        mock_foo_limit1.get_current_usage_str.return_value = 'foo1_usage'
        mock_foo_limit1.get_limit.return_value = 'foo1_limit'
        mock_bar_limit1 = Mock()
        usage1 = AwsLimitUsage(mock_bar_limit1, 95)
        mock_bar_limit1.get_warnings.return_value = []
        mock_bar_limit1.get_criticals.return_value = [usage1]
        mock_bar_limit1.get_current_usage_str.return_value = 'bar1_usage'
        mock_bar_limit1.get_limit.return_value = 'bar1_limit'
        mock_bar_limit2 = Mock()
        mock_bar_limit2.get_warnings.return_value = []
        mock_bar_limit2.get_criticals.return_value = []
        mock_bar_limit2.get_current_usage_str.return_value = 'bar2_usage'
        mock_bar_limit2.get_limit.return_value = 'bar2_limit'

        result = {
            'FooSvc': {
                'FooLimit1': mock_foo_limit1,
            },
            'BarSvc': {
                'BarLimit1': mock_bar_limit1,
                'BarLimit2': mock_bar_limit2,
            },
        }
        with patch('check_aws_limits.AwsLimitChecker',
                   create=True) as mock_checker:
            type(mock_checker.return_value).warning_threshold = 60
            type(mock_checker.return_value).critical_threshold = 90
            mock_checker.return_value.check_thresholds.return_value = {}
            mock_checker.return_value.get_limits.return_value = result
            cmd = check_aws_limits.CheckAWSLimits()
            res = cmd.check_limits(verbose=True)
        assert res == ([], [
            "(red)BarSvc 'BarLimit1' usage (95) exceeds critical threshold (limit=bar1_limit)"
        ])
        out, err = capsys.readouterr()
        assert out == 'Checking AWS resource usage; WARNING threshold 60% of ' \
            'limit, CRITICAL threshold 90% of limit\n' \
            "BarSvc 'BarLimit2' OK: bar2_usage (limit=bar2_limit)\n" \
            "FooSvc 'FooLimit1' OK: foo1_usage (limit=foo1_limit)\n" \
            "\n\n\n"
        assert err == ''
        assert mock_checker.mock_calls == [
            call(),
            call().set_threshold_overrides(
                check_aws_limits.AWS_THRESHOLD_OVERRIDES),
            call().set_limit_overrides(check_aws_limits.AWS_LIMIT_OVERRIDES),
            call().check_thresholds(),
            call().get_limits()
        ]
示例#2
0
 def test_run_ok(self, capsys):
     cls = check_aws_limits.CheckAWSLimits()
     with patch('check_aws_limits.CheckAWSLimits.check_limits') as mock_check:
         mock_check.return_value = ([], [])
         cls.run(verbose=True)
     assert mock_check.mock_calls == [call.check_limits(verbose=True)]
     out, err = capsys.readouterr()
     assert out == "All limits are within thresholds.\n"
     assert err == ''
 def test_run_warn(self, capsys):
     cls = check_aws_limits.CheckAWSLimits()
     with patch(
             'check_aws_limits.CheckAWSLimits.check_limits') as mock_check:
         mock_check.return_value = (['warn1', 'warn2'], [])
         cls.run()
     assert mock_check.mock_calls == [call.check_limits(verbose=False)]
     out, err = capsys.readouterr()
     assert out == "\nWARNING:\n\n" \
         "warn1\n" \
         "warn2\n" \
         "\n0 limit(s) above CRITICAL threshold; 2 limit(s) above WARNING threshold\n"
     assert err == ''
 def test_run_crit(self, capsys):
     cls = check_aws_limits.CheckAWSLimits()
     with patch(
             'check_aws_limits.CheckAWSLimits.check_limits') as mock_check:
         mock_check.return_value = ([], ['crit1'])
         with pytest.raises(SystemExit) as excinfo:
             cls.run(error_on_warning=True)
         assert excinfo.value.code == 1
     assert mock_check.mock_calls == [call.check_limits(verbose=False)]
     out, err = capsys.readouterr()
     assert out == "\nCRITICAL:\n\n" \
         "crit1\n" \
         "\n1 limit(s) above CRITICAL threshold; 0 limit(s) above WARNING threshold\n"
     assert err == ''
示例#5
0
 def test_check_limits_ok(self, capsys):
     with patch('check_aws_limits.AwsLimitChecker',
                create=True) as mock_checker:
         type(mock_checker.return_value).warning_threshold = 60
         type(mock_checker.return_value).critical_threshold = 90
         mock_checker.return_value.check_thresholds.return_value = {}
         mock_checker.return_value.get_limits.return_value = {}
         cmd = check_aws_limits.CheckAWSLimits()
         res = cmd.check_limits()
     assert res == ([], [])
     out, err = capsys.readouterr()
     assert out == 'Checking AWS resource usage; WARNING threshold 60% of ' \
         'limit, CRITICAL threshold 90% of limit\n'
     assert err == ''
     assert mock_checker.mock_calls == [
         call(),
         call().set_threshold_overrides(check_aws_limits.AWS_THRESHOLD_OVERRIDES),
         call().set_limit_overrides(check_aws_limits.AWS_LIMIT_OVERRIDES),
         call().check_thresholds(),
         call().get_limits()
     ]