Exemple #1
0
    def test_run_command_fuzz(self):
        """Test run_command with a normal command."""
        commands.run_command('fuzz', 'fuzzer', 'job')

        self.assertEqual(1, self.mock.fuzz_execute_task.call_count)
        self.mock.fuzz_execute_task.assert_called_with('fuzzer', 'job')

        # Fuzz task should not create any TaskStatus entities.
        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(0, len(task_status_entities))
Exemple #2
0
    def test_run_command_invalid_testcase(self):
        """Test run_command with an invalid testcase exception."""
        self.mock.progression_execute_task.side_effect = errors.InvalidTestcaseError
        commands.run_command('progression', '123', 'job')

        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(1, len(task_status_entities))

        # TaskStatus should still indicate success.
        task_status = task_status_entities[0]
        self.assertDictEqual(
            {
                'bot_name': 'bot_name',
                'status': 'finished',
                'time': test_utils.CURRENT_TIME,
            }, task_status.to_dict())
Exemple #3
0
    def test_run_command_exception(self):
        """Test run_command with an exception."""
        self.mock.progression_execute_task.side_effect = Exception

        with self.assertRaises(Exception):
            commands.run_command('progression', '123', 'job')

        # TaskStatus should indicate failure.
        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(1, len(task_status_entities))

        task_status = task_status_entities[0]
        self.assertDictEqual(
            {
                'bot_name': 'bot_name',
                'status': 'errored out',
                'time': test_utils.CURRENT_TIME,
            }, task_status.to_dict())
Exemple #4
0
    def test_run_command_progression(self):
        """Test run_command with a progression task."""
        commands.run_command('progression', '123', 'job')

        self.assertEqual(1, self.mock.progression_execute_task.call_count)
        self.mock.progression_execute_task.assert_called_with('123', 'job')

        # TaskStatus should indicate success.
        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(1, len(task_status_entities))

        task_status = task_status_entities[0]
        self.assertEqual(ndb.Key(data_types.TaskStatus, 'progression 123 job'),
                         task_status.key)

        self.assertDictEqual(
            {
                'bot_name': 'bot_name',
                'status': 'finished',
                'time': test_utils.CURRENT_TIME,
            }, task_status.to_dict())
Exemple #5
0
    def test_run_command_already_running_expired(self):
        """Test run_command with another instance currently running, but its lease
    has expired."""
        data_types.TaskStatus(id='progression 123 job',
                              bot_name='another_bot',
                              time=datetime.datetime(1970, 1, 1),
                              status='started').put()

        commands.run_command('progression', '123', 'job')
        self.assertEqual(1, self.mock.progression_execute_task.call_count)

        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(1, len(task_status_entities))

        task_status = task_status_entities[0]
        self.assertDictEqual(
            {
                'bot_name': 'bot_name',
                'status': 'finished',
                'time': test_utils.CURRENT_TIME,
            }, task_status.to_dict())
Exemple #6
0
    def test_run_command_already_running(self):
        """Test run_command with another instance currently running."""
        data_types.TaskStatus(id='progression 123 job',
                              bot_name='another_bot',
                              time=test_utils.CURRENT_TIME,
                              status='started').put()

        with self.assertRaises(commands.AlreadyRunningError):
            commands.run_command('progression', '123', 'job')

        self.assertEqual(0, self.mock.progression_execute_task.call_count)

        task_status_entities = list(data_types.TaskStatus.query())
        self.assertEqual(1, len(task_status_entities))

        task_status = task_status_entities[0]
        self.assertDictEqual(
            {
                'bot_name': 'another_bot',
                'status': 'started',
                'time': test_utils.CURRENT_TIME,
            }, task_status.to_dict())