Merge lp:~brendan-donegan/qakit/upload_improvements_fixes into lp:qakit

Proposed by Brendan Donegan
Status: Merged
Merged at revision: 14
Proposed branch: lp:~brendan-donegan/qakit/upload_improvements_fixes
Merge into: lp:qakit
Diff against target: 189 lines (+84/-49)
2 files modified
qakit/practitest/practitest.py (+5/-2)
qakit/practitest/report_subunit_results_to_practitest.py (+79/-47)
To merge this branch: bzr merge lp:~brendan-donegan/qakit/upload_improvements_fixes
Reviewer Review Type Date Requested Status
Allan LeSage (community) Approve
Review via email: mp+270060@code.launchpad.net

Commit message

Refactor code a little and allow test level and build info to be passed to the script, as well as allowing devices to be specified to the manual option

Description of the change

Needed to allow the test level and build info (output from system-image-cli -i) to be specified, and at the same time did a bit of refactoring. Also split the 'Sanity' test filter out into individual devices so that the test sets contain only the appropriate tests.

To post a comment you must log in.
Revision history for this message
Allan LeSage (allanlesage) wrote :

No objection to this. At some future date when this is deployed somewhere we'd probably prefer to use a logger (e.g. util.logger) vs. print but this is fine for now.

review: Approve
Revision history for this message
Brendan Donegan (brendan-donegan) wrote :

print() is fine here as it's program output, not logging - the time stamps and severity text that would automatically be added would just make it ugly

Revision history for this message
Sergio Cazzolato (sergio-j-cazzolato) wrote :

brendand, the code seems to be ok, how can I test it?

Revision history for this message
Brendan Donegan (brendan-donegan) wrote :

