def test_check_values_generates_tests_report_with_previous_metrics(self):
        test_suite_logger = Mock()
        test_suite_logger_factory_mock = Mock().ordered_new_logger("ehMetrics", toReturn = test_suite_logger)

        test_suite_logger.ordered_failed('key2', 0, 'EHMetrics', 'metric key2 () increased from 9 to 10.', toReturn = None)
        test_suite_logger.ordered_success('key3', 0, 'EHMetrics', toReturn = None)
        test_suite_logger.ordered_save(toReturn = None)

        processor = MetricsProcessor(test_suite_logger_factory_mock)

        metrics = DataBean(metrics = {
            'key2': DataBean(value=10, description='', checked=True, direction=FALLING),
            'key3': DataBean(value=10, description='', checked=True, direction=FALLING)
        })

        git = Mock()
        git.ordered_latest_annotated_commit_with_details(STATS_REF_NAME, toReturn={
            'note': '{"metrics":{"key1": {"value": 10, "description": ""}, "key2": {"value": 9, "description": ""}}}',
            'hash': '123456',
            'commiter': 'me'
        })
        git.ordered_generate_annotated_commits_with_details(STATS_EXCLUSION_REF_NAME, commit_range='123456..HEAD',
            toReturn=[])

        args = Mock(non_interactive=True)
        self.assertEqual(Callable.do_not_proceed, processor.check_values(args, metrics, git, MockFileUtils())(Mock()))

        git.verify_all_ordered()
        test_suite_logger.verify_all_ordered()
Esempio n. 2
0
    def test_check_values_generates_tests_report_when_no_previous_metrics(
            self):
        test_suite_logger = Mock()
        test_suite_logger_factory_mock = Mock().ordered_new_logger(
            "ehMetrics", toReturn=test_suite_logger)

        test_suite_logger.ordered_success('key2',
                                          0,
                                          'EHMetrics',
                                          toReturn=None)
        test_suite_logger.ordered_success('key3',
                                          0,
                                          'EHMetrics',
                                          toReturn=None)
        test_suite_logger.ordered_save(toReturn=None)

        processor = MetricsProcessor(test_suite_logger_factory_mock)

        metrics = DataBean(
            metrics={
                'key2':
                DataBean(
                    value=10, description='', checked=True, direction=FALLING),
                'key3':
                DataBean(
                    value=10, description='', checked=True, direction=FALLING)
            })

        args = Mock(non_interactive=True)
        self.assertEqual(
            Callable.success,
            processor.check_values(args, metrics, Mock(),
                                   MockFileUtils())(Mock()))

        test_suite_logger.verify_all_ordered()
