Esempio n. 1
0
class TestJobManager(unittest.TestCase):
    def setUp(self):
        # Use "test" database for unit tests instead of "felucca"
        self.resource_manager = ResourceManager("test")
        self.job_manager = JobManager()
        self.job_manager.db_name = "test"

    def test_job_status(self):
        self.resource_manager.remove_all_jobs_and_tasks()

        # Create a job with two tasks
        task_json = {
            "Files": {},
            "Program_Name": "ooanalyzer",
            "Input_File_Args": {
                "-f": "oo.exe"
            },
            "Input_Text_Args": {
                "--timeout": "300"
            },
            "Input_Flag_Args": ["-v"],
            "Output_File_Args": {
                "-j": "output.json",
                "-F": "facts",
                "-R": "results"
            }
        }
        input_json = {
            "Job_Name": "dump_job",
            "Job_Comment": "this is the test json input for job manager",
            "Tasks": [task_json, task_json, task_json]
        }
        job = self.resource_manager.save_new_job_and_tasks(input_json)
        print(Job.to_json(job))
        job_id = job.job_id

        # Initialize the metadata in JM
        self.job_manager.initialize_job(job)
        job = self.resource_manager.get_job_by_id(job_id)
        self.assertEqual(job.status, Status.Running)

        # Finish all tasks
        for task in job.tasks:
            task_id = task.task_id
            self.resource_manager.update_task_status(task_id,
                                                     Status.Successful)
            self.job_manager.finish_task(task_id)

        job = self.resource_manager.get_job_by_id(job_id)
        self.assertEqual(job.status, Status.Finished)

    def test_kill_job(self):
        self.resource_manager.remove_all_jobs_and_tasks()

        # Create a job without tasks
        input_json = {
            "Job_Name": "dump_job",
            "Job_Comment": "this is the test json input for job manager",
            "Tasks": []
        }
        job = self.resource_manager.save_new_job_and_tasks(input_json)
        job_id = job.job_id

        # Initialize the metadata in JM
        self.job_manager.initialize_job(job)
        self.job_manager.kill_job(job_id)
        self.assertEqual(job_id in self.job_manager.job_metadata, False)

        job = self.resource_manager.save_new_job_and_tasks(input_json)
        job_id = job.job_id
        self.job_manager.initialize_job(job)
        self.job_manager.kill_all_jobs()
        self.assertEqual(job_id in self.job_manager.job_metadata, False)

        self.resource_manager.remove_all_jobs_and_tasks()