summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlmr <lmr@592f7852-d20e-0410-864c-8624ca9c26a4>2011-02-07 23:14:48 +0000
committerlmr <lmr@592f7852-d20e-0410-864c-8624ca9c26a4>2011-02-07 23:14:48 +0000
commit9ba13cc8194caa12d61349db73eb0fae93b9c53e (patch)
tree6c8a7477173b0950ad0485a98c47a89e390be621
parent721f722a27eed760fd3ddb0f2ee8bd302c73ace3 (diff)
Add support for dependencies with commas
A while back I added support for labels with commas to the host list cli commands. I've now added the same support to dependencies so metahost scheduling can be used with dependencies that have commas. Signed-off-by: Dale Curtis <dalecurtis@google.com> git-svn-id: svn://test.kernel.org/autotest/trunk@5217 592f7852-d20e-0410-864c-8624ca9c26a4
-rw-r--r--cli/job.py17
-rwxr-xr-xcli/job_unittest.py31
2 files changed, 40 insertions, 8 deletions
diff --git a/cli/job.py b/cli/job.py
index 5eb00a52..ddb534ff 100644
--- a/cli/job.py
+++ b/cli/job.py
@@ -299,7 +299,7 @@ class job_create_or_clone(action_common.atest_create, job):
return (hosts, meta_hosts)
- def parse(self):
+ def parse(self, parse_info=[]):
host_info = topic_common.item_parse_info(attribute_name='hosts',
inline_option='machine',
filename_option='mlist')
@@ -310,9 +310,9 @@ class job_create_or_clone(action_common.atest_create, job):
label_info = topic_common.item_parse_info(attribute_name='labels',
inline_option='labels')
- options, leftover = super(job_create_or_clone,
- self).parse([host_info, job_info, oth_info,
- label_info], req_items='jobname')
+ options, leftover = super(job_create_or_clone, self).parse(
+ [host_info, job_info, oth_info, label_info] + parse_info,
+ req_items='jobname')
self.data = {}
if len(self.jobname) > 1:
self.invalid_syntax('Too many arguments specified, only expected '
@@ -440,7 +440,10 @@ class job_create(job_create_or_clone):
def parse(self):
- options, leftover = super(job_create, self).parse()
+ deps_info = topic_common.item_parse_info(attribute_name='dependencies',
+ inline_option='dependencies')
+ options, leftover = super(job_create, self).parse(
+ parse_info=[deps_info])
if (len(self.hosts) == 0 and not self.one_time_hosts
and not options.labels and not options.atomic_group):
@@ -499,9 +502,7 @@ class job_create(job_create_or_clone):
if options.atomic_group:
self.data['atomic_group_name'] = options.atomic_group
- deps = options.dependencies.split(',')
- deps = [dep.strip() for dep in deps if dep.strip()]
- self.data['dependencies'] = deps
+ self.data['dependencies'] = self.dependencies
if options.synch_count:
self.data['synch_count'] = options.synch_count
diff --git a/cli/job_unittest.py b/cli/job_unittest.py
index d0240e51..06d9df1a 100755
--- a/cli/job_unittest.py
+++ b/cli/job_unittest.py
@@ -831,6 +831,19 @@ class job_create_unittest(cli_mock.cli_unittest):
file_temp.clean()
+ def test_execute_create_job_with_control_and_comma_dependencies(self):
+ data = self.data.copy()
+ data['dependencies'] = ['dep2,False', 'dep1,True']
+ file_temp = cli_mock.create_file(self.ctrl_file)
+ self.run_cmd(argv=['atest', 'job', 'create', '-f', file_temp.name,
+ 'test_job0', '-m', 'host0', '-d',
+ 'dep1\,True, dep2\,False ', '--ignore_site_file'],
+ rpcs=[('create_job', data, True, 42)],
+ out_words_ok=['test_job0', 'Created'],
+ out_words_no=['Uploading', 'Done'])
+ file_temp.clean()
+
+
def test_execute_create_job_with_synch_count(self):
data = self.data.copy()
data['synch_count'] = 2
@@ -862,6 +875,24 @@ class job_create_unittest(cli_mock.cli_unittest):
out_words_no=['Uploading', 'Done'])
+ def test_execute_create_job_with_test_and_comma_dependencies(self):
+ data = self.data.copy()
+ data['dependencies'] = ['dep1,True', 'dep2,False', 'dep3,123']
+ self.run_cmd(argv=['atest', 'job', 'create', '-t', 'sleeptest',
+ 'test_job0', '-m', 'host0', '-d',
+ 'dep1\,True dep2\,False ', '--ignore_site_file'],
+ rpcs=[('generate_control_file',
+ {'tests': ['sleeptest']},
+ True,
+ {'control_file' : self.ctrl_file,
+ 'synch_count' : 1,
+ 'is_server' : False,
+ 'dependencies' : ['dep3,123']}),
+ ('create_job', data, True, 42)],
+ out_words_ok=['test_job0', 'Created'],
+ out_words_no=['Uploading', 'Done'])
+
+
def test_execute_create_job_with_kernel(self):
data = self.data.copy()
data['control_file'] = self.kernel_ctrl_file