Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: client/bin/job_unittest.py

Issue 6246035: Merge remote branch 'cros/upstream' into master (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 import logging, os, shutil, sys, time, StringIO 3 import logging, os, shutil, sys, time, StringIO
4 import common 4 import common
5 5
6 from autotest_lib.client.bin import job, boottool, config, sysinfo, harness 6 from autotest_lib.client.bin import job, boottool, config, sysinfo, harness
7 from autotest_lib.client.bin import test, xen, kernel, utils 7 from autotest_lib.client.bin import test, xen, kernel, utils
8 from autotest_lib.client.common_lib import packages, error, log 8 from autotest_lib.client.common_lib import packages, error, log
9 from autotest_lib.client.common_lib import logging_manager, logging_config 9 from autotest_lib.client.common_lib import logging_manager, logging_config
10 from autotest_lib.client.common_lib import base_job_unittest 10 from autotest_lib.client.common_lib import base_job_unittest
11 from autotest_lib.client.common_lib.test_utils import mock, unittest 11 from autotest_lib.client.common_lib.test_utils import mock, unittest
12 12
13 13
14 class job_test_case(unittest.TestCase): 14 class job_test_case(unittest.TestCase):
15 """Generic job TestCase class that defines a standard job setUp and 15 """Generic job TestCase class that defines a standard job setUp and
16 tearDown, with some standard stubs.""" 16 tearDown, with some standard stubs."""
17 17
18 job_class = job.base_client_job 18 job_class = job.base_client_job
19 19
20 def setUp(self): 20 def setUp(self):
21 self.god = mock.mock_god() 21 self.god = mock.mock_god(ut=self)
22 self.god.stub_with(job.base_client_job, '_get_environ_autodir', 22 self.god.stub_with(job.base_client_job, '_get_environ_autodir',
23 classmethod(lambda cls: '/adir')) 23 classmethod(lambda cls: '/adir'))
24 self.job = self.job_class.__new__(self.job_class) 24 self.job = self.job_class.__new__(self.job_class)
25 self.job._job_directory = base_job_unittest.stub_job_directory 25 self.job._job_directory = base_job_unittest.stub_job_directory
26 26
27 27
28 def tearDown(self): 28 def tearDown(self):
29 self.god.unstub_all() 29 self.god.unstub_all()
30 30
31 31
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 self.god.stub_function_to_return(job.boottool, 'boottool', object()) 79 self.god.stub_function_to_return(job.boottool, 'boottool', object())
80 class options: 80 class options:
81 tag = '' 81 tag = ''
82 verbose = False 82 verbose = False
83 cont = False 83 cont = False
84 harness = 'stub' 84 harness = 'stub'
85 hostname = None 85 hostname = None
86 user = None 86 user = None
87 log = False 87 log = False
88 args = '' 88 args = ''
89 tap_report = None
89 self.god.stub_function_to_return(job.utils, 'drop_caches', None) 90 self.god.stub_function_to_return(job.utils, 'drop_caches', None)
90 91
91 self.job._job_state = base_job_unittest.stub_job_state 92 self.job._job_state = base_job_unittest.stub_job_state
92 self.job.__init__('/control', options) 93 self.job.__init__('/control', options)
93 94
94 95
95 class dummy(object): 96 class dummy(object):
96 """A simple placeholder for attributes""" 97 """A simple placeholder for attributes"""
97 pass 98 pass
98 99
99 100
100 class first_line_comparator(mock.argument_comparator): 101 class first_line_comparator(mock.argument_comparator):
101 def __init__(self, first_line): 102 def __init__(self, first_line):
102 self.first_line = first_line 103 self.first_line = first_line
103 104
104 105
105 def is_satisfied_by(self, parameter): 106 def is_satisfied_by(self, parameter):
106 return self.first_line == parameter.splitlines()[0] 107 return self.first_line == parameter.splitlines()[0]
107 108
108 109
109 class test_base_job(unittest.TestCase): 110 class test_base_job(unittest.TestCase):
110 def setUp(self): 111 def setUp(self):
111 # make god 112 # make god
112 self.god = mock.mock_god() 113 self.god = mock.mock_god(ut=self)
113 114
114 # need to set some environ variables 115 # need to set some environ variables
115 self.autodir = "autodir" 116 self.autodir = "autodir"
116 os.environ['AUTODIR'] = self.autodir 117 os.environ['AUTODIR'] = self.autodir
117 118
118 # set up some variables 119 # set up some variables
119 self.control = "control" 120 self.control = "control"
120 self.jobtag = "jobtag" 121 self.jobtag = "jobtag"
121 122
122 # get rid of stdout and logging 123 # get rid of stdout and logging
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 # finish constructor 235 # finish constructor
235 options = dummy() 236 options = dummy()
236 options.tag = self.jobtag 237 options.tag = self.jobtag
237 options.cont = cont 238 options.cont = cont
238 options.harness = None 239 options.harness = None
239 options.log = False 240 options.log = False
240 options.verbose = False 241 options.verbose = False
241 options.hostname = 'localhost' 242 options.hostname = 'localhost'
242 options.user = 'my_user' 243 options.user = 'my_user'
243 options.args = '' 244 options.args = ''
245 options.tap_report = None
244 self.job.__init__(self.control, options, 246 self.job.__init__(self.control, options,
245 extra_copy_cmdline=['more-blah']) 247 extra_copy_cmdline=['more-blah'])
246 248
247 # check 249 # check
248 self.god.check_playback() 250 self.god.check_playback()
249 251
250 252
251 def get_partition_mock(self, devname): 253 def get_partition_mock(self, devname):
252 """ 254 """
253 Create a mock of a partition object and return it. 255 Create a mock of a partition object and return it.
(...skipping 19 matching lines...) Expand all
273 self.job = job.base_client_job.__new__(job.base_client_job) 275 self.job = job.base_client_job.__new__(job.base_client_job)
274 options = dummy() 276 options = dummy()
275 options.tag = self.jobtag 277 options.tag = self.jobtag
276 options.cont = False 278 options.cont = False
277 options.harness = None 279 options.harness = None
278 options.log = False 280 options.log = False
279 options.verbose = False 281 options.verbose = False
280 options.hostname = 'localhost' 282 options.hostname = 'localhost'
281 options.user = 'my_user' 283 options.user = 'my_user'
282 options.args = '' 284 options.args = ''
285 options.tap_report = None
283 error = Exception('fail') 286 error = Exception('fail')
284 287
285 self.god.stub_function(self.job, '_post_record_init') 288 self.god.stub_function(self.job, '_post_record_init')
286 self.god.stub_function(self.job, 'record') 289 self.god.stub_function(self.job, 'record')
287 290
288 self._setup_pre_record_init(False) 291 self._setup_pre_record_init(False)
289 self.job._post_record_init.expect_call( 292 self.job._post_record_init.expect_call(
290 self.control, options, True, ['more-blah']).and_raises(error) 293 self.control, options, True, ['more-blah']).and_raises(error)
291 self.job.record.expect_call( 294 self.job.record.expect_call(
292 'ABORT', None, None,'client.bin.job.__init__ failed: %s' % 295 'ABORT', None, None,'client.bin.job.__init__ failed: %s' %
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 687
685 self.job._record_reboot_failure.expect_call("sub", "reboot.verify", 688 self.job._record_reboot_failure.expect_call("sub", "reboot.verify",
686 "boot failure", running_id="2.6.15-smp") 689 "boot failure", running_id="2.6.15-smp")
687 690
688 # run test 691 # run test
689 self.assertRaises(error.JobError, self.job.end_reboot_and_verify, 692 self.assertRaises(error.JobError, self.job.end_reboot_and_verify,
690 91234567, "2.6.16-smp", "sub") 693 91234567, "2.6.16-smp", "sub")
691 self.god.check_playback() 694 self.god.check_playback()
692 695
693 696
697 def test_parse_args(self):
698 test_set = {"a='foo bar baz' b='moo apt'":
699 ["a='foo bar baz'", "b='moo apt'"],
700 "a='foo bar baz' only=gah":
701 ["a='foo bar baz'", "only=gah"],
702 "a='b c d' no=argh":
703 ["a='b c d'", "no=argh"]}
704 for t in test_set:
705 parsed_args = job.base_client_job._parse_args(t)
706 expected_args = test_set[t]
707 self.assertEqual(parsed_args, expected_args)
708
709
694 if __name__ == "__main__": 710 if __name__ == "__main__":
695 unittest.main() 711 unittest.main()
OLDNEW
« cli/job.py ('K') | « client/bin/job.py ('k') | client/bin/kernel.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698