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))
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())
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())
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())
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())
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())