Sergio - don't worry it's already landed. I only moved it to review as it had not been put in production yet, but should be now

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qakit/practitest/practitest.py'
2--- qakit/practitest/practitest.py 2015-08-19 18:16:08 +0000
3+++ qakit/practitest/practitest.py 2015-09-03 13:34:12 +0000
4@@ -42,6 +42,7 @@
5 'level': 10490,
6 'release': 10433,
7 'build': 10578,
8+ 'buildinfo': 10872,
9 'external_id': 10589,
10 'tester': 30429
11 }
12@@ -160,7 +161,8 @@
13 url = PROD_PRACTITEST + '/sets/{}.json'.format(id)
14 return self._get(url).json()
15
16- def create_testset(self, name, priority, device, level, release, build):
17+ def create_testset(self, name, priority, device,
18+ level, release, build, buildinfo):
19 """
20 Create a test set with the name and priority provided.
21
22@@ -172,7 +174,8 @@
23 self.pt_field('device'): {'value': device},
24 self.pt_field('level'): {'value': level},
25 self.pt_field('release'): {'value': release},
26- self.pt_field('build'): {'value': build}}
27+ self.pt_field('build'): {'value': build},
28+ self.pt_field('buildinfo'): {'value': buildinfo}}
29 return self._post(url, data=params).json()
30
31 def get_instances(self, id):
32
33=== modified file 'qakit/practitest/report_subunit_results_to_practitest.py'
34--- qakit/practitest/report_subunit_results_to_practitest.py 2015-06-24 20:30:44 +0000
35+++ qakit/practitest/report_subunit_results_to_practitest.py 2015-09-03 13:34:12 +0000
36@@ -23,7 +23,9 @@
37 from qakit.practitest import practisubunit
38 from qakit.practitest import subunit_results
39
40-DOMAIN_FILTER_IDS = {'Sanity': '55736',
41+DOMAIN_FILTER_IDS = {'Sanity/Arale': '55737',
42+ 'Sanity/Krillin': '55738',
43+ 'Sanity/Mako': '55739',
44 'Web': '55419'}
45
46
47@@ -32,20 +34,51 @@
48 parser = argparse.ArgumentParser(
49 'Report subunit suite results to Practitest.')
50 parser.add_argument('filepath', help='subunit result filepath')
51- parser.add_argument('--testset-number', '-t',
52- type=int,
53- help='PractiTest TestSet #')
54- parser.add_argument('--testset-name', '-n',
55- help='The name of the test set to create')
56- parser.add_argument('--manual', '-m',
57- help='Add the manual tests for the specified domain '
58- 'to the test set as well.')
59- parser.add_argument('--device', '-d',
60- help='The name of the device the tests were run on')
61- parser.add_argument('--release', '-r',
62- help='The release of Ubuntu the tests were run on')
63- parser.add_argument('--build', '-b',
64- help='The build ID of the image the tests were run on')
65+ subparsers = parser.add_subparsers()
66+ update_parser = subparsers.add_parser(
67+ 'update',
68+ help='Update an existing test set with results'
69+ )
70+ update_parser.add_argument(
71+ 'number',
72+ type=int,
73+ help='PractiTest TestSet #'
74+ )
75+ update_parser.set_defaults(func=_update_testset)
76+ create_parser = subparsers.add_parser(
77+ 'create',
78+ help='Create a new testset with the results'
79+ )
80+ create_parser.add_argument(
81+ 'name',
82+ help='The name of the test set to create'
83+ )
84+ create_parser.add_argument(
85+ 'device',
86+ help='The name of the device the tests were run on'
87+ )
88+ create_parser.add_argument(
89+ 'level',
90+ help='The test level to be set in PractiTest.'
91+ )
92+ create_parser.add_argument(
93+ 'release',
94+ help='The release of Ubuntu the tests were run on'
95+ )
96+ create_parser.add_argument(
97+ 'build',
98+ help='The build ID of the image the tests were run on'
99+ )
100+ create_parser.add_argument(
101+ 'buildinfo',
102+ help='The output of system-image-cli -i',
103+ )
104+ create_parser.add_argument(
105+ '--manual', '-m',
106+ help='Add the manual tests for the specified domain '
107+ 'to the test set as well.'
108+ )
109+ create_parser.set_defaults(func=_create_testset)
110 return parser.parse_args()
111
112
113@@ -94,11 +127,35 @@
114 return config
115
116
117-def _create_testset(testset_name, device, release, build, session):
118- return session.create_testset(testset_name, 'medium',
119- device, 'Regression',
120- release, build)
121-
122+def _create_testset(args, practisubunit_session, results):
123+ import pdb; pdb.set_trace()
124+ testset = practisubunit_session.create_testset(
125+ args.name, 'medium',
126+ args.device, args.level,
127+ args.release, args.build,
128+ args.buildinfo
129+ )
130+ _create_instances(results, testset, practisubunit_session,
131+ args.manual)
132+ return testset
133+
134+def _update_testset(args, practisubunit_session):
135+ _confirm_name_of_testset(args.testset_number, practisubunit_session)
136+ testset = practisubunit_session.get_testset(args.testset_number)
137+ return testset
138+
139+def _report_to_practitest(project_id, testset, practisubunit_session, results):
140+ practisubunit_results = practisubunit.PractiSubunitResultSet(
141+ practisubunit_session,
142+ testset['id'],
143+ results)
144+ practisubunit_results.report_to_practitest()
145+ print(
146+ "Reported results to "
147+ "https://prod.practitest.com/p/{}/sets/{}/edit".format(
148+ project_id, testset['system_id']
149+ )
150+ )
151
152 def _create_instances(results, testset, session, manual=None):
153 # First get all the automated tests in PractiTest
154@@ -130,33 +187,8 @@
155 'config.ini'))
156 practisubunit_session = practisubunit.PractiSubunitSession(**config)
157 results = subunit_results.parse(args.filepath)
158- testset_number = args.testset_number
159- if args.testset_number:
160- _confirm_name_of_testset(testset_number, practisubunit_session)
161- testset_system_id = practisubunit_session.get_testset(
162- args.testset_number)['system_id']
163- else:
164- testset = _create_testset(args.testset_name, args.device,
165- args.release, args.build,
166- practisubunit_session)
167- if testset:
168- testset_number = testset['id']
169- testset_system_id = testset['system_id']
170- _create_instances(results, testset, practisubunit_session,
171- args.manual)
172-
173- practisubunit_results = practisubunit.PractiSubunitResultSet(
174- practisubunit_session,
175- testset_number,
176- results)
177- practisubunit_results.report_to_practitest()
178- print(
179- "Reported results to "
180- "https://prod.practitest.com/p/{}/sets/{}/edit".format(
181- config['project_id'], testset_system_id
182- )
183- )
184-
185+ testset = args.func(args, practisubunit_session, results)
186+ _report_to_practitest(config['project_id'], testset, practisubunit_session, results)
187
188 if __name__ == '__main__':
189 sys.exit(main())

Subscribers

People subscribed via source and target branches