Skip to content

Commit

Permalink
Add new test cases for dispatcher and scheduler
Browse files Browse the repository at this point in the history
Signed-off-by: Aishwarya Mathuria <[email protected]>
  • Loading branch information
amathuria committed Oct 12, 2023
1 parent d6fc59d commit 58857a9
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 1 deletion.
107 changes: 107 additions & 0 deletions teuthology/test/test_dispatcher.py
Original file line number Diff line number Diff line change
@@ -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()


42 changes: 41 additions & 1 deletion teuthology/test/test_schedule.py
Original file line number Diff line number Diff line change
@@ -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',
Expand Down Expand Up @@ -43,3 +49,37 @@ def test_owner(self):
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)

0 comments on commit 58857a9

Please sign in to comment.