def create_app(): """Create callable wsgi app.""" # Load and validate the configuration valid, config = load_config('/etc/snolla.conf', configspec='config/snolla.conf.spec') if not valid: print('The supplied configuration is invalid.') sys.exit(1) # Setup logging logging.basicConfig(level=getattr(logging, config['general']['loglevel'])) # Create the queues commit_queue = Queue() bugzilla_task_queue = Queue() # Start a Snolla worker thread tw = SnollaWorker(config, commit_queue, bugzilla_task_queue) tw.setDaemon(True) tw.start() # Start a Bugzilla task handler thread tw = BugzillaWorker(config, bugzilla_task_queue) tw.setDaemon(True) tw.start() # Setup the WSGI frontend return Frontend(commit_queue)
def test_process_allowed_origins_no_match(self, mock_origin, mock_extract): mock_origin.return_value = False obj = SnollaWorker(self.cfg, None, None) obj.process(self.commit) mock_origin.assert_called_once_with(self.commit) self.assertFalse(mock_extract.called)
def test_process_empty_extracted_actions(self, mock_origin, mock_extract, mock_handle): mock_origin.return_value = True mock_extract.return_value = [] obj = SnollaWorker(self.cfg, None, None) obj.process(self.commit) mock_origin.assert_called_once_with(self.commit) mock_extract.assert_called_once_with(self.commit['message'], self.cfg['general']['extract_regex']) self.assertFalse(mock_handle.called)
def test_check_allowed_origins_no_match(self, mock_task, mock_config, mock_create): mock_task.return_value = None mock_config.return_value = 'foo' mock_queue = mock.MagicMock() obj = SnollaWorker(self.cfg, None, mock_queue) obj.handle_extracted_action('action', 1, 'the commit') mock_task.assert_called_once_with('action', mock_config.return_value) mock_config.assert_called_once_with(self.cfg) self.assertFalse(mock_queue.called) self.assertFalse(mock_create.called)
def test_process_has_action_and_bugid(self, mock_origin, mock_extract, mock_handle): mock_origin.return_value = True mock_extract.return_value = [('action1', 1), ('action2', 2)] obj = SnollaWorker(self.cfg, None, None) obj.process(self.commit) mock_origin.assert_called_once_with(self.commit) mock_extract.assert_called_once_with(self.commit['message'], self.cfg['general']['extract_regex']) expected = [mock.call(action, bugid, self.commit) for action, bugid in mock_extract.return_value] self.assertEqual(expected, mock_handle.call_args_list)
def test_handle_extracted_action(self, mock_origin): mock_origin.return_value = False obj = SnollaWorker(self.cfg, None, None) # Check False self.assertFalse(obj.check_allowed_origins(self.commit)) mock_origin.assert_called_once_with(self.commit['origin'], self.cfg['general']['allowed_origins']) # Check True mock_origin.reset_mock() mock_origin.return_value = True self.assertTrue(obj.check_allowed_origins(self.commit)) mock_origin.assert_called_once_with(self.commit['origin'], self.cfg['general']['allowed_origins'])
def test_check_allowed_origins_match(self, mock_task, mock_config, mock_create): mock_task.return_value = 'afinetask' mock_config.return_value = 'foo' mock_create.return_value = 'the bugzilla task' mock_queue = mock.MagicMock() obj = SnollaWorker(self.cfg, None, mock_queue) obj.handle_extracted_action('action', 1, 'the commit') mock_task.assert_called_once_with('action', mock_config.return_value) mock_config.assert_called_once_with(self.cfg) mock_create.assert_called_once_with('afinetask', 1, 'the commit') mock_queue.put.assert_called_once_with('the bugzilla task')