Merge lp:~doanac/lava-android-test/multiple-result-ids into lp:lava-android-test

Proposed by Andy Doan
Status: Merged
Approved by: Paul Larson
Approved revision: 126
Merged at revision: 126
Proposed branch: lp:~doanac/lava-android-test/multiple-result-ids
Merge into: lp:lava-android-test
Diff against target: 108 lines (+38/-9)
2 files modified
lava_android_test/commands.py (+37/-9)
lava_android_test/testdef.py (+1/-0)
To merge this branch: bzr merge lp:~doanac/lava-android-test/multiple-result-ids
Reviewer Review Type Date Requested Status
Yongqin Liu Approve
Review via email: mp+87182@code.launchpad.net

Description of the change

These changes allow the delete and parse commands to take multiple result ids. I've found it handy when doing test on local hardware to submit their results as one bundle rather than multiple. It was inspired a bit by how the lava-dispatcher combines bundles.

To post a comment you must log in.
Revision history for this message
Yongqin Liu (liuyq0307) wrote :

Thanks, seems OK for me

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lava_android_test/commands.py'
2--- lava_android_test/commands.py 2011-11-08 03:37:30 +0000
3+++ lava_android_test/commands.py 2011-12-31 05:48:23 +0000
4@@ -159,6 +159,13 @@
5 parser.add_argument("result_id",
6 help="Test result identifier")
7
8+class AndroidResultsCommand(AndroidCommand):
9+ @classmethod
10+ def register_arguments(self, parser):
11+ super(AndroidResultsCommand, self).register_arguments(parser)
12+ parser.add_argument("result_id", nargs="+",
13+ help="One or more result identifiers")
14+
15 class list_installed(AndroidCommand):
16 """
17 List installed tests for specified device.
18
19@@ -285,19 +292,35 @@
20
21 self.say_end(tip_msg)
22
23-class parse(AndroidResultCommand):
24+class parse(AndroidResultsCommand):
25 """
26 Parse the results of previous test that run on the specified device
27
28 program:: lava-android-test parse test-result-id
29+ program:: lava-android-test parse test-result-id0 result_result-id1
30 program:: lava-android-test parse test-result-id -s device_serial
31 """
32 def invoke(self):
33- bundle = generate_bundle(self.args.serial, self.args.result_id)
34+ bundle = generate_combined_bundle(self.args.serial, self.args.result_id)
35 try:
36 print DocumentIO.dumps(bundle)
37 except IOError:
38 pass
39
40+def generate_combined_bundle(serial=None, result_ids=None):
41+ if result_ids is None:
42+ return {}
43+
44+ bundle = None
45+
46+ for rid in result_ids:
47+ b = generate_bundle(serial, rid)
48+ if rid == result_ids[0]:
49+ bundle = b
50+ else:
51+ bundle['test_runs'].append(b['test_runs'][0])
52+
53+ return bundle
54+
55 def generate_bundle(serial=None, result_id=None):
56 if result_id is None:
57 return {}
58@@ -403,10 +426,11 @@
59 self.say("Destination result name already exists")
60 adb.move(srcdir, destdir)
61
62-class remove(AndroidResultCommand):
63+class remove(AndroidResultsCommand):
64 """
65 Remove the result of a previous test that run on the specified device
66
67 program:: lava-android-test remove result-id
68+ program:: lava-android-test remove result-id0 result-id1
69 program:: lava-android-test remove result-id -s device_serial
70 """
71
72@@ -415,18 +439,22 @@
73 super(remove, self).register_arguments(parser)
74 group = parser.add_argument_group("force to remove")
75 group.add_argument("-f", "--force",
76- default=None,
77+ action="store_true",
78 help=("give an interactive question about remove"))
79
80- def invoke(self):
81- resultsdir = os.path.join(self.config.resultsdir_android, self.args.result_id)
82- adb = ADB(self.args.serial)
83+ def remove(self, adb, rid):
84+ resultsdir = os.path.join(self.config.resultsdir_android, rid)
85 if not adb.exists(resultsdir):
86- self.say("No result found for '%s'" % self.args.result_id)
87+ self.say("No result found for '%s'" % rid)
88 return
89 if not self.args.force:
90- self.say("Remove result '%s' for good? [Y/N]" % self.args.result_id)
91+ self.say("Remove result '%s' for good? [Y/N]" % rid)
92 response = raw_input()
93 if response[0].upper() != 'Y':
94 return
95 adb.rmtree(resultsdir)
96+
97+ def invoke(self):
98+ adb = ADB(self.args.serial)
99+ for rid in self.args.result_id:
100+ self.remove(adb, rid)
101
102=== modified file 'lava_android_test/testdef.py'
103--- lava_android_test/testdef.py 2011-11-14 12:05:55 +0000
104+++ lava_android_test/testdef.py 2011-12-31 05:48:23 +0000
105@@ -488,6 +488,7 @@
106 except AttributeError:
107 base = mod.testobj
108
109+ base.parser.results = {'test_results':[]}
110 base.setadb(ADB(serial))
111 return base
112

Subscribers

People subscribed via source and target branches