add missing file from last commit
Signed-off-by: Martin J. Bligh <mbligh@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1669 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/client/bin/job_unittest.py b/client/bin/job_unittest.py
new file mode 100644
index 0000000..77afdfd
--- /dev/null
+++ b/client/bin/job_unittest.py
@@ -0,0 +1,164 @@
+#!/usr/bin/python
+
+import os, unittest, pickle, shutil, sys
+import common
+from autotest_lib.client.bin import job, boottool, config, sysinfo, harness
+from autotest_lib.client.common_lib import utils
+from autotest_lib.client.common_lib.test_utils import mock
+
+
+class TestBaseJob(unittest.TestCase):
+ def setUp(self):
+ # make god
+ self.god = mock.mock_god()
+
+ # need to set some environ variables
+ self.autodir = "autodir"
+ os.environ['AUTODIR'] = self.autodir
+
+ # set up some variables
+ self.control = "control"
+ self.jobtag = "jobtag"
+
+ # stub out some stuff
+ self.god.stub_function(os.path, 'exists')
+ self.god.stub_function(os, 'mkdir')
+ self.god.stub_function(shutil, 'copyfile')
+ self.god.stub_function(job, 'open')
+ self.god.stub_function(utils, 'system')
+ self.god.stub_function(harness, 'select')
+ self.god.stub_function(sysinfo, 'log_per_reboot_data')
+ self.god.stub_function(pickle, 'load')
+ self.god.stub_function(sysinfo, 'log_per_reboot_data')
+
+ self.god.stub_class(config, 'config')
+ self.god.stub_class(boottool, 'boottool')
+
+
+ def tearDown(self):
+ self.god.unstub_all()
+
+
+ def construct_job(self, cont):
+ # will construct class instance using __new__
+ self.job = job.base_job.__new__(job.base_job)
+
+ # now some specific stubs
+ self.god.stub_function(self.job, '_load_state')
+ self.god.stub_function(self.job, '_init_group_level')
+ self.god.stub_function(self.job, 'config_get')
+ self.god.stub_function(self.job, 'record')
+ self.god.stub_function(self.job, '_increment_group_level')
+ self.god.stub_function(self.job, 'get_state')
+
+ # other setup
+ tmpdir = os.path.join(self.autodir, 'tmp')
+ results = os.path.join(self.autodir, 'results')
+ download = os.path.join(self.autodir, 'tests', 'download')
+ resultdir = os.path.join(self.autodir, 'results', self.jobtag)
+ sysinfodir = os.path.join(resultdir, 'sysinfo')
+
+ # record
+ self.job._load_state.expect_call()
+ if not cont:
+ os.path.exists.expect_call(tmpdir).and_return(False)
+ os.mkdir.expect_call(tmpdir)
+ os.path.exists.expect_call(results).and_return(False)
+ os.mkdir.expect_call(results)
+ os.path.exists.expect_call(download).and_return(False)
+ os.mkdir.expect_call(download)
+ os.path.exists.expect_call(resultdir).and_return(True)
+ utils.system.expect_call('rm -rf ' + resultdir)
+ os.mkdir.expect_call(resultdir)
+ os.mkdir.expect_call(sysinfodir)
+ os.mkdir.expect_call(os.path.join(resultdir, 'debug'))
+ os.mkdir.expect_call(os.path.join(resultdir,
+ 'analysis'))
+ shutil.copyfile.expect_call(mock.is_string_comparator(),
+ os.path.join(resultdir, 'control'))
+
+ self.job._init_group_level.expect_call()
+ self.config = config.config.expect_new(self.job)
+ my_harness = self.god.create_mock_class(harness.harness,
+ 'my_harness')
+ harness.select.expect_call(None,
+ self.job).and_return(my_harness)
+ self.job.config_get.expect_call(
+ 'boottool.executable').and_return(None)
+ bootloader = boottool.boottool.expect_new(None)
+ sysinfo.log_per_reboot_data.expect_call(sysinfodir)
+ if not cont:
+ self.job.record.expect_call('START', None, None)
+ self.job._increment_group_level.expect_call()
+
+ my_harness.run_start.expect_call()
+ self.job.get_state.expect_call('__monitor_disk',
+ default=0.0).and_return(0.0)
+
+ # finish constructor
+ self.job.__init__(self.control, self.jobtag, cont)
+
+ # check
+ self.god.check_playback()
+
+ def test_constructor(self):
+ self.construct_job(False)
+
+
+ def test_monitor_disk_usage(self):
+ self.construct_job(True)
+
+ # setup
+ self.god.stub_function(self.job, 'set_state')
+
+ # record
+ max_rate = 10.0
+ self.job.set_state.expect_call('__monitor_disk', max_rate)
+
+ # test
+ self.job.monitor_disk_usage(max_rate)
+ self.god.check_playback()
+
+
+ def test_harness_select(self):
+ self.construct_job(True)
+
+ # record
+ which = "which"
+ harness.select.expect_call(which, self.job).and_return(None)
+
+ # run and test
+ self.job.harness_select(which)
+ self.god.check_playback()
+
+
+ def test_config_set(self):
+ self.construct_job(True)
+
+ # record
+ name = "foo"
+ val = 10
+ self.config.set.expect_call(name, val)
+
+ # run and test
+ self.job.config_set(name, val)
+ self.god.check_playback()
+
+
+ def test_config_get(self):
+ self.construct_job(True)
+
+ # unstub config_get
+ self.god.unstub(self.job, 'config_get')
+ # record
+ name = "foo"
+ val = 10
+ self.config.get.expect_call(name).and_return(val)
+
+ # run and test
+ self.job.config_get(name)
+ self.god.check_playback()
+
+
+if __name__ == "__main__":
+ unittest.main()