def test_log_level_ignored(self):
        fake_cli_args = argparse.Namespace()
        config = configs.Config(cli_args=fake_cli_args)
        self.assertFalse(config.log_level_ignored('TRACE'))
        self.assertFalse(config.log_level_ignored('DEBUG'))
        self.assertFalse(config.log_level_ignored('INFO'))
        self.assertFalse(config.log_level_ignored('WARN'))
        self.assertFalse(config.log_level_ignored('ERROR'))
        self.assertFalse(config.log_level_ignored('FAIL'))
        self.assertFalse(config.log_level_ignored('OTHER_FOOBAR'))

        fake_cli_args = argparse.Namespace(ignore_logs_below='INFO')
        config = configs.Config(cli_args=fake_cli_args)
        self.assertTrue(config.log_level_ignored('TRACE'))
        self.assertTrue(config.log_level_ignored('DEBUG'))
        self.assertFalse(config.log_level_ignored('INFO'))
        self.assertFalse(config.log_level_ignored('WARN'))
        self.assertFalse(config.log_level_ignored('ERROR'))
        self.assertFalse(config.log_level_ignored('FAIL'))
        self.assertFalse(config.log_level_ignored('OTHER_FOOBAR'))

        fake_cli_args = argparse.Namespace(ignore_logs_below='WARN')
        config = configs.Config(cli_args=fake_cli_args)
        self.assertTrue(config.log_level_ignored('TRACE'))
        self.assertTrue(config.log_level_ignored('DEBUG'))
        self.assertTrue(config.log_level_ignored('INFO'))
        self.assertFalse(config.log_level_ignored('WARN'))
        self.assertFalse(config.log_level_ignored('ERROR'))
        self.assertFalse(config.log_level_ignored('FAIL'))
        self.assertFalse(config.log_level_ignored('OTHER_FOOBAR'))
Beispiel #2
0
    def test_execution_id(self):
        fake_cli_args = argparse.Namespace(execution_id='job_name_here')
        execution_id = configs.Config(fake_cli_args).execution_id
        assert execution_id == 'job_name_here', 'Execution-id should be correct'

        fake_cli_args = argparse.Namespace()
        execution_id = configs.Config(fake_cli_args).execution_id
        assert execution_id == 'Not set', 'Execution-id should be correct'
    def test_execution_context(self):
        fake_cli_args = argparse.Namespace(execution_context='PR')
        config = configs.Config(cli_args=fake_cli_args)
        self.assertEqual(config.execution_context, 'PR')

        fake_cli_args = argparse.Namespace()
        config = configs.Config(cli_args=fake_cli_args)
        self.assertEqual(config.execution_context, 'default')
Beispiel #4
0
    def test_execution_context_and_changes(self, fake_changes_file_data):
        fake_cli_args = argparse.Namespace(execution_context='PR',
                                           changes='foobar.json')
        config = configs.Config(fake_cli_args)
        self.assertEqual(config.execution_context, 'PR')

        fake_cli_args = argparse.Namespace(changes='foobar.json')
        config = configs.Config(fake_cli_args)
        self.assertEqual(config.execution_context, 'Integration')
    def test_allowing_major_schema_update_overrides_minor_updates(self):
        fake_cli_args = argparse.Namespace(allow_minor_schema_updates=True)
        config = configs.Config(cli_args=fake_cli_args)
        self.assertEqual(config.allow_minor_schema_updates, True)
        self.assertEqual(config.allow_major_schema_updates, False)

        fake_cli_args = argparse.Namespace(allow_major_schema_updates=True)
        config = configs.Config(cli_args=fake_cli_args)
        self.assertEqual(config.allow_minor_schema_updates, True)
        self.assertEqual(config.allow_major_schema_updates, True)

        fake_cli_args = argparse.Namespace(allow_major_schema_updates=True, allow_minor_schema_updates=False)
        config = configs.Config(cli_args=fake_cli_args)
        self.assertEqual(config.allow_minor_schema_updates, True)
        self.assertEqual(config.allow_major_schema_updates, True)
Beispiel #6
0
    def test_check_and_update_schema_does_not_run_major_updates_without_permission(self):
        mock_db = self.mock_db_class(configs.Config(file_config={'allow_minor_schema_updates': True}))
        mock_db._latest_update_applied.return_value = 0
        mock_db._schema_updates = ((1001, False, 'major_update.sql'),)

        with self.assertRaises(database.ArchiverSchemaException):
            mock_db.check_and_update_schema()
 def test_cli_configs_are_resolved(self):
     fake_cli_args = argparse.Namespace(user='******', port=1234, metadata=['foo:bar'])
     config = configs.Config(cli_args=fake_cli_args)
     self.assertEqual(config.database, 'test_archive')
     self.assertEqual(config.user, 'cli_user')
     self.assertEqual(config.port, 1234)
     self.assertEqual(config.metadata, {'foo': 'bar'})
