From 71f04ce289871e69fcaa4c69ab9b7de17bd9faf9 Mon Sep 17 00:00:00 2001 From: gecong1973 Date: Sun, 7 Feb 2021 16:09:39 -0800 Subject: [PATCH] add test_job_execute unit test cases Change-Id: Icf6a719bc71d1a478d0a232e65d01a3b6617e7e6 --- .../unit/scheduler/test_scheduler_job.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/freezer/tests/unit/scheduler/test_scheduler_job.py b/freezer/tests/unit/scheduler/test_scheduler_job.py index 2c49d9cb..1f0c935f 100644 --- a/freezer/tests/unit/scheduler/test_scheduler_job.py +++ b/freezer/tests/unit/scheduler/test_scheduler_job.py @@ -18,8 +18,12 @@ import tempfile import unittest from freezer.scheduler import scheduler_job +from oslo_config import cfg from unittest import mock +CONF = cfg.CONF + + action = {"action": "backup", "storage": "local", "mode": "fs", "backup_name": "test", "container": "/tmp/backuped", @@ -214,3 +218,52 @@ class TestSchedulerJob1(unittest.TestCase): metatring = '' result = self.job.upload_metadata(metatring) self.assertIsNone(result) + + def test_job_contains_exec(self): + jobdoc = {'job_actions': [{'freezer_action': {'action': 'exec'}}]} + job = scheduler_job.Job(None, None, jobdoc) + result = job.contains_exec() + self.assertTrue(result) + jobdoc = {'job_actions': [{'freezer_action': {'action': 'stop'}}]} + job = scheduler_job.Job(None, None, jobdoc) + result = job.contains_exec() + self.assertFalse(result) + + def test_job_update_job_schedule_doc(self): + jobdoc = {'job_actions': [{'freezer_action': {'action': 'exec'}}]} + self.job.update_job_schedule_doc(**jobdoc) + self.assertEqual(self.job.job_doc['job_schedule']['job_actions'], + [{'freezer_action': {'action': 'exec'}}]) + + @mock.patch('subprocess.Popen') + def test_job_execute(self, mock_process): + CONF.disable_exec = True + scheduler = mock.MagicMock() + freezer_action = {"backup_name": "freezer", + 'action': 'exec', + "remove_from_date": "2020-11-10T10:10:10"} + jobdoc = {'job_id': 'test', 'job_schedule': {}, + 'job_actions': [{'freezer_action': freezer_action, + 'max_retries_interval': 1, + 'max_retries': 1}]} + job = scheduler_job.Job(scheduler, None, jobdoc) + result = job.execute() + self.assertIsNone(result) + self.assertEqual(job.result, 'fail') + + CONF.disable_exec = False + process = mock.MagicMock() + process.pid = 123 + process.communicate.return_value = (b'test', 0) + process.returncode = -15 + mock_process.return_value = process + result = job.execute() + self.assertIsNone(result) + self.assertEqual(job.result, 'aborted') + + process.communicate.return_value = ('test', 'test') + process.returncode = 1 + mock_process.return_value = process + result = job.execute() + self.assertIsNone(result) + self.assertEqual(job.result, 'fail')