Esempio n. 3
0
    def test_check_values_respects_other_violations(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()

        git.expect_latest_annotated_commit_with_details(
            STATS_REF_NAME,
            toReturn={
                'note': '{"metrics":{"key1": {"value": 10, "description": ""},'
                '"key2": {"value": 10, "description": ""}}}',
                'hash': '123456',
                'commiter': 'me'
            })
        exclusion = {
            'note':
            '{"committer": "testbot", "reason": "none", "exclusion": {"key1": 15}}'
        }
        git.expect_generate_annotated_commits_with_details(
            STATS_EXCLUSION_REF_NAME,
            commit_range='123456..HEAD',
            toReturn=[exclusion])

        metrics = DataBean()
        metrics.metrics = {
            'key1':
            DataBean(value=8, description='', checked=True, direction=FALLING),
            'key2':
            DataBean(value=12, description='', checked=True, direction=FALLING)
        }

        self.assertEqual(
            Callable.do_not_proceed,
            processor.check_values(args, metrics, git,
                                   MockFileUtils())(Mock()))
Esempio n. 4
0
    def test_check_values_with_unchecked(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()

        git.expect_latest_annotated_commit_with_details(
            STATS_REF_NAME,
            toReturn={
                'note':
                '{"metrics":{"key1": {"value": 10, "description": ""}, '
                '"key2": {"value": 10, "description": ""}}}',
                'hash': '123456',
                'commiter': 'me'
            })
        git.expect_generate_annotated_commits_with_details(
            STATS_EXCLUSION_REF_NAME, commit_range='123456..HEAD', toReturn=[])

        metrics = DataBean()
        metrics.metrics = {
            'key1':
            DataBean(value=12,
                     description='',
                     checked=False,
                     direction=FALLING)
        }
        metrics.metrics = {
            'key1':
            DataBean(value=8, description='', checked=False, direction=RISING)
        }

        self.assertEqual(
            Callable.success,
            processor.check_values(args, metrics, git,
                                   MockFileUtils())(Mock()))
Esempio n. 5
0
    def test_check_values_rising(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()

        git.expect_latest_annotated_commit_with_details(
            STATS_REF_NAME,
            toReturn={
                'note':
                '{"metrics":{"key1": {"value": 20, "description": ""}}}',
                'hash': 'abcdef',
                'commiter': 'me'
            })
        git.expect_generate_annotated_commits_with_details(
            STATS_EXCLUSION_REF_NAME, commit_range='abcdef..HEAD', toReturn=[])

        metrics = DataBean()
        metrics.metrics = {
            'key1':
            DataBean(value=10, description='', checked=True, direction=RISING)
        }

        self.assertEqual(
            Callable.do_not_proceed,
            processor.check_values(args, metrics, git,
                                   MockFileUtils())(Mock()))
Esempio n. 6
0
    def test_check_values_generates_tests_report_with_previous_metrics(self):
        test_suite_logger = Mock()
        test_suite_logger_factory_mock = Mock().ordered_new_logger(
            "ehMetrics", toReturn=test_suite_logger)

        test_suite_logger.ordered_failed(
            'key2',
            0,
            'EHMetrics',
            'metric key2 () increased from 9 to 10.',
            toReturn=None)
        test_suite_logger.ordered_success('key3',
                                          0,
                                          'EHMetrics',
                                          toReturn=None)
        test_suite_logger.ordered_save(toReturn=None)

        processor = MetricsProcessor(test_suite_logger_factory_mock)

        metrics = DataBean(
            metrics={
                'key2':
                DataBean(
                    value=10, description='', checked=True, direction=FALLING),
                'key3':
                DataBean(
                    value=10, description='', checked=True, direction=FALLING)
            })

        git = Mock()
        git.ordered_latest_annotated_commit_with_details(
            STATS_REF_NAME,
            toReturn={
                'note':
                '{"metrics":{"key1": {"value": 10, "description": ""}, "key2": {"value": 9, "description": ""}}}',
                'hash': '123456',
                'commiter': 'me'
            })
        git.ordered_generate_annotated_commits_with_details(
            STATS_EXCLUSION_REF_NAME, commit_range='123456..HEAD', toReturn=[])

        args = Mock(non_interactive=True)
        self.assertEqual(
            Callable.do_not_proceed,
            processor.check_values(args, metrics, git,
                                   MockFileUtils())(Mock()))

        git.verify_all_ordered()
        test_suite_logger.verify_all_ordered()
    def test_check_values_rising(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()

        git.expect_latest_annotated_commit_with_details(STATS_REF_NAME, toReturn={'note': '{"metrics":{"key1": {"value": 20, "description": ""}}}',
                                                                                  'hash': 'abcdef',
                                                                                  'commiter': 'me'})
        git.expect_generate_annotated_commits_with_details(STATS_EXCLUSION_REF_NAME, commit_range='abcdef..HEAD', toReturn=[])

        metrics = DataBean()
        metrics.metrics = {'key1': DataBean(value=10, description='', checked=True, direction=RISING)}

        self.assertEqual(Callable.do_not_proceed, processor.check_values(args, metrics, git, MockFileUtils())(Mock()))
    def test_check_values_with_exclusions(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()

        git.expect_latest_annotated_commit_with_details(STATS_REF_NAME, toReturn={'note': '{"metrics":{"key1": {"value": 10, "description": ""}}}',
                                                                                  'hash': '123456',
                                                                                  'commiter': 'me'})
        exclusion = {'note': '{"committer": "testbot", "reason": "none", "exclusion": {"key1": 15}}'}
        git.expect_generate_annotated_commits_with_details(STATS_EXCLUSION_REF_NAME, commit_range='123456..HEAD', toReturn=[exclusion])

        metrics = DataBean()
        metrics.metrics = {'key1': DataBean(value=12, description='', checked=True, direction=FALLING)}

        self.assertEqual(Callable.success, processor.check_values(args, metrics, git, MockFileUtils())(Mock()))
    def test_check_values_generates_tests_report_when_no_previous_metrics(self):
        test_suite_logger = Mock()
        test_suite_logger_factory_mock = Mock().ordered_new_logger("ehMetrics", toReturn = test_suite_logger)

        test_suite_logger.ordered_success('key2', 0, 'EHMetrics', toReturn = None)
        test_suite_logger.ordered_success('key3', 0, 'EHMetrics', toReturn = None)
        test_suite_logger.ordered_save(toReturn = None)

        processor = MetricsProcessor(test_suite_logger_factory_mock)

        metrics = DataBean(metrics = {
            'key2': DataBean(value=10, description='', checked=True, direction=FALLING),
            'key3': DataBean(value=10, description='', checked=True, direction=FALLING)
        })

        args = Mock(non_interactive=True)
        self.assertEqual(Callable.success, processor.check_values(args, metrics, Mock(), MockFileUtils())(Mock()))

        test_suite_logger.verify_all_ordered()
    def test_check_values_ignores_additional_and_missing_keys(self):
        processor = MetricsProcessor()

        args = Mock(non_interactive=True)
        git = Mock()


        git.expect_latest_annotated_commit_with_details(STATS_REF_NAME, toReturn={'note': '{"metrics":{'
                                                                        '"key1": {"value": 20, "description": ""}, '
                                                                        '"key2": {"value": 10, "description": ""}   }}',
                                                                                  'hash': '123efef',
                                                                                  'commiter': 'me'})
        git.expect_generate_annotated_commits_with_details(STATS_EXCLUSION_REF_NAME, commit_range='123efef..HEAD', toReturn=[])

        metrics = DataBean()
        metrics.metrics = {'key2': DataBean(value=10, description='', checked=True, direction=FALLING),
                           'key3': DataBean(value=10, description='', checked=True, direction=FALLING)}

        self.assertEqual(Callable.success, processor.check_values(args, metrics, git, MockFileUtils())(Mock()))