Beispiel #8
0
 def test_file_configs_are_resolved(self):
     config = configs.Config(file_config=FAKE_CONFIG_FILE_DATA)
     self.assertEqual(config.database, 'archive.db')
     self.assertEqual(config.port, 1234)
     self.assertEqual(config.metadata, {
         'version': '1.2.3',
         'environment': 'integration'
     })
Beispiel #9
0
 def test_changes(self, fake_changes_file_data):
     fake_cli_args = argparse.Namespace(changes='foobar.json')
     changes = configs.Config(fake_cli_args).changes
     self.assertTrue(len(changes) == 1)
     self.assertEqual(changes[0]['name'], '/path/to/file.py')
     self.assertEqual(changes[0]['repository'], 'RepoA')
     self.assertEqual(changes[0]['item_type'], 'my_item_type')
     self.assertEqual(changes[0]['subtype'], 'my_subtype')
Beispiel #10
0
    def test_check_and_update_schema_initializes_schema(self):
        mock_db = self.mock_db_class(configs.Config())
        mock_db._latest_update_applied.return_value = None
        mock_db._initialize_schema.return_value = True

        mock_db.check_and_update_schema()
        mock_db._initialize_schema.assert_called_once()
        mock_db._run_script.assert_not_called()
 def test_cli_configs_have_higher_precedence_than_config_files(self):
     fake_cli_args = argparse.Namespace(user='******', port=4321,
                                        metadata=['version:3.2.1', 'cli_data:foobar'])
     config = configs.Config(cli_args=fake_cli_args, file_config=FAKE_CONFIG_FILE_DATA)
     self.assertEqual(config.database, 'archive.db')
     self.assertEqual(config.user, 'cli_user')
     self.assertEqual(config.port, 4321)
     self.assertEqual(config.metadata, {'version': '3.2.1', 'cli_data': 'foobar',
                                        'environment': 'integration'})
Beispiel #12
0
    def test_check_and_update_schema_runs_updates_on_v1_schema_when_allowed(self):
        config = configs.Config(file_config={'allow_major_schema_updates': True})
        mock_db = self.mock_db_class(config)
        mock_db._latest_update_applied.return_value = None
        mock_db._initialize_schema.return_value = False

        mock_db.check_and_update_schema()
        mock_db._initialize_schema.assert_called_once()
        self.assertEqual(mock_db._run_script.call_count, len(database.SCHEMA_UPDATES))
Beispiel #13
0
    def test_check_and_update_schema_fails_when_schema_is_too_new(self):
        mock_db = self.mock_db_class(configs.Config(file_config={'allow_major_schema_updates': True}))
        mock_db._latest_update_applied.return_value = 10002
        mock_db.fetch_one_value.return_value = 'a.b.c'
        mock_db._schema_updates = ((1001, False, 'major_update.sql'),)

        with self.assertRaises(database.ArchiverSchemaException):
            mock_db.check_and_update_schema()
        mock_db._run_script.assert_not_called()
