]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Add new test cases for dispatcher and scheduler
authorAishwarya Mathuria <amathuri@redhat.com>
Mon, 14 Jun 2021 06:19:08 +0000 (11:49 +0530)
committerAishwarya Mathuria <amathuri@redhat.com>
Fri, 3 Jun 2022 14:35:24 +0000 (20:05 +0530)
Signed-off-by: Aishwarya Mathuria <amathuri@redhat.com>
teuthology/test/test_dispatcher.py [new file with mode: 0644]
teuthology/test/test_schedule.py

diff --git a/teuthology/test/test_dispatcher.py b/teuthology/test/test_dispatcher.py
new file mode 100644 (file)
index 0000000..6b0dddf
--- /dev/null
@@ -0,0 +1,107 @@
+from teuthology import dispatcher
+from unittest.mock import patch, Mock
+from teuthology import report
+
+import unittest.mock as mock
+import unittest
+
+
+class TestDispatcher(unittest.TestCase):
+
+    def test_mock_get_queue_job(self):
+        mock_get_patcher = patch('teuthology.dispatcher.report.get_queued_job')
+        machine_type = 'test_queue'
+        job_config = {
+            'job_id': '1',
+            'description': 'DESC',
+            'email': 'EMAIL',
+            'first_in_suite': False,
+            'last_in_suite': True,
+            'machine_type': 'test_queue',
+            'name': 'NAME',
+            'owner': 'OWNER',
+            'priority': 99,
+            'results_timeout': '6',
+            'verbose': False,
+        }
+
+        mock_get = mock_get_patcher.start()
+        mock_get.return_value = Mock(status_code = 200)
+        mock_get.return_value.json.return_value = job_config
+
+        response = report.get_queued_job(machine_type)
+
+        mock_get_patcher.stop()
+
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.json(), job_config)
+    
+
+    @patch("teuthology.worker.fetch_teuthology")
+    @patch("teuthology.dispatcher.fetch_qa_suite")
+    @patch("teuthology.worker.fetch_qa_suite")
+    @patch("teuthology.dispatcher.report.get_queued_job")
+    @patch("teuthology.dispatcher.report.try_push_job_info")
+    @patch("teuthology.dispatcher.setup_log_file")
+    @patch("os.path.isdir")
+    @patch("os.getpid")
+    @patch("teuthology.dispatcher.teuth_config")
+    @patch("subprocess.Popen")
+    @patch("os.path.join")
+    @patch("teuthology.dispatcher.create_job_archive")
+    @patch("yaml.safe_dump")
+    def test_dispatcher_main(self, m_fetch_teuthology, m_fetch_qa_suite, 
+                             m_worker_fetch_qa_suite, m_get_queued_job, 
+                             m_try_push_job_info, 
+                             m_setup_log, 
+                             m_isdir, m_getpid, 
+                             m_t_config, m_popen, m_join, m_create_archive, m_yaml_dump):
+            
+        args = {
+            '--owner': 'the_owner',
+            '--archive-dir': '/archive/dir',
+            '--log-dir': '/worker/log',
+            '--name': 'the_name',
+            '--description': 'the_description',
+            '--machine-type': 'test_queue',
+            '--supervisor': False,
+            '--verbose': False
+        }
+
+        m = mock.MagicMock()
+        job_id = {'job_id': '1'}
+        m.__getitem__.side_effect = job_id.__getitem__
+        m.__iter__.side_effect = job_id.__iter__
+        job = {
+            'job_id': '1',
+            'description': 'DESC',
+            'email': 'EMAIL',
+            'first_in_suite': False,
+            'last_in_suite': True,
+            'machine_type': 'test_queue',
+            'name': 'NAME',
+            'owner': 'OWNER',
+            'priority': 99,
+            'results_timeout': '6',
+            'verbose': False,
+            'stop_worker': True,
+            'archive_path': '/archive/dir/NAME/1'
+        }
+
+        m_fetch_teuthology.return_value = '/teuth/path'
+        m_fetch_qa_suite.return_value = '/suite/path'
+        m_isdir.return_value = True
+        mock_get_patcher = patch('teuthology.dispatcher.report.get_queued_job')
+        mock_get = mock_get_patcher.start()
+        mock_get.return_value = job
+
+        mock_prep_job_patcher = patch('teuthology.dispatcher.prep_job')
+        mock_prep_job = mock_prep_job_patcher.start()
+        mock_prep_job.return_value = (job, '/teuth/bin/path')
+        m_yaml_dump.return_value = ''
+
+        m_try_push_job_info.called_once_with(job, dict(status='running'))
+        dispatcher.main(args)
+        mock_get_patcher.stop()
+
+        
index dd0a68f845b7fdc4013a8229d1d5632ead0a7009..1add70620a277f019e639bca2a44415460e3c9ae 100644 (file)
@@ -1,8 +1,14 @@
 from teuthology.schedule import build_config
 from teuthology.misc import get_user
+from unittest.mock import patch, Mock
+from teuthology import report
+from teuthology import schedule
 
+import unittest
+import os
 
-class TestSchedule(object):
+
+class TestSchedule(unittest.TestCase):
     basic_args = {
         '--verbose': False,
         '--owner': 'OWNER',
@@ -43,3 +49,37 @@ class TestSchedule(object):
         job_dict = build_config(self.basic_args)
         assert job_dict['owner'] == 'scheduled_%s' % get_user()
 
+
+    def test_dump_job_to_file(self):
+        path = 'teuthology/test/job'
+        job_config = {
+            'description': 'DESC',
+            'email': 'EMAIL',
+            'first_in_suite': False,
+            'last_in_suite': True,
+            'machine_type': 'tala',
+            'name': 'NAME',
+            'owner': 'OWNER',
+            'priority': 99,
+            'results_timeout': '6',
+            'verbose': False,
+            'tube': 'tala',
+        }
+        schedule.dump_job_to_file(path, job_config)
+
+        count_file_path = path + '.count'
+        assert os.path.exists(count_file_path) == True
+
+
+    def test_mock_create_queue(self):
+        mock_get_patcher = patch('teuthology.schedule.report.create_machine_type_queue')
+        machine_type = 'test_queue'
+
+        mock_get = mock_get_patcher.start()
+        mock_get.return_value = Mock(status_code = 200)
+
+        response = report.create_machine_type_queue(machine_type)
+
+        mock_get_patcher.stop()
+
+        self.assertEqual(response.status_code, 200)