Beispiel #1
0
    def test_basic_run_job(self, db_conn, req_mock):
        req_mock.get(BUGZILLA_BASE_URL, json=SAMPLE_BUGZILLA_RESULTS)
        config_manager = self._setup_config_manager(3)

        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('bugzilla-associations')

            information = load_structure(db_conn)
            assert information['bugzilla-associations']
            assert not information['bugzilla-associations']['last_error']
            assert information['bugzilla-associations']['last_success']

        associations = self.fetch_data(db_conn)

        # Verify we have the expected number of associations
        assert len(associations) == 8
        bug_ids = set([x['bug_id'] for x in associations])

        # Verify bugs with no crash signatures are missing
        assert 6 not in bug_ids

        bug_8_signatures = [
            item['signature'] for item in associations if item['bug_id'] == '8'
        ]

        # New signatures have correctly been inserted
        assert len(bug_8_signatures) == 2
        assert 'another::legitimate(sig)' in bug_8_signatures
        assert 'legitimate(sig)' in bug_8_signatures
Beispiel #2
0
    def test_run(self, connection_context, db_conn):
        config_manager = self._setup_config_manager()
        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('elasticsearch-cleanup')

            information = load_structure(db_conn)
            assert information['elasticsearch-cleanup']
            assert not information['elasticsearch-cleanup']['last_error']
            assert information['elasticsearch-cleanup']['last_success']
    def test_run(self, connection_context, db_conn):
        config_manager = self._setup_config_manager()
        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('elasticsearch-cleanup')

            information = load_structure(db_conn)
            assert information['elasticsearch-cleanup']
            assert not information['elasticsearch-cleanup']['last_error']
            assert information['elasticsearch-cleanup']['last_success']
Beispiel #4
0
    def run_job_and_assert_success(self, db_conn):
        # Run crontabber
        config_manager = self._setup_config_manager()
        with config_manager.context() as config:
            crontabberapp = CronTabberApp(config)
            crontabberapp.run_one('update-signatures')

        # Assert the job ran correctly
        crontabber_info = load_structure(db_conn)
        assert crontabber_info['update-signatures']['last_error'] == {}
        assert crontabber_info['update-signatures']['last_success']
    def run_job_and_assert_success(self, db_conn):
        # Run crontabber
        config_manager = self._setup_config_manager()
        with config_manager.context() as config:
            crontabberapp = CronTabberApp(config)
            crontabberapp.run_one('update-signatures')

        # Assert the job ran correctly
        crontabber_info = load_structure(db_conn)
        assert crontabber_info['update-signatures']['last_error'] == {}
        assert crontabber_info['update-signatures']['last_success']
Beispiel #6
0
    def test_with_bugzilla_failure(self, db_conn, req_mock):
        req_mock.get(BUGZILLA_BASE_URL, text='error loading content', status_code=500)
        config_manager = self._setup_config_manager(3)

        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('bugzilla-associations')

            information = load_structure(db_conn)
            assert information['bugzilla-associations']
            # Verify there has been an error
            last_error = information['bugzilla-associations']['last_error']
            assert last_error
            assert 'HTTPError' in last_error['type']
            assert not information['bugzilla-associations']['last_success']
Beispiel #7
0
    def test_run_job_with_reports_with_existing_bugs_different(self, db_conn, req_mock):
        """Verify that an association to a signature that no longer is part
        of the crash signatures list gets removed.
        """
        req_mock.get(BUGZILLA_BASE_URL, json=SAMPLE_BUGZILLA_RESULTS)
        self.insert_data(db_conn, bug_id='8', signature='@different')

        config_manager = self._setup_config_manager(3)
        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('bugzilla-associations')

            information = load_structure(db_conn)
            assert information['bugzilla-associations']
            assert not information['bugzilla-associations']['last_error']
            assert information['bugzilla-associations']['last_success']

        # The previous association, to signature '@different' that is not in
        # crash signatures, is now missing
        associations = self.fetch_data(db_conn)
        assert '@different' not in [item['signature'] for item in associations]
Beispiel #8
0
    def test_run_job_with_reports_with_existing_bugs_same(self, db_conn, req_mock):
        req_mock.get(BUGZILLA_BASE_URL, json=SAMPLE_BUGZILLA_RESULTS)
        self.insert_data(db_conn, bug_id='8', signature='legitimate(sig)')

        config_manager = self._setup_config_manager(3)
        with config_manager.context() as config:
            tab = CronTabberApp(config)
            tab.run_one('bugzilla-associations')

            information = load_structure(db_conn)
            assert information['bugzilla-associations']
            assert not information['bugzilla-associations']['last_error']
            assert information['bugzilla-associations']['last_success']

        associations = self.fetch_data(db_conn)
        associations = [item['signature'] for item in associations if item['bug_id'] == '8']

        # New signatures have correctly been inserted
        assert len(associations) == 2
        assert associations == [
            'another::legitimate(sig)',
            'legitimate(sig)'
        ]