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
=== modified file 'qakit/practitest/practitest.py'
--- qakit/practitest/practitest.py 2015-08-19 18:16:08 +0000
+++ qakit/practitest/practitest.py 2015-09-03 13:34:12 +0000
@@ -42,6 +42,7 @@
42 'level': 10490,42 'level': 10490,
43 'release': 10433,43 'release': 10433,
44 'build': 10578,44 'build': 10578,
45 'buildinfo': 10872,
45 'external_id': 10589,46 'external_id': 10589,
46 'tester': 3042947 'tester': 30429
47 }48 }
@@ -160,7 +161,8 @@
160 url = PROD_PRACTITEST + '/sets/{}.json'.format(id)161 url = PROD_PRACTITEST + '/sets/{}.json'.format(id)
161 return self._get(url).json()162 return self._get(url).json()
162163
163 def create_testset(self, name, priority, device, level, release, build):164 def create_testset(self, name, priority, device,
165 level, release, build, buildinfo):
164 """166 """
165 Create a test set with the name and priority provided.167 Create a test set with the name and priority provided.
166168
@@ -172,7 +174,8 @@
172 self.pt_field('device'): {'value': device},174 self.pt_field('device'): {'value': device},
173 self.pt_field('level'): {'value': level},175 self.pt_field('level'): {'value': level},
174 self.pt_field('release'): {'value': release},176 self.pt_field('release'): {'value': release},
175 self.pt_field('build'): {'value': build}}177 self.pt_field('build'): {'value': build},
178 self.pt_field('buildinfo'): {'value': buildinfo}}
176 return self._post(url, data=params).json()179 return self._post(url, data=params).json()
177180
178 def get_instances(self, id):181 def get_instances(self, id):
179182
=== modified file 'qakit/practitest/report_subunit_results_to_practitest.py'
--- qakit/practitest/report_subunit_results_to_practitest.py 2015-06-24 20:30:44 +0000
+++ qakit/practitest/report_subunit_results_to_practitest.py 2015-09-03 13:34:12 +0000
@@ -23,7 +23,9 @@
23from qakit.practitest import practisubunit23from qakit.practitest import practisubunit
24from qakit.practitest import subunit_results24from qakit.practitest import subunit_results
2525
26DOMAIN_FILTER_IDS = {'Sanity': '55736',26DOMAIN_FILTER_IDS = {'Sanity/Arale': '55737',
27 'Sanity/Krillin': '55738',
28 'Sanity/Mako': '55739',
27 'Web': '55419'}29 'Web': '55419'}
2830
2931
@@ -32,20 +34,51 @@
32 parser = argparse.ArgumentParser(34 parser = argparse.ArgumentParser(
33 'Report subunit suite results to Practitest.')35 'Report subunit suite results to Practitest.')
34 parser.add_argument('filepath', help='subunit result filepath')36 parser.add_argument('filepath', help='subunit result filepath')
35 parser.add_argument('--testset-number', '-t',37 subparsers = parser.add_subparsers()
36 type=int,38 update_parser = subparsers.add_parser(
37 help='PractiTest TestSet #')39 'update',
38 parser.add_argument('--testset-name', '-n',40 help='Update an existing test set with results'
39 help='The name of the test set to create')41 )
40 parser.add_argument('--manual', '-m',42 update_parser.add_argument(
41 help='Add the manual tests for the specified domain '43 'number',
42 'to the test set as well.')44 type=int,
43 parser.add_argument('--device', '-d',45 help='PractiTest TestSet #'
44 help='The name of the device the tests were run on')46 )
45 parser.add_argument('--release', '-r',47 update_parser.set_defaults(func=_update_testset)
46 help='The release of Ubuntu the tests were run on')48 create_parser = subparsers.add_parser(
47 parser.add_argument('--build', '-b',49 'create',
48 help='The build ID of the image the tests were run on')50 help='Create a new testset with the results'
51 )
52 create_parser.add_argument(
53 'name',
54 help='The name of the test set to create'
55 )
56 create_parser.add_argument(
57 'device',
58 help='The name of the device the tests were run on'
59 )
60 create_parser.add_argument(
61 'level',
62 help='The test level to be set in PractiTest.'
63 )
64 create_parser.add_argument(
65 'release',
66 help='The release of Ubuntu the tests were run on'
67 )
68 create_parser.add_argument(
69 'build',
70 help='The build ID of the image the tests were run on'
71 )
72 create_parser.add_argument(
73 'buildinfo',
74 help='The output of system-image-cli -i',
75 )
76 create_parser.add_argument(
77 '--manual', '-m',
78 help='Add the manual tests for the specified domain '
79 'to the test set as well.'
80 )
81 create_parser.set_defaults(func=_create_testset)
49 return parser.parse_args()82 return parser.parse_args()
5083
5184
@@ -94,11 +127,35 @@
94 return config127 return config
95128
96129
97def _create_testset(testset_name, device, release, build, session):130def _create_testset(args, practisubunit_session, results):
98 return session.create_testset(testset_name, 'medium',131 import pdb; pdb.set_trace()
99 device, 'Regression',132 testset = practisubunit_session.create_testset(
100 release, build)133 args.name, 'medium',
101134 args.device, args.level,
135 args.release, args.build,
136 args.buildinfo
137 )
138 _create_instances(results, testset, practisubunit_session,
139 args.manual)
140 return testset
141
142def _update_testset(args, practisubunit_session):
143 _confirm_name_of_testset(args.testset_number, practisubunit_session)
144 testset = practisubunit_session.get_testset(args.testset_number)
145 return testset
146
147def _report_to_practitest(project_id, testset, practisubunit_session, results):
148 practisubunit_results = practisubunit.PractiSubunitResultSet(
149 practisubunit_session,
150 testset['id'],
151 results)
152 practisubunit_results.report_to_practitest()
153 print(
154 "Reported results to "
155 "https://prod.practitest.com/p/{}/sets/{}/edit".format(
156 project_id, testset['system_id']
157 )
158 )
102159
103def _create_instances(results, testset, session, manual=None):160def _create_instances(results, testset, session, manual=None):
104 # First get all the automated tests in PractiTest161 # First get all the automated tests in PractiTest
@@ -130,33 +187,8 @@
130 'config.ini'))187 'config.ini'))
131 practisubunit_session = practisubunit.PractiSubunitSession(**config)188 practisubunit_session = practisubunit.PractiSubunitSession(**config)
132 results = subunit_results.parse(args.filepath)189 results = subunit_results.parse(args.filepath)
133 testset_number = args.testset_number190 testset = args.func(args, practisubunit_session, results)
134 if args.testset_number:191 _report_to_practitest(config['project_id'], testset, practisubunit_session, results)
135 _confirm_name_of_testset(testset_number, practisubunit_session)
136 testset_system_id = practisubunit_session.get_testset(
137 args.testset_number)['system_id']
138 else:
139 testset = _create_testset(args.testset_name, args.device,
140 args.release, args.build,
141 practisubunit_session)
142 if testset:
143 testset_number = testset['id']
144 testset_system_id = testset['system_id']
145 _create_instances(results, testset, practisubunit_session,
146 args.manual)
147
148 practisubunit_results = practisubunit.PractiSubunitResultSet(
149 practisubunit_session,
150 testset_number,
151 results)
152 practisubunit_results.report_to_practitest()
153 print(
154 "Reported results to "
155 "https://prod.practitest.com/p/{}/sets/{}/edit".format(
156 config['project_id'], testset_system_id
157 )
158 )
159
160192
161if __name__ == '__main__':193if __name__ == '__main__':
162 sys.exit(main())194 sys.exit(main())

Subscribers

People subscribed via source and target branches