Beispiel #14
0
    def test_check_and_update_schema_runs_updates_on_v2_schema_when_allowed(self):
        config = configs.Config(file_config={'allow_major_schema_updates': True})
        mock_db = self.mock_db_class(config)
        mock_db._latest_update_applied.return_value = 1
        mock_db._initialize_schema.return_value = False
        mock_db._schema_updates = ((1001, False, 'major update'),)

        mock_db.check_and_update_schema()
        mock_db._initialize_schema.assert_not_called()
        self.assertEqual(mock_db._run_script.call_count, 1)
    def test_keyword_is_inserted_by_default(self):
        config = configs.Config(file_config={})
        sut_archiver = archiver.Archiver(self.mock_db, config)
        sut_archiver.begin_suite('Some suite of tests')
        sut_archiver.begin_test('Some test case')

        keyword = sut_archiver.begin_keyword('Fake kw', 'unittests', 'mock')
        keyword.insert_results()
        self.mock_db.insert_or_ignore.assert_called_once()
        self.assertEqual(len(sut_archiver.keyword_statistics), 1)
    def test_keywords_are_not_archived(self):
        config = configs.Config(file_config={'archive_keywords': False})
        sut_archiver = archiver.Archiver(self.mock_db, config)
        sut_archiver.begin_suite('Some suite of tests')
        sut_archiver.begin_test('Some test case')

        keyword = sut_archiver.begin_keyword('Fake kw', 'unittests', 'mock')
        keyword.subtree_fingerprints = ['abcdef1234567890']
        keyword.insert_results()
        self.mock_db.insert_or_ignore.assert_not_called()
        self.assertEqual(len(sut_archiver.keyword_statistics), 0)
    def test_insert_adheres_to_log_level_cut_off(self):
        config = configs.Config(file_config={'ignore_logs_below': 'WARN'})
        sut_archiver = archiver.Archiver(self.mock_db, config)
        sut_archiver.begin_suite('Some suite of tests')

        message = archiver.LogMessage(sut_archiver, 'WARN', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_called_once()
        message = archiver.LogMessage(sut_archiver, 'INFO', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_called_once()
        message = archiver.LogMessage(sut_archiver, 'TRACE', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_called_once()
Beispiel #18
0
    def test_check_and_update_schema_does_not_run_any_updates_without_permission(self):
        mock_db = self.mock_db_class(configs.Config())
        mock_db._latest_update_applied.return_value = 0
        mock_db._initialize_schema.return_value = False

        mock_db._schema_updates = ((1001, False, 'major_update.sql'),)
        with self.assertRaises(database.ArchiverSchemaException):
            mock_db.check_and_update_schema()
        mock_db._run_script.assert_not_called()

        mock_db._schema_updates = ((1001, True, 'minor_update.sql'),)
        with self.assertRaises(database.ArchiverSchemaException):
            mock_db.check_and_update_schema()
        mock_db._run_script.assert_not_called()
    def test_insert_not_ignored_by_default(self):
        config = configs.Config(file_config={})
        sut_archiver = archiver.Archiver(self.mock_db, config)
        sut_archiver.begin_suite('Some suite of tests')

        message = archiver.LogMessage(sut_archiver, 'WARN', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_called_once()
        message = archiver.LogMessage(sut_archiver, 'INFO', 'some_timestamp')
        message.insert('Some log message')
        self.assertEqual(self.mock_db.insert.call_count, 2)
        message = archiver.LogMessage(sut_archiver, 'TRACE', 'some_timestamp')
        message.insert('Some log message')
        self.assertEqual(self.mock_db.insert.call_count, 3)
    def test_logs_not_inserted_when_logs_ignored(self):
        config = configs.Config(file_config={'ignore_logs': True})
        sut_archiver = archiver.Archiver(self.mock_db, config)
        sut_archiver.begin_suite('Some suite of tests')

        message = archiver.LogMessage(sut_archiver, 'WARN', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_not_called()
        message = archiver.LogMessage(sut_archiver, 'INFO', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_not_called()
        message = archiver.LogMessage(sut_archiver, 'TRACE', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_not_called()
        message = archiver.LogMessage(sut_archiver, 'FOO', 'some_timestamp')
        message.insert('Some log message')
        self.mock_db.insert.assert_not_called()
 def test_config_file_is_read(self, fake_read_config_file):
     configs.Config(file_config='foobar.json')
     fake_read_config_file.asser_called_once()
Beispiel #22
0
 def test_changes_when_no_changes_in_file(self, fake_changes_file_data):
     fake_cli_args = argparse.Namespace(changes='foobar.json')
     changes = configs.Config(fake_cli_args).changes
     self.assertEqual(changes, [])
Beispiel #23
0
 def test_changes_when_no_changes(self):
     fake_cli_args = argparse.Namespace()
     changes = configs.Config(fake_cli_args).changes
     self.assertEqual(changes, [])
 def setUp(self):
     self.mock_db = Mock()
     self.config = configs.Config(file_config={})
     self.archiver = archiver.Archiver(self.mock_db, self.config)
     self.item = SutFingerprintedItem(self.archiver, 'SUT item')
 def test_default_configs_are_resolved(self):
     config = configs.Config()
     self.assertEqual(config.database, 'test_archive')
     self.assertEqual(config.port, 5432)
     self.assertEqual(config.require_ssl, True)
     self.assertEqual(config.metadata, {})
 def setUp(self):
     self.mock_db = Mock()
     self.config = configs.Config(file_config={})
     self.archiver = archiver.Archiver(self.mock_db, self.config)
     self.item = archiver.TestItem(self.archiver)
Beispiel #27
0
 def test_execution_context_when_not_set_in_changes(self,
                                                    fake_changes_file_data):
     fake_cli_args = argparse.Namespace(changes='foobar.json')
     config = configs.Config(fake_cli_args)
     self.assertEqual(config.execution_context, 'default')
def mock_archiver():
    mock_db = Mock()
    config = configs.Config(file_config={})
    return archiver.Archiver(mock_db, config)
Beispiel #29
0
 def setUp(self):
     # Create database file for each test case
     temp_db = '{}.{}.db'.format(self.__class__.__name__, self._testMethodName)
     full_path = os.path.join(self.__class__.dir_path, temp_db)
     self.database = database.SQLiteDatabase(configs.Config(file_config={'database': full_path}))
     self.assertTrue(self.database._initialize_schema())