Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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'])
Ejemplo n.º 7
0
    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')