blob: 2f0683c00b207ad94a1f91051449da428bcda96c [file] [log] [blame]
Garrett Beaty86bb4962020-07-27 21:02:291#!/usr/bin/env vpython
Kenneth Russelleb60cbd22017-12-05 07:54:282# Copyright 2017 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Tests for generate_buildbot_json.py."""
7
Zhiling Huangbe008172018-03-08 19:13:118import argparse
Garrett Beaty777c2912020-05-07 00:54:339import contextlib
10import json
Zhiling Huangbe008172018-03-08 19:13:1111import os
Kenneth Russelleb60cbd22017-12-05 07:54:2812import unittest
Garrett Beaty777c2912020-05-07 00:54:3313
Kenneth Russelleb60cbd22017-12-05 07:54:2814import generate_buildbot_json
Garrett Beaty1afaccc2020-06-25 19:58:1515from pyfakefs import fake_filesystem_unittest
Kenneth Russelleb60cbd22017-12-05 07:54:2816
Nodir Turakulovfce34292019-12-18 17:05:4117EMPTY_PYL_FILE = """\
18{
19}
20"""
21
Garrett Beaty1afaccc2020-06-25 19:58:1522# Use this value to refer to the directory containing this code
23# The tests use a fake filesystem and python filesystem calls are monkey-patched
24# to use the fake filesystem, which affects abspath
25THIS_DIR = os.path.dirname(os.path.abspath(__file__))
26
27
28class TestCase(fake_filesystem_unittest.TestCase):
29 def setUp(self):
30 self.setUpPyfakefs()
31 self.fs.cwd = THIS_DIR
32 self.args = generate_buildbot_json.BBJSONGenerator.parse_args([])
33
34 def override_args(self, **kwargs):
35 for k, v in kwargs.iteritems():
36 setattr(self.args, k, v)
37
38 def create_testing_buildbot_json_file(self, path, contents):
39 return self.fs.create_file(os.path.join(THIS_DIR, path), contents=contents)
40
Kenneth Russelleb60cbd22017-12-05 07:54:2841
Garrett Beaty777c2912020-05-07 00:54:3342@contextlib.contextmanager
43def dump_on_failure(fbb, dump=True):
44 try:
45 yield
46 except:
47 if dump:
48 for l in fbb.printed_lines:
49 print l
50 raise
51
Kenneth Russelleb60cbd22017-12-05 07:54:2852class FakeBBGen(generate_buildbot_json.BBJSONGenerator):
Garrett Beaty1afaccc2020-06-25 19:58:1553 def __init__(self,
54 args,
55 waterfalls,
56 test_suites,
57 luci_milo_cfg,
Garrett Beaty4f3e9212020-06-25 20:21:4958 project_pyl='{"validate_source_side_specs_have_builder": True}',
Nodir Turakulovfce34292019-12-18 17:05:4159 exceptions=EMPTY_PYL_FILE,
60 mixins=EMPTY_PYL_FILE,
Jeff Yoonda581c32020-03-06 03:56:0561 gn_isolate_map=EMPTY_PYL_FILE,
62 variants=EMPTY_PYL_FILE):
Garrett Beaty1afaccc2020-06-25 19:58:1563 super(FakeBBGen, self).__init__(args)
64
65 pyl_files_dir = args.pyl_files_dir or THIS_DIR
66 infra_config_dir = args.infra_config_dir
67
68 files = {
69 (pyl_files_dir, 'waterfalls.pyl'): waterfalls,
70 (pyl_files_dir, 'test_suites.pyl'): test_suites,
71 (pyl_files_dir, 'test_suite_exceptions.pyl'): exceptions,
72 (pyl_files_dir, 'mixins.pyl'): mixins,
73 (pyl_files_dir, 'gn_isolate_map.pyl'): gn_isolate_map,
74 (pyl_files_dir, 'variants.pyl'): variants,
Garrett Beaty4f3e9212020-06-25 20:21:4975 (infra_config_dir, 'generated/project.pyl'): project_pyl,
Garrett Beaty1afaccc2020-06-25 19:58:1576 (infra_config_dir, 'generated/luci-milo.cfg'): luci_milo_cfg,
77 (infra_config_dir, 'generated/luci-milo-dev.cfg'): '',
Kenneth Russelleb60cbd22017-12-05 07:54:2878 }
Garrett Beaty1afaccc2020-06-25 19:58:1579 for (d, filename), content in files.iteritems():
Garrett Beaty4f3e9212020-06-25 20:21:4980 if content is None:
81 continue
Garrett Beaty1afaccc2020-06-25 19:58:1582 path = os.path.join(d, filename)
83 parent = os.path.abspath(os.path.dirname(path))
84 if not os.path.exists(parent):
85 os.makedirs(parent)
86 with open(path, 'w') as f:
87 f.write(content)
88
Stephen Martinis7eb8b612018-09-21 00:17:5089 self.printed_lines = []
90
91 def print_line(self, line):
92 self.printed_lines.append(line)
Kenneth Russelleb60cbd22017-12-05 07:54:2893
Kenneth Russell73c3bd8b2018-10-19 22:30:1994 # pragma pylint: disable=arguments-differ
95 def check_output_file_consistency(self, verbose=False, dump=True):
Garrett Beaty777c2912020-05-07 00:54:3396 with dump_on_failure(self, dump=verbose and dump):
Kenneth Russell73c3bd8b2018-10-19 22:30:1997 super(FakeBBGen, self).check_output_file_consistency(verbose)
Kenneth Russell73c3bd8b2018-10-19 22:30:1998# pragma pylint: enable=arguments-differ
99
Kenneth Russelleb60cbd22017-12-05 07:54:28100
101FOO_GTESTS_WATERFALL = """\
102[
103 {
Greg Gutermanf60eb052020-03-12 17:40:01104 'project': 'chromium',
105 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28106 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43107 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28108 'Fake Tester': {
109 'swarming': {
110 'dimension_sets': [
111 {
112 'kvm': '1',
113 },
114 ],
115 },
116 'test_suites': {
117 'gtest_tests': 'foo_tests',
118 },
119 },
120 },
121 },
122]
123"""
124
Kenneth Russell650995a2018-05-03 21:17:01125FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL = """\
126[
127 {
Greg Gutermanf60eb052020-03-12 17:40:01128 'project': 'chromium',
129 'bucket': 'ci',
Kenneth Russell650995a2018-05-03 21:17:01130 'name': 'chromium.test',
131 'machines': {
132 'Fake Tester': {
133 'test_suites': {
134 'gtest_tests': 'foo_tests',
135 },
136 'args': [
137 '--enable-features=Baz',
138 ],
139 },
140 },
141 },
142]
143"""
144
Ben Pastenea9e583b2019-01-16 02:57:26145FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL = """\
146[
147 {
Greg Gutermanf60eb052020-03-12 17:40:01148 'project': 'chromium',
149 'bucket': 'ci',
Ben Pastenea9e583b2019-01-16 02:57:26150 'name': 'chromium.test',
151 'machines': {
152 'Fake Tester': {
153 'swarming': {
154 'dimension_sets': [
155 {
156 "device_type": "foo_device",
157 },
158 ],
159 },
160 'test_suites': {
161 'gtest_tests': 'foo_tests',
162 },
163 'os_type': 'chromeos',
164 },
165 },
166 },
167]
168"""
Stephen Martinisf83893722018-09-19 00:02:18169
Kenneth Russell8a386d42018-06-02 09:48:01170FOO_LINUX_GTESTS_WATERFALL = """\
171[
172 {
Greg Gutermanf60eb052020-03-12 17:40:01173 'project': 'chromium',
174 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01175 'name': 'chromium.test',
176 'machines': {
177 'Fake Tester': {
178 'os_type': 'linux',
179 'test_suites': {
180 'gtest_tests': 'foo_tests',
181 },
182 },
183 },
184 },
185]
186"""
187
Kenneth Russelleb60cbd22017-12-05 07:54:28188COMPOSITION_GTEST_SUITE_WATERFALL = """\
189[
190 {
Greg Gutermanf60eb052020-03-12 17:40:01191 'project': 'chromium',
192 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28193 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43194 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28195 'Fake Tester': {
196 'test_suites': {
197 'gtest_tests': 'composition_tests',
198 },
199 },
200 },
201 },
202]
203"""
204
John Budorickedfe7f872018-01-23 15:27:22205COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL = """\
206[
207 {
Greg Gutermanf60eb052020-03-12 17:40:01208 'project': 'chromium',
209 'bucket': 'ci',
John Budorickedfe7f872018-01-23 15:27:22210 'name': 'chromium.test',
211 'machines': {
212 'Fake Tester': {
213 'test_suites': {
214 'gtest_tests': 'composition_tests',
215 },
216 'args': [
217 '--this-is-an-argument',
218 ],
219 },
220 },
221 },
222]
223"""
224
Kenneth Russelleb60cbd22017-12-05 07:54:28225FOO_ISOLATED_SCRIPTS_WATERFALL = """\
226[
227 {
Greg Gutermanf60eb052020-03-12 17:40:01228 'project': 'chromium',
229 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28230 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43231 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28232 'Fake Tester': {
233 'test_suites': {
234 'isolated_scripts': 'composition_tests',
235 },
236 },
237 },
238 },
239]
240"""
241
Dirk Pranke0e879b22020-07-16 23:53:56242FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID = """\
243[
244 {
245 'project': 'chromium',
246 'bucket': 'ci',
247 'name': 'chromium.test',
248 'machines': {
249 'Fake Tester': {
250 'test_suites': {
251 'isolated_scripts': 'composition_tests',
252 },
253 'use_android_presentation': True,
254 },
255 },
256 },
257]
258"""
259
Kenneth Russelleb60cbd22017-12-05 07:54:28260FOO_SCRIPT_WATERFALL = """\
261[
262 {
Greg Gutermanf60eb052020-03-12 17:40:01263 'project': 'chromium',
264 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28265 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43266 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28267 'Fake Tester': {
268 'test_suites': {
269 'scripts': 'foo_scripts',
270 },
271 },
272 },
273 },
274]
275"""
276
Brian Sheedy158cd0f2019-04-26 01:12:44277FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS = """\
278[
279 {
Greg Gutermanf60eb052020-03-12 17:40:01280 'project': 'chromium',
281 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44282 'name': 'chromium.test',
283 'machines': {
284 'Fake Tester': {
285 'forbid_script_tests': True,
286 'test_suites': {
287 'scripts': 'foo_scripts',
288 },
289 },
290 },
291 },
292]
293"""
294
295FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS = """\
296[
297 {
Greg Gutermanf60eb052020-03-12 17:40:01298 'project': 'chromium',
299 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44300 'name': 'chromium.test',
301 'forbid_script_tests': True,
302 'machines': {
303 'Fake Tester': {
304 'test_suites': {
305 'scripts': 'foo_scripts',
306 },
307 },
308 },
309 },
310]
311"""
312
Kenneth Russelleb60cbd22017-12-05 07:54:28313FOO_JUNIT_WATERFALL = """\
314[
315 {
Greg Gutermanf60eb052020-03-12 17:40:01316 'project': 'chromium',
317 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28318 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43319 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28320 'Fake Tester': {
321 'test_suites': {
322 'junit_tests': 'composition_tests',
323 },
324 },
325 },
326 },
327]
328"""
329
Kenneth Russell8a386d42018-06-02 09:48:01330FOO_GPU_TELEMETRY_TEST_WATERFALL = """\
331[
332 {
Greg Gutermanf60eb052020-03-12 17:40:01333 'project': 'chromium',
334 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01335 'name': 'chromium.test',
336 'machines': {
337 'Fake Tester': {
338 'os_type': 'win',
339 'browser_config': 'release',
340 'swarming': {
341 'dimension_sets': [
342 {
343 'gpu': '10de:1cb3',
344 },
345 ],
346 },
347 'test_suites': {
348 'gpu_telemetry_tests': 'composition_tests',
349 },
350 },
351 },
352 },
353]
354"""
355
Kenneth Russell384a1732019-03-16 02:36:02356NVIDIA_GPU_TELEMETRY_TEST_WATERFALL = """\
357[
358 {
Greg Gutermanf60eb052020-03-12 17:40:01359 'project': 'chromium',
360 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02361 'name': 'chromium.test',
362 'machines': {
363 'Fake Tester': {
364 'os_type': 'win',
365 'browser_config': 'release',
366 'swarming': {
367 'dimension_sets': [
368 {
Brian Sheedy0e26c4e02020-05-28 22:09:09369 'gpu': '10de:1cb3-26.21.14.3102',
Kenneth Russell384a1732019-03-16 02:36:02370 },
371 ],
372 },
373 'test_suites': {
374 'gpu_telemetry_tests': 'composition_tests',
375 },
376 },
377 },
378 },
379]
380"""
381
382INTEL_GPU_TELEMETRY_TEST_WATERFALL = """\
383[
384 {
Greg Gutermanf60eb052020-03-12 17:40:01385 'project': 'chromium',
386 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02387 'name': 'chromium.test',
388 'machines': {
389 'Fake Tester': {
390 'os_type': 'win',
391 'browser_config': 'release',
392 'swarming': {
393 'dimension_sets': [
394 {
Brian Sheedy0e26c4e02020-05-28 22:09:09395 'gpu': '8086:5912-24.20.100.6286',
Kenneth Russell384a1732019-03-16 02:36:02396 },
397 ],
398 },
399 'test_suites': {
400 'gpu_telemetry_tests': 'composition_tests',
401 },
402 },
403 },
404 },
405]
406"""
407
Brian Sheedyf9387db7b2019-08-05 19:26:10408INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL = """\
409[
410 {
Greg Gutermanf60eb052020-03-12 17:40:01411 'project': 'chromium',
412 'bucket': 'ci',
Brian Sheedyf9387db7b2019-08-05 19:26:10413 'name': 'chromium.test',
414 'machines': {
415 'Fake Tester': {
416 'os_type': 'win',
417 'browser_config': 'release',
418 'swarming': {
419 'dimension_sets': [
420 {
Brian Sheedy0e26c4e02020-05-28 22:09:09421 'gpu': '8086:3e92-24.20.100.6286',
Brian Sheedyf9387db7b2019-08-05 19:26:10422 },
423 ],
424 },
425 'test_suites': {
426 'gpu_telemetry_tests': 'composition_tests',
427 },
428 },
429 },
430 },
431]
432"""
433
Kenneth Russelleb60cbd22017-12-05 07:54:28434UNKNOWN_TEST_SUITE_WATERFALL = """\
435[
436 {
Greg Gutermanf60eb052020-03-12 17:40:01437 'project': 'chromium',
438 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28439 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43440 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28441 'Fake Tester': {
442 'test_suites': {
443 'gtest_tests': 'baz_tests',
444 },
445 },
446 },
447 },
448]
449"""
450
451UNKNOWN_TEST_SUITE_TYPE_WATERFALL = """\
452[
453 {
Greg Gutermanf60eb052020-03-12 17:40:01454 'project': 'chromium',
455 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28456 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43457 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28458 'Fake Tester': {
459 'test_suites': {
460 'gtest_tests': 'foo_tests',
461 'foo_test_type': 'foo_tests',
462 },
463 },
464 },
465 },
466]
467"""
468
469ANDROID_WATERFALL = """\
470[
471 {
Greg Gutermanf60eb052020-03-12 17:40:01472 'project': 'chromium',
473 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28474 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43475 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28476 'Android Builder': {
477 'additional_compile_targets': [
478 'bar_test',
479 ],
480 },
Kenneth Russelleb60cbd22017-12-05 07:54:28481 'Fake Android K Tester': {
482 'additional_compile_targets': [
483 'bar_test',
484 ],
485 'swarming': {
486 'dimension_sets': [
487 {
488 'device_os': 'KTU84P',
489 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22490 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28491 },
492 ],
493 },
494 'os_type': 'android',
Nico Weber79dc5f6852018-07-13 19:38:49495 'skip_merge_script': True,
Kenneth Russelleb60cbd22017-12-05 07:54:28496 'test_suites': {
497 'gtest_tests': 'foo_tests',
498 },
499 },
500 'Fake Android L Tester': {
501 'swarming': {
502 'dimension_sets': [
503 {
Ben Pastenee012aea42019-05-14 22:32:28504 'device_os': 'LMY41U',
505 'device_os_type': 'user',
Kenneth Russelleb60cbd22017-12-05 07:54:28506 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22507 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28508 },
509 ],
510 },
511 'os_type': 'android',
512 'skip_merge_script': True,
513 'skip_output_links': True,
514 'test_suites': {
515 'gtest_tests': 'foo_tests',
516 },
517 },
518 'Fake Android M Tester': {
519 'swarming': {
520 'dimension_sets': [
521 {
522 'device_os': 'MMB29Q',
523 'device_type': 'bullhead',
Ben Pastened15aa8a2019-05-16 16:59:22524 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28525 },
526 ],
527 },
528 'os_type': 'android',
529 'use_swarming': False,
530 'test_suites': {
531 'gtest_tests': 'foo_tests',
532 },
533 },
534 },
535 },
536]
537"""
538
Nico Weberd18b8962018-05-16 19:39:38539UNKNOWN_BOT_GTESTS_WATERFALL = """\
540[
541 {
Greg Gutermanf60eb052020-03-12 17:40:01542 'project': 'chromium',
543 'bucket': 'ci',
Nico Weberd18b8962018-05-16 19:39:38544 'name': 'chromium.test',
545 'machines': {
546 'Unknown Bot': {
547 'test_suites': {
548 'gtest_tests': 'foo_tests',
549 },
550 },
551 },
552 },
553]
554"""
555
Jeff Yoon8154e582019-12-03 23:30:01556MATRIX_GTEST_SUITE_WATERFALL = """\
557[
558 {
Greg Gutermanf60eb052020-03-12 17:40:01559 'project': 'chromium',
560 'bucket': 'ci',
Jeff Yoon8154e582019-12-03 23:30:01561 'name': 'chromium.test',
562 'machines': {
563 'Fake Tester': {
564 'test_suites': {
565 'gtest_tests': 'matrix_tests',
566 },
567 },
568 },
569 },
570]
571"""
572
Jeff Yoon67c3e832020-02-08 07:39:38573MATRIX_GTEST_SUITE_WATERFALL_MIXINS = """\
574[
575 {
Greg Gutermanf60eb052020-03-12 17:40:01576 'project': 'chromium',
577 'bucket': 'ci',
Jeff Yoon67c3e832020-02-08 07:39:38578 'name': 'chromium.test',
579 'machines': {
580 'Fake Tester': {
581 'mixins': ['dimension_mixin'],
582 'test_suites': {
583 'gtest_tests': 'matrix_tests',
584 },
585 },
586 },
587 },
588]
589"""
590
Kenneth Russelleb60cbd22017-12-05 07:54:28591FOO_TEST_SUITE = """\
592{
Stephen Martinis54d64ad2018-09-21 22:16:20593 'basic_suites': {
594 'foo_tests': {
595 'foo_test': {
596 'swarming': {
597 'dimension_sets': [
598 {
599 'integrity': 'high',
600 }
601 ],
602 'expiration': 120,
603 },
Kenneth Russelleb60cbd22017-12-05 07:54:28604 },
605 },
606 },
607}
608"""
609
Brian Sheedycae63b22020-06-10 22:52:11610FOO_TEST_SUITE_NO_DIMENSIONS = """\
611{
612 'basic_suites': {
613 'foo_tests': {
614 'foo_test': {
615 },
616 },
617 },
618}
619"""
620
Stephen Martinis5bef0fc2020-01-06 22:47:53621FOO_TEST_SUITE_NOT_SORTED = """\
622{
623 'basic_suites': {
624 'foo_tests': {
625 'foo_test': {},
626 'a_test': {},
627 },
628 },
629}
630"""
631
Kenneth Russell8ceeabf2017-12-11 17:53:28632FOO_TEST_SUITE_WITH_ARGS = """\
633{
Stephen Martinis54d64ad2018-09-21 22:16:20634 'basic_suites': {
635 'foo_tests': {
636 'foo_test': {
637 'args': [
638 '--c_arg',
639 ],
640 },
Kenneth Russell8ceeabf2017-12-11 17:53:28641 },
642 },
643}
644"""
645
Kenneth Russell8a386d42018-06-02 09:48:01646FOO_TEST_SUITE_WITH_LINUX_ARGS = """\
647{
Stephen Martinis54d64ad2018-09-21 22:16:20648 'basic_suites': {
649 'foo_tests': {
650 'foo_test': {
651 'linux_args': [
652 '--no-xvfb',
653 ],
654 },
Kenneth Russell8a386d42018-06-02 09:48:01655 },
656 },
657}
658"""
659
Kenneth Russell650995a2018-05-03 21:17:01660FOO_TEST_SUITE_WITH_ENABLE_FEATURES = """\
661{
Stephen Martinis54d64ad2018-09-21 22:16:20662 'basic_suites': {
663 'foo_tests': {
664 'foo_test': {
665 'args': [
666 '--enable-features=Foo,Bar',
667 ],
668 },
Kenneth Russell650995a2018-05-03 21:17:01669 },
670 },
671}
672"""
673
Brian Sheedy7658c982020-01-08 02:27:58674FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN = """\
675{
676 'basic_suites': {
677 'foo_tests': {
678 'foo_test': {
679 'remove_mixins': ['waterfall_mixin'],
680 'swarming': {
681 'dimension_sets': [
682 {
683 'integrity': 'high',
684 }
685 ],
686 'expiration': 120,
687 },
688 },
689 },
690 },
691}
692"""
693
694FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN = """\
695{
696 'basic_suites': {
697 'foo_tests': {
698 'foo_test': {
699 'remove_mixins': ['builder_mixin'],
700 'swarming': {
701 'dimension_sets': [
702 {
703 'integrity': 'high',
704 }
705 ],
706 'expiration': 120,
707 },
708 },
709 },
710 },
711}
712"""
713
Stephen Martinisb6a50492018-09-12 23:59:32714
Kenneth Russelleb60cbd22017-12-05 07:54:28715FOO_SCRIPT_SUITE = """\
716{
Stephen Martinis54d64ad2018-09-21 22:16:20717 'basic_suites': {
718 'foo_scripts': {
719 'foo_test': {
720 'script': 'foo.py',
721 },
722 'bar_test': {
723 'script': 'bar.py',
724 },
Kenneth Russelleb60cbd22017-12-05 07:54:28725 },
726 },
727}
728"""
729
Kenneth Russelleb60cbd22017-12-05 07:54:28730GOOD_COMPOSITION_TEST_SUITES = """\
731{
Stephen Martinis54d64ad2018-09-21 22:16:20732 'basic_suites': {
733 'bar_tests': {
734 'bar_test': {},
735 },
736 'foo_tests': {
737 'foo_test': {},
738 },
Kenneth Russelleb60cbd22017-12-05 07:54:28739 },
Stephen Martinis54d64ad2018-09-21 22:16:20740 'compound_suites': {
741 'composition_tests': [
742 'foo_tests',
743 'bar_tests',
744 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28745 },
Kenneth Russelleb60cbd22017-12-05 07:54:28746}
747"""
748
749BAD_COMPOSITION_TEST_SUITES = """\
750{
Stephen Martinis54d64ad2018-09-21 22:16:20751 'basic_suites': {
752 'bar_tests': {},
753 'foo_tests': {},
754 },
755 'compound_suites': {
756 'buggy_composition_tests': [
757 'bar_tests',
758 ],
759 'composition_tests': [
760 'foo_tests',
761 'buggy_composition_tests',
762 ],
763 },
764}
765"""
766
Andrew Luo0f1dee02019-09-06 16:50:47767CONFLICTING_COMPOSITION_TEST_SUITES = """\
768{
769 'basic_suites': {
770 'bar_tests': {
771 'baz_tests': {
772 'args': [
773 '--bar',
774 ],
775 }
776 },
777 'foo_tests': {
778 'baz_tests': {
779 'args': [
780 '--foo',
781 ],
782 }
783 },
784 },
785 'compound_suites': {
786 'foobar_tests': [
787 'foo_tests',
788 'bar_tests',
789 ],
790 },
791}
792"""
793
Stephen Martinis54d64ad2018-09-21 22:16:20794DUPLICATES_COMPOSITION_TEST_SUITES = """\
795{
796 'basic_suites': {
797 'bar_tests': {},
Jeff Yoon8154e582019-12-03 23:30:01798 'buggy_composition_tests': {},
Stephen Martinis54d64ad2018-09-21 22:16:20799 'foo_tests': {},
800 },
801 'compound_suites': {
802 'bar_tests': [
803 'foo_tests',
804 ],
805 'composition_tests': [
806 'foo_tests',
807 'buggy_composition_tests',
808 ],
809 },
Kenneth Russelleb60cbd22017-12-05 07:54:28810}
811"""
812
Dirk Pranke1b767092017-12-07 04:44:23813SCRIPT_SUITE = """\
814{
Stephen Martinis54d64ad2018-09-21 22:16:20815 'basic_suites': {
816 'foo_scripts': {
817 'foo_test': {
818 'script': 'foo.py',
819 },
Dirk Pranke1b767092017-12-07 04:44:23820 },
821 },
822}
823"""
824
Kenneth Russelleb60cbd22017-12-05 07:54:28825UNREFED_TEST_SUITE = """\
826{
Stephen Martinis54d64ad2018-09-21 22:16:20827 'basic_suites': {
828 'bar_tests': {},
829 'foo_tests': {},
830 },
Kenneth Russelleb60cbd22017-12-05 07:54:28831}
832"""
833
834REUSING_TEST_WITH_DIFFERENT_NAME = """\
835{
Stephen Martinis54d64ad2018-09-21 22:16:20836 'basic_suites': {
837 'foo_tests': {
838 'foo_test': {},
839 'variation_test': {
840 'args': [
841 '--variation',
842 ],
843 'test': 'foo_test',
844 },
Kenneth Russelleb60cbd22017-12-05 07:54:28845 },
846 },
847}
848"""
849
Kenneth Russell8a386d42018-06-02 09:48:01850COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST = """\
851{
Stephen Martinis54d64ad2018-09-21 22:16:20852 'basic_suites': {
853 'foo_tests': {
854 'foo': {},
855 },
856 'bar_tests': {
857 'bar_test': {},
858 },
Kenneth Russell8a386d42018-06-02 09:48:01859 },
Stephen Martinis54d64ad2018-09-21 22:16:20860 'compound_suites': {
861 'composition_tests': [
862 'foo_tests',
863 'bar_tests',
864 ],
Kenneth Russell8a386d42018-06-02 09:48:01865 },
Kenneth Russell8a386d42018-06-02 09:48:01866}
867"""
868
Kenneth Russell384a1732019-03-16 02:36:02869COMPOSITION_SUITE_WITH_GPU_ARGS = """\
870{
871 'basic_suites': {
872 'foo_tests': {
873 'foo': {
874 'args': [
875 '--gpu-vendor-id',
876 '${gpu_vendor_id}',
877 '--gpu-device-id',
878 '${gpu_device_id}',
879 ],
880 },
881 },
882 'bar_tests': {
883 'bar_test': {},
884 },
885 },
886 'compound_suites': {
887 'composition_tests': [
888 'foo_tests',
889 'bar_tests',
890 ],
891 },
892}
893"""
894
Dirk Pranke1b767092017-12-07 04:44:23895SCRIPT_WITH_ARGS_EXCEPTIONS = """\
896{
897 'foo_test': {
898 'modifications': {
899 'Fake Tester': {
900 'args': ['--fake-arg'],
901 },
902 },
903 },
904}
905"""
906
Stephen Martinis0382bc12018-09-17 22:29:07907SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS = """\
908{
909 'foo_test': {
910 'modifications': {
911 'Fake Tester': {
912 'swarming': {
913 'value': 'exception',
914 },
915 },
916 },
917 },
918}
919"""
920
Kenneth Russelleb60cbd22017-12-05 07:54:28921NO_BAR_TEST_EXCEPTIONS = """\
922{
923 'bar_test': {
924 'remove_from': [
925 'Fake Tester',
926 ]
927 }
928}
929"""
930
931EMPTY_BAR_TEST_EXCEPTIONS = """\
932{
933 'bar_test': {
934 }
935}
936"""
937
Stephen Martinis54d64ad2018-09-21 22:16:20938EXCEPTIONS_SORTED = """\
939{
940 'suite_c': {
941 'modifications': {
942 'Fake Tester': {
943 'foo': 'bar',
944 },
945 },
946 },
947 'suite_d': {
948 'modifications': {
949 'Fake Tester': {
950 'foo': 'baz',
951 },
952 },
953 },
954}
955"""
956
957EXCEPTIONS_UNSORTED = """\
958{
959 'suite_d': {
960 'modifications': {
961 'Fake Tester': {
962 'foo': 'baz',
963 },
964 },
965 },
966 'suite_c': {
967 'modifications': {
968 'Fake Tester': {
969 'foo': 'bar',
970 },
971 },
972 },
973}
974"""
975
Stephen Martinis5bef0fc2020-01-06 22:47:53976EXCEPTIONS_PER_TEST_UNSORTED = """\
977{
978 'suite_d': {
979 'modifications': {
980 'Other Tester': {
981 'foo': 'baz',
982 },
983 'Fake Tester': {
984 'foo': 'baz',
985 },
986 },
987 },
988}
989"""
990
991EXCEPTIONS_DUPS_REMOVE_FROM = """\
992{
993 'suite_d': {
994 'remove_from': [
995 'Fake Tester',
996 'Fake Tester',
997 ],
998 'modifications': {
999 'Fake Tester': {
1000 'foo': 'baz',
1001 },
1002 },
1003 },
1004}
1005"""
1006
Kenneth Russelleb60cbd22017-12-05 07:54:281007FOO_TEST_MODIFICATIONS = """\
1008{
1009 'foo_test': {
1010 'modifications': {
1011 'Fake Tester': {
1012 'args': [
1013 '--bar',
1014 ],
1015 'swarming': {
1016 'hard_timeout': 600,
1017 },
1018 },
1019 },
1020 }
1021}
1022"""
1023
John Budorick5bc387fe2019-05-09 20:02:531024FOO_TEST_EXPLICIT_NONE_EXCEPTIONS = """\
1025{
1026 'foo_test': {
1027 'modifications': {
1028 'Fake Tester': {
1029 'swarming': {
1030 'dimension_sets': [
1031 {
1032 'integrity': None,
1033 },
1034 ],
1035 },
1036 },
1037 },
1038 },
1039}
1040"""
1041
Kenneth Russelleb60cbd22017-12-05 07:54:281042NONEXISTENT_REMOVAL = """\
1043{
1044 'foo_test': {
1045 'remove_from': [
1046 'Nonexistent Tester',
1047 ]
1048 }
1049}
1050"""
1051
1052NONEXISTENT_MODIFICATION = """\
1053{
1054 'foo_test': {
1055 'modifications': {
1056 'Nonexistent Tester': {
1057 'args': [],
1058 },
1059 },
1060 }
1061}
1062"""
1063
1064COMPOSITION_WATERFALL_OUTPUT = """\
1065{
1066 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1067 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1068 "Fake Tester": {
1069 "gtest_tests": [
1070 {
Stephen Martinisbc7b7772019-05-01 22:01:431071 "merge": {
1072 "args": [],
1073 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1074 },
Kenneth Russelleb60cbd22017-12-05 07:54:281075 "swarming": {
1076 "can_use_on_swarming_builders": true
1077 },
1078 "test": "bar_test"
1079 },
1080 {
Stephen Martinisbc7b7772019-05-01 22:01:431081 "merge": {
1082 "args": [],
1083 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1084 },
Kenneth Russelleb60cbd22017-12-05 07:54:281085 "swarming": {
1086 "can_use_on_swarming_builders": true
1087 },
1088 "test": "foo_test"
1089 }
1090 ]
1091 }
1092}
1093"""
1094
John Budorickedfe7f872018-01-23 15:27:221095COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT = """\
1096{
1097 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1098 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1099 "Fake Tester": {
1100 "gtest_tests": [
1101 {
1102 "args": [
1103 "--this-is-an-argument"
1104 ],
Stephen Martinisbc7b7772019-05-01 22:01:431105 "merge": {
1106 "args": [],
1107 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1108 },
John Budorickedfe7f872018-01-23 15:27:221109 "swarming": {
1110 "can_use_on_swarming_builders": true
1111 },
1112 "test": "bar_test"
1113 },
1114 {
1115 "args": [
1116 "--this-is-an-argument"
1117 ],
Stephen Martinisbc7b7772019-05-01 22:01:431118 "merge": {
1119 "args": [],
1120 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1121 },
John Budorickedfe7f872018-01-23 15:27:221122 "swarming": {
1123 "can_use_on_swarming_builders": true
1124 },
1125 "test": "foo_test"
1126 }
1127 ]
1128 }
1129}
1130"""
1131
Kenneth Russelleb60cbd22017-12-05 07:54:281132VARIATION_GTEST_OUTPUT = """\
1133{
1134 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1135 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1136 "Fake Tester": {
1137 "gtest_tests": [
1138 {
Stephen Martinisbc7b7772019-05-01 22:01:431139 "merge": {
1140 "args": [],
1141 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1142 },
Kenneth Russelleb60cbd22017-12-05 07:54:281143 "swarming": {
1144 "can_use_on_swarming_builders": true,
1145 "dimension_sets": [
1146 {
1147 "kvm": "1"
1148 }
1149 ]
1150 },
Nodir Turakulovfce34292019-12-18 17:05:411151 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111152 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281153 },
1154 {
1155 "args": [
1156 "--variation"
1157 ],
Stephen Martinisbc7b7772019-05-01 22:01:431158 "merge": {
1159 "args": [],
1160 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1161 },
Kenneth Russelleb60cbd22017-12-05 07:54:281162 "name": "variation_test",
1163 "swarming": {
1164 "can_use_on_swarming_builders": true,
1165 "dimension_sets": [
1166 {
1167 "kvm": "1"
1168 }
1169 ]
1170 },
Nodir Turakulovfce34292019-12-18 17:05:411171 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111172 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281173 }
1174 ]
1175 }
1176}
1177"""
1178
1179COMPOSITION_WATERFALL_FILTERED_OUTPUT = """\
1180{
1181 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1182 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1183 "Fake Tester": {
1184 "gtest_tests": [
1185 {
Stephen Martinisbc7b7772019-05-01 22:01:431186 "merge": {
1187 "args": [],
1188 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1189 },
Kenneth Russelleb60cbd22017-12-05 07:54:281190 "swarming": {
1191 "can_use_on_swarming_builders": true
1192 },
1193 "test": "foo_test"
1194 }
1195 ]
1196 }
1197}
1198"""
1199
Kenneth Russell8ceeabf2017-12-11 17:53:281200MERGED_ARGS_OUTPUT = """\
1201{
1202 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1203 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1204 "Fake Tester": {
1205 "gtest_tests": [
1206 {
1207 "args": [
Stephen Martinis3bed2ab2018-04-23 19:42:061208 "--c_arg",
1209 "--bar"
Kenneth Russell8ceeabf2017-12-11 17:53:281210 ],
Stephen Martinisbc7b7772019-05-01 22:01:431211 "merge": {
1212 "args": [],
1213 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1214 },
Kenneth Russell8ceeabf2017-12-11 17:53:281215 "swarming": {
1216 "can_use_on_swarming_builders": true,
1217 "dimension_sets": [
1218 {
1219 "kvm": "1"
1220 }
1221 ],
1222 "hard_timeout": 600
1223 },
1224 "test": "foo_test"
1225 }
1226 ]
1227 }
1228}
1229"""
1230
Kenneth Russell8a386d42018-06-02 09:48:011231LINUX_ARGS_OUTPUT = """\
1232{
1233 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1234 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1235 "Fake Tester": {
1236 "gtest_tests": [
1237 {
1238 "args": [
1239 "--no-xvfb"
1240 ],
Stephen Martinisbc7b7772019-05-01 22:01:431241 "merge": {
1242 "args": [],
1243 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1244 },
Kenneth Russell8a386d42018-06-02 09:48:011245 "swarming": {
1246 "can_use_on_swarming_builders": true
1247 },
1248 "test": "foo_test"
1249 }
1250 ]
1251 }
1252}
1253"""
1254
Kenneth Russell650995a2018-05-03 21:17:011255MERGED_ENABLE_FEATURES_OUTPUT = """\
1256{
1257 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1258 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1259 "Fake Tester": {
1260 "gtest_tests": [
1261 {
1262 "args": [
1263 "--enable-features=Foo,Bar,Baz"
1264 ],
Stephen Martinisbc7b7772019-05-01 22:01:431265 "merge": {
1266 "args": [],
1267 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1268 },
Kenneth Russell650995a2018-05-03 21:17:011269 "swarming": {
1270 "can_use_on_swarming_builders": true
1271 },
1272 "test": "foo_test"
1273 }
1274 ]
1275 }
1276}
1277"""
1278
Kenneth Russelleb60cbd22017-12-05 07:54:281279MODIFIED_OUTPUT = """\
1280{
1281 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1282 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1283 "Fake Tester": {
1284 "gtest_tests": [
1285 {
1286 "args": [
1287 "--bar"
1288 ],
Stephen Martinisbc7b7772019-05-01 22:01:431289 "merge": {
1290 "args": [],
1291 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1292 },
Kenneth Russelleb60cbd22017-12-05 07:54:281293 "swarming": {
1294 "can_use_on_swarming_builders": true,
1295 "dimension_sets": [
1296 {
1297 "integrity": "high",
1298 "kvm": "1"
1299 }
1300 ],
1301 "expiration": 120,
1302 "hard_timeout": 600
1303 },
1304 "test": "foo_test"
1305 }
1306 ]
1307 }
1308}
1309"""
1310
John Budorick5bc387fe2019-05-09 20:02:531311EXPLICIT_NONE_OUTPUT = """\
1312{
1313 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1314 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1315 "Fake Tester": {
1316 "gtest_tests": [
1317 {
1318 "merge": {
1319 "args": [],
1320 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1321 },
1322 "swarming": {
1323 "can_use_on_swarming_builders": true,
1324 "dimension_sets": [
1325 {
1326 "kvm": "1"
1327 }
1328 ],
1329 "expiration": 120
1330 },
1331 "test": "foo_test"
1332 }
1333 ]
1334 }
1335}
1336"""
1337
Kenneth Russelleb60cbd22017-12-05 07:54:281338ISOLATED_SCRIPT_OUTPUT = """\
1339{
1340 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1341 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1342 "Fake Tester": {
1343 "isolated_scripts": [
1344 {
1345 "isolate_name": "foo_test",
Stephen Martinisf50047062019-05-06 22:26:171346 "merge": {
1347 "args": [],
1348 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1349 },
Kenneth Russelleb60cbd22017-12-05 07:54:281350 "name": "foo_test",
1351 "swarming": {
1352 "can_use_on_swarming_builders": true
1353 }
1354 }
1355 ]
1356 }
1357}
1358"""
1359
Dirk Pranke0e879b22020-07-16 23:53:561360ISOLATED_SCRIPT_OUTPUT_ANDROID = """\
1361{
1362 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1363 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1364 "Fake Tester": {
1365 "isolated_scripts": [
1366 {
1367 "args": [
1368 "--gs-results-bucket=chromium-result-details"
1369 ],
1370 "isolate_name": "foo_test",
1371 "merge": {
1372 "args": [
1373 "--bucket",
1374 "chromium-result-details",
1375 "--test-name",
1376 "foo_test"
1377 ],
1378 "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
1379 },
1380 "name": "foo_test",
1381 "swarming": {
1382 "can_use_on_swarming_builders": true,
1383 "cipd_packages": [
1384 {
1385 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1386 "location": "bin",
1387 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1388 }
1389 ],
1390 "output_links": [
1391 {
1392 "link": [
1393 "https://luci-logdog.appspot.com/v/?s",
1394 "=android%2Fswarming%2Flogcats%2F",
1395 "${TASK_ID}%2F%2B%2Funified_logcats"
1396 ],
1397 "name": "shard #${SHARD_INDEX} logcats"
1398 }
1399 ]
1400 }
1401 }
1402 ]
1403 }
1404}
1405"""
1406
Kenneth Russelleb60cbd22017-12-05 07:54:281407SCRIPT_OUTPUT = """\
1408{
1409 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1410 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1411 "Fake Tester": {
1412 "scripts": [
1413 {
1414 "name": "foo_test",
1415 "script": "foo.py"
1416 }
1417 ]
1418 }
1419}
1420"""
1421
Dirk Pranke1b767092017-12-07 04:44:231422SCRIPT_WITH_ARGS_OUTPUT = """\
1423{
1424 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1425 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1426 "Fake Tester": {
1427 "scripts": [
1428 {
1429 "args": [
1430 "--fake-arg"
1431 ],
1432 "name": "foo_test",
1433 "script": "foo.py"
1434 }
1435 ]
1436 }
1437}
1438"""
1439
Kenneth Russelleb60cbd22017-12-05 07:54:281440JUNIT_OUTPUT = """\
1441{
1442 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1443 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1444 "Fake Tester": {
1445 "junit_tests": [
1446 {
John Budorickcadc4952019-09-16 23:51:371447 "name": "foo_test",
Kenneth Russelleb60cbd22017-12-05 07:54:281448 "test": "foo_test"
1449 }
1450 ]
1451 }
1452}
1453"""
1454
Kenneth Russell8a386d42018-06-02 09:48:011455GPU_TELEMETRY_TEST_OUTPUT = """\
1456{
1457 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1458 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1459 "Fake Tester": {
1460 "isolated_scripts": [
1461 {
1462 "args": [
1463 "foo",
1464 "--show-stdout",
1465 "--browser=release",
1466 "--passthrough",
1467 "-v",
1468 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1469 ],
1470 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171471 "merge": {
1472 "args": [],
1473 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1474 },
Kenneth Russell8a386d42018-06-02 09:48:011475 "name": "foo_tests",
Kenneth Russell44910c32018-12-03 23:35:111476 "should_retry_with_patch": false,
Kenneth Russell8a386d42018-06-02 09:48:011477 "swarming": {
1478 "can_use_on_swarming_builders": true,
1479 "dimension_sets": [
1480 {
1481 "gpu": "10de:1cb3"
1482 }
erikchen6da2d9b2018-08-03 23:01:141483 ],
1484 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191485 },
Chan Li17d969f92020-07-10 00:50:031486 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell8a386d42018-06-02 09:48:011487 }
1488 ]
1489 }
1490}
1491"""
1492
Kenneth Russell384a1732019-03-16 02:36:021493NVIDIA_GPU_TELEMETRY_TEST_OUTPUT = """\
1494{
1495 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1496 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1497 "Fake Tester": {
1498 "isolated_scripts": [
1499 {
1500 "args": [
1501 "foo",
1502 "--show-stdout",
1503 "--browser=release",
1504 "--passthrough",
1505 "-v",
1506 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1507 "--gpu-vendor-id",
1508 "10de",
1509 "--gpu-device-id",
1510 "1cb3"
1511 ],
1512 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171513 "merge": {
1514 "args": [],
1515 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1516 },
Kenneth Russell384a1732019-03-16 02:36:021517 "name": "foo_tests",
1518 "should_retry_with_patch": false,
1519 "swarming": {
1520 "can_use_on_swarming_builders": true,
1521 "dimension_sets": [
1522 {
Brian Sheedy0e26c4e02020-05-28 22:09:091523 "gpu": "10de:1cb3-26.21.14.3102"
Kenneth Russell384a1732019-03-16 02:36:021524 }
1525 ],
1526 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191527 },
Chan Li17d969f92020-07-10 00:50:031528 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021529 }
1530 ]
1531 }
1532}
1533"""
1534
1535INTEL_GPU_TELEMETRY_TEST_OUTPUT = """\
1536{
1537 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1538 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1539 "Fake Tester": {
1540 "isolated_scripts": [
1541 {
1542 "args": [
1543 "foo",
1544 "--show-stdout",
1545 "--browser=release",
1546 "--passthrough",
1547 "-v",
1548 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1549 "--gpu-vendor-id",
1550 "8086",
1551 "--gpu-device-id",
1552 "5912"
1553 ],
1554 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171555 "merge": {
1556 "args": [],
1557 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1558 },
Kenneth Russell384a1732019-03-16 02:36:021559 "name": "foo_tests",
1560 "should_retry_with_patch": false,
1561 "swarming": {
1562 "can_use_on_swarming_builders": true,
1563 "dimension_sets": [
1564 {
Brian Sheedy0e26c4e02020-05-28 22:09:091565 "gpu": "8086:5912-24.20.100.6286"
Kenneth Russell384a1732019-03-16 02:36:021566 }
1567 ],
1568 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191569 },
Chan Li17d969f92020-07-10 00:50:031570 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021571 }
1572 ]
1573 }
1574}
1575"""
1576
Brian Sheedyf9387db7b2019-08-05 19:26:101577INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT = """\
1578{
1579 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1580 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1581 "Fake Tester": {
1582 "isolated_scripts": [
1583 {
1584 "args": [
1585 "foo",
1586 "--show-stdout",
1587 "--browser=release",
1588 "--passthrough",
1589 "-v",
1590 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1591 "--gpu-vendor-id",
1592 "8086",
1593 "--gpu-device-id",
1594 "3e92"
1595 ],
1596 "isolate_name": "telemetry_gpu_integration_test",
1597 "merge": {
1598 "args": [],
1599 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1600 },
1601 "name": "foo_tests",
1602 "should_retry_with_patch": false,
1603 "swarming": {
1604 "can_use_on_swarming_builders": true,
1605 "dimension_sets": [
1606 {
Brian Sheedy0e26c4e02020-05-28 22:09:091607 "gpu": "8086:3e92-24.20.100.6286"
Brian Sheedyf9387db7b2019-08-05 19:26:101608 }
1609 ],
1610 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191611 },
Chan Li17d969f92020-07-10 00:50:031612 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Brian Sheedyf9387db7b2019-08-05 19:26:101613 }
1614 ]
1615 }
1616}
1617"""
1618
Kenneth Russelleb60cbd22017-12-05 07:54:281619ANDROID_WATERFALL_OUTPUT = """\
1620{
1621 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1622 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1623 "Android Builder": {
1624 "additional_compile_targets": [
1625 "bar_test"
1626 ]
1627 },
1628 "Fake Android K Tester": {
1629 "additional_compile_targets": [
1630 "bar_test"
1631 ],
1632 "gtest_tests": [
1633 {
John Budorick826d5ed2017-12-28 19:27:321634 "args": [
Kenneth Russell5612d64a2018-06-02 21:12:301635 "--gs-results-bucket=chromium-result-details",
1636 "--recover-devices"
John Budorick826d5ed2017-12-28 19:27:321637 ],
Stephen Martinisbc7b7772019-05-01 22:01:431638 "merge": {
1639 "args": [],
1640 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1641 },
Kenneth Russelleb60cbd22017-12-05 07:54:281642 "swarming": {
1643 "can_use_on_swarming_builders": true,
1644 "cipd_packages": [
1645 {
1646 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1647 "location": "bin",
1648 "revision": \
1649"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1650 }
1651 ],
1652 "dimension_sets": [
1653 {
1654 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:281655 "device_os_type": "userdebug",
Kenneth Russelleb60cbd22017-12-05 07:54:281656 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221657 "integrity": "high",
1658 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281659 }
1660 ],
1661 "expiration": 120,
1662 "output_links": [
1663 {
1664 "link": [
1665 "https://luci-logdog.appspot.com/v/?s",
1666 "=android%2Fswarming%2Flogcats%2F",
1667 "${TASK_ID}%2F%2B%2Funified_logcats"
1668 ],
1669 "name": "shard #${SHARD_INDEX} logcats"
1670 }
1671 ]
1672 },
1673 "test": "foo_test"
1674 }
1675 ]
1676 },
1677 "Fake Android L Tester": {
1678 "gtest_tests": [
1679 {
Benjamin Pastene766d48f52017-12-18 21:47:421680 "args": [
John Budorick826d5ed2017-12-28 19:27:321681 "--gs-results-bucket=chromium-result-details",
Benjamin Pastene766d48f52017-12-18 21:47:421682 "--recover-devices"
1683 ],
Stephen Martinisbc7b7772019-05-01 22:01:431684 "merge": {
1685 "args": [],
1686 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1687 },
Kenneth Russelleb60cbd22017-12-05 07:54:281688 "swarming": {
1689 "can_use_on_swarming_builders": true,
1690 "cipd_packages": [
1691 {
1692 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1693 "location": "bin",
1694 "revision": \
1695"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1696 }
1697 ],
1698 "dimension_sets": [
1699 {
Ben Pastenee012aea42019-05-14 22:32:281700 "device_os": "LMY41U",
1701 "device_os_type": "user",
Kenneth Russelleb60cbd22017-12-05 07:54:281702 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221703 "integrity": "high",
1704 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281705 }
1706 ],
1707 "expiration": 120
1708 },
1709 "test": "foo_test"
1710 }
1711 ]
1712 },
1713 "Fake Android M Tester": {
1714 "gtest_tests": [
1715 {
Stephen Martinisbc7b7772019-05-01 22:01:431716 "merge": {
1717 "args": [],
1718 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1719 },
Kenneth Russelleb60cbd22017-12-05 07:54:281720 "swarming": {
1721 "can_use_on_swarming_builders": false
1722 },
1723 "test": "foo_test"
1724 }
1725 ]
1726 }
1727}
1728"""
1729
Ben Pastenea9e583b2019-01-16 02:57:261730CHROMEOS_TRIGGER_SCRIPT_OUTPUT = """\
1731{
1732 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1733 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1734 "Fake Tester": {
1735 "gtest_tests": [
1736 {
Stephen Martinisbc7b7772019-05-01 22:01:431737 "merge": {
1738 "args": [],
1739 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1740 },
Ben Pastenea9e583b2019-01-16 02:57:261741 "swarming": {
1742 "can_use_on_swarming_builders": true,
1743 "dimension_sets": [
1744 {
1745 "device_type": "foo_device",
1746 "integrity": "high"
1747 }
1748 ],
1749 "expiration": 120
1750 },
1751 "test": "foo_test",
1752 "trigger_script": {
1753 "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
1754 }
1755 }
1756 ]
1757 }
1758}
1759"""
1760
Stephen Martinis2a0667022018-09-25 22:31:141761GPU_DIMENSIONS_WATERFALL_OUTPUT = """\
1762{
1763 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1764 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1765 "Fake Tester": {
1766 "isolated_scripts": [
1767 {
1768 "args": [
1769 "foo_test",
1770 "--show-stdout",
1771 "--browser=release",
1772 "--passthrough",
1773 "-v",
1774 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1775 ],
1776 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171777 "merge": {
1778 "args": [],
1779 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1780 },
Stephen Martinis2a0667022018-09-25 22:31:141781 "name": "foo_test",
Kenneth Russell44910c32018-12-03 23:35:111782 "should_retry_with_patch": false,
Stephen Martinis2a0667022018-09-25 22:31:141783 "swarming": {
1784 "can_use_on_swarming_builders": true,
1785 "dimension_sets": [
1786 {
1787 "iama": "mixin",
1788 "integrity": "high"
1789 }
1790 ],
1791 "expiration": 120,
1792 "idempotent": false,
1793 "value": "test"
Chan Liab7d8dd82020-04-24 23:42:191794 },
Chan Li17d969f92020-07-10 00:50:031795 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Stephen Martinis2a0667022018-09-25 22:31:141796 }
1797 ]
1798 }
1799}
1800"""
1801
Kenneth Russell78fd8702018-05-17 01:15:521802LUCI_MILO_CFG = """\
1803consoles {
1804 builders {
1805 name: "buildbucket/luci.chromium.ci/Fake Tester"
1806 }
1807}
1808"""
1809
Stephen Martinis54d64ad2018-09-21 22:16:201810LUCI_MILO_CFG_WATERFALL_SORTING = """\
1811consoles {
1812 builders {
1813 name: "buildbucket/luci.chromium.ci/Fake Tester"
1814 name: "buildbucket/luci.chromium.ci/Really Fake Tester"
1815 }
1816}
1817"""
1818
Stephen Martinis54d64ad2018-09-21 22:16:201819TEST_SUITE_SORTING_WATERFALL = """
1820[
1821 {
Greg Gutermanf60eb052020-03-12 17:40:011822 'project': 'chromium',
1823 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201824 'name': 'chromium.test',
1825 'machines': {
1826 'Fake Tester': {
1827 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561828 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201829 'scripts': 'suite_b',
1830 },
1831 },
1832 },
1833 },
1834]
1835"""
1836
1837TEST_SUITE_SORTED_WATERFALL = """
1838[
1839 {
Greg Gutermanf60eb052020-03-12 17:40:011840 'project': 'chromium',
1841 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201842 'name': 'chromium.test',
1843 'machines': {
1844 'Fake Tester': {
1845 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561846 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201847 'scripts': 'suite_b',
1848 },
1849 },
1850 'Really Fake Tester': {
1851 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561852 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201853 'scripts': 'suite_b',
1854 },
1855 },
1856 },
1857 },
1858 {
Greg Gutermanf60eb052020-03-12 17:40:011859 'project': 'chromium',
1860 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201861 'name': 'chromium.zz.test',
1862 'machines': {
1863 'Fake Tester': {
1864 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561865 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201866 'scripts': 'suite_b',
1867 },
1868 },
1869 'Really Fake Tester': {
1870 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561871 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201872 'scripts': 'suite_b',
1873 },
1874 },
1875 },
1876 },
1877]
1878"""
1879
1880TEST_SUITE_UNSORTED_WATERFALL_1 = """
1881[
1882 {
Greg Gutermanf60eb052020-03-12 17:40:011883 'project': 'chromium',
1884 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201885 'name': 'chromium.zz.test',
1886 'machines': {
1887 'Fake Tester': {
1888 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561889 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201890 'scripts': 'suite_b',
1891 },
1892 },
1893 'Really Fake Tester': {
1894 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561895 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201896 'scripts': 'suite_b',
1897 },
1898 },
1899 },
1900 },
1901 {
Greg Gutermanf60eb052020-03-12 17:40:011902 'project': 'chromium',
1903 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201904 'name': 'chromium.test',
1905 'machines': {
1906 'Fake Tester': {
1907 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561908 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201909 'scripts': 'suite_b',
1910 },
1911 },
1912 'Really Fake Tester': {
1913 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561914 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201915 'scripts': 'suite_b',
1916 },
1917 },
1918 },
1919 },
1920]
1921"""
1922
1923TEST_SUITE_UNSORTED_WATERFALL_2 = """
1924[
1925 {
Greg Gutermanf60eb052020-03-12 17:40:011926 'project': 'chromium',
1927 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201928 'name': 'chromium.test',
1929 'machines': {
1930 'Really Fake Tester': {
1931 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561932 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201933 'scripts': 'suite_b',
1934 },
1935 },
1936 'Fake Tester': {
1937 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561938 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201939 'scripts': 'suite_b',
1940 },
1941 },
1942 },
1943 },
1944 {
Greg Gutermanf60eb052020-03-12 17:40:011945 'project': 'chromium',
1946 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:201947 'name': 'chromium.zz.test',
1948 'machines': {
1949 'Fake Tester': {
1950 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561951 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201952 'scripts': 'suite_b',
1953 },
1954 },
1955 'Really Fake Tester': {
1956 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:561957 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:201958 'scripts': 'suite_b',
1959 },
1960 },
1961 },
1962 },
1963]
1964"""
1965
1966# Note that the suites in basic_suites would be sorted after the suites in
1967# compound_suites. This is valid though, because each set of suites is sorted
1968# separately.
Dirk Pranke0e879b22020-07-16 23:53:561969# suite_c is a 'gtest_tests' test
1970# suite_d is a 'scripts' test
Stephen Martinis54d64ad2018-09-21 22:16:201971TEST_SUITE_SORTED = """\
1972{
1973 'basic_suites': {
1974 'suite_c': {
1975 'suite_c': {},
1976 },
1977 'suite_d': {
1978 'script': {
1979 'script': 'suite_d.py',
1980 }
1981 },
1982 },
1983 'compound_suites': {
1984 'suite_a': [
1985 'suite_c',
1986 ],
1987 'suite_b': [
1988 'suite_d',
1989 ],
1990 },
1991}
1992"""
1993
1994TEST_SUITE_UNSORTED_1 = """\
1995{
1996 'basic_suites': {
1997 'suite_d': {
1998 'a': 'b',
1999 },
2000 'suite_c': {
2001 'a': 'b',
2002 },
2003 },
2004 'compound_suites': {
2005 'suite_a': [
2006 'suite_c',
2007 ],
2008 'suite_b': [
2009 'suite_d',
2010 ],
2011 },
2012}
2013"""
2014
2015TEST_SUITE_UNSORTED_2 = """\
2016{
2017 'basic_suites': {
2018 'suite_c': {
2019 'a': 'b',
2020 },
2021 'suite_d': {
2022 'a': 'b',
2023 },
2024 },
2025 'compound_suites': {
2026 'suite_b': [
2027 'suite_c',
2028 ],
2029 'suite_a': [
2030 'suite_d',
2031 ],
2032 },
2033}
2034"""
2035TEST_SUITE_UNSORTED_3 = """\
2036{
2037 'basic_suites': {
2038 'suite_d': {
2039 'a': 'b',
2040 },
2041 'suite_c': {
2042 'a': 'b',
2043 },
2044 },
2045 'compound_suites': {
2046 'suite_b': [
2047 'suite_c',
2048 ],
2049 'suite_a': [
2050 'suite_d',
2051 ],
2052 },
2053}
2054"""
2055
2056
2057TEST_SUITES_SYNTAX_ERROR = """\
2058{
2059 'basic_suites': {
2060 3: {
2061 'suite_c': {},
2062 },
2063 },
2064 'compound_suites': {},
2065}
2066"""
2067
Nodir Turakulovfce34292019-12-18 17:05:412068GN_ISOLATE_MAP="""\
2069{
2070 'foo_test': {
2071 'label': '//chrome/test:foo_test',
2072 'type': 'windowed_test_launcher',
2073 }
2074}
2075"""
2076
Chan Liab7d8dd82020-04-24 23:42:192077GPU_TELEMETRY_GN_ISOLATE_MAP="""\
2078{
2079 'telemetry_gpu_integration_test': {
2080 'label': '//chrome/test:telemetry_gpu_integration_test',
2081 'type': 'script',
2082 }
2083}
2084"""
Corentin Wallez55b8e772020-04-24 17:39:282085GN_ISOLATE_MAP_KEY_LABEL_MISMATCH="""\
2086{
2087 'foo_test': {
2088 'label': '//chrome/test:foo_test_tmp',
2089 'type': 'windowed_test_launcher',
2090 }
2091}
2092"""
2093
2094GN_ISOLATE_MAP_USING_IMPLICIT_NAME="""\
2095{
2096 'foo_test': {
2097 'label': '//chrome/foo_test',
2098 'type': 'windowed_test_launcher',
2099 }
2100}
2101"""
2102
Greg Gutermanf60eb052020-03-12 17:40:012103NO_BUCKET_WATERFALL = """\
2104[
2105 {
2106 'project': 'chrome',
2107 'name': 'chromium.test',
2108 'machines': {
2109 'Fake Tester': {
2110 'swarming': {
2111 'dimension_sets': [
2112 {
2113 'kvm': '1',
2114 },
2115 ],
2116 },
2117 'test_suites': {
2118 'gtest_tests': 'foo_tests',
2119 },
2120 },
2121 },
2122 },
2123]
2124"""
2125
2126NO_PROJECT_WATERFALL = """\
2127[
2128 {
2129 'bucket': 'try',
2130 'name': 'chromium.test',
2131 'machines': {
2132 'Fake Tester': {
2133 'swarming': {
2134 'dimension_sets': [
2135 {
2136 'kvm': '1',
2137 },
2138 ],
2139 },
2140 'test_suites': {
2141 'gtest_tests': 'foo_tests',
2142 },
2143 },
2144 },
2145 },
2146]
2147"""
2148
2149CHROME_MISSING_WATERFALL = """\
2150[
2151 {
2152 'bucket': 'try',
2153 'project': 'chromium',
2154 'name': 'chromium.test',
2155 'machines': {
2156 'Fake Tester': {
2157 'swarming': {
2158 'dimension_sets': [
2159 {
2160 'kvm': '1',
2161 },
2162 ],
2163 },
2164 'test_suites': {
2165 'gtest_tests': 'foo_tests',
2166 },
2167 },
2168 },
2169 },
2170]
2171"""
2172
2173TRY_MISSING_WATERFALL = """\
2174[
2175 {
2176 'project': 'chromium',
2177 'bucket': 'ci',
2178 'name': 'chromium.test',
2179 'machines': {
2180 'Fake Tester': {
2181 'swarming': {
2182 'dimension_sets': [
2183 {
2184 'kvm': '1',
2185 },
2186 ],
2187 },
2188 'test_suites': {
2189 'gtest_tests': 'foo_tests',
2190 },
2191 },
2192 },
2193 },
2194 {
2195 'project': 'chrome',
2196 'bucket': 'ci',
2197 'name': 'chrome.test',
2198 'machines': {
2199 'Fake Tester Official': {
2200 'swarming': {
2201 'dimension_sets': [
2202 {
2203 'kvm': '1',
2204 },
2205 ],
2206 },
2207 'test_suites': {
2208 'gtest_tests': 'foo_tests',
2209 },
2210 },
2211 },
2212 },
2213]
2214"""
2215
2216CHROME_AND_CHROMIUM_WATERFALL = """\
2217[
2218 {
2219 'project': 'chromium',
2220 'bucket': 'try',
2221 'name': 'chromium.test',
2222 'machines': {
2223 'Fake Tester': {
2224 'swarming': {
2225 'dimension_sets': [
2226 {
2227 'kvm': '1',
2228 },
2229 ],
2230 },
2231 'test_suites': {
2232 'gtest_tests': 'foo_tests',
2233 },
2234 },
2235 },
2236 },
2237 {
2238 'project': 'chrome',
2239 'bucket': 'ci',
2240 'name': 'chrome.test',
2241 'machines': {
2242 'Fake Tester Official': {
2243 'swarming': {
2244 'dimension_sets': [
2245 {
2246 'kvm': '1',
2247 },
2248 ],
2249 },
2250 'test_suites': {
2251 'gtest_tests': 'foo_tests',
2252 },
2253 },
2254 },
2255 },
2256]
2257"""
2258
2259CHROMIUM_NORMAL_OUTPUT = """\
2260{
2261 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2262 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2263 "Fake Tester": {
2264 "gtest_tests": [
2265 {
2266 "merge": {
2267 "args": [],
2268 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2269 },
2270 "swarming": {
2271 "can_use_on_swarming_builders": true,
2272 "dimension_sets": [
2273 {
2274 "integrity": "high",
2275 "kvm": "1"
2276 }
2277 ],
2278 "expiration": 120
2279 },
2280 "test": "foo_test"
2281 }
2282 ]
2283 }
2284}
2285"""
2286
2287CHROME_NORMAL_OUTPUT = """\
2288{
2289 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2290 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2291 "Fake Tester Official": {
2292 "gtest_tests": [
2293 {
2294 "merge": {
2295 "args": [],
2296 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2297 },
2298 "swarming": {
2299 "can_use_on_swarming_builders": true,
2300 "dimension_sets": [
2301 {
2302 "integrity": "high",
2303 "kvm": "1"
2304 }
2305 ],
2306 "expiration": 120
2307 },
2308 "test": "foo_test"
2309 }
2310 ]
2311 }
2312}
2313"""
2314
Garrett Beaty1afaccc2020-06-25 19:58:152315
2316class UnitTest(TestCase):
Kenneth Russelleb60cbd22017-12-05 07:54:282317 def test_base_generator(self):
2318 # Only needed for complete code coverage.
2319 self.assertRaises(NotImplementedError,
2320 generate_buildbot_json.BaseGenerator(None).generate,
2321 None, None, None, None)
2322 self.assertRaises(NotImplementedError,
2323 generate_buildbot_json.BaseGenerator(None).sort,
2324 None)
2325
2326 def test_good_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152327 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522328 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502329 fbb.check_input_file_consistency(verbose=True)
2330 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282331
2332 def test_good_composition_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152333 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2334 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502335 fbb.check_input_file_consistency(verbose=True)
2336 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282337
2338 def test_bad_composition_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152339 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2340 BAD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502341 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
Jeff Yoon8154e582019-12-03 23:30:012342 'compound_suites may not refer to.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502343 fbb.check_input_file_consistency(verbose=True)
2344 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282345
Andrew Luo0f1dee02019-09-06 16:50:472346 def test_composition_test_suites_no_conflicts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152347 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2348 CONFLICTING_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Andrew Luo0f1dee02019-09-06 16:50:472349 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2350 'Conflicting test definitions.*'):
2351 fbb.check_input_file_consistency(verbose=True)
2352 self.assertFalse(fbb.printed_lines)
2353
Stephen Martinis54d64ad2018-09-21 22:16:202354 def test_composition_test_suites_no_duplicate_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:152355 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2356 DUPLICATES_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis54d64ad2018-09-21 22:16:202357 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2358 '.*may not duplicate basic test suite.*'):
2359 fbb.check_input_file_consistency(verbose=True)
2360 self.assertFalse(fbb.printed_lines)
2361
Kenneth Russelleb60cbd22017-12-05 07:54:282362 def test_unknown_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152363 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522364 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502365 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2366 'Test suite baz_tests from machine.*'):
2367 fbb.check_input_file_consistency(verbose=True)
2368 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282369
2370 def test_unknown_test_suite_types_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152371 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_TYPE_WATERFALL,
2372 FOO_TEST_SUITE, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502373 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2374 'Unknown test suite type foo_test_type.*'):
2375 fbb.check_input_file_consistency(verbose=True)
2376 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282377
2378 def test_unrefed_test_suite_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152379 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, UNREFED_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522380 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502381 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2382 '.*unreferenced.*bar_tests.*'):
2383 fbb.check_input_file_consistency(verbose=True)
2384 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282385
2386 def test_good_waterfall_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152387 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2388 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2389 self.create_testing_buildbot_json_file('chromium.test.json',
2390 COMPOSITION_WATERFALL_OUTPUT)
2391 self.create_testing_buildbot_json_file('chromium.ci.json',
2392 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282393 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502394 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282395
2396 def test_reusing_gtest_targets(self):
Garrett Beaty1afaccc2020-06-25 19:58:152397 fbb = FakeBBGen(self.args,
2398 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282399 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412400 LUCI_MILO_CFG,
2401 gn_isolate_map=GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152402 self.create_testing_buildbot_json_file('chromium.test.json',
2403 VARIATION_GTEST_OUTPUT)
2404 self.create_testing_buildbot_json_file('chromium.ci.json',
2405 VARIATION_GTEST_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282406 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502407 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282408
Corentin Wallez55b8e772020-04-24 17:39:282409 def test_gn_isolate_map_with_label_mismatch(self):
Garrett Beaty1afaccc2020-06-25 19:58:152410 fbb = FakeBBGen(self.args,
2411 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282412 FOO_TEST_SUITE,
2413 LUCI_MILO_CFG,
2414 gn_isolate_map=GN_ISOLATE_MAP_KEY_LABEL_MISMATCH)
2415 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2416 'key name.*foo_test.*label.*'
2417 'foo_test_tmp.*'):
2418 fbb.check_input_file_consistency(verbose=True)
2419 self.assertFalse(fbb.printed_lines)
2420
2421 def test_gn_isolate_map_using_implicit_gn_name(self):
Garrett Beaty1afaccc2020-06-25 19:58:152422 fbb = FakeBBGen(self.args,
2423 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282424 FOO_TEST_SUITE,
2425 LUCI_MILO_CFG,
2426 gn_isolate_map=GN_ISOLATE_MAP_USING_IMPLICIT_NAME)
2427 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2428 'Malformed.*//chrome/foo_test.*for key.*'
2429 'foo_test.*'):
2430 fbb.check_input_file_consistency(verbose=True)
2431 self.assertFalse(fbb.printed_lines)
2432
Kenneth Russelleb60cbd22017-12-05 07:54:282433 def test_noop_exception_does_nothing(self):
Garrett Beaty1afaccc2020-06-25 19:58:152434 fbb = FakeBBGen(self.args,
2435 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282436 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412437 LUCI_MILO_CFG,
2438 exceptions=EMPTY_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152439 self.create_testing_buildbot_json_file('chromium.test.json',
2440 COMPOSITION_WATERFALL_OUTPUT)
2441 self.create_testing_buildbot_json_file('chromium.ci.json',
2442 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282443 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502444 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282445
Kenneth Russell8ceeabf2017-12-11 17:53:282446 def test_test_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152447 fbb = FakeBBGen(self.args,
2448 FOO_GTESTS_WATERFALL,
Kenneth Russell8ceeabf2017-12-11 17:53:282449 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412450 LUCI_MILO_CFG,
2451 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152452 self.create_testing_buildbot_json_file('chromium.test.json',
2453 MERGED_ARGS_OUTPUT)
2454 self.create_testing_buildbot_json_file('chromium.ci.json',
2455 MERGED_ARGS_OUTPUT)
Kenneth Russell8ceeabf2017-12-11 17:53:282456 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502457 self.assertFalse(fbb.printed_lines)
Kenneth Russell8ceeabf2017-12-11 17:53:282458
Kenneth Russell650995a2018-05-03 21:17:012459 def test_enable_features_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152460 fbb = FakeBBGen(self.args, FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL,
2461 FOO_TEST_SUITE_WITH_ENABLE_FEATURES, LUCI_MILO_CFG)
2462 self.create_testing_buildbot_json_file('chromium.test.json',
2463 MERGED_ENABLE_FEATURES_OUTPUT)
2464 self.create_testing_buildbot_json_file('chromium.ci.json',
2465 MERGED_ENABLE_FEATURES_OUTPUT)
Kenneth Russell650995a2018-05-03 21:17:012466 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502467 self.assertFalse(fbb.printed_lines)
Kenneth Russell650995a2018-05-03 21:17:012468
Kenneth Russell8a386d42018-06-02 09:48:012469 def test_linux_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152470 fbb = FakeBBGen(self.args, FOO_LINUX_GTESTS_WATERFALL,
2471 FOO_TEST_SUITE_WITH_LINUX_ARGS, LUCI_MILO_CFG)
2472 self.create_testing_buildbot_json_file('chromium.test.json',
2473 LINUX_ARGS_OUTPUT)
2474 self.create_testing_buildbot_json_file('chromium.ci.json',
2475 LINUX_ARGS_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012476 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502477 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012478
Kenneth Russelleb60cbd22017-12-05 07:54:282479 def test_test_filtering(self):
Garrett Beaty1afaccc2020-06-25 19:58:152480 fbb = FakeBBGen(self.args,
2481 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282482 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412483 LUCI_MILO_CFG,
2484 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152485 self.create_testing_buildbot_json_file(
2486 'chromium.test.json', COMPOSITION_WATERFALL_FILTERED_OUTPUT)
2487 self.create_testing_buildbot_json_file(
2488 'chromium.ci.json', COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282489 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502490 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282491
2492 def test_test_modifications(self):
Garrett Beaty1afaccc2020-06-25 19:58:152493 fbb = FakeBBGen(self.args,
2494 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282495 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412496 LUCI_MILO_CFG,
2497 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152498 self.create_testing_buildbot_json_file('chromium.test.json',
2499 MODIFIED_OUTPUT)
2500 self.create_testing_buildbot_json_file('chromium.ci.json', MODIFIED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282501 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502502 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282503
John Budorick5bc387fe2019-05-09 20:02:532504 def test_test_with_explicit_none(self):
Garrett Beaty1afaccc2020-06-25 19:58:152505 fbb = FakeBBGen(self.args,
2506 FOO_GTESTS_WATERFALL,
John Budorick5bc387fe2019-05-09 20:02:532507 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412508 LUCI_MILO_CFG,
2509 exceptions=FOO_TEST_EXPLICIT_NONE_EXCEPTIONS,
2510 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:152511 self.create_testing_buildbot_json_file('chromium.test.json',
2512 EXPLICIT_NONE_OUTPUT)
2513 self.create_testing_buildbot_json_file('chromium.ci.json',
2514 EXPLICIT_NONE_OUTPUT)
John Budorick5bc387fe2019-05-09 20:02:532515 fbb.check_output_file_consistency(verbose=True)
2516 self.assertFalse(fbb.printed_lines)
2517
Kenneth Russelleb60cbd22017-12-05 07:54:282518 def test_isolated_script_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152519 fbb = FakeBBGen(self.args,
2520 FOO_ISOLATED_SCRIPTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282521 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412522 LUCI_MILO_CFG,
2523 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152524 self.create_testing_buildbot_json_file('chromium.test.json',
2525 ISOLATED_SCRIPT_OUTPUT)
2526 self.create_testing_buildbot_json_file('chromium.ci.json',
2527 ISOLATED_SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282528 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502529 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282530
Dirk Pranke0e879b22020-07-16 23:53:562531 def test_isolated_script_tests(self):
2532 fbb = FakeBBGen(self.args,
2533 FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID,
2534 GOOD_COMPOSITION_TEST_SUITES,
2535 LUCI_MILO_CFG,
2536 exceptions=NO_BAR_TEST_EXCEPTIONS)
2537 self.create_testing_buildbot_json_file('chromium.test.json',
2538 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2539 self.create_testing_buildbot_json_file('chromium.ci.json',
2540 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2541 fbb.check_output_file_consistency(verbose=True)
2542 self.assertFalse(fbb.printed_lines)
2543
Dirk Pranke1b767092017-12-07 04:44:232544 def test_script_with_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152545 fbb = FakeBBGen(self.args,
2546 FOO_SCRIPT_WATERFALL,
Dirk Pranke1b767092017-12-07 04:44:232547 SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412548 LUCI_MILO_CFG,
2549 exceptions=SCRIPT_WITH_ARGS_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152550 self.create_testing_buildbot_json_file('chromium.test.json',
2551 SCRIPT_WITH_ARGS_OUTPUT)
2552 self.create_testing_buildbot_json_file('chromium.ci.json',
2553 SCRIPT_WITH_ARGS_OUTPUT)
Dirk Pranke1b767092017-12-07 04:44:232554 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502555 self.assertFalse(fbb.printed_lines)
Dirk Pranke1b767092017-12-07 04:44:232556
2557 def test_script(self):
Garrett Beaty1afaccc2020-06-25 19:58:152558 fbb = FakeBBGen(self.args,
2559 FOO_SCRIPT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282560 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412561 LUCI_MILO_CFG,
2562 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152563 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
2564 self.create_testing_buildbot_json_file('chromium.ci.json', SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282565 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502566 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282567
Brian Sheedy158cd0f2019-04-26 01:12:442568 def test_script_machine_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152569 fbb = FakeBBGen(self.args,
2570 FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442571 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412572 LUCI_MILO_CFG,
2573 exceptions=NO_BAR_TEST_EXCEPTIONS)
Brian Sheedy158cd0f2019-04-26 01:12:442574 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2575 'Attempted to generate a script test on tester.*'):
2576 fbb.check_output_file_consistency(verbose=True)
2577
2578 def test_script_waterfall_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152579 fbb = FakeBBGen(self.args,
2580 FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442581 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412582 LUCI_MILO_CFG,
2583 exceptions=NO_BAR_TEST_EXCEPTIONS)
Brian Sheedy158cd0f2019-04-26 01:12:442584 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2585 'Attempted to generate a script test on tester.*'):
2586 fbb.check_output_file_consistency(verbose=True)
2587
Kenneth Russelleb60cbd22017-12-05 07:54:282588 def test_junit_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152589 fbb = FakeBBGen(self.args,
2590 FOO_JUNIT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282591 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412592 LUCI_MILO_CFG,
2593 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152594 self.create_testing_buildbot_json_file('chromium.test.json', JUNIT_OUTPUT)
2595 self.create_testing_buildbot_json_file('chromium.ci.json', JUNIT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282596 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502597 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282598
Kenneth Russell8a386d42018-06-02 09:48:012599 def test_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152600 fbb = FakeBBGen(self.args,
2601 FOO_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell8a386d42018-06-02 09:48:012602 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
Nodir Turakulovfce34292019-12-18 17:05:412603 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192604 exceptions=NO_BAR_TEST_EXCEPTIONS,
2605 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152606 self.create_testing_buildbot_json_file('chromium.test.json',
2607 GPU_TELEMETRY_TEST_OUTPUT)
2608 self.create_testing_buildbot_json_file('chromium.ci.json',
2609 GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012610 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502611 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012612
Kenneth Russell384a1732019-03-16 02:36:022613 def test_nvidia_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152614 fbb = FakeBBGen(self.args,
2615 NVIDIA_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022616 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412617 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192618 exceptions=NO_BAR_TEST_EXCEPTIONS,
2619 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152620 self.create_testing_buildbot_json_file('chromium.test.json',
2621 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
2622 self.create_testing_buildbot_json_file('chromium.ci.json',
2623 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022624 fbb.check_output_file_consistency(verbose=True)
2625 self.assertFalse(fbb.printed_lines)
2626
2627 def test_intel_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152628 fbb = FakeBBGen(self.args,
2629 INTEL_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022630 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412631 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192632 exceptions=NO_BAR_TEST_EXCEPTIONS,
2633 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152634 self.create_testing_buildbot_json_file('chromium.test.json',
2635 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
2636 self.create_testing_buildbot_json_file('chromium.ci.json',
2637 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022638 fbb.check_output_file_consistency(verbose=True)
2639 self.assertFalse(fbb.printed_lines)
2640
Brian Sheedyf9387db7b2019-08-05 19:26:102641 def test_intel_uhd_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152642 fbb = FakeBBGen(self.args,
2643 INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL,
Brian Sheedyf9387db7b2019-08-05 19:26:102644 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412645 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192646 exceptions=NO_BAR_TEST_EXCEPTIONS,
2647 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152648 self.create_testing_buildbot_json_file('chromium.test.json',
2649 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
2650 self.create_testing_buildbot_json_file('chromium.ci.json',
2651 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
Brian Sheedyf9387db7b2019-08-05 19:26:102652 fbb.check_output_file_consistency(verbose=True)
2653 self.assertFalse(fbb.printed_lines)
2654
Kenneth Russelleb60cbd22017-12-05 07:54:282655 def test_ungenerated_output_files_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152656 fbb = FakeBBGen(self.args,
2657 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282658 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412659 LUCI_MILO_CFG,
2660 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152661 self.create_testing_buildbot_json_file(
2662 'chromium.test.json', '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
2663 self.create_testing_buildbot_json_file(
2664 'chromium.ci.json', '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Stephen Martinis7eb8b612018-09-21 00:17:502665 with self.assertRaises(generate_buildbot_json.BBGenErr):
Kenneth Russell73c3bd8b2018-10-19 22:30:192666 fbb.check_output_file_consistency(verbose=True, dump=False)
Stephen Martinis7eb8b612018-09-21 00:17:502667 joined_lines = ' '.join(fbb.printed_lines)
2668 self.assertRegexpMatches(
Greg Gutermanf60eb052020-03-12 17:40:012669 joined_lines, 'File chromium.ci.json did not have the following'
Stephen Martinis7eb8b612018-09-21 00:17:502670 ' expected contents:.*')
2671 self.assertRegexpMatches(joined_lines, '.*--- expected.*')
2672 self.assertRegexpMatches(joined_lines, '.*\+\+\+ current.*')
2673 fbb.printed_lines = []
2674 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282675
2676 def test_android_output_options(self):
Garrett Beaty1afaccc2020-06-25 19:58:152677 fbb = FakeBBGen(self.args, ANDROID_WATERFALL, FOO_TEST_SUITE, LUCI_MILO_CFG)
2678 self.create_testing_buildbot_json_file('chromium.test.json',
2679 ANDROID_WATERFALL_OUTPUT)
2680 self.create_testing_buildbot_json_file('chromium.ci.json',
2681 ANDROID_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282682 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502683 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282684
2685 def test_nonexistent_removal_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152686 fbb = FakeBBGen(self.args,
2687 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282688 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412689 LUCI_MILO_CFG,
2690 exceptions=NONEXISTENT_REMOVAL)
Stephen Martinis7eb8b612018-09-21 00:17:502691 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2692 'The following nonexistent machines.*'):
2693 fbb.check_input_file_consistency(verbose=True)
2694 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282695
2696 def test_nonexistent_modification_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152697 fbb = FakeBBGen(self.args,
2698 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282699 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412700 LUCI_MILO_CFG,
2701 exceptions=NONEXISTENT_MODIFICATION)
Stephen Martinis7eb8b612018-09-21 00:17:502702 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2703 'The following nonexistent machines.*'):
2704 fbb.check_input_file_consistency(verbose=True)
2705 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282706
John Budorickedfe7f872018-01-23 15:27:222707 def test_waterfall_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152708 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL,
2709 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2710 self.create_testing_buildbot_json_file(
2711 'chromium.test.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
2712 self.create_testing_buildbot_json_file(
2713 'chromium.ci.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
John Budorickedfe7f872018-01-23 15:27:222714 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502715 self.assertFalse(fbb.printed_lines)
John Budorickedfe7f872018-01-23 15:27:222716
Ben Pastenea9e583b2019-01-16 02:57:262717 def test_chromeos_trigger_script_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152718 fbb = FakeBBGen(self.args, FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL,
2719 FOO_TEST_SUITE, LUCI_MILO_CFG)
2720 self.create_testing_buildbot_json_file('chromium.test.json',
2721 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
2722 self.create_testing_buildbot_json_file('chromium.ci.json',
2723 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
Ben Pastenea9e583b2019-01-16 02:57:262724 fbb.check_output_file_consistency(verbose=True)
2725 self.assertFalse(fbb.printed_lines)
2726
Zhiling Huangbe008172018-03-08 19:13:112727 def test_relative_pyl_file_dir(self):
Garrett Beaty1afaccc2020-06-25 19:58:152728 self.override_args(pyl_files_dir='relative/path/', waterfall_filters=[])
2729 fbb = FakeBBGen(self.args,
2730 FOO_GTESTS_WATERFALL,
Zhiling Huangbe008172018-03-08 19:13:112731 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412732 LUCI_MILO_CFG,
2733 gn_isolate_map=GN_ISOLATE_MAP)
Stephen Martinis7eb8b612018-09-21 00:17:502734 fbb.check_input_file_consistency(verbose=True)
Garrett Beaty1afaccc2020-06-25 19:58:152735 self.create_testing_buildbot_json_file('relative/path/chromium.test.json',
2736 VARIATION_GTEST_OUTPUT)
2737 self.create_testing_buildbot_json_file('relative/path/chromium.ci.json',
2738 VARIATION_GTEST_OUTPUT)
Zhiling Huangbe008172018-03-08 19:13:112739 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502740 self.assertFalse(fbb.printed_lines)
Zhiling Huangbe008172018-03-08 19:13:112741
Nico Weberd18b8962018-05-16 19:39:382742 def test_nonexistent_bot_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152743 fbb = FakeBBGen(self.args, UNKNOWN_BOT_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522744 LUCI_MILO_CFG)
Nico Weberd18b8962018-05-16 19:39:382745 with self.assertRaises(generate_buildbot_json.BBGenErr):
Stephen Martinis7eb8b612018-09-21 00:17:502746 fbb.check_input_file_consistency(verbose=True)
2747 self.assertFalse(fbb.printed_lines)
Nico Weberd18b8962018-05-16 19:39:382748
Garrett Beaty4f3e9212020-06-25 20:21:492749 def test_nonexistent_bot_raises_when_no_project_pyl_exists(self):
Garrett Beaty1afaccc2020-06-25 19:58:152750 fbb = FakeBBGen(self.args,
2751 UNKNOWN_BOT_GTESTS_WATERFALL,
Garrett Beaty2a02de3c2020-05-15 13:57:352752 FOO_TEST_SUITE,
2753 LUCI_MILO_CFG,
Garrett Beaty4f3e9212020-06-25 20:21:492754 project_pyl=None)
2755 with self.assertRaises(generate_buildbot_json.BBGenErr):
2756 fbb.check_input_file_consistency(verbose=True)
2757 self.assertFalse(fbb.printed_lines)
2758
2759 def test_nonexistent_bot_does_not_raise_when_validation_disabled(self):
2760 fbb = FakeBBGen(
2761 self.args,
2762 UNKNOWN_BOT_GTESTS_WATERFALL,
2763 FOO_TEST_SUITE,
2764 LUCI_MILO_CFG,
2765 project_pyl='{"validate_source_side_specs_have_builder": False}')
Garrett Beaty2a02de3c2020-05-15 13:57:352766 fbb.check_input_file_consistency(verbose=True)
2767
Stephen Martinis54d64ad2018-09-21 22:16:202768 def test_waterfalls_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152769 fbb = FakeBBGen(self.args, TEST_SUITE_SORTED_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:202770 LUCI_MILO_CFG_WATERFALL_SORTING)
2771 fbb.check_input_file_consistency(verbose=True)
2772 self.assertFalse(fbb.printed_lines)
2773
Garrett Beaty1afaccc2020-06-25 19:58:152774 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_1,
2775 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Stephen Martinis54d64ad2018-09-21 22:16:202776 with self.assertRaisesRegexp(
2777 generate_buildbot_json.BBGenErr,
2778 'The following files have invalid keys: waterfalls.pyl'):
2779 fbb.check_input_file_consistency(verbose=True)
2780 joined_lines = '\n'.join(fbb.printed_lines)
2781 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532782 joined_lines, '.*\+ chromium\..*test.*')
Stephen Martinis54d64ad2018-09-21 22:16:202783 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532784 joined_lines, '.*\- chromium\..*test.*')
Stephen Martinis54d64ad2018-09-21 22:16:202785 fbb.printed_lines = []
2786 self.assertFalse(fbb.printed_lines)
2787
Garrett Beaty1afaccc2020-06-25 19:58:152788 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_2,
2789 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Stephen Martinis54d64ad2018-09-21 22:16:202790 with self.assertRaisesRegexp(
2791 generate_buildbot_json.BBGenErr,
2792 'The following files have invalid keys: waterfalls.pyl'):
2793 fbb.check_input_file_consistency(verbose=True)
2794 joined_lines = ' '.join(fbb.printed_lines)
2795 self.assertRegexpMatches(
2796 joined_lines, '.*\+.*Fake Tester.*')
2797 self.assertRegexpMatches(
2798 joined_lines, '.*\-.*Fake Tester.*')
2799 fbb.printed_lines = []
2800 self.assertFalse(fbb.printed_lines)
2801
2802 def test_test_suite_exceptions_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152803 fbb = FakeBBGen(self.args,
2804 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:202805 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:412806 LUCI_MILO_CFG,
2807 exceptions=EXCEPTIONS_SORTED)
Stephen Martinis7eb8b612018-09-21 00:17:502808 fbb.check_input_file_consistency(verbose=True)
2809 self.assertFalse(fbb.printed_lines)
Stephen Martinisf83893722018-09-19 00:02:182810
Garrett Beaty1afaccc2020-06-25 19:58:152811 fbb = FakeBBGen(self.args,
2812 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:202813 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:412814 LUCI_MILO_CFG,
Stephen Martinis5bef0fc2020-01-06 22:47:532815 exceptions=EXCEPTIONS_DUPS_REMOVE_FROM)
2816 with self.assertRaises(generate_buildbot_json.BBGenErr):
2817 fbb.check_input_file_consistency(verbose=True)
2818 joined_lines = ' '.join(fbb.printed_lines)
2819 self.assertRegexpMatches(
2820 joined_lines, '.*\- Fake Tester.*')
2821 fbb.printed_lines = []
2822 self.assertFalse(fbb.printed_lines)
2823
2824 def test_test_suite_exceptions_no_dups_remove_from(self):
Garrett Beaty1afaccc2020-06-25 19:58:152825 fbb = FakeBBGen(self.args,
2826 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532827 TEST_SUITE_SORTED,
2828 LUCI_MILO_CFG,
2829 exceptions=EXCEPTIONS_SORTED)
2830 fbb.check_input_file_consistency(verbose=True)
2831 self.assertFalse(fbb.printed_lines)
2832
Garrett Beaty1afaccc2020-06-25 19:58:152833 fbb = FakeBBGen(self.args,
2834 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532835 TEST_SUITE_SORTED,
2836 LUCI_MILO_CFG,
2837 exceptions=EXCEPTIONS_PER_TEST_UNSORTED)
Stephen Martinis5bef0fc2020-01-06 22:47:532838 with self.assertRaises(generate_buildbot_json.BBGenErr):
2839 fbb.check_input_file_consistency(verbose=True)
2840 joined_lines = ' '.join(fbb.printed_lines)
2841 self.assertRegexpMatches(
2842 joined_lines, '.*\+ Fake Tester.*')
2843 self.assertRegexpMatches(
2844 joined_lines, '.*\- Fake Tester.*')
2845 fbb.printed_lines = []
2846 self.assertFalse(fbb.printed_lines)
2847
2848 def test_test_suite_exceptions_per_test_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152849 fbb = FakeBBGen(self.args,
2850 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532851 TEST_SUITE_SORTED,
2852 LUCI_MILO_CFG,
2853 exceptions=EXCEPTIONS_SORTED)
2854 fbb.check_input_file_consistency(verbose=True)
2855 self.assertFalse(fbb.printed_lines)
2856
Garrett Beaty1afaccc2020-06-25 19:58:152857 fbb = FakeBBGen(self.args,
2858 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532859 TEST_SUITE_SORTED,
2860 LUCI_MILO_CFG,
Nodir Turakulovfce34292019-12-18 17:05:412861 exceptions=EXCEPTIONS_UNSORTED)
Stephen Martinis54d64ad2018-09-21 22:16:202862 with self.assertRaises(generate_buildbot_json.BBGenErr):
2863 fbb.check_input_file_consistency(verbose=True)
2864 joined_lines = ' '.join(fbb.printed_lines)
2865 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532866 joined_lines, '.*\+ suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202867 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532868 joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202869 fbb.printed_lines = []
2870 self.assertFalse(fbb.printed_lines)
2871
2872 def test_test_suites_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152873 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:202874 LUCI_MILO_CFG)
2875 fbb.check_input_file_consistency(verbose=True)
2876 self.assertFalse(fbb.printed_lines)
2877
2878 for unsorted in (
2879 TEST_SUITE_UNSORTED_1,
2880 TEST_SUITE_UNSORTED_2,
2881 TEST_SUITE_UNSORTED_3,
2882 ):
Garrett Beaty1afaccc2020-06-25 19:58:152883 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, unsorted,
Stephen Martinis54d64ad2018-09-21 22:16:202884 LUCI_MILO_CFG)
2885 with self.assertRaises(generate_buildbot_json.BBGenErr):
2886 fbb.check_input_file_consistency(verbose=True)
2887 joined_lines = ' '.join(fbb.printed_lines)
2888 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532889 joined_lines, '.*\+ suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202890 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:532891 joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202892 fbb.printed_lines = []
2893 self.assertFalse(fbb.printed_lines)
2894
Greg Gutermanf60eb052020-03-12 17:40:012895 def test_bucket_check_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152896 fbb = FakeBBGen(self.args, CHROME_AND_CHROMIUM_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012897 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152898 self.create_testing_buildbot_json_file('chromium.try.json',
2899 CHROMIUM_NORMAL_OUTPUT)
2900 self.create_testing_buildbot_json_file('chrome.ci.json',
2901 CHROME_NORMAL_OUTPUT)
2902 self.create_testing_buildbot_json_file('chromium.test.json',
2903 CHROMIUM_NORMAL_OUTPUT)
2904 self.create_testing_buildbot_json_file('chrome.test.json',
2905 CHROME_NORMAL_OUTPUT)
Greg Gutermanf60eb052020-03-12 17:40:012906 fbb.check_output_file_consistency(verbose=True)
2907 self.assertFalse(fbb.printed_lines)
2908
2909 def test_bucket_check_no_project(self):
Garrett Beaty1afaccc2020-06-25 19:58:152910 fbb = FakeBBGen(self.args, NO_PROJECT_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012911 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152912 self.create_testing_buildbot_json_file('chromium.try.json', SCRIPT_OUTPUT)
2913 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
Greg Gutermanf60eb052020-03-12 17:40:012914 with self.assertRaisesRegexp(
2915 generate_buildbot_json.BBGenErr,
2916 '.* has no project'):
2917 fbb.check_output_file_consistency(verbose=True)
2918
2919 def test_bucket_check_no_bucket(self):
Garrett Beaty1afaccc2020-06-25 19:58:152920 fbb = FakeBBGen(self.args, NO_BUCKET_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012921 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152922 self.create_testing_buildbot_json_file('chromium.try.json', SCRIPT_OUTPUT)
2923 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
Greg Gutermanf60eb052020-03-12 17:40:012924 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
2925 '.* has no bucket'):
2926 fbb.check_output_file_consistency(verbose=True)
2927
2928 def test_bucket_check_missing_chrome_project(self):
Garrett Beaty1afaccc2020-06-25 19:58:152929 fbb = FakeBBGen(self.args, CHROME_MISSING_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012930 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152931 self.create_testing_buildbot_json_file('chromium.try.json', SCRIPT_OUTPUT)
2932 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
Garrett Beaty777c2912020-05-07 00:54:332933 with dump_on_failure(fbb):
2934 with self.assertRaisesRegexp(
2935 generate_buildbot_json.BBGenErr,
2936 'The following files have not been properly autogenerated by '
2937 'generate_buildbot_json.py: chromium.try.json, chromium.test.json'):
2938 fbb.check_output_file_consistency(verbose=True, dump=False)
Greg Gutermanf60eb052020-03-12 17:40:012939
2940 def test_bucket_check_missing_try_bucket(self):
Garrett Beaty1afaccc2020-06-25 19:58:152941 fbb = FakeBBGen(self.args, TRY_MISSING_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012942 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152943 self.create_testing_buildbot_json_file('chrome.ci.json', SCRIPT_OUTPUT)
2944 self.create_testing_buildbot_json_file('chromium.ci.json', SCRIPT_OUTPUT)
2945 self.create_testing_buildbot_json_file('chrome.test.json', SCRIPT_OUTPUT)
2946 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
Garrett Beaty777c2912020-05-07 00:54:332947 with dump_on_failure(fbb):
2948 with self.assertRaisesRegexp(
2949 generate_buildbot_json.BBGenErr,
2950 'The following files have not been properly autogenerated by '
2951 'generate_buildbot_json.py: chrome.test.json, '
2952 'chromium.test.json, chrome.ci.json, chromium.ci.json'):
2953 fbb.check_output_file_consistency(verbose=True, dump=False)
Greg Gutermanf60eb052020-03-12 17:40:012954
2955 def test_bucket_check_output_missing(self):
Garrett Beaty1afaccc2020-06-25 19:58:152956 fbb = FakeBBGen(self.args, CHROME_AND_CHROMIUM_WATERFALL, FOO_TEST_SUITE,
Greg Gutermanf60eb052020-03-12 17:40:012957 LUCI_MILO_CFG)
Garrett Beaty1afaccc2020-06-25 19:58:152958 self.create_testing_buildbot_json_file('chromium.try.json', SCRIPT_OUTPUT)
2959 self.create_testing_buildbot_json_file('chromium.ci.json',
2960 CHROME_NORMAL_OUTPUT)
2961 self.create_testing_buildbot_json_file('chrome.ci.json',
2962 CHROME_NORMAL_OUTPUT)
2963 self.create_testing_buildbot_json_file('chromium.test.json',
2964 CHROMIUM_NORMAL_OUTPUT)
2965 self.create_testing_buildbot_json_file('chrome.test.json',
2966 CHROME_NORMAL_OUTPUT)
Garrett Beaty777c2912020-05-07 00:54:332967 with dump_on_failure(fbb):
2968 with self.assertRaisesRegexp(
2969 generate_buildbot_json.BBGenErr,
2970 'The following files have not been properly autogenerated by '
2971 'generate_buildbot_json.py: chromium.try.json'):
2972 fbb.check_output_file_consistency(verbose=True, dump=False)
Greg Gutermanf60eb052020-03-12 17:40:012973
Stephen Martinis11672542018-10-29 18:17:212974
2975FOO_GTESTS_WATERFALL_MIXIN_WATERFALL = """\
2976[
2977 {
2978 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:012979 'project': 'chromium',
2980 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:212981 'name': 'chromium.test',
2982 'machines': {
2983 'Fake Tester': {
2984 'swarming': {},
2985 'test_suites': {
2986 'gtest_tests': 'foo_tests',
2987 },
2988 },
2989 },
2990 },
2991]
2992"""
2993
2994FOO_GTESTS_BUILDER_MIXIN_WATERFALL = """\
2995[
2996 {
Greg Gutermanf60eb052020-03-12 17:40:012997 'project': 'chromium',
2998 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:212999 'name': 'chromium.test',
3000 'machines': {
3001 'Fake Tester': {
3002 'mixins': ['builder_mixin'],
3003 'swarming': {},
3004 'test_suites': {
3005 'gtest_tests': 'foo_tests',
3006 },
3007 },
3008 },
3009 },
3010]
3011"""
3012
Brian Sheedycae63b22020-06-10 22:52:113013FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL = """\
3014[
3015 {
3016 'project': 'chromium',
3017 'bucket': 'ci',
3018 'name': 'chromium.test',
3019 'machines': {
3020 'Fake Tester': {
3021 'mixins': [
3022 'dimension_set_mixin_1',
3023 'dimension_set_mixin_2',
3024 'duplicate_dimension_set_mixin_1',
3025 'dimension_mixin',
3026 ],
3027 'swarming': {},
3028 'test_suites': {
3029 'gtest_tests': 'foo_tests',
3030 },
3031 },
3032 },
3033 },
3034]
3035"""
3036
Brian Sheedy7658c982020-01-08 02:27:583037FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL = """\
3038[
3039 {
3040 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013041 'project': 'chromium',
3042 'bucket': 'ci',
Brian Sheedy7658c982020-01-08 02:27:583043 'name': 'chromium.test',
3044 'machines': {
3045 'Fake Tester': {
3046 'remove_mixins': ['waterfall_mixin'],
3047 'swarming': {},
3048 'test_suites': {
3049 'gtest_tests': 'foo_tests',
3050 },
3051 },
3052 },
3053 },
3054]
3055"""
3056
Stephen Martinis11672542018-10-29 18:17:213057FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL = """\
3058[
3059 {
Greg Gutermanf60eb052020-03-12 17:40:013060 'project': 'chromium',
3061 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213062 'name': 'chromium.test',
3063 'machines': {
3064 'Fake Tester': {
3065 'mixins': ['random_mixin'],
3066 'swarming': {},
3067 'test_suites': {
3068 'gtest_tests': 'foo_tests',
3069 },
3070 },
3071 },
3072 },
3073]
3074"""
3075
3076FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL = """\
3077[
3078 {
Greg Gutermanf60eb052020-03-12 17:40:013079 'project': 'chromium',
3080 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213081 'name': 'chromium.test',
3082 'machines': {
3083 'Fake Tester': {
3084 'mixins': ['dimension_mixin'],
3085 'swarming': {},
3086 'test_suites': {
3087 'gtest_tests': 'foo_tests',
3088 },
3089 },
3090 },
3091 },
3092]
3093"""
3094
3095FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL = """\
3096[
3097 {
Greg Gutermanf60eb052020-03-12 17:40:013098 'project': 'chromium',
3099 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213100 'name': 'chromium.test',
3101 'machines': {
3102 'Fake Tester': {
3103 'mixins': ['dimension_mixin'],
3104 'os_type': 'win',
3105 'browser_config': 'release',
3106 'test_suites': {
3107 'gpu_telemetry_tests': 'foo_tests',
3108 },
3109 },
3110 },
3111 },
3112]
3113"""
3114
3115# Swarming mixins must be a list, a single string is not allowed.
3116FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL = """\
3117[
3118 {
Greg Gutermanf60eb052020-03-12 17:40:013119 'project': 'chromium',
3120 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213121 'name': 'chromium.test',
3122 'machines': {
3123 'Fake Tester': {
3124 'mixins': 'dimension_mixin',
3125 'swarming': {},
3126 'test_suites': {
3127 'gtest_tests': 'foo_tests',
3128 },
3129 },
3130 },
3131 },
3132]
3133"""
3134FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL = """\
3135[
3136 {
Greg Gutermanf60eb052020-03-12 17:40:013137 'project': 'chromium',
3138 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213139 'name': 'chromium.test',
3140 'machines': {
3141 'Fake Tester': {
3142 'mixins': ['nonexistant'],
3143 'swarming': {},
3144 'test_suites': {
3145 'gtest_tests': 'foo_tests',
3146 },
3147 },
3148 },
3149 },
3150]
3151"""
3152
3153FOO_GTESTS_TEST_MIXIN_WATERFALL = """\
3154[
3155 {
Greg Gutermanf60eb052020-03-12 17:40:013156 'project': 'chromium',
3157 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213158 'name': 'chromium.test',
Greg Gutermanf60eb052020-03-12 17:40:013159 'mixins': ['waterfall_mixin'],
Stephen Martinis11672542018-10-29 18:17:213160 'machines': {
3161 'Fake Tester': {
3162 'swarming': {},
3163 'test_suites': {
3164 'gtest_tests': 'foo_tests',
3165 },
3166 },
3167 },
3168 },
3169]
3170"""
3171
3172FOO_GTESTS_SORTING_MIXINS_WATERFALL = """\
3173[
3174 {
3175 'mixins': ['a_mixin', 'b_mixin', 'c_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013176 'project': 'chromium',
3177 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213178 'name': 'chromium.test',
3179 'machines': {
3180 'Fake Tester': {
3181 'swarming': {
3182 'dimension_sets': [
3183 {
3184 'kvm': '1',
3185 },
3186 ],
3187 },
3188 'test_suites': {
3189 'gtest_tests': 'foo_tests',
3190 },
3191 },
3192 },
3193 },
3194]
3195"""
3196
3197FOO_TEST_SUITE_WITH_MIXIN = """\
3198{
3199 'basic_suites': {
3200 'foo_tests': {
3201 'foo_test': {
3202 'swarming': {
3203 'dimension_sets': [
3204 {
3205 'integrity': 'high',
3206 }
3207 ],
3208 'expiration': 120,
3209 },
3210 'mixins': ['test_mixin'],
3211 },
3212 },
3213 },
3214}
3215"""
3216
3217# These mixins are invalid; if passed to check_input_file_consistency, they will
3218# fail. These are used for output file consistency checks.
3219SWARMING_MIXINS = """\
3220{
3221 'builder_mixin': {
3222 'swarming': {
3223 'value': 'builder',
3224 },
3225 },
3226 'dimension_mixin': {
3227 'swarming': {
3228 'dimensions': {
3229 'iama': 'mixin',
3230 },
3231 },
3232 },
3233 'random_mixin': {
3234 'value': 'random',
3235 },
3236 'test_mixin': {
3237 'swarming': {
3238 'value': 'test',
3239 },
3240 },
3241 'waterfall_mixin': {
3242 'swarming': {
3243 'value': 'waterfall',
3244 },
3245 },
3246}
3247"""
3248
Wezc0e835b702018-10-30 00:38:413249SWARMING_MIXINS_APPEND = """\
3250{
3251 'builder_mixin': {
3252 '$mixin_append': {
3253 'args': [ '--mixin-argument' ],
3254 },
3255 },
3256}
3257"""
3258
3259SWARMING_MIXINS_APPEND_NOT_LIST = """\
3260{
3261 'builder_mixin': {
3262 '$mixin_append': {
3263 'args': 'I am not a list',
3264 },
3265 },
3266}
3267"""
3268
3269SWARMING_MIXINS_APPEND_TO_SWARMING = """\
3270{
3271 'builder_mixin': {
3272 '$mixin_append': {
3273 'swarming': [ 'swarming!' ],
3274 },
3275 },
3276}
3277"""
3278
Brian Sheedycae63b22020-06-10 22:52:113279SWARMING_MIXINS_DIMENSION_SETS = """\
3280{
3281 'dimension_set_mixin_1': {
3282 'swarming': {
3283 'dimension_sets': [
3284 {
3285 'value': 'ds1',
3286 },
3287 ],
3288 },
3289 },
3290 'dimension_set_mixin_2': {
3291 'swarming': {
3292 'dimension_sets': [
3293 {
3294 'value': 'ds2',
3295 },
3296 ],
3297 },
3298 },
3299 'duplicate_dimension_set_mixin_1': {
3300 'swarming': {
3301 'dimension_sets': [
3302 {
3303 'value': 'ds1',
3304 },
3305 ],
3306 },
3307 },
3308 'dimension_mixin': {
3309 'swarming': {
3310 'dimensions': {
3311 'other_value': 'dimension_mixin',
3312 },
3313 },
3314 },
3315}
3316"""
3317
Stephen Martinis11672542018-10-29 18:17:213318SWARMING_MIXINS_DUPLICATED = """\
3319{
3320 'builder_mixin': {
3321 'value': 'builder',
3322 },
3323 'builder_mixin': {
3324 'value': 'builder',
3325 },
3326}
3327"""
3328
3329SWARMING_MIXINS_UNSORTED = """\
3330{
3331 'b_mixin': {
3332 'b': 'b',
3333 },
3334 'a_mixin': {
3335 'a': 'a',
3336 },
3337 'c_mixin': {
3338 'c': 'c',
3339 },
3340}
3341"""
3342
3343SWARMING_MIXINS_SORTED = """\
3344{
3345 'a_mixin': {
3346 'a': 'a',
3347 },
3348 'b_mixin': {
3349 'b': 'b',
3350 },
3351 'c_mixin': {
3352 'c': 'c',
3353 },
3354}
3355"""
3356
Brian Sheedycae63b22020-06-10 22:52:113357WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT = """\
3358{
3359 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3360 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3361 "Fake Tester": {
3362 "gtest_tests": [
3363 {
3364 "merge": {
3365 "args": [],
3366 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3367 },
3368 "swarming": {
3369 "can_use_on_swarming_builders": true,
3370 "dimension_sets": [
3371 {
3372 "other_value": "dimension_mixin",
3373 "value": "ds1"
3374 },
3375 {
3376 "other_value": "dimension_mixin",
3377 "value": "ds2"
3378 }
3379 ]
3380 },
3381 "test": "foo_test"
3382 }
3383 ]
3384 }
3385}
3386"""
3387
Stephen Martinis11672542018-10-29 18:17:213388WATERFALL_MIXIN_WATERFALL_OUTPUT = """\
3389{
3390 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3391 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3392 "Fake Tester": {
3393 "gtest_tests": [
3394 {
Stephen Martinisbc7b7772019-05-01 22:01:433395 "merge": {
3396 "args": [],
3397 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3398 },
Stephen Martinis11672542018-10-29 18:17:213399 "swarming": {
3400 "can_use_on_swarming_builders": true,
3401 "dimension_sets": [
3402 {
3403 "integrity": "high"
3404 }
3405 ],
3406 "expiration": 120,
3407 "value": "waterfall"
3408 },
3409 "test": "foo_test"
3410 }
3411 ]
3412 }
3413}
3414"""
3415
Brian Sheedy7658c982020-01-08 02:27:583416WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT = """\
3417{
3418 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3419 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3420 "Fake Tester": {
3421 "gtest_tests": [
3422 {
3423 "merge": {
3424 "args": [],
3425 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3426 },
3427 "swarming": {
3428 "can_use_on_swarming_builders": true,
3429 "dimension_sets": [
3430 {
3431 "integrity": "high"
3432 }
3433 ],
3434 "expiration": 120
3435 },
3436 "test": "foo_test"
3437 }
3438 ]
3439 }
3440}
3441"""
3442
Stephen Martinis11672542018-10-29 18:17:213443WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT = """\
3444{
3445 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3446 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3447 "Fake Tester": {
3448 "gtest_tests": [
3449 {
Stephen Martinisbc7b7772019-05-01 22:01:433450 "merge": {
3451 "args": [],
3452 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3453 },
Stephen Martinis11672542018-10-29 18:17:213454 "swarming": {
3455 "can_use_on_swarming_builders": true,
3456 "dimension_sets": [
3457 {
3458 "integrity": "high"
3459 }
3460 ],
3461 "expiration": 120,
3462 "value": "exception"
3463 },
3464 "test": "foo_test"
3465 }
3466 ]
3467 }
3468}
3469"""
3470
3471BUILDER_MIXIN_WATERFALL_OUTPUT = """\
3472{
3473 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3474 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3475 "Fake Tester": {
3476 "gtest_tests": [
3477 {
Stephen Martinisbc7b7772019-05-01 22:01:433478 "merge": {
3479 "args": [],
3480 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3481 },
Stephen Martinis11672542018-10-29 18:17:213482 "swarming": {
3483 "can_use_on_swarming_builders": true,
3484 "dimension_sets": [
3485 {
3486 "integrity": "high"
3487 }
3488 ],
3489 "expiration": 120,
3490 "value": "builder"
3491 },
3492 "test": "foo_test"
3493 }
3494 ]
3495 }
3496}
3497"""
3498
3499BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT = """\
3500{
3501 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3502 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3503 "Fake Tester": {
3504 "gtest_tests": [
3505 {
Stephen Martinisbc7b7772019-05-01 22:01:433506 "merge": {
3507 "args": [],
3508 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3509 },
Stephen Martinis11672542018-10-29 18:17:213510 "swarming": {
3511 "can_use_on_swarming_builders": true,
3512 "dimension_sets": [
3513 {
3514 "integrity": "high"
3515 }
3516 ],
3517 "expiration": 120
3518 },
3519 "test": "foo_test",
3520 "value": "random"
3521 }
3522 ]
3523 }
3524}
3525"""
3526
Wezc0e835b702018-10-30 00:38:413527BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT = """\
3528{
3529 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3530 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3531 "Fake Tester": {
3532 "gtest_tests": [
3533 {
3534 "args": [
3535 "--c_arg",
3536 "--mixin-argument"
3537 ],
Stephen Martinisbc7b7772019-05-01 22:01:433538 "merge": {
3539 "args": [],
3540 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3541 },
Wezc0e835b702018-10-30 00:38:413542 "swarming": {
3543 "can_use_on_swarming_builders": true
3544 },
3545 "test": "foo_test"
3546 }
3547 ]
3548 }
3549}
3550"""
3551
Stephen Martinis11672542018-10-29 18:17:213552TEST_MIXIN_WATERFALL_OUTPUT = """\
3553{
3554 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3555 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3556 "Fake Tester": {
3557 "gtest_tests": [
3558 {
Stephen Martinisbc7b7772019-05-01 22:01:433559 "merge": {
3560 "args": [],
3561 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3562 },
Stephen Martinis11672542018-10-29 18:17:213563 "swarming": {
3564 "can_use_on_swarming_builders": true,
3565 "dimension_sets": [
3566 {
3567 "integrity": "high",
3568 "kvm": "1"
3569 }
3570 ],
3571 "expiration": 120,
3572 "value": "test"
3573 },
3574 "test": "foo_test"
3575 }
3576 ]
3577 }
3578}
3579"""
3580
3581DIMENSIONS_MIXIN_WATERFALL_OUTPUT = """\
3582{
3583 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3584 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3585 "Fake Tester": {
3586 "gtest_tests": [
3587 {
Stephen Martinisbc7b7772019-05-01 22:01:433588 "merge": {
3589 "args": [],
3590 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3591 },
Stephen Martinis11672542018-10-29 18:17:213592 "swarming": {
3593 "can_use_on_swarming_builders": true,
3594 "dimension_sets": [
3595 {
3596 "iama": "mixin",
3597 "integrity": "high"
3598 }
3599 ],
3600 "expiration": 120,
3601 "value": "test"
3602 },
3603 "test": "foo_test"
3604 }
3605 ]
3606 }
3607}
3608"""
3609
Garrett Beaty1afaccc2020-06-25 19:58:153610
3611class MixinTests(TestCase):
Stephen Martinis11672542018-10-29 18:17:213612 """Tests for the mixins feature."""
3613 def test_mixins_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153614 fbb = FakeBBGen(self.args,
3615 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213616 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413617 LUCI_MILO_CFG,
3618 mixins=SWARMING_MIXINS_SORTED)
Stephen Martinis11672542018-10-29 18:17:213619 fbb.check_input_file_consistency(verbose=True)
3620 self.assertFalse(fbb.printed_lines)
3621
Garrett Beaty1afaccc2020-06-25 19:58:153622 fbb = FakeBBGen(self.args,
3623 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213624 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413625 LUCI_MILO_CFG,
3626 mixins=SWARMING_MIXINS_UNSORTED)
Stephen Martinis11672542018-10-29 18:17:213627 with self.assertRaises(generate_buildbot_json.BBGenErr):
3628 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533629 joined_lines = '\n'.join(fbb.printed_lines)
Stephen Martinis11672542018-10-29 18:17:213630 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:533631 joined_lines, '.*\+ ._mixin.*')
Stephen Martinis11672542018-10-29 18:17:213632 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:533633 joined_lines, '.*\- ._mixin.*')
Stephen Martinis11672542018-10-29 18:17:213634 fbb.printed_lines = []
3635 self.assertFalse(fbb.printed_lines)
3636
3637 def test_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153638 fbb = FakeBBGen(self.args,
3639 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213640 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413641 LUCI_MILO_CFG,
3642 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153643 self.create_testing_buildbot_json_file('chromium.test.json',
3644 WATERFALL_MIXIN_WATERFALL_OUTPUT)
3645 self.create_testing_buildbot_json_file('chromium.ci.json',
3646 WATERFALL_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213647 fbb.check_output_file_consistency(verbose=True)
3648 self.assertFalse(fbb.printed_lines)
3649
3650 def test_waterfall_exception_overrides(self):
Garrett Beaty1afaccc2020-06-25 19:58:153651 fbb = FakeBBGen(self.args,
3652 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213653 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413654 LUCI_MILO_CFG,
3655 exceptions=SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS,
3656 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153657 self.create_testing_buildbot_json_file(
3658 'chromium.test.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
3659 self.create_testing_buildbot_json_file(
3660 'chromium.ci.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213661 fbb.check_output_file_consistency(verbose=True)
3662 self.assertFalse(fbb.printed_lines)
3663
3664 def test_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:153665 fbb = FakeBBGen(self.args,
3666 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213667 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413668 LUCI_MILO_CFG,
3669 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153670 self.create_testing_buildbot_json_file('chromium.test.json',
3671 BUILDER_MIXIN_WATERFALL_OUTPUT)
3672 self.create_testing_buildbot_json_file('chromium.ci.json',
3673 BUILDER_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213674 fbb.check_output_file_consistency(verbose=True)
3675 self.assertFalse(fbb.printed_lines)
3676
3677 def test_builder_non_swarming(self):
Garrett Beaty1afaccc2020-06-25 19:58:153678 fbb = FakeBBGen(self.args,
3679 FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213680 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413681 LUCI_MILO_CFG,
3682 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153683 self.create_testing_buildbot_json_file(
3684 'chromium.test.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
3685 self.create_testing_buildbot_json_file(
3686 'chromium.ci.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213687 fbb.check_output_file_consistency(verbose=True)
3688 self.assertFalse(fbb.printed_lines)
3689
3690 def test_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153691 fbb = FakeBBGen(self.args,
3692 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213693 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413694 LUCI_MILO_CFG,
3695 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153696 self.create_testing_buildbot_json_file('chromium.test.json',
3697 TEST_MIXIN_WATERFALL_OUTPUT)
3698 self.create_testing_buildbot_json_file('chromium.ci.json',
3699 TEST_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213700 fbb.check_output_file_consistency(verbose=True)
3701 self.assertFalse(fbb.printed_lines)
3702
3703 def test_dimension(self):
Garrett Beaty1afaccc2020-06-25 19:58:153704 fbb = FakeBBGen(self.args,
3705 FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213706 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413707 LUCI_MILO_CFG,
3708 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153709 self.create_testing_buildbot_json_file('chromium.test.json',
3710 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3711 self.create_testing_buildbot_json_file('chromium.ci.json',
3712 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213713 fbb.check_output_file_consistency(verbose=True)
3714 self.assertFalse(fbb.printed_lines)
3715
3716 def test_dimension_gpu(self):
Garrett Beaty1afaccc2020-06-25 19:58:153717 fbb = FakeBBGen(self.args,
3718 FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213719 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413720 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193721 mixins=SWARMING_MIXINS,
3722 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153723 self.create_testing_buildbot_json_file('chromium.test.json',
3724 GPU_DIMENSIONS_WATERFALL_OUTPUT)
3725 self.create_testing_buildbot_json_file('chromium.ci.json',
3726 GPU_DIMENSIONS_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213727 fbb.check_output_file_consistency(verbose=True)
3728 self.assertFalse(fbb.printed_lines)
3729
3730 def test_unreferenced(self):
Garrett Beaty1afaccc2020-06-25 19:58:153731 fbb = FakeBBGen(self.args,
3732 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213733 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413734 LUCI_MILO_CFG,
3735 mixins=SWARMING_MIXINS)
Stephen Martinis11672542018-10-29 18:17:213736 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
3737 '.*mixins are unreferenced.*'):
3738 fbb.check_input_file_consistency(verbose=True)
3739 self.assertFalse(fbb.printed_lines)
3740
Stephen Martinis11672542018-10-29 18:17:213741 def test_unused(self):
Garrett Beaty1afaccc2020-06-25 19:58:153742 fbb = FakeBBGen(self.args,
3743 FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213744 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413745 LUCI_MILO_CFG,
3746 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153747 self.create_testing_buildbot_json_file('chromium.test.json',
3748 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3749 self.create_testing_buildbot_json_file('chromium.ci.json',
3750 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213751 with self.assertRaises(generate_buildbot_json.BBGenErr):
3752 fbb.check_output_file_consistency(verbose=True)
3753 self.assertFalse(fbb.printed_lines)
3754
3755 def test_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153756 fbb = FakeBBGen(self.args,
3757 FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213758 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413759 LUCI_MILO_CFG,
3760 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153761 self.create_testing_buildbot_json_file('chromium.test.json',
3762 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3763 self.create_testing_buildbot_json_file('chromium.ci.json',
3764 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213765 with self.assertRaises(generate_buildbot_json.BBGenErr):
3766 fbb.check_output_file_consistency(verbose=True)
3767 self.assertFalse(fbb.printed_lines)
3768
3769
3770 def test_no_duplicate_keys(self):
Garrett Beaty1afaccc2020-06-25 19:58:153771 fbb = FakeBBGen(self.args,
3772 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203773 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413774 LUCI_MILO_CFG,
3775 mixins=SWARMING_MIXINS_DUPLICATED)
Stephen Martinis54d64ad2018-09-21 22:16:203776 with self.assertRaisesRegexp(
3777 generate_buildbot_json.BBGenErr,
Stephen Martinisb72f6d22018-10-04 23:29:013778 'The following files have invalid keys: mixins.pyl'):
Stephen Martinis54d64ad2018-09-21 22:16:203779 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533780 joined_lines = '\n'.join(fbb.printed_lines)
Stephen Martinis54d64ad2018-09-21 22:16:203781 self.assertRegexpMatches(
Stephen Martinis5bef0fc2020-01-06 22:47:533782 joined_lines, '.*\- builder_mixin')
3783 fbb.printed_lines = []
3784 self.assertFalse(fbb.printed_lines)
3785
3786 def test_no_duplicate_keys_basic_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153787 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE_NOT_SORTED,
Stephen Martinis5bef0fc2020-01-06 22:47:533788 LUCI_MILO_CFG)
Stephen Martinis5bef0fc2020-01-06 22:47:533789 with self.assertRaisesRegexp(
3790 generate_buildbot_json.BBGenErr,
3791 'The following files have invalid keys: test_suites.pyl'):
3792 fbb.check_input_file_consistency(verbose=True)
3793 joined_lines = '\n'.join(fbb.printed_lines)
3794 self.assertRegexpMatches(joined_lines, '.*\- a_test')
3795 self.assertRegexpMatches(joined_lines, '.*\+ a_test')
Stephen Martinis54d64ad2018-09-21 22:16:203796 fbb.printed_lines = []
3797 self.assertFalse(fbb.printed_lines)
3798
3799 def test_type_assert_printing_help(self):
Garrett Beaty1afaccc2020-06-25 19:58:153800 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, TEST_SUITES_SYNTAX_ERROR,
Stephen Martinis54d64ad2018-09-21 22:16:203801 LUCI_MILO_CFG)
3802 with self.assertRaisesRegexp(
3803 generate_buildbot_json.BBGenErr,
3804 'Invalid \.pyl file \'test_suites.pyl\'.*'):
3805 fbb.check_input_file_consistency(verbose=True)
3806 self.assertEquals(
3807 fbb.printed_lines, [
3808 '== test_suites.pyl ==',
3809 '<snip>',
3810 '1 {',
3811 "2 'basic_suites': {",
3812 '--------------------------------------------------------------------'
3813 '------------',
3814 '3 3: {',
3815 '-------^------------------------------------------------------------'
3816 '------------',
3817 "4 'suite_c': {},",
3818 '5 },',
3819 '<snip>',
3820 ])
3821
Wezc0e835b702018-10-30 00:38:413822 def test_mixin_append_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:153823 fbb = FakeBBGen(self.args,
3824 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413825 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413826 LUCI_MILO_CFG,
3827 mixins=SWARMING_MIXINS_APPEND)
Garrett Beaty1afaccc2020-06-25 19:58:153828 self.create_testing_buildbot_json_file(
3829 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
3830 self.create_testing_buildbot_json_file(
3831 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
Wezc0e835b702018-10-30 00:38:413832 fbb.check_output_file_consistency(verbose=True)
3833 self.assertFalse(fbb.printed_lines)
3834
3835 def test_mixin_append_mixin_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153836 fbb = FakeBBGen(self.args,
3837 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413838 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413839 LUCI_MILO_CFG,
3840 mixins=SWARMING_MIXINS_APPEND_NOT_LIST)
Wezc0e835b702018-10-30 00:38:413841 with self.assertRaisesRegexp(
3842 generate_buildbot_json.BBGenErr,
3843 'Key "args" in \$mixin_append must be a list.'):
3844 fbb.check_output_file_consistency(verbose=True)
3845 self.assertFalse(fbb.printed_lines)
3846
3847 def test_mixin_append_test_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153848 fbb = FakeBBGen(self.args,
3849 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413850 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413851 LUCI_MILO_CFG,
3852 mixins=SWARMING_MIXINS_APPEND_TO_SWARMING)
Wezc0e835b702018-10-30 00:38:413853 with self.assertRaisesRegexp(
3854 generate_buildbot_json.BBGenErr,
3855 'Cannot apply \$mixin_append to non-list "swarming".'):
3856 fbb.check_output_file_consistency(verbose=True)
3857 self.assertFalse(fbb.printed_lines)
Stephen Martinis54d64ad2018-09-21 22:16:203858
Brian Sheedy7658c982020-01-08 02:27:583859 def test_remove_mixin_builder_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153860 fbb = FakeBBGen(self.args,
3861 FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583862 FOO_TEST_SUITE,
3863 LUCI_MILO_CFG,
3864 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153865 self.create_testing_buildbot_json_file(
3866 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3867 self.create_testing_buildbot_json_file(
3868 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583869 fbb.check_output_file_consistency(verbose=True)
3870 self.assertFalse(fbb.printed_lines)
3871
3872 def test_remove_mixin_test_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153873 fbb = FakeBBGen(self.args,
3874 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583875 FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN,
3876 LUCI_MILO_CFG,
3877 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153878 self.create_testing_buildbot_json_file(
3879 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3880 self.create_testing_buildbot_json_file(
3881 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583882 fbb.check_output_file_consistency(verbose=True)
3883 self.assertFalse(fbb.printed_lines)
3884
3885 def test_remove_mixin_test_remove_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:153886 fbb = FakeBBGen(self.args,
3887 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583888 FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN,
3889 LUCI_MILO_CFG,
3890 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153891 self.create_testing_buildbot_json_file(
3892 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3893 self.create_testing_buildbot_json_file(
3894 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583895 fbb.check_output_file_consistency(verbose=True)
3896 self.assertFalse(fbb.printed_lines)
3897
Brian Sheedycae63b22020-06-10 22:52:113898 def test_dimension_sets_application(self):
Garrett Beaty1afaccc2020-06-25 19:58:153899 fbb = FakeBBGen(self.args,
3900 FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL,
Brian Sheedycae63b22020-06-10 22:52:113901 FOO_TEST_SUITE_NO_DIMENSIONS,
3902 LUCI_MILO_CFG,
3903 mixins=SWARMING_MIXINS_DIMENSION_SETS)
Garrett Beaty1afaccc2020-06-25 19:58:153904 self.create_testing_buildbot_json_file(
3905 'chromium.test.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
3906 self.create_testing_buildbot_json_file(
3907 'chromium.ci.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
Brian Sheedycae63b22020-06-10 22:52:113908 fbb.check_output_file_consistency(verbose=True)
3909 self.assertFalse(fbb.printed_lines)
3910
Karen Qiane24b7ee2019-02-12 23:37:063911TEST_SUITE_WITH_PARAMS = """\
3912{
3913 'basic_suites': {
3914 'bar_tests': {
3915 'bar_test': {
3916 'args': ['--no-xvfb'],
3917 'swarming': {
3918 'dimension_sets': [
3919 {
3920 'device_os': 'NMF26U'
3921 }
3922 ],
3923 },
3924 'should_retry_with_patch': False,
3925 'name': 'bar_test'
3926 },
3927 'bar_test_test': {
3928 'swarming': {
3929 'dimension_sets': [
3930 {
3931 'kvm': '1'
3932 }
3933 ],
3934 'hard_timeout': 1000
3935 },
3936 'should_retry_with_patch': True
3937 }
3938 },
3939 'foo_tests': {
3940 'foo_test_empty': {},
3941 'foo_test': {
3942 'args': [
3943 '--jobs=1',
3944 '--verbose'
3945 ],
3946 'swarming': {
3947 'dimension_sets': [
3948 {
3949 'device_os': 'MMB29Q'
3950 }
3951 ],
3952 'hard_timeout': 1800
3953 }
3954 },
3955 'foo_test_test': {
3956 'swarming': {
3957 },
3958 'name': 'pls'
3959 },
3960 },
3961 },
3962 'compound_suites': {
3963 'composition_tests': [
3964 'foo_tests',
3965 'bar_tests',
3966 ],
3967 },
3968}
3969"""
3970TEST_QUERY_BOTS_OUTPUT = {
3971 "Fake Android M Tester": {
3972 "gtest_tests": [
3973 {
3974 "test": "foo_test",
Stephen Martinisbc7b7772019-05-01 22:01:433975 "merge": {
3976 "args": [],
3977 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3978 },
Karen Qiane24b7ee2019-02-12 23:37:063979 "swarming": {
3980 "can_use_on_swarming_builders": False
3981 }
3982 }
3983 ]
3984 },
3985 "Fake Android L Tester": {
3986 "gtest_tests": [
3987 {
3988 "test": "foo_test",
3989 "args": [
3990 "--gs-results-bucket=chromium-result-details",
3991 "--recover-devices"
3992 ],
Stephen Martinisbc7b7772019-05-01 22:01:433993 "merge": {
3994 "args": [],
3995 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3996 },
Karen Qiane24b7ee2019-02-12 23:37:063997 "swarming": {
3998 "cipd_packages": [
3999 {
4000 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4001 "location": "bin",
4002 "revision":
4003 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4004 }
4005 ],
4006 "dimension_sets":[
4007 {
Ben Pastenee012aea42019-05-14 22:32:284008 "device_os": "LMY41U",
4009 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224010 "device_type": "hammerhead",
4011 'os': 'Android'
Karen Qiane24b7ee2019-02-12 23:37:064012 }
4013 ],
4014 "can_use_on_swarming_builders": True
4015 }
4016 }
4017 ]
4018 },
4019 "Fake Android K Tester": {
4020 "additional_compile_targets": ["bar_test"],
4021 "gtest_tests": [
4022 {
4023 "test": "foo_test",
4024 "args": [
4025 "--gs-results-bucket=chromium-result-details",
4026 "--recover-devices"
4027 ],
Stephen Martinisbc7b7772019-05-01 22:01:434028 "merge": {
4029 "args": [],
4030 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4031 },
Karen Qiane24b7ee2019-02-12 23:37:064032 "swarming": {
4033 "cipd_packages": [
4034 {
4035 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4036 "location": "bin",
4037 "revision":
4038 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4039 }
4040 ],
4041 "dimension_sets": [
4042 {
4043 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284044 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224045 "device_type": "hammerhead",
4046 "os": "Android",
Karen Qiane24b7ee2019-02-12 23:37:064047 }
4048 ],
4049 "can_use_on_swarming_builders": True,
4050 "output_links": [
4051 {
4052 "link": ["https://luci-logdog.appspot.com/v/?s",
4053 "=android%2Fswarming%2Flogcats%2F",
4054 "${TASK_ID}%2F%2B%2Funified_logcats"],
4055 "name": "shard #${SHARD_INDEX} logcats"
4056 }
4057 ]
4058 }
4059 }
4060 ]
4061 },
4062 "Android Builder": {
4063 "additional_compile_targets": ["bar_test"]
4064 }
4065}
4066TEST_QUERY_BOTS_TESTS_OUTPUT = {
4067 "Fake Android M Tester": [
4068 {
Stephen Martinisbc7b7772019-05-01 22:01:434069 "merge": {
4070 "args": [],
4071 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4072 },
Karen Qiane24b7ee2019-02-12 23:37:064073 "test": "foo_test",
4074 "swarming": {
4075 "can_use_on_swarming_builders": False
4076 }
4077 }
4078 ],
4079 "Fake Android L Tester": [
4080 {
4081 "test": "foo_test",
4082 "args": [
4083 "--gs-results-bucket=chromium-result-details",
4084 "--recover-devices"
4085 ],
Stephen Martinisbc7b7772019-05-01 22:01:434086 "merge": {
4087 "args": [],
4088 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4089 },
Karen Qiane24b7ee2019-02-12 23:37:064090 "swarming": {
4091 "cipd_packages": [
4092 {
4093 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4094 "location": "bin",
4095 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4096 }
4097 ],
4098 "dimension_sets": [
4099 {
Ben Pastenee012aea42019-05-14 22:32:284100 "device_os": "LMY41U",
4101 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224102 "device_type": "hammerhead",
4103 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064104 }
4105 ],
4106 "can_use_on_swarming_builders": True
4107 }
4108 }
4109 ],
4110 "Android Builder": [],
4111 "Fake Android K Tester": [
4112 {
4113 "test": "foo_test",
4114 "args": [
4115 "--gs-results-bucket=chromium-result-details",
4116 "--recover-devices"
4117 ],
Stephen Martinisbc7b7772019-05-01 22:01:434118 "merge": {
4119 "args": [],
4120 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4121 },
Karen Qiane24b7ee2019-02-12 23:37:064122 "swarming": {
4123 "cipd_packages": [
4124 {
4125 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4126 "location": "bin",
4127 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4128 }
4129 ],
4130 "dimension_sets": [
4131 {
4132 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284133 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224134 "device_type": "hammerhead",
4135 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064136 }
4137 ],
4138 "can_use_on_swarming_builders": True,
4139 "output_links": [
4140 {
4141 "link": [
4142 "https://luci-logdog.appspot.com/v/?s",
4143 "=android%2Fswarming%2Flogcats%2F",
4144 "${TASK_ID}%2F%2B%2Funified_logcats"
4145 ],
4146 "name": "shard #${SHARD_INDEX} logcats"
4147 }
4148 ]
4149 }
4150 }
4151 ]
4152}
4153
4154TEST_QUERY_BOT_OUTPUT = {
4155 "additional_compile_targets": ["bar_test"],
4156 "gtest_tests": [
4157 {
Stephen Martinisbc7b7772019-05-01 22:01:434158 "test": "foo_test",
4159 "args": [
Karen Qiane24b7ee2019-02-12 23:37:064160 "--gs-results-bucket=chromium-result-details",
4161 "--recover-devices"
Stephen Martinisbc7b7772019-05-01 22:01:434162 ],
4163 "merge": {
4164 "args": [],
4165 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4166 },
4167 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064168 "cipd_packages": [
4169 {
4170 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4171 "location": "bin",
4172 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4173 }
4174 ],
4175 "dimension_sets": [
4176 {
4177 "device_os": "KTU84P",
Ben Pastened15aa8a2019-05-16 16:59:224178 "device_os_type": "userdebug",
4179 "device_type": "hammerhead",
4180 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064181 }
4182 ],
4183 "can_use_on_swarming_builders": True,
4184 "output_links": [
4185 {
4186 "link": ["https://luci-logdog.appspot.com/v/?s",
4187 "=android%2Fswarming%2Flogcats%2F",
4188 "${TASK_ID}%2F%2B%2Funified_logcats"
4189 ],
4190 "name": "shard #${SHARD_INDEX} logcats"
4191 }
4192 ]
4193 }
4194 }
4195 ]
4196}
4197TEST_QUERY_BOT_TESTS_OUTPUT = [
4198 {
4199 "test": "foo_test",
4200 "args": [
4201 "--gs-results-bucket=chromium-result-details",
4202 "--recover-devices"
4203 ],
Stephen Martinisbc7b7772019-05-01 22:01:434204 "merge": {
4205 "args": [],
4206 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4207 },
Karen Qiane24b7ee2019-02-12 23:37:064208 "swarming": {
4209 "cipd_packages": [
4210 {
4211 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4212 "location": "bin",
4213 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4214 }
4215 ],
4216 "dimension_sets": [
4217 {
Ben Pastenee012aea42019-05-14 22:32:284218 "device_os": "LMY41U",
4219 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224220 "device_type": "hammerhead",
4221 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064222 }
4223 ],
4224 "can_use_on_swarming_builders": True
4225 }
4226 }
4227]
4228
4229TEST_QUERY_TESTS_OUTPUT = {
4230 "bar_test": {},
4231 "foo_test": {}
4232}
4233
4234TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT = ["foo_test"]
4235
4236TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT = ["bar_test"]
4237
4238TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT = ["bar_test_test"]
4239
4240TEST_QUERY_TESTS_PARAMS_OUTPUT = ['bar_test_test']
4241
4242TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT = ['bar_test']
4243
4244TEST_QUERY_TEST_OUTPUT = {}
4245
4246TEST_QUERY_TEST_BOTS_OUTPUT = [
4247 "Fake Android M Tester",
4248 "Fake Android L Tester",
4249 "Fake Android K Tester"
4250]
4251
4252TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT = ['Fake Tester']
4253
4254TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT = []
4255
Garrett Beaty1afaccc2020-06-25 19:58:154256
4257class QueryTests(TestCase):
Karen Qiane24b7ee2019-02-12 23:37:064258 """Tests for the query feature."""
4259 def test_query_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154260 self.override_args(query='bots',
4261 check=False,
4262 pyl_files_dir=None,
4263 json=None,
4264 waterfall_filters=[])
4265 fbb = FakeBBGen(self.args,
4266 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064267 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414268 LUCI_MILO_CFG,
4269 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064270 fbb.query(fbb.args)
4271 query_json = json.loads("".join(fbb.printed_lines))
4272 self.assertEqual(query_json, TEST_QUERY_BOTS_OUTPUT)
4273
4274 def test_query_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154275 self.override_args(query='bots/blah/blah',
4276 check=False,
4277 pyl_files_dir=None,
4278 json=None,
4279 waterfall_filters=[])
4280 fbb = FakeBBGen(self.args,
4281 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064282 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414283 LUCI_MILO_CFG,
4284 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064285 with self.assertRaises(SystemExit) as cm:
4286 fbb.query(fbb.args)
4287 self.assertEqual(cm.exception.code, 1)
4288 self.assertTrue(fbb.printed_lines)
4289
4290 def test_query_bots_json(self):
Garrett Beaty1afaccc2020-06-25 19:58:154291 self.override_args(query='bots',
4292 check=False,
4293 pyl_files_dir=None,
4294 json='result.json',
4295 waterfall_filters=[])
4296 fbb = FakeBBGen(self.args,
4297 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064298 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414299 LUCI_MILO_CFG,
4300 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064301 fbb.query(fbb.args)
4302 self.assertFalse(fbb.printed_lines)
4303
4304 def test_query_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154305 self.override_args(query='bots/tests',
4306 check=False,
4307 pyl_files_dir=None,
4308 json=None,
4309 waterfall_filters=[])
4310 fbb = FakeBBGen(self.args,
4311 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064312 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414313 LUCI_MILO_CFG,
4314 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064315 fbb.query(fbb.args)
4316 query_json = json.loads("".join(fbb.printed_lines))
4317 self.assertEqual(query_json, TEST_QUERY_BOTS_TESTS_OUTPUT)
4318
4319 def test_query_invalid_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154320 self.override_args(query='bots/tdfjdk',
4321 check=False,
4322 pyl_files_dir=None,
4323 json=None,
4324 waterfall_filters=[])
4325 fbb = FakeBBGen(self.args,
4326 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064327 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414328 LUCI_MILO_CFG,
4329 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064330 with self.assertRaises(SystemExit) as cm:
4331 fbb.query(fbb.args)
4332 self.assertEqual(cm.exception.code, 1)
4333 self.assertTrue(fbb.printed_lines)
4334
4335 def test_query_bot(self):
Garrett Beaty1afaccc2020-06-25 19:58:154336 self.override_args(query='bot/Fake Android K Tester',
4337 check=False,
4338 pyl_files_dir=None,
4339 json=None,
4340 waterfall_filters=[])
4341 fbb = FakeBBGen(self.args,
4342 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064343 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414344 LUCI_MILO_CFG,
4345 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064346 fbb.query(fbb.args)
4347 query_json = json.loads("".join(fbb.printed_lines))
Garrett Beaty1afaccc2020-06-25 19:58:154348 self.maxDiff = None # pragma pylint: disable=attribute-defined-outside-init
Karen Qiane24b7ee2019-02-12 23:37:064349 self.assertEqual(query_json, TEST_QUERY_BOT_OUTPUT)
4350
4351 def test_query_bot_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154352 self.override_args(query='bot/bot1',
4353 check=False,
4354 pyl_files_dir=None,
4355 json=None,
4356 waterfall_filters=[])
4357 fbb = FakeBBGen(self.args,
4358 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064359 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414360 LUCI_MILO_CFG,
4361 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064362 with self.assertRaises(SystemExit) as cm:
4363 fbb.query(fbb.args)
4364 self.assertEqual(cm.exception.code, 1)
4365 self.assertTrue(fbb.printed_lines)
4366
4367 def test_query_bot_invalid_query_too_many(self):
Garrett Beaty1afaccc2020-06-25 19:58:154368 self.override_args(query='bot/Fake Android K Tester/blah/blah',
4369 check=False,
4370 pyl_files_dir=None,
4371 json=None,
4372 waterfall_filters=[])
4373 fbb = FakeBBGen(self.args,
4374 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064375 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414376 LUCI_MILO_CFG,
4377 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064378 with self.assertRaises(SystemExit) as cm:
4379 fbb.query(fbb.args)
4380 self.assertEqual(cm.exception.code, 1)
4381 self.assertTrue(fbb.printed_lines)
4382
4383 def test_query_bot_invalid_query_no_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154384 self.override_args(query='bot/Fake Android K Tester/blahs',
4385 check=False,
4386 pyl_files_dir=None,
4387 json=None,
4388 waterfall_filters=[])
4389 fbb = FakeBBGen(self.args,
4390 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064391 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414392 LUCI_MILO_CFG,
4393 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064394 with self.assertRaises(SystemExit) as cm:
4395 fbb.query(fbb.args)
4396 self.assertEqual(cm.exception.code, 1)
4397 self.assertTrue(fbb.printed_lines)
4398
4399 def test_query_bot_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154400 self.override_args(query='bot/Fake Android L Tester/tests',
4401 check=False,
4402 pyl_files_dir=None,
4403 json=None,
4404 waterfall_filters=[])
4405 fbb = FakeBBGen(self.args,
4406 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064407 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414408 LUCI_MILO_CFG,
4409 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064410 fbb.query(fbb.args)
4411 query_json = json.loads("".join(fbb.printed_lines))
4412 self.assertEqual(query_json, TEST_QUERY_BOT_TESTS_OUTPUT)
4413
4414 def test_query_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154415 self.override_args(query='tests',
4416 check=False,
4417 pyl_files_dir=None,
4418 json=None,
4419 waterfall_filters=[])
4420 fbb = FakeBBGen(self.args,
4421 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064422 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414423 LUCI_MILO_CFG,
4424 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064425 fbb.query(fbb.args)
4426 query_json = json.loads("".join(fbb.printed_lines))
4427 self.assertEqual(query_json, TEST_QUERY_TESTS_OUTPUT)
4428
4429 def test_query_tests_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154430 self.override_args(query='tests/blah/blah',
4431 check=False,
4432 pyl_files_dir=None,
4433 json=None,
4434 waterfall_filters=[])
4435 fbb = FakeBBGen(self.args,
4436 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064437 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414438 LUCI_MILO_CFG,
4439 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064440 with self.assertRaises(SystemExit) as cm:
4441 fbb.query(fbb.args)
4442 self.assertEqual(cm.exception.code, 1)
4443 self.assertTrue(fbb.printed_lines)
4444
4445 def test_query_tests_multiple_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154446 self.override_args(query='tests/--jobs=1&--verbose',
4447 check=False,
4448 pyl_files_dir=None,
4449 json=None,
4450 waterfall_filters=[])
4451 fbb = FakeBBGen(self.args,
4452 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064453 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414454 LUCI_MILO_CFG,
4455 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064456 fbb.query(fbb.args)
4457 query_json = json.loads("".join(fbb.printed_lines))
4458 self.assertEqual(query_json, TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT)
4459
4460 def test_query_tests_invalid_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154461 self.override_args(query='tests/device_os?',
4462 check=False,
4463 pyl_files_dir=None,
4464 json=None,
4465 waterfall_filters=[])
4466 fbb = FakeBBGen(self.args,
4467 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064468 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414469 LUCI_MILO_CFG,
4470 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064471 with self.assertRaises(SystemExit) as cm:
4472 fbb.query(fbb.args)
4473 self.assertEqual(cm.exception.code, 1)
4474 self.assertTrue(fbb.printed_lines)
4475
4476 def test_query_tests_dimension_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154477 self.override_args(query='tests/device_os:NMF26U',
4478 check=False,
4479 pyl_files_dir=None,
4480 json=None,
4481 waterfall_filters=[])
4482 fbb = FakeBBGen(self.args,
4483 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064484 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414485 LUCI_MILO_CFG,
4486 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064487 fbb.query(fbb.args)
4488 query_json = json.loads("".join(fbb.printed_lines))
4489 self.assertEqual(query_json, TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT)
4490
4491 def test_query_tests_swarming_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154492 self.override_args(query='tests/hard_timeout:1000',
4493 check=False,
4494 pyl_files_dir=None,
4495 json=None,
4496 waterfall_filters=[])
4497 fbb = FakeBBGen(self.args,
4498 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064499 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414500 LUCI_MILO_CFG,
4501 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064502 fbb.query(fbb.args)
4503 query_json = json.loads("".join(fbb.printed_lines))
4504 self.assertEqual(query_json, TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT)
4505
4506 def test_query_tests_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154507 self.override_args(query='tests/should_retry_with_patch:true',
4508 check=False,
4509 pyl_files_dir=None,
4510 json=None,
4511 waterfall_filters=[])
4512 fbb = FakeBBGen(self.args,
4513 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064514 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414515 LUCI_MILO_CFG,
4516 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064517 fbb.query(fbb.args)
4518 query_json = json.loads("".join(fbb.printed_lines))
4519 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_OUTPUT)
4520
4521 def test_query_tests_params_false(self):
Garrett Beaty1afaccc2020-06-25 19:58:154522 self.override_args(query='tests/should_retry_with_patch:false',
4523 check=False,
4524 pyl_files_dir=None,
4525 json=None,
4526 waterfall_filters=[])
4527 fbb = FakeBBGen(self.args,
4528 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064529 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414530 LUCI_MILO_CFG,
4531 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064532 fbb.query(fbb.args)
4533 query_json = json.loads("".join(fbb.printed_lines))
4534 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT)
4535
4536 def test_query_test(self):
Garrett Beaty1afaccc2020-06-25 19:58:154537 self.override_args(query='test/foo_test',
4538 check=False,
4539 pyl_files_dir=None,
4540 json=None,
4541 waterfall_filters=[])
4542 fbb = FakeBBGen(self.args,
4543 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064544 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414545 LUCI_MILO_CFG,
4546 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064547 fbb.query(fbb.args)
4548 query_json = json.loads("".join(fbb.printed_lines))
4549 self.assertEqual(query_json, TEST_QUERY_TEST_OUTPUT)
4550
4551 def test_query_test_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154552 self.override_args(query='test/foo_foo',
4553 check=False,
4554 pyl_files_dir=None,
4555 json=None,
4556 waterfall_filters=[])
4557 fbb = FakeBBGen(self.args,
4558 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064559 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414560 LUCI_MILO_CFG,
4561 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064562 with self.assertRaises(SystemExit) as cm:
4563 fbb.query(fbb.args)
4564 self.assertEqual(cm.exception.code, 1)
4565 self.assertTrue(fbb.printed_lines)
4566
4567 def test_query_test_invalid_length(self):
Garrett Beaty1afaccc2020-06-25 19:58:154568 self.override_args(query='test/foo_tests/foo/foo',
4569 check=False,
4570 pyl_files_dir=None,
4571 json=None,
4572 waterfall_filters=[])
4573 fbb = FakeBBGen(self.args,
4574 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064575 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414576 LUCI_MILO_CFG,
4577 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064578 with self.assertRaises(SystemExit) as cm:
4579 fbb.query(fbb.args)
4580 self.assertEqual(cm.exception.code, 1)
4581 self.assertTrue(fbb.printed_lines)
4582
4583 def test_query_test_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154584 self.override_args(query='test/foo_test/bots',
4585 check=False,
4586 pyl_files_dir=None,
4587 json=None,
4588 waterfall_filters=[])
4589 fbb = FakeBBGen(self.args,
4590 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064591 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414592 LUCI_MILO_CFG,
4593 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064594 fbb.query(fbb.args)
4595 query_json = json.loads("".join(fbb.printed_lines))
4596 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_OUTPUT)
4597
4598 def test_query_test_bots_isolated_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:154599 self.override_args(query='test/foo_test/bots',
4600 check=False,
4601 pyl_files_dir=None,
4602 json=None,
4603 waterfall_filters=[])
4604 fbb = FakeBBGen(self.args,
4605 FOO_ISOLATED_SCRIPTS_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064606 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414607 LUCI_MILO_CFG,
4608 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064609 fbb.query(fbb.args)
4610 query_json = json.loads("".join(fbb.printed_lines))
4611 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT)
4612
4613 def test_query_test_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154614 self.override_args(query='test/foo_tests/foo',
4615 check=False,
4616 pyl_files_dir=None,
4617 json=None,
4618 waterfall_filters=[])
4619 fbb = FakeBBGen(self.args,
4620 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064621 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414622 LUCI_MILO_CFG,
4623 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064624 with self.assertRaises(SystemExit) as cm:
4625 fbb.query(fbb.args)
4626 self.assertEqual(cm.exception.code, 1)
4627 self.assertTrue(fbb.printed_lines)
4628
4629 def test_query_test_bots_no_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154630 self.override_args(query='test/bar_tests/bots',
4631 check=False,
4632 pyl_files_dir=None,
4633 json=None,
4634 waterfall_filters=[])
4635 fbb = FakeBBGen(self.args,
4636 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064637 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414638 LUCI_MILO_CFG,
4639 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064640 fbb.query(fbb.args)
4641 query_json = json.loads("".join(fbb.printed_lines))
4642 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT)
4643
4644 def test_query_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154645 self.override_args(query='foo',
4646 check=False,
4647 pyl_files_dir=None,
4648 json=None,
4649 waterfall_filters=[])
4650 fbb = FakeBBGen(self.args,
4651 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064652 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414653 LUCI_MILO_CFG,
4654 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064655 with self.assertRaises(SystemExit) as cm:
4656 fbb.query(fbb.args)
4657 self.assertEqual(cm.exception.code, 1)
4658 self.assertTrue(fbb.printed_lines)
4659
Brian Sheedye6ea0ee2019-07-11 02:54:374660
4661FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES = """\
4662{
4663 'basic_suites': {
4664 'foo_tests': {
4665 'foo_test': {
4666 'args': [
4667 '--enable-features',
4668 'Foo,Bar',
4669 ],
4670 },
4671 },
4672 },
4673}
4674"""
4675
4676
4677FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE = """\
4678{
4679 'foo_test': {
4680 'replacements': {
4681 'Fake Tester': {
4682 'args': {
4683 '--c_arg': None,
4684 },
4685 },
4686 },
4687 },
4688}
4689"""
4690
4691
4692FOO_TEST_REPLACEMENTS_REMOVE_VALUE = """\
4693{
4694 'foo_test': {
4695 'replacements': {
4696 'Fake Tester': {
4697 'args': {
4698 '--enable-features': None,
4699 },
4700 },
4701 },
4702 },
4703}
4704"""
4705
4706
4707FOO_TEST_REPLACEMENTS_REPLACE_VALUE = """\
4708{
4709 'foo_test': {
4710 'replacements': {
4711 'Fake Tester': {
4712 'args': {
4713 '--enable-features': 'Bar,Baz',
4714 },
4715 },
4716 },
4717 },
4718}
4719"""
4720
4721
4722FOO_TEST_REPLACEMENTS_INVALID_KEY = """\
4723{
4724 'foo_test': {
4725 'replacements': {
4726 'Fake Tester': {
4727 'invalid': {
4728 '--enable-features': 'Bar,Baz',
4729 },
4730 },
4731 },
4732 },
4733}
4734"""
4735
4736
4737REPLACEMENTS_REMOVE_OUTPUT = """\
4738{
4739 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4740 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4741 "Fake Tester": {
4742 "gtest_tests": [
4743 {
4744 "args": [],
4745 "merge": {
4746 "args": [],
4747 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4748 },
4749 "swarming": {
4750 "can_use_on_swarming_builders": true,
4751 "dimension_sets": [
4752 {
4753 "kvm": "1"
4754 }
4755 ]
4756 },
4757 "test": "foo_test"
4758 }
4759 ]
4760 }
4761}
4762"""
4763
4764REPLACEMENTS_VALUE_OUTPUT = """\
4765{
4766 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4767 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4768 "Fake Tester": {
4769 "gtest_tests": [
4770 {
4771 "args": [
4772 "--enable-features=Bar,Baz"
4773 ],
4774 "merge": {
4775 "args": [],
4776 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4777 },
4778 "swarming": {
4779 "can_use_on_swarming_builders": true,
4780 "dimension_sets": [
4781 {
4782 "kvm": "1"
4783 }
4784 ]
4785 },
4786 "test": "foo_test"
4787 }
4788 ]
4789 }
4790}
4791"""
4792
4793REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT = """\
4794{
4795 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4796 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4797 "Fake Tester": {
4798 "gtest_tests": [
4799 {
4800 "args": [
4801 "--enable-features",
4802 "Bar,Baz"
4803 ],
4804 "merge": {
4805 "args": [],
4806 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4807 },
4808 "swarming": {
4809 "can_use_on_swarming_builders": true,
4810 "dimension_sets": [
4811 {
4812 "kvm": "1"
4813 }
4814 ]
4815 },
4816 "test": "foo_test"
4817 }
4818 ]
4819 }
4820}
4821"""
4822
4823
Garrett Beaty1afaccc2020-06-25 19:58:154824class ReplacementTests(TestCase):
Brian Sheedye6ea0ee2019-07-11 02:54:374825 """Tests for the arg replacement feature."""
4826 def test_replacement_valid_remove_no_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154827 fbb = FakeBBGen(self.args,
4828 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374829 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414830 LUCI_MILO_CFG,
4831 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154832 self.create_testing_buildbot_json_file('chromium.test.json',
4833 REPLACEMENTS_REMOVE_OUTPUT)
4834 self.create_testing_buildbot_json_file('chromium.ci.json',
4835 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374836 fbb.check_output_file_consistency(verbose=True)
4837 self.assertFalse(fbb.printed_lines)
4838
4839 def test_replacement_valid_remove_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154840 fbb = FakeBBGen(self.args,
4841 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374842 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:414843 LUCI_MILO_CFG,
4844 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154845 self.create_testing_buildbot_json_file('chromium.test.json',
4846 REPLACEMENTS_REMOVE_OUTPUT)
4847 self.create_testing_buildbot_json_file('chromium.ci.json',
4848 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374849 fbb.check_output_file_consistency(verbose=True)
4850 self.assertFalse(fbb.printed_lines)
4851
4852 def test_replacement_valid_replace_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154853 fbb = FakeBBGen(self.args,
4854 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374855 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:414856 LUCI_MILO_CFG,
4857 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154858 self.create_testing_buildbot_json_file('chromium.test.json',
4859 REPLACEMENTS_VALUE_OUTPUT)
4860 self.create_testing_buildbot_json_file('chromium.ci.json',
4861 REPLACEMENTS_VALUE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374862 fbb.check_output_file_consistency(verbose=True)
4863 self.assertFalse(fbb.printed_lines)
4864
4865 def test_replacement_valid_replace_value_separate_entries(self):
Garrett Beaty1afaccc2020-06-25 19:58:154866 fbb = FakeBBGen(self.args,
4867 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374868 FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES,
Nodir Turakulovfce34292019-12-18 17:05:414869 LUCI_MILO_CFG,
4870 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154871 self.create_testing_buildbot_json_file(
4872 'chromium.test.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
4873 self.create_testing_buildbot_json_file(
4874 'chromium.ci.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374875 fbb.check_output_file_consistency(verbose=True)
4876 self.assertFalse(fbb.printed_lines)
4877
4878 def test_replacement_invalid_key_not_valid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154879 fbb = FakeBBGen(self.args,
4880 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374881 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414882 LUCI_MILO_CFG,
4883 exceptions=FOO_TEST_REPLACEMENTS_INVALID_KEY)
Brian Sheedye6ea0ee2019-07-11 02:54:374884 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
4885 'Given replacement key *'):
4886 fbb.check_output_file_consistency(verbose=True)
4887
4888 def test_replacement_invalid_key_not_found(self):
Garrett Beaty1afaccc2020-06-25 19:58:154889 fbb = FakeBBGen(self.args,
4890 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374891 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414892 LUCI_MILO_CFG,
4893 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Brian Sheedye6ea0ee2019-07-11 02:54:374894 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
4895 'Could not find *'):
4896 fbb.check_output_file_consistency(verbose=True)
4897
Jeff Yoon8154e582019-12-03 23:30:014898
Brian Sheedya31578e2020-05-18 20:24:364899FOO_TEST_SUITE_WITH_MAGIC_ARGS = """\
4900{
4901 'basic_suites': {
4902 'foo_tests': {
4903 'foo_test': {
4904 'args': [
4905 '$$MAGIC_SUBSTITUTION_TestOnlySubstitution',
4906 ],
4907 },
4908 },
4909 },
4910}
4911"""
4912
4913
4914FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS = """\
4915{
4916 'basic_suites': {
4917 'foo_tests': {
4918 'foo_test': {
4919 'args': [
4920 '$$MAGIC_SUBSTITUTION_NotARealSubstitution',
4921 ],
4922 },
4923 },
4924 },
4925}
4926"""
4927
4928
4929MAGIC_SUBSTITUTIONS_OUTPUT = """\
4930{
4931 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4932 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4933 "Fake Tester": {
4934 "gtest_tests": [
4935 {
4936 "args": [
4937 "--magic-substitution-success"
4938 ],
4939 "merge": {
4940 "args": [],
4941 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4942 },
4943 "swarming": {
4944 "can_use_on_swarming_builders": true,
4945 "dimension_sets": [
4946 {
4947 "kvm": "1"
4948 }
4949 ]
4950 },
4951 "test": "foo_test"
4952 }
4953 ]
4954 }
4955}
4956"""
4957
4958
Garrett Beaty1afaccc2020-06-25 19:58:154959class MagicSubstitutionTests(TestCase):
Brian Sheedya31578e2020-05-18 20:24:364960 """Tests for the magic substitution feature."""
4961 def test_valid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:154962 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
4963 FOO_TEST_SUITE_WITH_MAGIC_ARGS, LUCI_MILO_CFG)
4964 self.create_testing_buildbot_json_file('chromium.test.json',
4965 MAGIC_SUBSTITUTIONS_OUTPUT)
4966 self.create_testing_buildbot_json_file('chromium.ci.json',
4967 MAGIC_SUBSTITUTIONS_OUTPUT)
Brian Sheedya31578e2020-05-18 20:24:364968 fbb.check_output_file_consistency(verbose=True)
4969 self.assertFalse(fbb.printed_lines)
4970
4971 def test_invalid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:154972 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
4973 FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS, LUCI_MILO_CFG)
Brian Sheedya31578e2020-05-18 20:24:364974 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
4975 'Magic substitution function *'):
4976 fbb.check_output_file_consistency(verbose=True)
4977
4978
Jeff Yoon8154e582019-12-03 23:30:014979# Matrix compound composition test suites
4980
4981MATRIX_COMPOUND_EMPTY = """\
4982{
4983 'basic_suites': {
4984 'bar_tests': {
4985 'bar_test': {},
4986 },
4987 'foo_tests': {
4988 'foo_test': {},
4989 },
4990 },
4991 'matrix_compound_suites': {
4992 'matrix_tests': {
4993 'foo_tests': {},
4994 'bar_tests': {},
4995 },
4996 },
4997}
4998"""
4999
Jeff Yoon67c3e832020-02-08 07:39:385000MATRIX_COMPOUND_MISSING_IDENTIFIER = """\
Jeff Yoon8154e582019-12-03 23:30:015001{
5002 'basic_suites': {
5003 'foo_tests': {
5004 'foo_test': {},
5005 },
5006 },
5007 'matrix_compound_suites': {
5008 'matrix_tests': {
5009 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385010 'variants': [
5011 {
5012 'swarming': {
5013 'dimension_sets': [
5014 {
5015 'foo': 'bar',
5016 },
5017 ],
Jeff Yoon8154e582019-12-03 23:30:015018 },
Jeff Yoon67c3e832020-02-08 07:39:385019 },
5020 ],
Jeff Yoon8154e582019-12-03 23:30:015021 },
5022 },
5023 },
5024}
5025"""
5026
5027MATRIX_MISMATCHED_SWARMING_LENGTH = """\
5028{
5029 'basic_suites': {
5030 'foo_tests': {
5031 'foo_test': {
5032 'swarming': {
5033 'dimension_sets': [
5034 {
5035 'hello': 'world',
5036 }
5037 ],
5038 },
5039 },
5040 },
5041 },
5042 'matrix_compound_suites': {
5043 'matrix_tests': {
5044 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385045 'variants': [
5046 {
5047 'identifier': 'test',
5048 'swarming': {
5049 'dimension_sets': [
5050 {
5051 'foo': 'bar',
5052 },
5053 {
5054 'bar': 'foo',
5055 }
5056 ],
Jeff Yoon8154e582019-12-03 23:30:015057 },
Jeff Yoon67c3e832020-02-08 07:39:385058 },
5059 ],
Jeff Yoon8154e582019-12-03 23:30:015060 },
5061 },
5062 },
5063}
5064"""
5065
5066MATRIX_REF_NONEXISTENT = """\
5067{
5068 'basic_suites': {
5069 'foo_tests': {
5070 'foo_test': {},
5071 },
5072 },
5073 'matrix_compound_suites': {
5074 'matrix_tests': {
5075 'bar_test': {},
5076 },
5077 },
5078}
5079"""
5080
Jeff Yoon67c3e832020-02-08 07:39:385081MATRIX_COMPOUND_REF_COMPOSITION = """\
Jeff Yoon8154e582019-12-03 23:30:015082{
5083 'basic_suites': {
5084 'foo_tests': {
5085 'foo_test': {},
5086 },
5087 },
5088 'compound_suites': {
5089 'sample_composition': {
5090 'foo_tests': {},
5091 },
5092 },
5093 'matrix_compound_suites': {
5094 'matrix_tests': {
5095 'sample_composition': {},
5096 },
5097 },
5098}
5099"""
5100
5101MATRIX_COMPOSITION_REF_MATRIX = """\
5102{
5103 'basic_suites': {
5104 'foo_tests': {
5105 'foo_test': {},
5106 },
5107 },
5108 'matrix_compound_suites': {
5109 'a_test': {
5110 'foo_tests': {},
5111 },
5112 'matrix_tests': {
5113 'a_test': {},
5114 },
5115 },
5116}
5117"""
5118
Jeff Yoon67c3e832020-02-08 07:39:385119MATRIX_COMPOUND_VARIANTS_MIXINS_MERGE = """\
5120{
5121 'basic_suites': {
5122 'foo_tests': {
5123 'set': {
5124 'mixins': [ 'test_mixin' ],
5125 },
5126 },
5127 },
5128 'matrix_compound_suites': {
5129 'matrix_tests': {
5130 'foo_tests': {
5131 'variants': [
5132 {
5133 'mixins': [ 'dimension_mixin' ],
5134 },
5135 ],
5136 },
5137 },
5138 },
5139}
5140"""
5141
5142MATRIX_COMPOUND_VARIANTS_MIXINS = """\
5143{
5144 'basic_suites': {
5145 'foo_tests': {
5146 'set': {
5147 'mixins': [ 'test_mixin' ],
5148 },
5149 },
5150 },
5151 'matrix_compound_suites': {
5152 'matrix_tests': {
5153 'foo_tests': {
5154 'variants': [
5155 {
5156 'mixins': [
5157 'dimension_mixin',
5158 'waterfall_mixin',
5159 'builder_mixin',
5160 'random_mixin'
5161 ],
5162 },
5163 ],
5164 },
5165 },
5166 },
5167}
5168"""
5169
5170MATRIX_COMPOUND_VARIANTS_MIXINS_REMOVE = """\
5171{
5172 'basic_suites': {
5173 'foo_tests': {
5174 'set': {
5175 'remove_mixins': ['builder_mixin'],
5176 },
5177 },
5178 },
5179 'matrix_compound_suites': {
5180 'matrix_tests': {
5181 'foo_tests': {
5182 'variants': [
5183 {
5184 'mixins': [ 'builder_mixin' ],
5185 }
5186 ],
5187 },
5188 },
5189 },
5190}
5191"""
5192
5193MATRIX_COMPOUND_CONFLICTING_TEST_SUITES = """\
5194{
5195 'basic_suites': {
5196 'bar_tests': {
5197 'baz_tests': {
5198 'args': [
5199 '--bar',
5200 ],
5201 }
5202 },
5203 'foo_tests': {
5204 'baz_tests': {
5205 'args': [
5206 '--foo',
5207 ],
5208 }
5209 },
5210 },
5211 'matrix_compound_suites': {
5212 'matrix_tests': {
5213 'bar_tests': {
5214 'variants': [
5215 {
5216 'identifier': 'bar',
5217 }
5218 ],
5219 },
5220 'foo_tests': {
5221 'variants': [
5222 {
5223 'identifier': 'foo'
5224 }
5225 ]
5226 }
5227 },
5228 },
5229}
5230"""
5231
5232MATRIX_COMPOUND_TARGETS_ARGS = """\
5233{
5234 'basic_suites': {
5235 'foo_tests': {
5236 'args_test': {
5237 'args': [
5238 '--iam'
5239 ],
5240 },
5241 }
5242 },
5243 'matrix_compound_suites': {
5244 'matrix_tests': {
5245 'foo_tests': {
5246 'variants': [
5247 {
5248 'identifier': 'args',
5249 'args': [
5250 '--anarg',
5251 ],
5252 },
5253 {
5254 'identifier': 'swarming',
5255 'swarming': {
5256 'a': 'b',
5257 'dimension_sets': [
5258 {
5259 'hello': 'world',
5260 }
5261 ]
5262 }
5263 },
5264 {
5265 'identifier': 'mixins',
5266 'mixins': [ 'dimension_mixin' ],
5267 }
5268 ],
5269 },
5270 },
5271 },
5272}
5273"""
5274
5275MATRIX_COMPOUND_TARGETS_MIXINS = """\
5276{
5277 'basic_suites': {
5278 'foo_tests': {
5279 'mixins_test': {
5280 'mixins': [ 'test_mixin' ],
5281 },
5282 }
5283 },
5284 'matrix_compound_suites': {
5285 'matrix_tests': {
5286 'foo_tests': {
Jeff Yoon85fb8df2020-08-20 16:47:435287 'mixins': [ 'random_mixin' ],
Jeff Yoon67c3e832020-02-08 07:39:385288 'variants': [
5289 {
5290 'identifier': 'args',
5291 'args': [
5292 '--anarg',
5293 ],
5294 },
5295 {
5296 'identifier': 'swarming',
5297 'swarming': {
5298 'a': 'b',
5299 'dimension_sets': [
5300 {
5301 'hello': 'world',
5302 }
5303 ]
5304 }
5305 },
5306 {
5307 'identifier': 'mixins',
5308 'mixins': [ 'dimension_mixin' ],
5309 }
5310 ],
5311 },
5312 },
5313 },
5314}
5315"""
5316
5317MATRIX_COMPOUND_TARGETS_SWARMING = """\
5318{
5319 'basic_suites': {
5320 'foo_tests': {
5321 'swarming_test': {
5322 'swarming': {
5323 'foo': 'bar',
5324 'dimension_sets': [
5325 {
5326 'foo': 'bar',
5327 },
5328 ],
5329 },
5330 },
5331 }
5332 },
5333 'matrix_compound_suites': {
5334 'matrix_tests': {
5335 'foo_tests': {
5336 'variants': [
5337 {
5338 'identifier': 'args',
5339 'args': [
5340 '--anarg',
5341 ],
5342 },
5343 {
5344 'identifier': 'swarming',
5345 'swarming': {
5346 'a': 'b',
5347 'dimension_sets': [
5348 {
5349 'hello': 'world',
5350 }
5351 ]
5352 }
5353 },
5354 {
5355 'identifier': 'mixins',
5356 'mixins': [ 'dimension_mixin' ],
5357 }
5358 ],
5359 },
5360 },
5361 },
5362}
5363"""
Jeff Yoon8154e582019-12-03 23:30:015364
Jeff Yoonda581c32020-03-06 03:56:055365MATRIX_COMPOUND_VARIANTS_REF = """\
5366{
5367 'basic_suites': {
5368 'foo_tests': {
5369 'swarming_test': {},
5370 }
5371 },
5372 'matrix_compound_suites': {
5373 'matrix_tests': {
5374 'foo_tests': {
5375 'variants': [
5376 'a_variant'
5377 ],
5378 },
5379 },
5380 },
5381}
5382"""
5383
Rakib M. Hasanc9e01c62020-07-27 22:48:125384MATRIX_COMPOUND_TEST_WITH_TEST_KEY = """\
5385{
5386 'basic_suites': {
5387 'foo_tests': {
5388 'swarming_test': {
5389 'test': 'foo_test_apk'
5390 },
5391 }
5392 },
5393 'matrix_compound_suites': {
5394 'matrix_tests': {
5395 'foo_tests': {
5396 'variants': [
5397 'a_variant',
5398 ],
5399 },
5400 },
5401 },
5402}
5403"""
5404
Jeff Yoonda581c32020-03-06 03:56:055405MATRIX_COMPOUND_MIXED_VARIANTS_REF = """\
5406{
5407 'basic_suites': {
5408 'foo_tests': {
5409 'swarming_test': {},
5410 }
5411 },
5412 'matrix_compound_suites': {
5413 'matrix_tests': {
5414 'foo_tests': {
5415 'variants': [
5416 'a_variant',
5417 {
5418 'args': [
5419 'a',
5420 'b'
5421 ],
5422 'identifier': 'ab',
5423 }
5424 ],
5425 },
5426 },
5427 },
5428}
5429"""
5430
5431VARIANTS_FILE = """\
5432{
5433 'a_variant': {
5434 'args': [
5435 '--platform',
5436 'device',
5437 '--version',
5438 '1'
5439 ],
5440 'identifier': 'a_variant'
5441 }
5442}
5443"""
5444
5445MULTI_VARIANTS_FILE = """\
5446{
5447 'a_variant': {
5448 'args': [
5449 '--platform',
5450 'device',
5451 '--version',
5452 '1'
5453 ],
5454 'identifier': 'a_variant'
5455 },
5456 'b_variant': {
5457 'args': [
5458 '--platform',
5459 'sim',
5460 '--version',
5461 '2'
5462 ],
5463 'identifier': 'b_variant'
5464 }
5465}
5466"""
5467
Jeff Yoon8154e582019-12-03 23:30:015468# # Dictionary composition test suite outputs
5469
5470MATRIX_COMPOUND_EMPTY_OUTPUT = """\
5471{
5472 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5473 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5474 "Fake Tester": {
Jeff Yoon67c3e832020-02-08 07:39:385475 "gtest_tests": []
Jeff Yoon8154e582019-12-03 23:30:015476 }
5477}
5478"""
5479
Rakib M. Hasanc9e01c62020-07-27 22:48:125480MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT = """\
5481{
5482 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5483 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5484 "Fake Tester": {
5485 "gtest_tests": [
5486 {
5487 "args": [
5488 "--platform",
5489 "device",
5490 "--version",
5491 "1"
5492 ],
5493 "merge": {
5494 "args": [],
5495 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5496 },
5497 "name": "swarming_test_a_variant",
5498 "swarming": {
5499 "can_use_on_swarming_builders": true
5500 },
5501 "test": "foo_test_apk"
5502 }
5503 ]
5504 }
5505}
5506"""
5507
Jeff Yoon67c3e832020-02-08 07:39:385508MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS = """\
Jeff Yoon8154e582019-12-03 23:30:015509{
5510 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5511 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5512 "Fake Tester": {
5513 "gtest_tests": [
5514 {
Jeff Yoon67c3e832020-02-08 07:39:385515 "args": [
5516 "--iam",
5517 "--anarg"
5518 ],
Jeff Yoon8154e582019-12-03 23:30:015519 "merge": {
5520 "args": [],
5521 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5522 },
Jeff Yoon67c3e832020-02-08 07:39:385523 "name": "args_test_args",
5524 "swarming": {
5525 "can_use_on_swarming_builders": true
5526 },
5527 "test": "args_test"
5528 },
5529 {
5530 "args": [
5531 "--iam"
5532 ],
5533 "merge": {
5534 "args": [],
5535 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5536 },
5537 "name": "args_test_mixins",
5538 "swarming": {
5539 "can_use_on_swarming_builders": true,
5540 "dimension_sets": [
5541 {
5542 "iama": "mixin"
5543 }
5544 ]
5545 },
5546 "test": "args_test"
5547 },
5548 {
5549 "args": [
5550 "--iam"
5551 ],
5552 "merge": {
5553 "args": [],
5554 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5555 },
5556 "name": "args_test_swarming",
5557 "swarming": {
5558 "a": "b",
5559 "can_use_on_swarming_builders": true,
5560 "dimension_sets": [
5561 {
5562 "hello": "world"
5563 }
5564 ]
5565 },
5566 "test": "args_test"
5567 }
5568 ]
5569 }
5570}
5571"""
5572
5573MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS = """\
5574{
5575 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5576 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5577 "Fake Tester": {
5578 "gtest_tests": [
5579 {
5580 "args": [
5581 "--anarg"
5582 ],
5583 "merge": {
5584 "args": [],
5585 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5586 },
5587 "name": "mixins_test_args",
5588 "swarming": {
5589 "can_use_on_swarming_builders": true,
5590 "value": "test"
5591 },
Jeff Yoon85fb8df2020-08-20 16:47:435592 "test": "mixins_test",
5593 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385594 },
5595 {
5596 "args": [],
5597 "merge": {
5598 "args": [],
5599 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5600 },
5601 "name": "mixins_test_mixins",
5602 "swarming": {
5603 "can_use_on_swarming_builders": true,
5604 "dimension_sets": [
5605 {
5606 "iama": "mixin"
5607 }
5608 ],
5609 "value": "test"
5610 },
Jeff Yoon85fb8df2020-08-20 16:47:435611 "test": "mixins_test",
5612 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385613 },
5614 {
5615 "args": [],
5616 "merge": {
5617 "args": [],
5618 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5619 },
5620 "name": "mixins_test_swarming",
5621 "swarming": {
5622 "a": "b",
5623 "can_use_on_swarming_builders": true,
5624 "dimension_sets": [
5625 {
5626 "hello": "world"
5627 }
5628 ],
5629 "value": "test"
5630 },
Jeff Yoon85fb8df2020-08-20 16:47:435631 "test": "mixins_test",
5632 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385633 }
5634 ]
5635 }
5636}
5637"""
5638
5639MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING = """\
5640{
5641 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5642 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5643 "Fake Tester": {
5644 "gtest_tests": [
5645 {
5646 "args": [
5647 "--anarg"
5648 ],
5649 "merge": {
5650 "args": [],
5651 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5652 },
5653 "name": "swarming_test_args",
Jeff Yoon8154e582019-12-03 23:30:015654 "swarming": {
5655 "can_use_on_swarming_builders": true,
5656 "dimension_sets": [
5657 {
5658 "foo": "bar"
5659 }
Jeff Yoon67c3e832020-02-08 07:39:385660 ],
5661 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015662 },
Jeff Yoon67c3e832020-02-08 07:39:385663 "test": "swarming_test"
5664 },
Jeff Yoon8154e582019-12-03 23:30:015665 {
Jeff Yoon67c3e832020-02-08 07:39:385666 "args": [],
Jeff Yoon8154e582019-12-03 23:30:015667 "merge": {
5668 "args": [],
5669 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5670 },
Jeff Yoon67c3e832020-02-08 07:39:385671 "name": "swarming_test_mixins",
Jeff Yoon8154e582019-12-03 23:30:015672 "swarming": {
5673 "can_use_on_swarming_builders": true,
5674 "dimension_sets": [
5675 {
5676 "foo": "bar",
Jeff Yoon67c3e832020-02-08 07:39:385677 "iama": "mixin"
5678 }
5679 ],
5680 "foo": "bar"
5681 },
5682 "test": "swarming_test"
5683 },
5684 {
5685 "args": [],
5686 "merge": {
5687 "args": [],
5688 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5689 },
5690 "name": "swarming_test_swarming",
5691 "swarming": {
5692 "a": "b",
5693 "can_use_on_swarming_builders": true,
5694 "dimension_sets": [
5695 {
5696 "foo": "bar",
Jeff Yoon8154e582019-12-03 23:30:015697 "hello": "world"
5698 }
Jeff Yoon67c3e832020-02-08 07:39:385699 ],
5700 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015701 },
Jeff Yoon67c3e832020-02-08 07:39:385702 "test": "swarming_test"
Jeff Yoon8154e582019-12-03 23:30:015703 }
5704 ]
5705 }
5706}
5707"""
5708
Jeff Yoonda581c32020-03-06 03:56:055709MATRIX_COMPOUND_VARIANTS_REF_OUTPUT = """\
5710{
5711 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5712 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5713 "Fake Tester": {
5714 "gtest_tests": [
5715 {
5716 "args": [
5717 "--platform",
5718 "device",
5719 "--version",
5720 "1"
5721 ],
5722 "merge": {
5723 "args": [],
5724 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5725 },
5726 "name": "swarming_test_a_variant",
5727 "swarming": {
5728 "can_use_on_swarming_builders": true
5729 },
5730 "test": "swarming_test"
5731 }
5732 ]
5733 }
5734}
5735"""
5736
Garrett Beaty1afaccc2020-06-25 19:58:155737
5738class MatrixCompositionTests(TestCase):
Jeff Yoon8154e582019-12-03 23:30:015739
5740 def test_good_structure_no_configs(self):
5741 """
5742 Tests matrix compound test suite structure with no configs,
5743 no conflicts and no bad references
5744 """
Garrett Beaty1afaccc2020-06-25 19:58:155745 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5746 MATRIX_COMPOUND_EMPTY, LUCI_MILO_CFG)
5747 self.create_testing_buildbot_json_file('chromium.test.json',
5748 MATRIX_COMPOUND_EMPTY_OUTPUT)
5749 self.create_testing_buildbot_json_file('chromium.ci.json',
5750 MATRIX_COMPOUND_EMPTY_OUTPUT)
Jeff Yoon8154e582019-12-03 23:30:015751 fbb.check_output_file_consistency(verbose=True)
5752 self.assertFalse(fbb.printed_lines)
5753
Jeff Yoon67c3e832020-02-08 07:39:385754 def test_missing_identifier(self):
Jeff Yoon8154e582019-12-03 23:30:015755 """
Jeff Yoon67c3e832020-02-08 07:39:385756 Variant is missing an identifier
Jeff Yoon8154e582019-12-03 23:30:015757 """
Garrett Beaty1afaccc2020-06-25 19:58:155758 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5759 MATRIX_COMPOUND_MISSING_IDENTIFIER, LUCI_MILO_CFG)
Jeff Yoon67c3e832020-02-08 07:39:385760 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5761 'Missing required identifier field in matrix compound suite*'):
5762 fbb.check_output_file_consistency(verbose=True)
Jeff Yoon8154e582019-12-03 23:30:015763
5764 def test_mismatched_swarming_length(self):
5765 """
5766 Swarming dimension set length mismatch test. Composition set > basic set
5767 """
Garrett Beaty1afaccc2020-06-25 19:58:155768 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5769 MATRIX_MISMATCHED_SWARMING_LENGTH, LUCI_MILO_CFG)
Jeff Yoon8154e582019-12-03 23:30:015770 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5771 'Error merging lists by key *'):
5772 fbb.check_output_file_consistency(verbose=True)
5773
Jeff Yoon8154e582019-12-03 23:30:015774 def test_noexistent_ref(self):
5775 """
5776 Test referencing a non-existent basic test suite
5777 """
Garrett Beaty1afaccc2020-06-25 19:58:155778 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5779 MATRIX_REF_NONEXISTENT, LUCI_MILO_CFG)
Jeff Yoon8154e582019-12-03 23:30:015780 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5781 'Unable to find reference to *'):
5782 fbb.check_output_file_consistency(verbose=True)
5783
5784 def test_ref_to_composition(self):
5785 """
5786 Test referencing another composition test suite
5787 """
Garrett Beaty1afaccc2020-06-25 19:58:155788 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5789 MATRIX_COMPOUND_REF_COMPOSITION, LUCI_MILO_CFG)
Jeff Yoon8154e582019-12-03 23:30:015790 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5791 'matrix_compound_suites may not refer to other *'):
5792 fbb.check_output_file_consistency(verbose=True)
5793
5794 def test_ref_to_matrix(self):
5795 """
5796 Test referencing another matrix test suite
5797 """
Garrett Beaty1afaccc2020-06-25 19:58:155798 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5799 MATRIX_COMPOSITION_REF_MATRIX, LUCI_MILO_CFG)
Jeff Yoon8154e582019-12-03 23:30:015800 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5801 'matrix_compound_suites may not refer to other *'):
5802 fbb.check_output_file_consistency(verbose=True)
5803
Jeff Yoon67c3e832020-02-08 07:39:385804 def test_conflicting_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:155805 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5806 MATRIX_COMPOUND_CONFLICTING_TEST_SUITES, LUCI_MILO_CFG)
Jeff Yoon67c3e832020-02-08 07:39:385807 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5808 'Conflicting test definitions.*'):
5809 fbb.check_input_file_consistency(verbose=True)
5810 self.assertFalse(fbb.printed_lines)
5811
5812 def test_variants_swarming_dict_merge_args(self):
5813 """
5814 Test targets with swarming dictionary defined by both basic and matrix
5815 """
Garrett Beaty1afaccc2020-06-25 19:58:155816 fbb = FakeBBGen(self.args,
5817 MATRIX_GTEST_SUITE_WATERFALL,
5818 MATRIX_COMPOUND_TARGETS_ARGS,
5819 LUCI_MILO_CFG,
5820 mixins=SWARMING_MIXINS)
5821 self.create_testing_buildbot_json_file(
5822 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
5823 self.create_testing_buildbot_json_file(
5824 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
Jeff Yoon67c3e832020-02-08 07:39:385825 fbb.check_output_file_consistency(verbose=True)
5826 self.assertFalse(fbb.printed_lines)
5827
5828 def test_variants_swarming_dict_merge_mixins(self):
5829 """
5830 Test targets with swarming dictionary defined by both basic and matrix
5831 """
Garrett Beaty1afaccc2020-06-25 19:58:155832 fbb = FakeBBGen(self.args,
5833 MATRIX_GTEST_SUITE_WATERFALL,
5834 MATRIX_COMPOUND_TARGETS_MIXINS,
5835 LUCI_MILO_CFG,
5836 mixins=SWARMING_MIXINS)
5837 self.create_testing_buildbot_json_file(
5838 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
5839 self.create_testing_buildbot_json_file(
5840 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
Jeff Yoon67c3e832020-02-08 07:39:385841 fbb.check_output_file_consistency(verbose=True)
5842 self.assertFalse(fbb.printed_lines)
5843
5844 def test_variants_swarming_dict_swarming(self):
5845 """
5846 Test targets with swarming dictionary defined by both basic and matrix
5847 """
Garrett Beaty1afaccc2020-06-25 19:58:155848 fbb = FakeBBGen(self.args,
5849 MATRIX_GTEST_SUITE_WATERFALL,
5850 MATRIX_COMPOUND_TARGETS_SWARMING,
5851 LUCI_MILO_CFG,
5852 mixins=SWARMING_MIXINS)
5853 self.create_testing_buildbot_json_file(
5854 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
5855 self.create_testing_buildbot_json_file(
5856 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
Jeff Yoon67c3e832020-02-08 07:39:385857 fbb.check_output_file_consistency(verbose=True)
5858 self.assertFalse(fbb.printed_lines)
5859
Rakib M. Hasanc9e01c62020-07-27 22:48:125860 def test_variant_test_suite_with_test_key(self):
5861 """
5862 Test targets in matrix compound test suites with variants
5863 """
5864 fbb = FakeBBGen(self.args,
5865 MATRIX_GTEST_SUITE_WATERFALL,
5866 MATRIX_COMPOUND_TEST_WITH_TEST_KEY,
5867 LUCI_MILO_CFG,
5868 variants=VARIANTS_FILE)
5869 self.create_testing_buildbot_json_file(
5870 'chromium.test.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
5871 self.create_testing_buildbot_json_file(
5872 'chromium.ci.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
5873 fbb.check_output_file_consistency(verbose=True)
5874 self.assertFalse(fbb.printed_lines)
5875
Jeff Yoonda581c32020-03-06 03:56:055876 def test_variants_pyl_ref(self):
5877 """Test targets with variants string ref"""
Garrett Beaty1afaccc2020-06-25 19:58:155878 fbb = FakeBBGen(self.args,
5879 MATRIX_GTEST_SUITE_WATERFALL,
5880 MATRIX_COMPOUND_VARIANTS_REF,
5881 LUCI_MILO_CFG,
5882 variants=VARIANTS_FILE)
5883 self.create_testing_buildbot_json_file('chromium.test.json',
5884 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
5885 self.create_testing_buildbot_json_file('chromium.ci.json',
5886 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jeff Yoonda581c32020-03-06 03:56:055887 fbb.check_output_file_consistency(verbose=True)
5888 self.assertFalse(fbb.printed_lines)
5889
5890 def test_variants_pyl_no_ref(self):
5891 """Test targets with variants string ref, not defined in variants.pyl"""
Garrett Beaty1afaccc2020-06-25 19:58:155892 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
5893 MATRIX_COMPOUND_VARIANTS_REF, LUCI_MILO_CFG)
Jeff Yoonda581c32020-03-06 03:56:055894 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5895 'Missing variant definition for *'):
5896 fbb.check_output_file_consistency(verbose=True)
5897
5898 def test_variants_pyl_all_unreferenced(self):
5899 """Test targets with variants in variants.pyl, unreferenced in tests"""
Garrett Beaty1afaccc2020-06-25 19:58:155900 fbb = FakeBBGen(self.args,
5901 MATRIX_GTEST_SUITE_WATERFALL,
5902 MATRIX_COMPOUND_MIXED_VARIANTS_REF,
5903 LUCI_MILO_CFG,
5904 variants=MULTI_VARIANTS_FILE)
5905 # self.create_testing_buildbot_json_file(
5906 # 'chromium.test.json', MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jeff Yoonda581c32020-03-06 03:56:055907 with self.assertRaisesRegexp(generate_buildbot_json.BBGenErr,
5908 'The following variants were unreferenced *'):
5909 fbb.check_input_file_consistency(verbose=True)
5910
Jeff Yoon8154e582019-12-03 23:30:015911
Kenneth Russelleb60cbd22017-12-05 07:54:285912if __name__ == '__main__':
5913 unittest.main()