blob: 2bc82e19fed95e38bb1cfb0ad18bc913b127aa6a [file] [log] [blame]
Jamie Madillcf4f8c72021-05-20 19:24:231#!/usr/bin/env vpython3
Avi Drissmandfd880852022-09-15 20:11:092# Copyright 2017 The Chromium Authors
Kenneth Russelleb60cbd22017-12-05 07:54:283# 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
Joshua Hood56c673c2022-03-02 20:29:3317# pylint: disable=super-with-arguments
18
Nodir Turakulovfce34292019-12-18 17:05:4119EMPTY_PYL_FILE = """\
20{
21}
22"""
23
Garrett Beaty1afaccc2020-06-25 19:58:1524# Use this value to refer to the directory containing this code
25# The tests use a fake filesystem and python filesystem calls are monkey-patched
26# to use the fake filesystem, which affects abspath
27THIS_DIR = os.path.dirname(os.path.abspath(__file__))
28
29
30class TestCase(fake_filesystem_unittest.TestCase):
31 def setUp(self):
32 self.setUpPyfakefs()
33 self.fs.cwd = THIS_DIR
34 self.args = generate_buildbot_json.BBJSONGenerator.parse_args([])
35
36 def override_args(self, **kwargs):
Jamie Madillcf4f8c72021-05-20 19:24:2337 for k, v in kwargs.items():
Garrett Beaty1afaccc2020-06-25 19:58:1538 setattr(self.args, k, v)
39
40 def create_testing_buildbot_json_file(self, path, contents):
41 return self.fs.create_file(os.path.join(THIS_DIR, path), contents=contents)
42
Kenneth Russelleb60cbd22017-12-05 07:54:2843
Garrett Beaty777c2912020-05-07 00:54:3344@contextlib.contextmanager
45def dump_on_failure(fbb, dump=True):
46 try:
47 yield
48 except:
49 if dump:
50 for l in fbb.printed_lines:
Jamie Madillcf4f8c72021-05-20 19:24:2351 print(l)
Garrett Beaty777c2912020-05-07 00:54:3352 raise
53
Kenneth Russelleb60cbd22017-12-05 07:54:2854class FakeBBGen(generate_buildbot_json.BBJSONGenerator):
Garrett Beaty1afaccc2020-06-25 19:58:1555 def __init__(self,
56 args,
57 waterfalls,
58 test_suites,
59 luci_milo_cfg,
Garrett Beaty4f3e9212020-06-25 20:21:4960 project_pyl='{"validate_source_side_specs_have_builder": True}',
Nodir Turakulovfce34292019-12-18 17:05:4161 exceptions=EMPTY_PYL_FILE,
62 mixins=EMPTY_PYL_FILE,
Jeff Yoonda581c32020-03-06 03:56:0563 gn_isolate_map=EMPTY_PYL_FILE,
64 variants=EMPTY_PYL_FILE):
Garrett Beaty1afaccc2020-06-25 19:58:1565 super(FakeBBGen, self).__init__(args)
66
67 pyl_files_dir = args.pyl_files_dir or THIS_DIR
68 infra_config_dir = args.infra_config_dir
69
70 files = {
71 (pyl_files_dir, 'waterfalls.pyl'): waterfalls,
72 (pyl_files_dir, 'test_suites.pyl'): test_suites,
73 (pyl_files_dir, 'test_suite_exceptions.pyl'): exceptions,
74 (pyl_files_dir, 'mixins.pyl'): mixins,
75 (pyl_files_dir, 'gn_isolate_map.pyl'): gn_isolate_map,
Chong Guee622242020-10-28 18:17:3576 (pyl_files_dir, 'gn_isolate_map2.pyl'): GPU_TELEMETRY_GN_ISOLATE_MAP,
Garrett Beaty1afaccc2020-06-25 19:58:1577 (pyl_files_dir, 'variants.pyl'): variants,
Garrett Beaty4f3e9212020-06-25 20:21:4978 (infra_config_dir, 'generated/project.pyl'): project_pyl,
Garrett Beatyff6e98d2021-09-02 17:00:1679 (infra_config_dir, 'generated/luci/luci-milo.cfg'): luci_milo_cfg,
80 (infra_config_dir, 'generated/luci/luci-milo-dev.cfg'): '',
Kenneth Russelleb60cbd22017-12-05 07:54:2881 }
Jamie Madillcf4f8c72021-05-20 19:24:2382 for (d, filename), content in files.items():
Garrett Beaty4f3e9212020-06-25 20:21:4983 if content is None:
84 continue
Garrett Beaty1afaccc2020-06-25 19:58:1585 path = os.path.join(d, filename)
86 parent = os.path.abspath(os.path.dirname(path))
87 if not os.path.exists(parent):
88 os.makedirs(parent)
89 with open(path, 'w') as f:
90 f.write(content)
91
Stephen Martinis7eb8b612018-09-21 00:17:5092 self.printed_lines = []
93
94 def print_line(self, line):
95 self.printed_lines.append(line)
Kenneth Russelleb60cbd22017-12-05 07:54:2896
Kenneth Russell73c3bd8b2018-10-19 22:30:1997 # pragma pylint: disable=arguments-differ
98 def check_output_file_consistency(self, verbose=False, dump=True):
Garrett Beaty777c2912020-05-07 00:54:3399 with dump_on_failure(self, dump=verbose and dump):
Kenneth Russell73c3bd8b2018-10-19 22:30:19100 super(FakeBBGen, self).check_output_file_consistency(verbose)
Joshua Hood56c673c2022-03-02 20:29:33101 # pragma pylint: enable=arguments-differ
Kenneth Russell73c3bd8b2018-10-19 22:30:19102
Kenneth Russelleb60cbd22017-12-05 07:54:28103
104FOO_GTESTS_WATERFALL = """\
105[
106 {
Greg Gutermanf60eb052020-03-12 17:40:01107 'project': 'chromium',
108 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28109 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43110 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28111 'Fake Tester': {
112 'swarming': {
113 'dimension_sets': [
114 {
115 'kvm': '1',
116 },
117 ],
118 },
119 'test_suites': {
120 'gtest_tests': 'foo_tests',
121 },
122 },
123 },
124 },
125]
126"""
127
Kenneth Russell650995a2018-05-03 21:17:01128FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL = """\
129[
130 {
Greg Gutermanf60eb052020-03-12 17:40:01131 'project': 'chromium',
132 'bucket': 'ci',
Kenneth Russell650995a2018-05-03 21:17:01133 'name': 'chromium.test',
134 'machines': {
135 'Fake Tester': {
136 'test_suites': {
137 'gtest_tests': 'foo_tests',
138 },
139 'args': [
140 '--enable-features=Baz',
141 ],
142 },
143 },
144 },
145]
146"""
147
Ben Pastenea9e583b2019-01-16 02:57:26148FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL = """\
149[
150 {
Greg Gutermanf60eb052020-03-12 17:40:01151 'project': 'chromium',
152 'bucket': 'ci',
Ben Pastenea9e583b2019-01-16 02:57:26153 'name': 'chromium.test',
154 'machines': {
155 'Fake Tester': {
156 'swarming': {
157 'dimension_sets': [
158 {
159 "device_type": "foo_device",
160 },
161 ],
162 },
163 'test_suites': {
164 'gtest_tests': 'foo_tests',
165 },
166 'os_type': 'chromeos',
167 },
168 },
169 },
170]
171"""
Stephen Martinisf83893722018-09-19 00:02:18172
Kenneth Russell8a386d42018-06-02 09:48:01173FOO_LINUX_GTESTS_WATERFALL = """\
174[
175 {
Greg Gutermanf60eb052020-03-12 17:40:01176 'project': 'chromium',
177 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01178 'name': 'chromium.test',
179 'machines': {
180 'Fake Tester': {
181 'os_type': 'linux',
182 'test_suites': {
183 'gtest_tests': 'foo_tests',
184 },
185 },
186 },
187 },
188]
189"""
190
Kenneth Russelleb60cbd22017-12-05 07:54:28191COMPOSITION_GTEST_SUITE_WATERFALL = """\
192[
193 {
Greg Gutermanf60eb052020-03-12 17:40:01194 'project': 'chromium',
195 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28196 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43197 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28198 'Fake Tester': {
199 'test_suites': {
200 'gtest_tests': 'composition_tests',
201 },
202 },
203 },
204 },
205]
206"""
207
John Budorickedfe7f872018-01-23 15:27:22208COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL = """\
209[
210 {
Greg Gutermanf60eb052020-03-12 17:40:01211 'project': 'chromium',
212 'bucket': 'ci',
John Budorickedfe7f872018-01-23 15:27:22213 'name': 'chromium.test',
214 'machines': {
215 'Fake Tester': {
216 'test_suites': {
217 'gtest_tests': 'composition_tests',
218 },
219 'args': [
220 '--this-is-an-argument',
221 ],
222 },
223 },
224 },
225]
226"""
227
Kenneth Russelleb60cbd22017-12-05 07:54:28228FOO_ISOLATED_SCRIPTS_WATERFALL = """\
229[
230 {
Greg Gutermanf60eb052020-03-12 17:40:01231 'project': 'chromium',
232 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28233 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43234 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28235 'Fake Tester': {
236 'test_suites': {
237 'isolated_scripts': 'composition_tests',
238 },
239 },
240 },
241 },
242]
243"""
244
Dirk Pranke0e879b22020-07-16 23:53:56245FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID = """\
246[
247 {
248 'project': 'chromium',
249 'bucket': 'ci',
250 'name': 'chromium.test',
251 'machines': {
252 'Fake Tester': {
Yuly Novikov26dd47052021-02-11 00:57:14253 'os_type': 'android',
Dirk Pranke0e879b22020-07-16 23:53:56254 'test_suites': {
255 'isolated_scripts': 'composition_tests',
256 },
257 'use_android_presentation': True,
258 },
259 },
260 },
261]
262"""
263
Kenneth Russelleb60cbd22017-12-05 07:54:28264FOO_SCRIPT_WATERFALL = """\
265[
266 {
Greg Gutermanf60eb052020-03-12 17:40:01267 'project': 'chromium',
268 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28269 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43270 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28271 'Fake Tester': {
272 'test_suites': {
273 'scripts': 'foo_scripts',
274 },
275 },
276 },
277 },
278]
279"""
280
Brian Sheedy158cd0f2019-04-26 01:12:44281FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS = """\
282[
283 {
Greg Gutermanf60eb052020-03-12 17:40:01284 'project': 'chromium',
285 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44286 'name': 'chromium.test',
287 'machines': {
288 'Fake Tester': {
289 'forbid_script_tests': True,
290 'test_suites': {
291 'scripts': 'foo_scripts',
292 },
293 },
294 },
295 },
296]
297"""
298
299FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS = """\
300[
301 {
Greg Gutermanf60eb052020-03-12 17:40:01302 'project': 'chromium',
303 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44304 'name': 'chromium.test',
305 'forbid_script_tests': True,
306 'machines': {
307 'Fake Tester': {
308 'test_suites': {
309 'scripts': 'foo_scripts',
310 },
311 },
312 },
313 },
314]
315"""
316
Kenneth Russelleb60cbd22017-12-05 07:54:28317FOO_JUNIT_WATERFALL = """\
318[
319 {
Greg Gutermanf60eb052020-03-12 17:40:01320 'project': 'chromium',
321 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28322 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43323 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28324 'Fake Tester': {
325 'test_suites': {
326 'junit_tests': 'composition_tests',
327 },
328 },
329 },
330 },
331]
332"""
333
Kenneth Russell8a386d42018-06-02 09:48:01334FOO_GPU_TELEMETRY_TEST_WATERFALL = """\
335[
336 {
Greg Gutermanf60eb052020-03-12 17:40:01337 'project': 'chromium',
338 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01339 'name': 'chromium.test',
340 'machines': {
341 'Fake Tester': {
342 'os_type': 'win',
343 'browser_config': 'release',
344 'swarming': {
345 'dimension_sets': [
346 {
347 'gpu': '10de:1cb3',
348 },
349 ],
350 },
351 'test_suites': {
352 'gpu_telemetry_tests': 'composition_tests',
353 },
354 },
355 },
356 },
357]
358"""
359
Brian Sheedyf74819b2021-06-04 01:38:38360FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID = """\
361[
362 {
363 'project': 'chromium',
364 'bucket': 'ci',
365 'name': 'chromium.test',
366 'machines': {
367 'Fake Tester': {
368 'os_type': 'android',
369 'browser_config': 'android-chromium',
370 'swarming': {
371 'dimension_sets': [
372 {
373 'device_type': 'bullhead',
374 },
375 ],
376 },
377 'test_suites': {
378 'gpu_telemetry_tests': 'composition_tests',
379 },
380 },
381 },
382 },
383]
384"""
385
386FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID_WEBVIEW = """\
387[
388 {
389 'project': 'chromium',
390 'bucket': 'ci',
391 'name': 'chromium.test',
392 'machines': {
393 'Fake Tester': {
394 'os_type': 'android',
395 'browser_config': 'not-a-real-browser',
396 'swarming': {
397 'dimension_sets': [
398 {
399 'device_type': 'bullhead',
400 },
401 ],
402 },
403 'test_suites': {
404 'android_webview_gpu_telemetry_tests': 'composition_tests',
405 },
406 },
407 },
408 },
409]
410"""
411
Chong Guc2ca5d02022-01-11 19:52:17412FOO_GPU_TELEMETRY_TEST_WATERFALL_FUCHSIA = """\
413[
414 {
415 'project': 'chromium',
416 'bucket': 'ci',
417 'name': 'chromium.test',
418 'machines': {
419 'Fake Tester': {
420 'os_type': 'fuchsia',
421 'browser_config': 'fuchsia-chrome',
422 'swarming': {
423 'dimension_sets': [
424 {
425 'kvm': '1',
426 },
427 ],
428 },
429 'test_suites': {
430 'gpu_telemetry_tests': 'composition_tests',
431 },
432 },
433 },
434 },
435]
436"""
437
Fabrice de Ganscbd655f2022-08-04 20:15:30438FOO_GPU_TELEMETRY_TEST_WATERFALL_CAST_STREAMING = """\
439[
440 {
441 'project': 'chromium',
442 'bucket': 'ci',
443 'name': 'chromium.test',
444 'machines': {
445 'Fake Tester': {
446 'os_type': 'fuchsia',
447 'browser_config': 'not-a-real-browser',
448 'swarming': {
449 'dimension_sets': [
450 {
451 'kvm': '1',
452 },
453 ],
454 },
455 'test_suites': {
456 'cast_streaming_tests': 'composition_tests',
457 },
458 },
459 },
460 },
461]
462"""
463
Brian Sheedyb6491ba2022-09-26 20:49:49464FOO_GPU_TELEMETRY_TEST_WATERFALL_SKYLAB = """\
465[
466 {
467 'project': 'chromium',
468 'bucket': 'ci',
469 'name': 'chromium.test',
470 'machines': {
471 'Fake Tester': {
472 'os_type': 'chromeos',
473 'browser_config': 'cros-chrome',
474 'use_swarming': False,
475 'swarming': {
476 'some_key': 'some_value',
477 },
478 'test_suites': {
479 'skylab_gpu_telemetry_tests': 'composition_tests',
480 },
481 },
482 },
483 },
484]
485"""
486
Kenneth Russell384a1732019-03-16 02:36:02487NVIDIA_GPU_TELEMETRY_TEST_WATERFALL = """\
488[
489 {
Greg Gutermanf60eb052020-03-12 17:40:01490 'project': 'chromium',
491 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02492 'name': 'chromium.test',
493 'machines': {
494 'Fake Tester': {
495 'os_type': 'win',
496 'browser_config': 'release',
497 'swarming': {
498 'dimension_sets': [
499 {
Brian Sheedy0e26c4e02020-05-28 22:09:09500 'gpu': '10de:1cb3-26.21.14.3102',
Kenneth Russell384a1732019-03-16 02:36:02501 },
502 ],
503 },
504 'test_suites': {
505 'gpu_telemetry_tests': 'composition_tests',
506 },
507 },
508 },
509 },
510]
511"""
512
513INTEL_GPU_TELEMETRY_TEST_WATERFALL = """\
514[
515 {
Greg Gutermanf60eb052020-03-12 17:40:01516 'project': 'chromium',
517 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02518 'name': 'chromium.test',
519 'machines': {
520 'Fake Tester': {
521 'os_type': 'win',
522 'browser_config': 'release',
523 'swarming': {
524 'dimension_sets': [
525 {
Brian Sheedy0e26c4e02020-05-28 22:09:09526 'gpu': '8086:5912-24.20.100.6286',
Kenneth Russell384a1732019-03-16 02:36:02527 },
528 ],
529 },
530 'test_suites': {
531 'gpu_telemetry_tests': 'composition_tests',
532 },
533 },
534 },
535 },
536]
537"""
538
Brian Sheedyf9387db7b2019-08-05 19:26:10539INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL = """\
540[
541 {
Greg Gutermanf60eb052020-03-12 17:40:01542 'project': 'chromium',
543 'bucket': 'ci',
Brian Sheedyf9387db7b2019-08-05 19:26:10544 'name': 'chromium.test',
545 'machines': {
546 'Fake Tester': {
547 'os_type': 'win',
548 'browser_config': 'release',
549 'swarming': {
550 'dimension_sets': [
551 {
Brian Sheedy0e26c4e02020-05-28 22:09:09552 'gpu': '8086:3e92-24.20.100.6286',
Brian Sheedyf9387db7b2019-08-05 19:26:10553 },
554 ],
555 },
556 'test_suites': {
557 'gpu_telemetry_tests': 'composition_tests',
558 },
559 },
560 },
561 },
562]
563"""
564
Ben Pastene5f231cf22022-05-05 18:03:07565GPU_TELEMETRY_TEST_VARIANTS_WATERFALL = """\
566[
567 {
568 'project': 'chromium',
569 'bucket': 'ci',
570 'name': 'chromium.test',
571 'machines': {
572 'Fake Tester': {
573 'os_type': 'win',
574 'browser_config': 'release',
575 'swarming': {
576 'dimension_sets': [
577 {
578 'gpu': '8086:3e92-24.20.100.6286',
579 },
580 ],
581 },
582 'test_suites': {
583 'gpu_telemetry_tests': 'matrix_tests',
584 },
585 },
586 },
587 },
588]
589"""
590
Kenneth Russelleb60cbd22017-12-05 07:54:28591UNKNOWN_TEST_SUITE_WATERFALL = """\
592[
593 {
Greg Gutermanf60eb052020-03-12 17:40:01594 'project': 'chromium',
595 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28596 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43597 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28598 'Fake Tester': {
599 'test_suites': {
600 'gtest_tests': 'baz_tests',
601 },
602 },
603 },
604 },
605]
606"""
607
608UNKNOWN_TEST_SUITE_TYPE_WATERFALL = """\
609[
610 {
Greg Gutermanf60eb052020-03-12 17:40:01611 'project': 'chromium',
612 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28613 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43614 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28615 'Fake Tester': {
616 'test_suites': {
617 'gtest_tests': 'foo_tests',
618 'foo_test_type': 'foo_tests',
619 },
620 },
621 },
622 },
623]
624"""
625
626ANDROID_WATERFALL = """\
627[
628 {
Greg Gutermanf60eb052020-03-12 17:40:01629 'project': 'chromium',
630 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28631 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43632 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28633 'Android Builder': {
634 'additional_compile_targets': [
635 'bar_test',
636 ],
637 },
Kenneth Russelleb60cbd22017-12-05 07:54:28638 'Fake Android K Tester': {
639 'additional_compile_targets': [
640 'bar_test',
641 ],
642 'swarming': {
643 'dimension_sets': [
644 {
645 'device_os': 'KTU84P',
646 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22647 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28648 },
649 ],
650 },
651 'os_type': 'android',
Nico Weber79dc5f6852018-07-13 19:38:49652 'skip_merge_script': True,
Kenneth Russelleb60cbd22017-12-05 07:54:28653 'test_suites': {
654 'gtest_tests': 'foo_tests',
655 },
656 },
657 'Fake Android L Tester': {
658 'swarming': {
659 'dimension_sets': [
660 {
Ben Pastenee012aea42019-05-14 22:32:28661 'device_os': 'LMY41U',
662 'device_os_type': 'user',
Kenneth Russelleb60cbd22017-12-05 07:54:28663 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22664 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28665 },
666 ],
667 },
668 'os_type': 'android',
669 'skip_merge_script': True,
670 'skip_output_links': True,
671 'test_suites': {
672 'gtest_tests': 'foo_tests',
673 },
674 },
675 'Fake Android M Tester': {
676 'swarming': {
677 'dimension_sets': [
678 {
679 'device_os': 'MMB29Q',
680 'device_type': 'bullhead',
Ben Pastened15aa8a2019-05-16 16:59:22681 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28682 },
683 ],
684 },
685 'os_type': 'android',
686 'use_swarming': False,
687 'test_suites': {
688 'gtest_tests': 'foo_tests',
689 },
690 },
691 },
692 },
693]
694"""
695
Nico Weberd18b8962018-05-16 19:39:38696UNKNOWN_BOT_GTESTS_WATERFALL = """\
697[
698 {
Greg Gutermanf60eb052020-03-12 17:40:01699 'project': 'chromium',
700 'bucket': 'ci',
Nico Weberd18b8962018-05-16 19:39:38701 'name': 'chromium.test',
702 'machines': {
703 'Unknown Bot': {
704 'test_suites': {
705 'gtest_tests': 'foo_tests',
706 },
707 },
708 },
709 },
710]
711"""
712
Jeff Yoon8154e582019-12-03 23:30:01713MATRIX_GTEST_SUITE_WATERFALL = """\
714[
715 {
Greg Gutermanf60eb052020-03-12 17:40:01716 'project': 'chromium',
717 'bucket': 'ci',
Jeff Yoon8154e582019-12-03 23:30:01718 'name': 'chromium.test',
719 'machines': {
720 'Fake Tester': {
721 'test_suites': {
722 'gtest_tests': 'matrix_tests',
723 },
724 },
725 },
726 },
727]
728"""
729
Jeff Yoon67c3e832020-02-08 07:39:38730MATRIX_GTEST_SUITE_WATERFALL_MIXINS = """\
731[
732 {
Greg Gutermanf60eb052020-03-12 17:40:01733 'project': 'chromium',
734 'bucket': 'ci',
Jeff Yoon67c3e832020-02-08 07:39:38735 'name': 'chromium.test',
736 'machines': {
737 'Fake Tester': {
738 'mixins': ['dimension_mixin'],
739 'test_suites': {
740 'gtest_tests': 'matrix_tests',
741 },
742 },
743 },
744 },
745]
746"""
747
Kenneth Russelleb60cbd22017-12-05 07:54:28748FOO_TEST_SUITE = """\
749{
Stephen Martinis54d64ad2018-09-21 22:16:20750 'basic_suites': {
751 'foo_tests': {
752 'foo_test': {
753 'swarming': {
754 'dimension_sets': [
755 {
756 'integrity': 'high',
757 }
758 ],
759 'expiration': 120,
760 },
Kenneth Russelleb60cbd22017-12-05 07:54:28761 },
762 },
763 },
764}
765"""
766
Brian Sheedycae63b22020-06-10 22:52:11767FOO_TEST_SUITE_NO_DIMENSIONS = """\
768{
769 'basic_suites': {
770 'foo_tests': {
771 'foo_test': {
772 },
773 },
774 },
775}
776"""
777
Stephen Martinis5bef0fc2020-01-06 22:47:53778FOO_TEST_SUITE_NOT_SORTED = """\
779{
780 'basic_suites': {
781 'foo_tests': {
782 'foo_test': {},
783 'a_test': {},
784 },
785 },
786}
787"""
788
Kenneth Russell8ceeabf2017-12-11 17:53:28789FOO_TEST_SUITE_WITH_ARGS = """\
790{
Stephen Martinis54d64ad2018-09-21 22:16:20791 'basic_suites': {
792 'foo_tests': {
793 'foo_test': {
794 'args': [
795 '--c_arg',
796 ],
797 },
Kenneth Russell8ceeabf2017-12-11 17:53:28798 },
799 },
800}
801"""
802
Zhaoyang Li473dd0ae2021-05-10 18:28:28803FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES = """\
804{
805 'basic_suites': {
806 'foo_tests': {
807 'foo_test': {
808 'swarming': {
809 'named_caches': [
810 {
811 'name': 'cache_in_test',
812 'file': 'cache_in_test_file',
813 },
814 ],
815 },
816 },
817 },
818 },
819}
820"""
821
Kenneth Russell8a386d42018-06-02 09:48:01822FOO_TEST_SUITE_WITH_LINUX_ARGS = """\
823{
Stephen Martinis54d64ad2018-09-21 22:16:20824 'basic_suites': {
825 'foo_tests': {
826 'foo_test': {
827 'linux_args': [
828 '--no-xvfb',
829 ],
830 },
Kenneth Russell8a386d42018-06-02 09:48:01831 },
832 },
833}
834"""
835
Kenneth Russell650995a2018-05-03 21:17:01836FOO_TEST_SUITE_WITH_ENABLE_FEATURES = """\
837{
Stephen Martinis54d64ad2018-09-21 22:16:20838 'basic_suites': {
839 'foo_tests': {
840 'foo_test': {
841 'args': [
842 '--enable-features=Foo,Bar',
843 ],
844 },
Kenneth Russell650995a2018-05-03 21:17:01845 },
846 },
847}
848"""
849
Brian Sheedy7658c982020-01-08 02:27:58850FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN = """\
851{
852 'basic_suites': {
853 'foo_tests': {
854 'foo_test': {
855 'remove_mixins': ['waterfall_mixin'],
856 'swarming': {
857 'dimension_sets': [
858 {
859 'integrity': 'high',
860 }
861 ],
862 'expiration': 120,
863 },
864 },
865 },
866 },
867}
868"""
869
870FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN = """\
871{
872 'basic_suites': {
873 'foo_tests': {
874 'foo_test': {
875 'remove_mixins': ['builder_mixin'],
876 'swarming': {
877 'dimension_sets': [
878 {
879 'integrity': 'high',
880 }
881 ],
882 'expiration': 120,
883 },
884 },
885 },
886 },
887}
888"""
889
Kenneth Russelleb60cbd22017-12-05 07:54:28890FOO_SCRIPT_SUITE = """\
891{
Stephen Martinis54d64ad2018-09-21 22:16:20892 'basic_suites': {
893 'foo_scripts': {
894 'foo_test': {
895 'script': 'foo.py',
896 },
897 'bar_test': {
898 'script': 'bar.py',
899 },
Kenneth Russelleb60cbd22017-12-05 07:54:28900 },
901 },
902}
903"""
904
Kenneth Russelleb60cbd22017-12-05 07:54:28905GOOD_COMPOSITION_TEST_SUITES = """\
906{
Stephen Martinis54d64ad2018-09-21 22:16:20907 'basic_suites': {
908 'bar_tests': {
909 'bar_test': {},
910 },
911 'foo_tests': {
912 'foo_test': {},
913 },
Kenneth Russelleb60cbd22017-12-05 07:54:28914 },
Stephen Martinis54d64ad2018-09-21 22:16:20915 'compound_suites': {
916 'composition_tests': [
917 'foo_tests',
918 'bar_tests',
919 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28920 },
Kenneth Russelleb60cbd22017-12-05 07:54:28921}
922"""
923
924BAD_COMPOSITION_TEST_SUITES = """\
925{
Stephen Martinis54d64ad2018-09-21 22:16:20926 'basic_suites': {
927 'bar_tests': {},
928 'foo_tests': {},
929 },
930 'compound_suites': {
931 'buggy_composition_tests': [
932 'bar_tests',
933 ],
934 'composition_tests': [
935 'foo_tests',
936 'buggy_composition_tests',
937 ],
938 },
939}
940"""
941
Andrew Luo0f1dee02019-09-06 16:50:47942CONFLICTING_COMPOSITION_TEST_SUITES = """\
943{
944 'basic_suites': {
945 'bar_tests': {
946 'baz_tests': {
947 'args': [
948 '--bar',
949 ],
950 }
951 },
952 'foo_tests': {
953 'baz_tests': {
954 'args': [
955 '--foo',
956 ],
957 }
958 },
959 },
960 'compound_suites': {
961 'foobar_tests': [
962 'foo_tests',
963 'bar_tests',
964 ],
965 },
966}
967"""
968
Stephen Martinis54d64ad2018-09-21 22:16:20969DUPLICATES_COMPOSITION_TEST_SUITES = """\
970{
971 'basic_suites': {
972 'bar_tests': {},
Jeff Yoon8154e582019-12-03 23:30:01973 'buggy_composition_tests': {},
Stephen Martinis54d64ad2018-09-21 22:16:20974 'foo_tests': {},
975 },
976 'compound_suites': {
977 'bar_tests': [
978 'foo_tests',
979 ],
980 'composition_tests': [
981 'foo_tests',
982 'buggy_composition_tests',
983 ],
984 },
Kenneth Russelleb60cbd22017-12-05 07:54:28985}
986"""
987
Dirk Pranke1b767092017-12-07 04:44:23988SCRIPT_SUITE = """\
989{
Stephen Martinis54d64ad2018-09-21 22:16:20990 'basic_suites': {
991 'foo_scripts': {
992 'foo_test': {
993 'script': 'foo.py',
994 },
Dirk Pranke1b767092017-12-07 04:44:23995 },
996 },
997}
998"""
999
Kenneth Russelleb60cbd22017-12-05 07:54:281000UNREFED_TEST_SUITE = """\
1001{
Stephen Martinis54d64ad2018-09-21 22:16:201002 'basic_suites': {
1003 'bar_tests': {},
1004 'foo_tests': {},
1005 },
Kenneth Russelleb60cbd22017-12-05 07:54:281006}
1007"""
1008
1009REUSING_TEST_WITH_DIFFERENT_NAME = """\
1010{
Stephen Martinis54d64ad2018-09-21 22:16:201011 'basic_suites': {
1012 'foo_tests': {
1013 'foo_test': {},
1014 'variation_test': {
1015 'args': [
1016 '--variation',
1017 ],
1018 'test': 'foo_test',
1019 },
Kenneth Russelleb60cbd22017-12-05 07:54:281020 },
1021 },
1022}
1023"""
1024
Kenneth Russell8a386d42018-06-02 09:48:011025COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST = """\
1026{
Stephen Martinis54d64ad2018-09-21 22:16:201027 'basic_suites': {
1028 'foo_tests': {
1029 'foo': {},
1030 },
1031 'bar_tests': {
1032 'bar_test': {},
1033 },
Kenneth Russell8a386d42018-06-02 09:48:011034 },
Stephen Martinis54d64ad2018-09-21 22:16:201035 'compound_suites': {
1036 'composition_tests': [
1037 'foo_tests',
1038 'bar_tests',
1039 ],
Kenneth Russell8a386d42018-06-02 09:48:011040 },
Kenneth Russell8a386d42018-06-02 09:48:011041}
1042"""
1043
Kenneth Russell384a1732019-03-16 02:36:021044COMPOSITION_SUITE_WITH_GPU_ARGS = """\
1045{
1046 'basic_suites': {
1047 'foo_tests': {
1048 'foo': {
1049 'args': [
1050 '--gpu-vendor-id',
1051 '${gpu_vendor_id}',
1052 '--gpu-device-id',
1053 '${gpu_device_id}',
1054 ],
1055 },
1056 },
1057 'bar_tests': {
1058 'bar_test': {},
1059 },
1060 },
1061 'compound_suites': {
1062 'composition_tests': [
1063 'foo_tests',
1064 'bar_tests',
1065 ],
1066 },
1067}
1068"""
1069
Brian Sheedyd8c0c73d2021-07-05 02:11:301070COMPOSITION_SUITE_WITH_PIXEL_AND_FILTER = """\
1071{
1072 'basic_suites': {
1073 'foo_tests': {
1074 'pixel': {
1075 'args': [
1076 '--git-revision=aaaa',
1077 '--test-filter=bar',
1078 ],
1079 },
1080 },
1081 'bar_tests': {
1082 'bar_test': {},
1083 },
1084 },
1085 'compound_suites': {
1086 'composition_tests': [
1087 'foo_tests',
1088 'bar_tests',
1089 ],
1090 },
1091}
1092"""
1093
Jamie Madilla8be0d72020-10-02 05:24:041094GTEST_AS_ISOLATED_SCRIPT_SUITE = """\
1095{
1096 'basic_suites': {
1097 'foo_tests': {
1098 'foo_test': {
1099 'script': 'foo.py',
1100 'use_isolated_scripts_api': True,
1101 },
1102 },
1103 },
1104}
1105"""
1106
Dirk Pranke1b767092017-12-07 04:44:231107SCRIPT_WITH_ARGS_EXCEPTIONS = """\
1108{
1109 'foo_test': {
1110 'modifications': {
1111 'Fake Tester': {
1112 'args': ['--fake-arg'],
1113 },
1114 },
1115 },
1116}
1117"""
1118
Stephen Martinis0382bc12018-09-17 22:29:071119SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS = """\
1120{
1121 'foo_test': {
1122 'modifications': {
1123 'Fake Tester': {
1124 'swarming': {
1125 'value': 'exception',
1126 },
1127 },
1128 },
1129 },
1130}
1131"""
1132
Kenneth Russelleb60cbd22017-12-05 07:54:281133NO_BAR_TEST_EXCEPTIONS = """\
1134{
1135 'bar_test': {
1136 'remove_from': [
1137 'Fake Tester',
1138 ]
1139 }
1140}
1141"""
1142
1143EMPTY_BAR_TEST_EXCEPTIONS = """\
1144{
1145 'bar_test': {
1146 }
1147}
1148"""
1149
Stephen Martinis54d64ad2018-09-21 22:16:201150EXCEPTIONS_SORTED = """\
1151{
1152 'suite_c': {
1153 'modifications': {
1154 'Fake Tester': {
1155 'foo': 'bar',
1156 },
1157 },
1158 },
1159 'suite_d': {
1160 'modifications': {
1161 'Fake Tester': {
1162 'foo': 'baz',
1163 },
1164 },
1165 },
1166}
1167"""
1168
1169EXCEPTIONS_UNSORTED = """\
1170{
1171 'suite_d': {
1172 'modifications': {
1173 'Fake Tester': {
1174 'foo': 'baz',
1175 },
1176 },
1177 },
1178 'suite_c': {
1179 'modifications': {
1180 'Fake Tester': {
1181 'foo': 'bar',
1182 },
1183 },
1184 },
1185}
1186"""
1187
Stephen Martinis5bef0fc2020-01-06 22:47:531188EXCEPTIONS_PER_TEST_UNSORTED = """\
1189{
1190 'suite_d': {
1191 'modifications': {
1192 'Other Tester': {
1193 'foo': 'baz',
1194 },
1195 'Fake Tester': {
1196 'foo': 'baz',
1197 },
1198 },
1199 },
1200}
1201"""
1202
1203EXCEPTIONS_DUPS_REMOVE_FROM = """\
1204{
1205 'suite_d': {
1206 'remove_from': [
1207 'Fake Tester',
1208 'Fake Tester',
1209 ],
1210 'modifications': {
1211 'Fake Tester': {
1212 'foo': 'baz',
1213 },
1214 },
1215 },
1216}
1217"""
1218
Kenneth Russelleb60cbd22017-12-05 07:54:281219FOO_TEST_MODIFICATIONS = """\
1220{
1221 'foo_test': {
1222 'modifications': {
1223 'Fake Tester': {
1224 'args': [
1225 '--bar',
1226 ],
1227 'swarming': {
1228 'hard_timeout': 600,
1229 },
1230 },
1231 },
1232 }
1233}
1234"""
1235
John Budorick5bc387fe2019-05-09 20:02:531236FOO_TEST_EXPLICIT_NONE_EXCEPTIONS = """\
1237{
1238 'foo_test': {
1239 'modifications': {
1240 'Fake Tester': {
1241 'swarming': {
1242 'dimension_sets': [
1243 {
1244 'integrity': None,
1245 },
1246 ],
1247 },
1248 },
1249 },
1250 },
1251}
1252"""
1253
Kenneth Russelleb60cbd22017-12-05 07:54:281254NONEXISTENT_REMOVAL = """\
1255{
1256 'foo_test': {
1257 'remove_from': [
1258 'Nonexistent Tester',
1259 ]
1260 }
1261}
1262"""
1263
1264NONEXISTENT_MODIFICATION = """\
1265{
1266 'foo_test': {
1267 'modifications': {
1268 'Nonexistent Tester': {
1269 'args': [],
1270 },
1271 },
1272 }
1273}
1274"""
1275
1276COMPOSITION_WATERFALL_OUTPUT = """\
1277{
1278 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1279 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1280 "Fake Tester": {
1281 "gtest_tests": [
1282 {
Stephen Martinisbc7b7772019-05-01 22:01:431283 "merge": {
1284 "args": [],
1285 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1286 },
Kenneth Russelleb60cbd22017-12-05 07:54:281287 "swarming": {
1288 "can_use_on_swarming_builders": true
1289 },
1290 "test": "bar_test"
1291 },
1292 {
Stephen Martinisbc7b7772019-05-01 22:01:431293 "merge": {
1294 "args": [],
1295 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1296 },
Kenneth Russelleb60cbd22017-12-05 07:54:281297 "swarming": {
1298 "can_use_on_swarming_builders": true
1299 },
1300 "test": "foo_test"
1301 }
1302 ]
1303 }
1304}
1305"""
1306
John Budorickedfe7f872018-01-23 15:27:221307COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT = """\
1308{
1309 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1310 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1311 "Fake Tester": {
1312 "gtest_tests": [
1313 {
1314 "args": [
1315 "--this-is-an-argument"
1316 ],
Stephen Martinisbc7b7772019-05-01 22:01:431317 "merge": {
1318 "args": [],
1319 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1320 },
John Budorickedfe7f872018-01-23 15:27:221321 "swarming": {
1322 "can_use_on_swarming_builders": true
1323 },
1324 "test": "bar_test"
1325 },
1326 {
1327 "args": [
1328 "--this-is-an-argument"
1329 ],
Stephen Martinisbc7b7772019-05-01 22:01:431330 "merge": {
1331 "args": [],
1332 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1333 },
John Budorickedfe7f872018-01-23 15:27:221334 "swarming": {
1335 "can_use_on_swarming_builders": true
1336 },
1337 "test": "foo_test"
1338 }
1339 ]
1340 }
1341}
1342"""
1343
Kenneth Russelleb60cbd22017-12-05 07:54:281344VARIATION_GTEST_OUTPUT = """\
1345{
1346 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1347 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1348 "Fake Tester": {
1349 "gtest_tests": [
1350 {
Stephen Martinisbc7b7772019-05-01 22:01:431351 "merge": {
1352 "args": [],
1353 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1354 },
Kenneth Russelleb60cbd22017-12-05 07:54:281355 "swarming": {
1356 "can_use_on_swarming_builders": true,
1357 "dimension_sets": [
1358 {
1359 "kvm": "1"
1360 }
1361 ]
1362 },
Nodir Turakulovfce34292019-12-18 17:05:411363 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111364 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281365 },
1366 {
1367 "args": [
1368 "--variation"
1369 ],
Stephen Martinisbc7b7772019-05-01 22:01:431370 "merge": {
1371 "args": [],
1372 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1373 },
Kenneth Russelleb60cbd22017-12-05 07:54:281374 "name": "variation_test",
1375 "swarming": {
1376 "can_use_on_swarming_builders": true,
1377 "dimension_sets": [
1378 {
1379 "kvm": "1"
1380 }
1381 ]
1382 },
Nodir Turakulovfce34292019-12-18 17:05:411383 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111384 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281385 }
1386 ]
1387 }
1388}
1389"""
1390
Jamie Madilla8be0d72020-10-02 05:24:041391FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT = """\
1392{
1393 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1394 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1395 "Fake Tester": {
1396 "gtest_tests": [
1397 {
1398 "merge": {
1399 "args": [],
1400 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1401 },
1402 "script": "foo.py",
1403 "swarming": {
1404 "can_use_on_swarming_builders": true,
1405 "dimension_sets": [
1406 {
1407 "kvm": "1"
1408 }
1409 ]
1410 },
1411 "test": "foo_test",
1412 "test_id_prefix": "ninja://chrome/test:foo_test/",
1413 "use_isolated_scripts_api": true
1414 }
1415 ]
1416 }
1417}
1418"""
1419
Kenneth Russelleb60cbd22017-12-05 07:54:281420COMPOSITION_WATERFALL_FILTERED_OUTPUT = """\
1421{
1422 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1423 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1424 "Fake Tester": {
1425 "gtest_tests": [
1426 {
Stephen Martinisbc7b7772019-05-01 22:01:431427 "merge": {
1428 "args": [],
1429 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1430 },
Kenneth Russelleb60cbd22017-12-05 07:54:281431 "swarming": {
1432 "can_use_on_swarming_builders": true
1433 },
1434 "test": "foo_test"
1435 }
1436 ]
1437 }
1438}
1439"""
1440
Kenneth Russell8ceeabf2017-12-11 17:53:281441MERGED_ARGS_OUTPUT = """\
1442{
1443 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1444 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1445 "Fake Tester": {
1446 "gtest_tests": [
1447 {
1448 "args": [
Stephen Martinis3bed2ab2018-04-23 19:42:061449 "--c_arg",
1450 "--bar"
Kenneth Russell8ceeabf2017-12-11 17:53:281451 ],
Stephen Martinisbc7b7772019-05-01 22:01:431452 "merge": {
1453 "args": [],
1454 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1455 },
Kenneth Russell8ceeabf2017-12-11 17:53:281456 "swarming": {
1457 "can_use_on_swarming_builders": true,
1458 "dimension_sets": [
1459 {
1460 "kvm": "1"
1461 }
1462 ],
1463 "hard_timeout": 600
1464 },
1465 "test": "foo_test"
1466 }
1467 ]
1468 }
1469}
1470"""
1471
Kenneth Russell8a386d42018-06-02 09:48:011472LINUX_ARGS_OUTPUT = """\
1473{
1474 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1475 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1476 "Fake Tester": {
1477 "gtest_tests": [
1478 {
1479 "args": [
1480 "--no-xvfb"
1481 ],
Stephen Martinisbc7b7772019-05-01 22:01:431482 "merge": {
1483 "args": [],
1484 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1485 },
Kenneth Russell8a386d42018-06-02 09:48:011486 "swarming": {
1487 "can_use_on_swarming_builders": true
1488 },
1489 "test": "foo_test"
1490 }
1491 ]
1492 }
1493}
1494"""
1495
Kenneth Russell650995a2018-05-03 21:17:011496MERGED_ENABLE_FEATURES_OUTPUT = """\
1497{
1498 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1499 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1500 "Fake Tester": {
1501 "gtest_tests": [
1502 {
1503 "args": [
1504 "--enable-features=Foo,Bar,Baz"
1505 ],
Stephen Martinisbc7b7772019-05-01 22:01:431506 "merge": {
1507 "args": [],
1508 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1509 },
Kenneth Russell650995a2018-05-03 21:17:011510 "swarming": {
1511 "can_use_on_swarming_builders": true
1512 },
1513 "test": "foo_test"
1514 }
1515 ]
1516 }
1517}
1518"""
1519
Kenneth Russelleb60cbd22017-12-05 07:54:281520MODIFIED_OUTPUT = """\
1521{
1522 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1523 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1524 "Fake Tester": {
1525 "gtest_tests": [
1526 {
1527 "args": [
1528 "--bar"
1529 ],
Stephen Martinisbc7b7772019-05-01 22:01:431530 "merge": {
1531 "args": [],
1532 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1533 },
Kenneth Russelleb60cbd22017-12-05 07:54:281534 "swarming": {
1535 "can_use_on_swarming_builders": true,
1536 "dimension_sets": [
1537 {
1538 "integrity": "high",
1539 "kvm": "1"
1540 }
1541 ],
1542 "expiration": 120,
1543 "hard_timeout": 600
1544 },
1545 "test": "foo_test"
1546 }
1547 ]
1548 }
1549}
1550"""
1551
John Budorick5bc387fe2019-05-09 20:02:531552EXPLICIT_NONE_OUTPUT = """\
1553{
1554 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1555 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1556 "Fake Tester": {
1557 "gtest_tests": [
1558 {
1559 "merge": {
1560 "args": [],
1561 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1562 },
1563 "swarming": {
1564 "can_use_on_swarming_builders": true,
1565 "dimension_sets": [
1566 {
1567 "kvm": "1"
1568 }
1569 ],
1570 "expiration": 120
1571 },
1572 "test": "foo_test"
1573 }
1574 ]
1575 }
1576}
1577"""
1578
Kenneth Russelleb60cbd22017-12-05 07:54:281579ISOLATED_SCRIPT_OUTPUT = """\
1580{
1581 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1582 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1583 "Fake Tester": {
1584 "isolated_scripts": [
1585 {
1586 "isolate_name": "foo_test",
Stephen Martinisf50047062019-05-06 22:26:171587 "merge": {
1588 "args": [],
1589 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1590 },
Kenneth Russelleb60cbd22017-12-05 07:54:281591 "name": "foo_test",
1592 "swarming": {
1593 "can_use_on_swarming_builders": true
1594 }
1595 }
1596 ]
1597 }
1598}
1599"""
1600
Dirk Pranke0e879b22020-07-16 23:53:561601ISOLATED_SCRIPT_OUTPUT_ANDROID = """\
1602{
1603 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1604 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1605 "Fake Tester": {
1606 "isolated_scripts": [
1607 {
1608 "args": [
1609 "--gs-results-bucket=chromium-result-details"
1610 ],
1611 "isolate_name": "foo_test",
1612 "merge": {
1613 "args": [
1614 "--bucket",
1615 "chromium-result-details",
1616 "--test-name",
1617 "foo_test"
1618 ],
Yuly Novikov26dd47052021-02-11 00:57:141619 "script": \
1620"//build/android/pylib/results/presentation/test_results_presentation.py"
Dirk Pranke0e879b22020-07-16 23:53:561621 },
1622 "name": "foo_test",
1623 "swarming": {
1624 "can_use_on_swarming_builders": true,
Dirk Pranke0e879b22020-07-16 23:53:561625 "output_links": [
1626 {
1627 "link": [
1628 "https://luci-logdog.appspot.com/v/?s",
1629 "=android%2Fswarming%2Flogcats%2F",
1630 "${TASK_ID}%2F%2B%2Funified_logcats"
1631 ],
1632 "name": "shard #${SHARD_INDEX} logcats"
1633 }
1634 ]
1635 }
1636 }
1637 ]
1638 }
1639}
1640"""
1641
Kenneth Russelleb60cbd22017-12-05 07:54:281642SCRIPT_OUTPUT = """\
1643{
1644 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1645 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1646 "Fake Tester": {
1647 "scripts": [
1648 {
1649 "name": "foo_test",
1650 "script": "foo.py"
1651 }
1652 ]
1653 }
1654}
1655"""
1656
Dirk Pranke1b767092017-12-07 04:44:231657SCRIPT_WITH_ARGS_OUTPUT = """\
1658{
1659 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1660 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1661 "Fake Tester": {
1662 "scripts": [
1663 {
1664 "args": [
1665 "--fake-arg"
1666 ],
1667 "name": "foo_test",
1668 "script": "foo.py"
1669 }
1670 ]
1671 }
1672}
1673"""
1674
Kenneth Russelleb60cbd22017-12-05 07:54:281675JUNIT_OUTPUT = """\
1676{
1677 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1678 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1679 "Fake Tester": {
1680 "junit_tests": [
1681 {
John Budorickcadc4952019-09-16 23:51:371682 "name": "foo_test",
Kenneth Russelleb60cbd22017-12-05 07:54:281683 "test": "foo_test"
1684 }
1685 ]
1686 }
1687}
1688"""
1689
Kenneth Russell8a386d42018-06-02 09:48:011690GPU_TELEMETRY_TEST_OUTPUT = """\
1691{
1692 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1693 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1694 "Fake Tester": {
1695 "isolated_scripts": [
1696 {
1697 "args": [
1698 "foo",
1699 "--show-stdout",
1700 "--browser=release",
1701 "--passthrough",
1702 "-v",
1703 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1704 ],
1705 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171706 "merge": {
1707 "args": [],
1708 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1709 },
Kenneth Russell8a386d42018-06-02 09:48:011710 "name": "foo_tests",
Kenneth Russell44910c32018-12-03 23:35:111711 "should_retry_with_patch": false,
Kenneth Russell8a386d42018-06-02 09:48:011712 "swarming": {
1713 "can_use_on_swarming_builders": true,
1714 "dimension_sets": [
1715 {
1716 "gpu": "10de:1cb3"
1717 }
erikchen6da2d9b2018-08-03 23:01:141718 ],
1719 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191720 },
Chan Li17d969f92020-07-10 00:50:031721 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell8a386d42018-06-02 09:48:011722 }
1723 ]
1724 }
1725}
1726"""
1727
Brian Sheedyf74819b2021-06-04 01:38:381728GPU_TELEMETRY_TEST_OUTPUT_ANDROID = """\
1729{
1730 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1731 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1732 "Fake Tester": {
1733 "isolated_scripts": [
1734 {
1735 "args": [
1736 "foo",
1737 "--show-stdout",
1738 "--browser=android-chromium",
1739 "--passthrough",
1740 "-v",
1741 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1742 ],
1743 "isolate_name": "telemetry_gpu_integration_test_android_chrome",
1744 "merge": {
1745 "args": [],
1746 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1747 },
1748 "name": "foo_tests",
1749 "should_retry_with_patch": false,
1750 "swarming": {
1751 "can_use_on_swarming_builders": true,
Brian Sheedyf74819b2021-06-04 01:38:381752 "dimension_sets": [
1753 {
1754 "device_type": "bullhead"
1755 }
1756 ],
1757 "idempotent": false
1758 },
1759 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_chrome/"
1760 }
1761 ]
1762 }
1763}
1764"""
1765
1766GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW = """\
1767{
1768 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1769 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1770 "Fake Tester": {
1771 "isolated_scripts": [
1772 {
1773 "args": [
1774 "foo",
1775 "--show-stdout",
1776 "--browser=android-webview-instrumentation",
1777 "--passthrough",
1778 "-v",
1779 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1780 ],
1781 "isolate_name": "telemetry_gpu_integration_test_android_webview",
1782 "merge": {
1783 "args": [],
1784 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1785 },
1786 "name": "foo_tests",
1787 "should_retry_with_patch": false,
1788 "swarming": {
1789 "can_use_on_swarming_builders": true,
Brian Sheedyf74819b2021-06-04 01:38:381790 "dimension_sets": [
1791 {
1792 "device_type": "bullhead"
1793 }
1794 ],
1795 "idempotent": false
1796 },
1797 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_webview/"
1798 }
1799 ]
1800 }
1801}
1802"""
1803
Chong Guc2ca5d02022-01-11 19:52:171804GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA = """\
1805{
1806 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1807 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1808 "Fake Tester": {
1809 "isolated_scripts": [
1810 {
1811 "args": [
1812 "foo",
1813 "--show-stdout",
1814 "--browser=fuchsia-chrome",
1815 "--passthrough",
1816 "-v",
1817 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1818 ],
1819 "isolate_name": "telemetry_gpu_integration_test_fuchsia",
1820 "merge": {
1821 "args": [],
1822 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1823 },
1824 "name": "foo_tests",
1825 "should_retry_with_patch": false,
1826 "swarming": {
1827 "can_use_on_swarming_builders": true,
1828 "dimension_sets": [
1829 {
1830 "kvm": "1"
1831 }
1832 ],
1833 "idempotent": false
1834 },
1835 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_fuchsia/"
1836 }
1837 ]
1838 }
1839}
1840"""
1841
Fabrice de Ganscbd655f2022-08-04 20:15:301842GPU_TELEMETRY_TEST_OUTPUT_CAST_STREAMING = """\
1843{
1844 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1845 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1846 "Fake Tester": {
Fabrice de Gans223272482022-08-08 16:56:571847 "isolated_scripts": [
Fabrice de Ganscbd655f2022-08-04 20:15:301848 {
1849 "args": [
1850 "foo",
1851 "--show-stdout",
1852 "--browser=cast-streaming-shell",
1853 "--passthrough",
1854 "-v",
1855 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1856 ],
1857 "isolate_name": "telemetry_gpu_integration_test_fuchsia",
1858 "merge": {
1859 "args": [],
1860 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1861 },
1862 "name": "foo_tests",
1863 "should_retry_with_patch": false,
1864 "swarming": {
1865 "can_use_on_swarming_builders": true,
1866 "dimension_sets": [
1867 {
1868 "kvm": "1"
1869 }
1870 ],
1871 "idempotent": false
1872 },
1873 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_fuchsia/"
1874 }
1875 ]
1876 }
1877}
1878"""
1879
Brian Sheedyb6491ba2022-09-26 20:49:491880GPU_TELEMETRY_TEST_OUTPUT_SKYLAB = """\
1881{
1882 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1883 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1884 "Fake Tester": {
1885 "skylab_tests": [
1886 {
1887 "args": [
1888 "foo",
1889 "--show-stdout",
1890 "--browser=cros-chrome",
1891 "--passthrough",
1892 "-v",
1893 "--extra-browser-args=--log-level=0 --js-flags=--expose-gc"
1894 ],
1895 "isolate_name": "telemetry_gpu_integration_test",
1896 "merge": {
1897 "args": [],
1898 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1899 },
1900 "name": "foo_tests",
1901 "should_retry_with_patch": false,
1902 "swarming": {
1903 "can_use_on_swarming_builders": false
1904 },
1905 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
1906 }
1907 ]
1908 }
1909}
1910"""
1911
Kenneth Russell384a1732019-03-16 02:36:021912NVIDIA_GPU_TELEMETRY_TEST_OUTPUT = """\
1913{
1914 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1915 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1916 "Fake Tester": {
1917 "isolated_scripts": [
1918 {
1919 "args": [
1920 "foo",
1921 "--show-stdout",
1922 "--browser=release",
1923 "--passthrough",
1924 "-v",
1925 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1926 "--gpu-vendor-id",
1927 "10de",
1928 "--gpu-device-id",
1929 "1cb3"
1930 ],
1931 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171932 "merge": {
1933 "args": [],
1934 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1935 },
Kenneth Russell384a1732019-03-16 02:36:021936 "name": "foo_tests",
1937 "should_retry_with_patch": false,
1938 "swarming": {
1939 "can_use_on_swarming_builders": true,
1940 "dimension_sets": [
1941 {
Brian Sheedy0e26c4e02020-05-28 22:09:091942 "gpu": "10de:1cb3-26.21.14.3102"
Kenneth Russell384a1732019-03-16 02:36:021943 }
1944 ],
1945 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191946 },
Chan Li17d969f92020-07-10 00:50:031947 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021948 }
1949 ]
1950 }
1951}
1952"""
1953
1954INTEL_GPU_TELEMETRY_TEST_OUTPUT = """\
1955{
1956 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1957 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1958 "Fake Tester": {
1959 "isolated_scripts": [
1960 {
1961 "args": [
1962 "foo",
1963 "--show-stdout",
1964 "--browser=release",
1965 "--passthrough",
1966 "-v",
1967 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1968 "--gpu-vendor-id",
1969 "8086",
1970 "--gpu-device-id",
1971 "5912"
1972 ],
1973 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171974 "merge": {
1975 "args": [],
1976 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1977 },
Kenneth Russell384a1732019-03-16 02:36:021978 "name": "foo_tests",
1979 "should_retry_with_patch": false,
1980 "swarming": {
1981 "can_use_on_swarming_builders": true,
1982 "dimension_sets": [
1983 {
Brian Sheedy0e26c4e02020-05-28 22:09:091984 "gpu": "8086:5912-24.20.100.6286"
Kenneth Russell384a1732019-03-16 02:36:021985 }
1986 ],
1987 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191988 },
Chan Li17d969f92020-07-10 00:50:031989 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021990 }
1991 ]
1992 }
1993}
1994"""
1995
Brian Sheedyf9387db7b2019-08-05 19:26:101996INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT = """\
1997{
1998 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1999 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2000 "Fake Tester": {
2001 "isolated_scripts": [
2002 {
2003 "args": [
2004 "foo",
2005 "--show-stdout",
2006 "--browser=release",
2007 "--passthrough",
2008 "-v",
2009 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
2010 "--gpu-vendor-id",
2011 "8086",
2012 "--gpu-device-id",
2013 "3e92"
2014 ],
2015 "isolate_name": "telemetry_gpu_integration_test",
2016 "merge": {
2017 "args": [],
2018 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2019 },
2020 "name": "foo_tests",
2021 "should_retry_with_patch": false,
2022 "swarming": {
2023 "can_use_on_swarming_builders": true,
2024 "dimension_sets": [
2025 {
Brian Sheedy0e26c4e02020-05-28 22:09:092026 "gpu": "8086:3e92-24.20.100.6286"
Brian Sheedyf9387db7b2019-08-05 19:26:102027 }
2028 ],
2029 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:192030 },
Chan Li17d969f92020-07-10 00:50:032031 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Brian Sheedyf9387db7b2019-08-05 19:26:102032 }
2033 ]
2034 }
2035}
2036"""
2037
Ben Pastene5f231cf22022-05-05 18:03:072038GPU_TELEMETRY_TEST_VARIANTS_OUTPUT = """\
2039{
2040 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2041 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2042 "Fake Tester": {
2043 "isolated_scripts": [
2044 {
2045 "args": [
2046 "swarming_test",
2047 "--show-stdout",
2048 "--browser=release",
2049 "--passthrough",
2050 "-v",
2051 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
2052 "--platform",
2053 "device",
2054 "--version",
2055 "1"
2056 ],
2057 "isolate_name": "telemetry_gpu_integration_test",
2058 "merge": {
2059 "args": [],
2060 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2061 },
2062 "name": "swarming_test a_variant",
2063 "should_retry_with_patch": false,
2064 "swarming": {
2065 "can_use_on_swarming_builders": true,
2066 "dimension_sets": [
2067 {
2068 "gpu": "8086:3e92-24.20.100.6286"
2069 }
2070 ],
2071 "idempotent": false
2072 },
2073 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/",
2074 "variant_id": "a_variant"
2075 },
2076 {
2077 "args": [
2078 "swarming_test",
2079 "--show-stdout",
2080 "--browser=release",
2081 "--passthrough",
2082 "-v",
2083 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
2084 "a",
2085 "b"
2086 ],
2087 "isolate_name": "telemetry_gpu_integration_test",
2088 "merge": {
2089 "args": [],
2090 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2091 },
2092 "name": "swarming_test ab",
2093 "should_retry_with_patch": false,
2094 "swarming": {
2095 "can_use_on_swarming_builders": true,
2096 "dimension_sets": [
2097 {
2098 "gpu": "8086:3e92-24.20.100.6286"
2099 }
2100 ],
2101 "idempotent": false
2102 },
2103 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/",
2104 "variant_id": "ab"
2105 }
2106 ]
2107 }
2108}
2109"""
2110
Kenneth Russelleb60cbd22017-12-05 07:54:282111ANDROID_WATERFALL_OUTPUT = """\
2112{
2113 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2114 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2115 "Android Builder": {
2116 "additional_compile_targets": [
2117 "bar_test"
2118 ]
2119 },
2120 "Fake Android K Tester": {
2121 "additional_compile_targets": [
2122 "bar_test"
2123 ],
2124 "gtest_tests": [
2125 {
John Budorick826d5ed2017-12-28 19:27:322126 "args": [
Kenneth Russell5612d64a2018-06-02 21:12:302127 "--gs-results-bucket=chromium-result-details",
2128 "--recover-devices"
John Budorick826d5ed2017-12-28 19:27:322129 ],
Stephen Martinisbc7b7772019-05-01 22:01:432130 "merge": {
2131 "args": [],
2132 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2133 },
Kenneth Russelleb60cbd22017-12-05 07:54:282134 "swarming": {
2135 "can_use_on_swarming_builders": true,
Kenneth Russelleb60cbd22017-12-05 07:54:282136 "dimension_sets": [
2137 {
2138 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:282139 "device_os_type": "userdebug",
Kenneth Russelleb60cbd22017-12-05 07:54:282140 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:222141 "integrity": "high",
2142 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:282143 }
2144 ],
2145 "expiration": 120,
2146 "output_links": [
2147 {
2148 "link": [
2149 "https://luci-logdog.appspot.com/v/?s",
2150 "=android%2Fswarming%2Flogcats%2F",
2151 "${TASK_ID}%2F%2B%2Funified_logcats"
2152 ],
2153 "name": "shard #${SHARD_INDEX} logcats"
2154 }
2155 ]
2156 },
2157 "test": "foo_test"
2158 }
2159 ]
2160 },
2161 "Fake Android L Tester": {
2162 "gtest_tests": [
2163 {
Benjamin Pastene766d48f52017-12-18 21:47:422164 "args": [
John Budorick826d5ed2017-12-28 19:27:322165 "--gs-results-bucket=chromium-result-details",
Benjamin Pastene766d48f52017-12-18 21:47:422166 "--recover-devices"
2167 ],
Stephen Martinisbc7b7772019-05-01 22:01:432168 "merge": {
2169 "args": [],
2170 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2171 },
Kenneth Russelleb60cbd22017-12-05 07:54:282172 "swarming": {
2173 "can_use_on_swarming_builders": true,
Kenneth Russelleb60cbd22017-12-05 07:54:282174 "dimension_sets": [
2175 {
Ben Pastenee012aea42019-05-14 22:32:282176 "device_os": "LMY41U",
2177 "device_os_type": "user",
Kenneth Russelleb60cbd22017-12-05 07:54:282178 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:222179 "integrity": "high",
2180 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:282181 }
2182 ],
2183 "expiration": 120
2184 },
2185 "test": "foo_test"
2186 }
2187 ]
2188 },
2189 "Fake Android M Tester": {
2190 "gtest_tests": [
2191 {
Stephen Martinisbc7b7772019-05-01 22:01:432192 "merge": {
2193 "args": [],
2194 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2195 },
Kenneth Russelleb60cbd22017-12-05 07:54:282196 "swarming": {
2197 "can_use_on_swarming_builders": false
2198 },
2199 "test": "foo_test"
2200 }
2201 ]
2202 }
2203}
2204"""
2205
Ben Pastenea9e583b2019-01-16 02:57:262206CHROMEOS_TRIGGER_SCRIPT_OUTPUT = """\
2207{
2208 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2209 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2210 "Fake Tester": {
2211 "gtest_tests": [
2212 {
Stephen Martinisbc7b7772019-05-01 22:01:432213 "merge": {
2214 "args": [],
2215 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2216 },
Ben Pastenea9e583b2019-01-16 02:57:262217 "swarming": {
2218 "can_use_on_swarming_builders": true,
2219 "dimension_sets": [
2220 {
2221 "device_type": "foo_device",
2222 "integrity": "high"
2223 }
2224 ],
2225 "expiration": 120
2226 },
2227 "test": "foo_test",
2228 "trigger_script": {
2229 "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
2230 }
2231 }
2232 ]
2233 }
2234}
2235"""
2236
Stephen Martinis2a0667022018-09-25 22:31:142237GPU_DIMENSIONS_WATERFALL_OUTPUT = """\
2238{
2239 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2240 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2241 "Fake Tester": {
2242 "isolated_scripts": [
2243 {
2244 "args": [
2245 "foo_test",
2246 "--show-stdout",
2247 "--browser=release",
2248 "--passthrough",
2249 "-v",
2250 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
2251 ],
2252 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:172253 "merge": {
2254 "args": [],
2255 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2256 },
Stephen Martinis2a0667022018-09-25 22:31:142257 "name": "foo_test",
Kenneth Russell44910c32018-12-03 23:35:112258 "should_retry_with_patch": false,
Stephen Martinis2a0667022018-09-25 22:31:142259 "swarming": {
2260 "can_use_on_swarming_builders": true,
2261 "dimension_sets": [
2262 {
2263 "iama": "mixin",
2264 "integrity": "high"
2265 }
2266 ],
2267 "expiration": 120,
2268 "idempotent": false,
2269 "value": "test"
Chan Liab7d8dd82020-04-24 23:42:192270 },
Chan Li17d969f92020-07-10 00:50:032271 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Stephen Martinis2a0667022018-09-25 22:31:142272 }
2273 ]
2274 }
2275}
2276"""
2277
Kenneth Russell78fd8702018-05-17 01:15:522278LUCI_MILO_CFG = """\
2279consoles {
2280 builders {
2281 name: "buildbucket/luci.chromium.ci/Fake Tester"
2282 }
2283}
2284"""
2285
Stephen Martinis54d64ad2018-09-21 22:16:202286LUCI_MILO_CFG_WATERFALL_SORTING = """\
2287consoles {
2288 builders {
2289 name: "buildbucket/luci.chromium.ci/Fake Tester"
2290 name: "buildbucket/luci.chromium.ci/Really Fake Tester"
2291 }
2292}
2293"""
2294
Stephen Martinis54d64ad2018-09-21 22:16:202295TEST_SUITE_SORTING_WATERFALL = """
2296[
2297 {
Greg Gutermanf60eb052020-03-12 17:40:012298 'project': 'chromium',
2299 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202300 'name': 'chromium.test',
2301 'machines': {
2302 'Fake Tester': {
2303 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562304 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202305 'scripts': 'suite_b',
2306 },
2307 },
2308 },
2309 },
2310]
2311"""
2312
2313TEST_SUITE_SORTED_WATERFALL = """
2314[
2315 {
Greg Gutermanf60eb052020-03-12 17:40:012316 'project': 'chromium',
2317 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202318 'name': 'chromium.test',
2319 'machines': {
2320 'Fake Tester': {
2321 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562322 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202323 'scripts': 'suite_b',
2324 },
2325 },
2326 'Really Fake Tester': {
2327 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562328 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202329 'scripts': 'suite_b',
2330 },
2331 },
2332 },
2333 },
2334 {
Greg Gutermanf60eb052020-03-12 17:40:012335 'project': 'chromium',
2336 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202337 'name': 'chromium.zz.test',
2338 'machines': {
2339 'Fake Tester': {
2340 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562341 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202342 'scripts': 'suite_b',
2343 },
2344 },
2345 'Really Fake Tester': {
2346 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562347 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202348 'scripts': 'suite_b',
2349 },
2350 },
2351 },
2352 },
2353]
2354"""
2355
2356TEST_SUITE_UNSORTED_WATERFALL_1 = """
2357[
2358 {
Greg Gutermanf60eb052020-03-12 17:40:012359 'project': 'chromium',
2360 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202361 'name': 'chromium.zz.test',
2362 'machines': {
2363 'Fake Tester': {
2364 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562365 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202366 'scripts': 'suite_b',
2367 },
2368 },
2369 'Really Fake Tester': {
2370 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562371 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202372 'scripts': 'suite_b',
2373 },
2374 },
2375 },
2376 },
2377 {
Greg Gutermanf60eb052020-03-12 17:40:012378 'project': 'chromium',
2379 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202380 'name': 'chromium.test',
2381 'machines': {
2382 'Fake Tester': {
2383 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562384 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202385 'scripts': 'suite_b',
2386 },
2387 },
2388 'Really Fake Tester': {
2389 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562390 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202391 'scripts': 'suite_b',
2392 },
2393 },
2394 },
2395 },
2396]
2397"""
2398
2399TEST_SUITE_UNSORTED_WATERFALL_2 = """
2400[
2401 {
Greg Gutermanf60eb052020-03-12 17:40:012402 'project': 'chromium',
2403 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202404 'name': 'chromium.test',
2405 'machines': {
2406 'Really Fake Tester': {
2407 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562408 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202409 'scripts': 'suite_b',
2410 },
2411 },
2412 'Fake Tester': {
2413 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562414 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202415 'scripts': 'suite_b',
2416 },
2417 },
2418 },
2419 },
2420 {
Greg Gutermanf60eb052020-03-12 17:40:012421 'project': 'chromium',
2422 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202423 'name': 'chromium.zz.test',
2424 'machines': {
2425 'Fake Tester': {
2426 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562427 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202428 'scripts': 'suite_b',
2429 },
2430 },
2431 'Really Fake Tester': {
2432 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562433 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202434 'scripts': 'suite_b',
2435 },
2436 },
2437 },
2438 },
2439]
2440"""
2441
2442# Note that the suites in basic_suites would be sorted after the suites in
2443# compound_suites. This is valid though, because each set of suites is sorted
2444# separately.
Dirk Pranke0e879b22020-07-16 23:53:562445# suite_c is a 'gtest_tests' test
2446# suite_d is a 'scripts' test
Stephen Martinis54d64ad2018-09-21 22:16:202447TEST_SUITE_SORTED = """\
2448{
2449 'basic_suites': {
2450 'suite_c': {
2451 'suite_c': {},
2452 },
2453 'suite_d': {
2454 'script': {
2455 'script': 'suite_d.py',
2456 }
2457 },
2458 },
2459 'compound_suites': {
2460 'suite_a': [
2461 'suite_c',
2462 ],
2463 'suite_b': [
2464 'suite_d',
2465 ],
2466 },
2467}
2468"""
2469
2470TEST_SUITE_UNSORTED_1 = """\
2471{
2472 'basic_suites': {
2473 'suite_d': {
2474 'a': 'b',
2475 },
2476 'suite_c': {
2477 'a': 'b',
2478 },
2479 },
2480 'compound_suites': {
2481 'suite_a': [
2482 'suite_c',
2483 ],
2484 'suite_b': [
2485 'suite_d',
2486 ],
2487 },
2488}
2489"""
2490
2491TEST_SUITE_UNSORTED_2 = """\
2492{
2493 'basic_suites': {
2494 'suite_c': {
2495 'a': 'b',
2496 },
2497 'suite_d': {
2498 'a': 'b',
2499 },
2500 },
2501 'compound_suites': {
2502 'suite_b': [
2503 'suite_c',
2504 ],
2505 'suite_a': [
2506 'suite_d',
2507 ],
2508 },
2509}
2510"""
2511TEST_SUITE_UNSORTED_3 = """\
2512{
2513 'basic_suites': {
2514 'suite_d': {
2515 'a': 'b',
2516 },
2517 'suite_c': {
2518 'a': 'b',
2519 },
2520 },
2521 'compound_suites': {
2522 'suite_b': [
2523 'suite_c',
2524 ],
2525 'suite_a': [
2526 'suite_d',
2527 ],
2528 },
2529}
2530"""
2531
2532
2533TEST_SUITES_SYNTAX_ERROR = """\
2534{
2535 'basic_suites': {
2536 3: {
2537 'suite_c': {},
2538 },
2539 },
2540 'compound_suites': {},
2541}
2542"""
2543
Nodir Turakulovfce34292019-12-18 17:05:412544GN_ISOLATE_MAP="""\
2545{
2546 'foo_test': {
2547 'label': '//chrome/test:foo_test',
2548 'type': 'windowed_test_launcher',
2549 }
2550}
2551"""
2552
Chan Liab7d8dd82020-04-24 23:42:192553GPU_TELEMETRY_GN_ISOLATE_MAP="""\
2554{
2555 'telemetry_gpu_integration_test': {
2556 'label': '//chrome/test:telemetry_gpu_integration_test',
2557 'type': 'script',
2558 }
2559}
2560"""
Brian Sheedyf74819b2021-06-04 01:38:382561
2562GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID = """\
2563{
2564 'telemetry_gpu_integration_test_android_chrome': {
2565 'label': '//chrome/test:telemetry_gpu_integration_test_android_chrome',
2566 'type': 'script',
2567 }
2568}
2569"""
2570
2571GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW = """\
2572{
2573 'telemetry_gpu_integration_test_android_webview': {
2574 'label': '//chrome/test:telemetry_gpu_integration_test_android_webview',
2575 'type': 'script',
2576 }
2577}
2578"""
2579
Chong Guc2ca5d02022-01-11 19:52:172580GPU_TELEMETRY_GN_ISOLATE_MAP_FUCHSIA = """\
2581{
2582 'telemetry_gpu_integration_test_fuchsia': {
2583 'label': '//chrome/test:telemetry_gpu_integration_test_fuchsia',
2584 'type': 'script',
2585 }
2586}
2587"""
2588
Fabrice de Ganscbd655f2022-08-04 20:15:302589GPU_TELEMETRY_GN_ISOLATE_MAP_CAST_STREAMING = """\
2590{
2591 'telemetry_gpu_integration_test_fuchsia': {
2592 'label': '//chrome/test:telemetry_gpu_integration_test_fuchsia',
2593 'type': 'script',
2594 }
2595}
2596"""
2597
Corentin Wallez55b8e772020-04-24 17:39:282598GN_ISOLATE_MAP_KEY_LABEL_MISMATCH="""\
2599{
2600 'foo_test': {
2601 'label': '//chrome/test:foo_test_tmp',
2602 'type': 'windowed_test_launcher',
2603 }
2604}
2605"""
2606
2607GN_ISOLATE_MAP_USING_IMPLICIT_NAME="""\
2608{
2609 'foo_test': {
2610 'label': '//chrome/foo_test',
2611 'type': 'windowed_test_launcher',
2612 }
2613}
2614"""
2615
Garrett Beaty1afaccc2020-06-25 19:58:152616class UnitTest(TestCase):
Kenneth Russelleb60cbd22017-12-05 07:54:282617 def test_base_generator(self):
2618 # Only needed for complete code coverage.
2619 self.assertRaises(NotImplementedError,
2620 generate_buildbot_json.BaseGenerator(None).generate,
2621 None, None, None, None)
2622 self.assertRaises(NotImplementedError,
2623 generate_buildbot_json.BaseGenerator(None).sort,
2624 None)
2625
2626 def test_good_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152627 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522628 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502629 fbb.check_input_file_consistency(verbose=True)
2630 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282631
2632 def test_good_composition_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152633 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2634 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502635 fbb.check_input_file_consistency(verbose=True)
2636 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282637
2638 def test_bad_composition_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152639 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2640 BAD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232641 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2642 'compound_suites may not refer to.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502643 fbb.check_input_file_consistency(verbose=True)
2644 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282645
Andrew Luo0f1dee02019-09-06 16:50:472646 def test_composition_test_suites_no_conflicts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152647 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2648 CONFLICTING_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232649 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2650 'Conflicting test definitions.*'):
Andrew Luo0f1dee02019-09-06 16:50:472651 fbb.check_input_file_consistency(verbose=True)
2652 self.assertFalse(fbb.printed_lines)
2653
Stephen Martinis54d64ad2018-09-21 22:16:202654 def test_composition_test_suites_no_duplicate_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:152655 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2656 DUPLICATES_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232657 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2658 '.*may not duplicate basic test suite.*'):
Stephen Martinis54d64ad2018-09-21 22:16:202659 fbb.check_input_file_consistency(verbose=True)
2660 self.assertFalse(fbb.printed_lines)
2661
Kenneth Russelleb60cbd22017-12-05 07:54:282662 def test_unknown_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152663 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522664 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232665 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2666 'Test suite baz_tests from machine.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502667 fbb.check_input_file_consistency(verbose=True)
2668 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282669
2670 def test_unknown_test_suite_types_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152671 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_TYPE_WATERFALL,
2672 FOO_TEST_SUITE, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232673 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2674 'Unknown test suite type foo_test_type.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502675 fbb.check_input_file_consistency(verbose=True)
2676 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282677
2678 def test_unrefed_test_suite_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152679 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, UNREFED_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522680 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232681 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2682 '.*unreferenced.*bar_tests.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502683 fbb.check_input_file_consistency(verbose=True)
2684 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282685
2686 def test_good_waterfall_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152687 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2688 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2689 self.create_testing_buildbot_json_file('chromium.test.json',
2690 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282691 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502692 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282693
2694 def test_reusing_gtest_targets(self):
Garrett Beaty1afaccc2020-06-25 19:58:152695 fbb = FakeBBGen(self.args,
2696 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282697 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412698 LUCI_MILO_CFG,
2699 gn_isolate_map=GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152700 self.create_testing_buildbot_json_file('chromium.test.json',
2701 VARIATION_GTEST_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282702 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502703 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282704
Chong Guee622242020-10-28 18:17:352705 def test_load_multiple_isolate_map_files_with_duplicates(self):
2706 self.args.isolate_map_files = ['gn_isolate_map.pyl']
2707 fbb = FakeBBGen(self.args,
2708 FOO_GTESTS_WATERFALL,
2709 REUSING_TEST_WITH_DIFFERENT_NAME,
2710 LUCI_MILO_CFG,
2711 gn_isolate_map=GN_ISOLATE_MAP)
Jamie Madillcf4f8c72021-05-20 19:24:232712 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2713 'Duplicate targets in isolate map files.*'):
Chong Guee622242020-10-28 18:17:352714 fbb.load_configuration_files()
2715
2716 def test_load_multiple_isolate_map_files_without_duplicates(self):
2717 self.args.isolate_map_files = ['gn_isolate_map2.pyl']
2718 fbb = FakeBBGen(self.args,
2719 FOO_GTESTS_WATERFALL,
2720 REUSING_TEST_WITH_DIFFERENT_NAME,
2721 LUCI_MILO_CFG,
2722 gn_isolate_map=GN_ISOLATE_MAP)
2723 fbb.load_configuration_files()
2724 isolate_dict = {}
2725 isolate_map_1 = fbb.load_pyl_file('gn_isolate_map.pyl')
2726 isolate_map_2 = fbb.load_pyl_file('gn_isolate_map2.pyl')
2727 isolate_dict.update(isolate_map_1)
2728 isolate_dict.update(isolate_map_2)
Jamie Madillcf4f8c72021-05-20 19:24:232729 self.assertEqual(isolate_dict, fbb.gn_isolate_map)
Chong Guee622242020-10-28 18:17:352730
Corentin Wallez55b8e772020-04-24 17:39:282731 def test_gn_isolate_map_with_label_mismatch(self):
Garrett Beaty1afaccc2020-06-25 19:58:152732 fbb = FakeBBGen(self.args,
2733 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282734 FOO_TEST_SUITE,
2735 LUCI_MILO_CFG,
2736 gn_isolate_map=GN_ISOLATE_MAP_KEY_LABEL_MISMATCH)
Jamie Madillcf4f8c72021-05-20 19:24:232737 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2738 'key name.*foo_test.*label.*'
2739 'foo_test_tmp.*'):
Corentin Wallez55b8e772020-04-24 17:39:282740 fbb.check_input_file_consistency(verbose=True)
2741 self.assertFalse(fbb.printed_lines)
2742
2743 def test_gn_isolate_map_using_implicit_gn_name(self):
Garrett Beaty1afaccc2020-06-25 19:58:152744 fbb = FakeBBGen(self.args,
2745 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282746 FOO_TEST_SUITE,
2747 LUCI_MILO_CFG,
2748 gn_isolate_map=GN_ISOLATE_MAP_USING_IMPLICIT_NAME)
Jamie Madillcf4f8c72021-05-20 19:24:232749 with self.assertRaisesRegex(
2750 generate_buildbot_json.BBGenErr,
2751 'Malformed.*//chrome/foo_test.*for key.*'
2752 'foo_test.*'):
Corentin Wallez55b8e772020-04-24 17:39:282753 fbb.check_input_file_consistency(verbose=True)
2754 self.assertFalse(fbb.printed_lines)
2755
Kenneth Russelleb60cbd22017-12-05 07:54:282756 def test_noop_exception_does_nothing(self):
Garrett Beaty1afaccc2020-06-25 19:58:152757 fbb = FakeBBGen(self.args,
2758 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282759 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412760 LUCI_MILO_CFG,
2761 exceptions=EMPTY_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152762 self.create_testing_buildbot_json_file('chromium.test.json',
2763 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282764 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502765 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282766
Kenneth Russell8ceeabf2017-12-11 17:53:282767 def test_test_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152768 fbb = FakeBBGen(self.args,
2769 FOO_GTESTS_WATERFALL,
Kenneth Russell8ceeabf2017-12-11 17:53:282770 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412771 LUCI_MILO_CFG,
2772 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152773 self.create_testing_buildbot_json_file('chromium.test.json',
2774 MERGED_ARGS_OUTPUT)
Kenneth Russell8ceeabf2017-12-11 17:53:282775 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502776 self.assertFalse(fbb.printed_lines)
Kenneth Russell8ceeabf2017-12-11 17:53:282777
Kenneth Russell650995a2018-05-03 21:17:012778 def test_enable_features_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152779 fbb = FakeBBGen(self.args, FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL,
2780 FOO_TEST_SUITE_WITH_ENABLE_FEATURES, LUCI_MILO_CFG)
2781 self.create_testing_buildbot_json_file('chromium.test.json',
2782 MERGED_ENABLE_FEATURES_OUTPUT)
Kenneth Russell650995a2018-05-03 21:17:012783 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502784 self.assertFalse(fbb.printed_lines)
Kenneth Russell650995a2018-05-03 21:17:012785
Kenneth Russell8a386d42018-06-02 09:48:012786 def test_linux_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152787 fbb = FakeBBGen(self.args, FOO_LINUX_GTESTS_WATERFALL,
2788 FOO_TEST_SUITE_WITH_LINUX_ARGS, LUCI_MILO_CFG)
2789 self.create_testing_buildbot_json_file('chromium.test.json',
2790 LINUX_ARGS_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012791 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502792 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012793
Kenneth Russelleb60cbd22017-12-05 07:54:282794 def test_test_filtering(self):
Garrett Beaty1afaccc2020-06-25 19:58:152795 fbb = FakeBBGen(self.args,
2796 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282797 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412798 LUCI_MILO_CFG,
2799 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152800 self.create_testing_buildbot_json_file(
2801 'chromium.test.json', COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282802 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502803 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282804
2805 def test_test_modifications(self):
Garrett Beaty1afaccc2020-06-25 19:58:152806 fbb = FakeBBGen(self.args,
2807 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282808 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412809 LUCI_MILO_CFG,
2810 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152811 self.create_testing_buildbot_json_file('chromium.test.json',
2812 MODIFIED_OUTPUT)
2813 self.create_testing_buildbot_json_file('chromium.ci.json', MODIFIED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282814 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502815 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282816
John Budorick5bc387fe2019-05-09 20:02:532817 def test_test_with_explicit_none(self):
Garrett Beaty1afaccc2020-06-25 19:58:152818 fbb = FakeBBGen(self.args,
2819 FOO_GTESTS_WATERFALL,
John Budorick5bc387fe2019-05-09 20:02:532820 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412821 LUCI_MILO_CFG,
2822 exceptions=FOO_TEST_EXPLICIT_NONE_EXCEPTIONS,
2823 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:152824 self.create_testing_buildbot_json_file('chromium.test.json',
2825 EXPLICIT_NONE_OUTPUT)
2826 self.create_testing_buildbot_json_file('chromium.ci.json',
2827 EXPLICIT_NONE_OUTPUT)
John Budorick5bc387fe2019-05-09 20:02:532828 fbb.check_output_file_consistency(verbose=True)
2829 self.assertFalse(fbb.printed_lines)
2830
Kenneth Russelleb60cbd22017-12-05 07:54:282831 def test_isolated_script_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152832 fbb = FakeBBGen(self.args,
2833 FOO_ISOLATED_SCRIPTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282834 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412835 LUCI_MILO_CFG,
2836 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152837 self.create_testing_buildbot_json_file('chromium.test.json',
2838 ISOLATED_SCRIPT_OUTPUT)
2839 self.create_testing_buildbot_json_file('chromium.ci.json',
2840 ISOLATED_SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282841 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502842 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282843
Dirk Pranke0e879b22020-07-16 23:53:562844 def test_isolated_script_tests(self):
2845 fbb = FakeBBGen(self.args,
2846 FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID,
2847 GOOD_COMPOSITION_TEST_SUITES,
2848 LUCI_MILO_CFG,
2849 exceptions=NO_BAR_TEST_EXCEPTIONS)
2850 self.create_testing_buildbot_json_file('chromium.test.json',
2851 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2852 self.create_testing_buildbot_json_file('chromium.ci.json',
2853 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2854 fbb.check_output_file_consistency(verbose=True)
2855 self.assertFalse(fbb.printed_lines)
2856
Dirk Pranke1b767092017-12-07 04:44:232857 def test_script_with_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152858 fbb = FakeBBGen(self.args,
2859 FOO_SCRIPT_WATERFALL,
Dirk Pranke1b767092017-12-07 04:44:232860 SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412861 LUCI_MILO_CFG,
2862 exceptions=SCRIPT_WITH_ARGS_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152863 self.create_testing_buildbot_json_file('chromium.test.json',
2864 SCRIPT_WITH_ARGS_OUTPUT)
2865 self.create_testing_buildbot_json_file('chromium.ci.json',
2866 SCRIPT_WITH_ARGS_OUTPUT)
Dirk Pranke1b767092017-12-07 04:44:232867 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502868 self.assertFalse(fbb.printed_lines)
Dirk Pranke1b767092017-12-07 04:44:232869
2870 def test_script(self):
Garrett Beaty1afaccc2020-06-25 19:58:152871 fbb = FakeBBGen(self.args,
2872 FOO_SCRIPT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282873 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412874 LUCI_MILO_CFG,
2875 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152876 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
2877 self.create_testing_buildbot_json_file('chromium.ci.json', SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282878 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502879 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282880
Brian Sheedy158cd0f2019-04-26 01:12:442881 def test_script_machine_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152882 fbb = FakeBBGen(self.args,
2883 FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442884 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412885 LUCI_MILO_CFG,
2886 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232887 with self.assertRaisesRegex(
2888 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442889 'Attempted to generate a script test on tester.*'):
2890 fbb.check_output_file_consistency(verbose=True)
2891
2892 def test_script_waterfall_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152893 fbb = FakeBBGen(self.args,
2894 FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442895 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412896 LUCI_MILO_CFG,
2897 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232898 with self.assertRaisesRegex(
2899 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442900 'Attempted to generate a script test on tester.*'):
2901 fbb.check_output_file_consistency(verbose=True)
2902
Kenneth Russelleb60cbd22017-12-05 07:54:282903 def test_junit_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152904 fbb = FakeBBGen(self.args,
2905 FOO_JUNIT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282906 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412907 LUCI_MILO_CFG,
2908 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152909 self.create_testing_buildbot_json_file('chromium.test.json', JUNIT_OUTPUT)
2910 self.create_testing_buildbot_json_file('chromium.ci.json', JUNIT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282911 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502912 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282913
Kenneth Russell8a386d42018-06-02 09:48:012914 def test_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152915 fbb = FakeBBGen(self.args,
2916 FOO_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell8a386d42018-06-02 09:48:012917 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
Nodir Turakulovfce34292019-12-18 17:05:412918 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192919 exceptions=NO_BAR_TEST_EXCEPTIONS,
2920 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152921 self.create_testing_buildbot_json_file('chromium.test.json',
2922 GPU_TELEMETRY_TEST_OUTPUT)
2923 self.create_testing_buildbot_json_file('chromium.ci.json',
2924 GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012925 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502926 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012927
Brian Sheedyf74819b2021-06-04 01:38:382928 def test_gpu_telemetry_tests_android(self):
2929 fbb = FakeBBGen(self.args,
2930 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID,
2931 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2932 LUCI_MILO_CFG,
2933 exceptions=NO_BAR_TEST_EXCEPTIONS,
2934 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID)
2935 self.create_testing_buildbot_json_file('chromium.test.json',
2936 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2937 self.create_testing_buildbot_json_file('chromium.ci.json',
2938 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2939 fbb.check_output_file_consistency(verbose=True)
2940 self.assertFalse(fbb.printed_lines)
2941
2942 def test_gpu_telemetry_tests_android_webview(self):
2943 fbb = FakeBBGen(self.args,
2944 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID_WEBVIEW,
2945 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2946 LUCI_MILO_CFG,
2947 exceptions=NO_BAR_TEST_EXCEPTIONS,
2948 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW)
2949 self.create_testing_buildbot_json_file(
2950 'chromium.test.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2951 self.create_testing_buildbot_json_file(
2952 'chromium.ci.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2953 fbb.check_output_file_consistency(verbose=True)
2954 self.assertFalse(fbb.printed_lines)
2955
Chong Guc2ca5d02022-01-11 19:52:172956 def test_gpu_telemetry_tests_fuchsia(self):
2957 fbb = FakeBBGen(self.args,
2958 FOO_GPU_TELEMETRY_TEST_WATERFALL_FUCHSIA,
2959 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2960 LUCI_MILO_CFG,
2961 exceptions=NO_BAR_TEST_EXCEPTIONS,
2962 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_FUCHSIA)
2963 self.create_testing_buildbot_json_file('chromium.test.json',
2964 GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA)
2965 self.create_testing_buildbot_json_file('chromium.ci.json',
2966 GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA)
2967 fbb.check_output_file_consistency(verbose=True)
2968 self.assertFalse(fbb.printed_lines)
2969
Fabrice de Ganscbd655f2022-08-04 20:15:302970 def test_gpu_telemetry_tests_cast_streaming(self):
2971 fbb = FakeBBGen(self.args,
2972 FOO_GPU_TELEMETRY_TEST_WATERFALL_CAST_STREAMING,
2973 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2974 LUCI_MILO_CFG,
2975 exceptions=NO_BAR_TEST_EXCEPTIONS,
2976 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_CAST_STREAMING)
2977 self.create_testing_buildbot_json_file(
2978 'chromium.test.json', GPU_TELEMETRY_TEST_OUTPUT_CAST_STREAMING)
2979 self.create_testing_buildbot_json_file(
2980 'chromium.ci.json', GPU_TELEMETRY_TEST_OUTPUT_CAST_STREAMING)
2981 fbb.check_output_file_consistency(verbose=True)
2982 self.assertFalse(fbb.printed_lines)
2983
Brian Sheedyb6491ba2022-09-26 20:49:492984 def test_gpu_telemetry_tests_skylab(self):
2985 fbb = FakeBBGen(self.args,
2986 FOO_GPU_TELEMETRY_TEST_WATERFALL_SKYLAB,
2987 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2988 LUCI_MILO_CFG,
2989 exceptions=NO_BAR_TEST_EXCEPTIONS,
2990 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
2991 self.create_testing_buildbot_json_file('chromium.test.json',
2992 GPU_TELEMETRY_TEST_OUTPUT_SKYLAB)
2993 self.create_testing_buildbot_json_file('chromium.ci.json',
2994 GPU_TELEMETRY_TEST_OUTPUT_SKYLAB)
2995 fbb.check_output_file_consistency(verbose=True)
2996 self.assertFalse(fbb.printed_lines)
2997
Kenneth Russell384a1732019-03-16 02:36:022998 def test_nvidia_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152999 fbb = FakeBBGen(self.args,
3000 NVIDIA_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:023001 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413002 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193003 exceptions=NO_BAR_TEST_EXCEPTIONS,
3004 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153005 self.create_testing_buildbot_json_file('chromium.test.json',
3006 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
3007 self.create_testing_buildbot_json_file('chromium.ci.json',
3008 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:023009 fbb.check_output_file_consistency(verbose=True)
3010 self.assertFalse(fbb.printed_lines)
3011
3012 def test_intel_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:153013 fbb = FakeBBGen(self.args,
3014 INTEL_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:023015 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413016 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193017 exceptions=NO_BAR_TEST_EXCEPTIONS,
3018 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153019 self.create_testing_buildbot_json_file('chromium.test.json',
3020 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
3021 self.create_testing_buildbot_json_file('chromium.ci.json',
3022 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:023023 fbb.check_output_file_consistency(verbose=True)
3024 self.assertFalse(fbb.printed_lines)
3025
Ben Pastene5f231cf22022-05-05 18:03:073026 def test_gpu_telemetry_tests_with_variants(self):
3027 fbb = FakeBBGen(self.args,
3028 GPU_TELEMETRY_TEST_VARIANTS_WATERFALL,
3029 MATRIX_COMPOUND_MIXED_VARIANTS_REF,
3030 LUCI_MILO_CFG,
3031 exceptions=NO_BAR_TEST_EXCEPTIONS,
3032 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP,
3033 variants=MULTI_VARIANTS_FILE)
3034 self.create_testing_buildbot_json_file('chromium.test.json',
3035 GPU_TELEMETRY_TEST_VARIANTS_OUTPUT)
3036 fbb.check_output_file_consistency(verbose=True)
3037 self.assertFalse(fbb.printed_lines)
3038
Brian Sheedyf9387db7b2019-08-05 19:26:103039 def test_intel_uhd_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:153040 fbb = FakeBBGen(self.args,
3041 INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL,
Brian Sheedyf9387db7b2019-08-05 19:26:103042 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413043 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193044 exceptions=NO_BAR_TEST_EXCEPTIONS,
3045 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153046 self.create_testing_buildbot_json_file('chromium.test.json',
3047 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
3048 self.create_testing_buildbot_json_file('chromium.ci.json',
3049 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
Brian Sheedyf9387db7b2019-08-05 19:26:103050 fbb.check_output_file_consistency(verbose=True)
3051 self.assertFalse(fbb.printed_lines)
3052
Jamie Madilla8be0d72020-10-02 05:24:043053 def test_gtest_as_isolated_Script(self):
3054 fbb = FakeBBGen(self.args,
3055 FOO_GTESTS_WATERFALL,
3056 GTEST_AS_ISOLATED_SCRIPT_SUITE,
3057 LUCI_MILO_CFG,
3058 gn_isolate_map=GN_ISOLATE_MAP)
3059 self.create_testing_buildbot_json_file(
3060 'chromium.test.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
3061 self.create_testing_buildbot_json_file(
3062 'chromium.ci.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
3063 fbb.check_output_file_consistency(verbose=True)
3064 self.assertFalse(fbb.printed_lines)
3065
Kenneth Russelleb60cbd22017-12-05 07:54:283066 def test_ungenerated_output_files_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:153067 fbb = FakeBBGen(self.args,
3068 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:283069 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:413070 LUCI_MILO_CFG,
3071 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:153072 self.create_testing_buildbot_json_file(
3073 'chromium.test.json', '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Stephen Martinis7eb8b612018-09-21 00:17:503074 with self.assertRaises(generate_buildbot_json.BBGenErr):
Kenneth Russell73c3bd8b2018-10-19 22:30:193075 fbb.check_output_file_consistency(verbose=True, dump=False)
Stephen Martinis7eb8b612018-09-21 00:17:503076 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233077 self.assertRegex(
Dirk Pranke6269d302020-10-01 00:14:393078 joined_lines, 'File chromium.test.json did not have the following'
Stephen Martinis7eb8b612018-09-21 00:17:503079 ' expected contents:.*')
Jamie Madillcf4f8c72021-05-20 19:24:233080 self.assertRegex(joined_lines, '.*--- expected.*')
3081 self.assertRegex(joined_lines, '.*\+\+\+ current.*')
Stephen Martinis7eb8b612018-09-21 00:17:503082 fbb.printed_lines = []
3083 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:283084
3085 def test_android_output_options(self):
Garrett Beaty1afaccc2020-06-25 19:58:153086 fbb = FakeBBGen(self.args, ANDROID_WATERFALL, FOO_TEST_SUITE, LUCI_MILO_CFG)
3087 self.create_testing_buildbot_json_file('chromium.test.json',
3088 ANDROID_WATERFALL_OUTPUT)
3089 self.create_testing_buildbot_json_file('chromium.ci.json',
3090 ANDROID_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:283091 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:503092 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:283093
3094 def test_nonexistent_removal_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:153095 fbb = FakeBBGen(self.args,
3096 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:283097 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413098 LUCI_MILO_CFG,
3099 exceptions=NONEXISTENT_REMOVAL)
Jamie Madillcf4f8c72021-05-20 19:24:233100 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3101 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:503102 fbb.check_input_file_consistency(verbose=True)
3103 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:283104
3105 def test_nonexistent_modification_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:153106 fbb = FakeBBGen(self.args,
3107 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:283108 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413109 LUCI_MILO_CFG,
3110 exceptions=NONEXISTENT_MODIFICATION)
Jamie Madillcf4f8c72021-05-20 19:24:233111 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3112 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:503113 fbb.check_input_file_consistency(verbose=True)
3114 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:283115
John Budorickedfe7f872018-01-23 15:27:223116 def test_waterfall_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:153117 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL,
3118 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
3119 self.create_testing_buildbot_json_file(
3120 'chromium.test.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
3121 self.create_testing_buildbot_json_file(
3122 'chromium.ci.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
John Budorickedfe7f872018-01-23 15:27:223123 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:503124 self.assertFalse(fbb.printed_lines)
John Budorickedfe7f872018-01-23 15:27:223125
Ben Pastenea9e583b2019-01-16 02:57:263126 def test_chromeos_trigger_script_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:153127 fbb = FakeBBGen(self.args, FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL,
3128 FOO_TEST_SUITE, LUCI_MILO_CFG)
3129 self.create_testing_buildbot_json_file('chromium.test.json',
3130 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
3131 self.create_testing_buildbot_json_file('chromium.ci.json',
3132 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
Ben Pastenea9e583b2019-01-16 02:57:263133 fbb.check_output_file_consistency(verbose=True)
3134 self.assertFalse(fbb.printed_lines)
3135
Zhiling Huangbe008172018-03-08 19:13:113136 def test_relative_pyl_file_dir(self):
Garrett Beaty1afaccc2020-06-25 19:58:153137 self.override_args(pyl_files_dir='relative/path/', waterfall_filters=[])
3138 fbb = FakeBBGen(self.args,
3139 FOO_GTESTS_WATERFALL,
Zhiling Huangbe008172018-03-08 19:13:113140 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:413141 LUCI_MILO_CFG,
3142 gn_isolate_map=GN_ISOLATE_MAP)
Stephen Martinis7eb8b612018-09-21 00:17:503143 fbb.check_input_file_consistency(verbose=True)
Garrett Beaty1afaccc2020-06-25 19:58:153144 self.create_testing_buildbot_json_file('relative/path/chromium.test.json',
3145 VARIATION_GTEST_OUTPUT)
3146 self.create_testing_buildbot_json_file('relative/path/chromium.ci.json',
3147 VARIATION_GTEST_OUTPUT)
Zhiling Huangbe008172018-03-08 19:13:113148 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:503149 self.assertFalse(fbb.printed_lines)
Zhiling Huangbe008172018-03-08 19:13:113150
Nico Weberd18b8962018-05-16 19:39:383151 def test_nonexistent_bot_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:153152 fbb = FakeBBGen(self.args, UNKNOWN_BOT_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:523153 LUCI_MILO_CFG)
Nico Weberd18b8962018-05-16 19:39:383154 with self.assertRaises(generate_buildbot_json.BBGenErr):
Stephen Martinis7eb8b612018-09-21 00:17:503155 fbb.check_input_file_consistency(verbose=True)
3156 self.assertFalse(fbb.printed_lines)
Nico Weberd18b8962018-05-16 19:39:383157
Garrett Beaty4f3e9212020-06-25 20:21:493158 def test_nonexistent_bot_raises_when_no_project_pyl_exists(self):
Garrett Beaty1afaccc2020-06-25 19:58:153159 fbb = FakeBBGen(self.args,
3160 UNKNOWN_BOT_GTESTS_WATERFALL,
Garrett Beaty2a02de3c2020-05-15 13:57:353161 FOO_TEST_SUITE,
3162 LUCI_MILO_CFG,
Garrett Beaty4f3e9212020-06-25 20:21:493163 project_pyl=None)
3164 with self.assertRaises(generate_buildbot_json.BBGenErr):
3165 fbb.check_input_file_consistency(verbose=True)
3166 self.assertFalse(fbb.printed_lines)
3167
3168 def test_nonexistent_bot_does_not_raise_when_validation_disabled(self):
3169 fbb = FakeBBGen(
3170 self.args,
3171 UNKNOWN_BOT_GTESTS_WATERFALL,
3172 FOO_TEST_SUITE,
3173 LUCI_MILO_CFG,
3174 project_pyl='{"validate_source_side_specs_have_builder": False}')
Garrett Beaty2a02de3c2020-05-15 13:57:353175 fbb.check_input_file_consistency(verbose=True)
3176
Stephen Martinis54d64ad2018-09-21 22:16:203177 def test_waterfalls_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153178 fbb = FakeBBGen(self.args, TEST_SUITE_SORTED_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:203179 LUCI_MILO_CFG_WATERFALL_SORTING)
3180 fbb.check_input_file_consistency(verbose=True)
3181 self.assertFalse(fbb.printed_lines)
3182
Garrett Beaty1afaccc2020-06-25 19:58:153183 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_1,
3184 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:233185 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:203186 generate_buildbot_json.BBGenErr,
3187 'The following files have invalid keys: waterfalls.pyl'):
3188 fbb.check_input_file_consistency(verbose=True)
3189 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233190 self.assertRegex(joined_lines, '.*\+ chromium\..*test.*')
3191 self.assertRegex(joined_lines, '.*\- chromium\..*test.*')
Stephen Martinis54d64ad2018-09-21 22:16:203192 fbb.printed_lines = []
3193 self.assertFalse(fbb.printed_lines)
3194
Garrett Beaty1afaccc2020-06-25 19:58:153195 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_2,
3196 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:233197 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:203198 generate_buildbot_json.BBGenErr,
3199 'The following files have invalid keys: waterfalls.pyl'):
3200 fbb.check_input_file_consistency(verbose=True)
3201 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233202 self.assertRegex(joined_lines, '.*\+.*Fake Tester.*')
3203 self.assertRegex(joined_lines, '.*\-.*Fake Tester.*')
Stephen Martinis54d64ad2018-09-21 22:16:203204 fbb.printed_lines = []
3205 self.assertFalse(fbb.printed_lines)
3206
3207 def test_test_suite_exceptions_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153208 fbb = FakeBBGen(self.args,
3209 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203210 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:413211 LUCI_MILO_CFG,
3212 exceptions=EXCEPTIONS_SORTED)
Stephen Martinis7eb8b612018-09-21 00:17:503213 fbb.check_input_file_consistency(verbose=True)
3214 self.assertFalse(fbb.printed_lines)
Stephen Martinisf83893722018-09-19 00:02:183215
Garrett Beaty1afaccc2020-06-25 19:58:153216 fbb = FakeBBGen(self.args,
3217 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203218 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:413219 LUCI_MILO_CFG,
Stephen Martinis5bef0fc2020-01-06 22:47:533220 exceptions=EXCEPTIONS_DUPS_REMOVE_FROM)
3221 with self.assertRaises(generate_buildbot_json.BBGenErr):
3222 fbb.check_input_file_consistency(verbose=True)
3223 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233224 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:533225 fbb.printed_lines = []
3226 self.assertFalse(fbb.printed_lines)
3227
3228 def test_test_suite_exceptions_no_dups_remove_from(self):
Garrett Beaty1afaccc2020-06-25 19:58:153229 fbb = FakeBBGen(self.args,
3230 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533231 TEST_SUITE_SORTED,
3232 LUCI_MILO_CFG,
3233 exceptions=EXCEPTIONS_SORTED)
3234 fbb.check_input_file_consistency(verbose=True)
3235 self.assertFalse(fbb.printed_lines)
3236
Garrett Beaty1afaccc2020-06-25 19:58:153237 fbb = FakeBBGen(self.args,
3238 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533239 TEST_SUITE_SORTED,
3240 LUCI_MILO_CFG,
3241 exceptions=EXCEPTIONS_PER_TEST_UNSORTED)
Stephen Martinis5bef0fc2020-01-06 22:47:533242 with self.assertRaises(generate_buildbot_json.BBGenErr):
3243 fbb.check_input_file_consistency(verbose=True)
3244 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233245 self.assertRegex(joined_lines, '.*\+ Fake Tester.*')
3246 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:533247 fbb.printed_lines = []
3248 self.assertFalse(fbb.printed_lines)
3249
3250 def test_test_suite_exceptions_per_test_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153251 fbb = FakeBBGen(self.args,
3252 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533253 TEST_SUITE_SORTED,
3254 LUCI_MILO_CFG,
3255 exceptions=EXCEPTIONS_SORTED)
3256 fbb.check_input_file_consistency(verbose=True)
3257 self.assertFalse(fbb.printed_lines)
3258
Garrett Beaty1afaccc2020-06-25 19:58:153259 fbb = FakeBBGen(self.args,
3260 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533261 TEST_SUITE_SORTED,
3262 LUCI_MILO_CFG,
Nodir Turakulovfce34292019-12-18 17:05:413263 exceptions=EXCEPTIONS_UNSORTED)
Stephen Martinis54d64ad2018-09-21 22:16:203264 with self.assertRaises(generate_buildbot_json.BBGenErr):
3265 fbb.check_input_file_consistency(verbose=True)
3266 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233267 self.assertRegex(joined_lines, '.*\+ suite_.*')
3268 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:203269 fbb.printed_lines = []
3270 self.assertFalse(fbb.printed_lines)
3271
3272 def test_test_suites_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153273 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:203274 LUCI_MILO_CFG)
3275 fbb.check_input_file_consistency(verbose=True)
3276 self.assertFalse(fbb.printed_lines)
3277
3278 for unsorted in (
3279 TEST_SUITE_UNSORTED_1,
3280 TEST_SUITE_UNSORTED_2,
3281 TEST_SUITE_UNSORTED_3,
3282 ):
Garrett Beaty1afaccc2020-06-25 19:58:153283 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, unsorted,
Stephen Martinis54d64ad2018-09-21 22:16:203284 LUCI_MILO_CFG)
3285 with self.assertRaises(generate_buildbot_json.BBGenErr):
3286 fbb.check_input_file_consistency(verbose=True)
3287 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233288 self.assertRegex(joined_lines, '.*\+ suite_.*')
3289 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:203290 fbb.printed_lines = []
3291 self.assertFalse(fbb.printed_lines)
3292
Stephen Martinis11672542018-10-29 18:17:213293
3294FOO_GTESTS_WATERFALL_MIXIN_WATERFALL = """\
3295[
3296 {
3297 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013298 'project': 'chromium',
3299 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213300 'name': 'chromium.test',
3301 'machines': {
3302 'Fake Tester': {
3303 'swarming': {},
3304 'test_suites': {
3305 'gtest_tests': 'foo_tests',
3306 },
3307 },
3308 },
3309 },
3310]
3311"""
3312
3313FOO_GTESTS_BUILDER_MIXIN_WATERFALL = """\
3314[
3315 {
Greg Gutermanf60eb052020-03-12 17:40:013316 'project': 'chromium',
3317 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213318 'name': 'chromium.test',
3319 'machines': {
3320 'Fake Tester': {
3321 'mixins': ['builder_mixin'],
3322 'swarming': {},
3323 'test_suites': {
3324 'gtest_tests': 'foo_tests',
3325 },
3326 },
3327 },
3328 },
3329]
3330"""
3331
Austin Eng148d9f0f2022-02-08 19:18:533332FOO_LINUX_GTESTS_BUILDER_MIXIN_WATERFALL = """\
3333[
3334 {
3335 'project': 'chromium',
3336 'bucket': 'ci',
3337 'name': 'chromium.test',
3338 'machines': {
3339 'Fake Tester': {
3340 'os_type': 'linux',
3341 'mixins': ['builder_mixin'],
3342 'swarming': {},
3343 'test_suites': {
3344 'gtest_tests': 'foo_tests',
3345 },
3346 },
3347 },
3348 },
3349]
3350"""
3351
Brian Sheedycae63b22020-06-10 22:52:113352FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL = """\
3353[
3354 {
3355 'project': 'chromium',
3356 'bucket': 'ci',
3357 'name': 'chromium.test',
3358 'machines': {
3359 'Fake Tester': {
3360 'mixins': [
3361 'dimension_set_mixin_1',
3362 'dimension_set_mixin_2',
3363 'duplicate_dimension_set_mixin_1',
3364 'dimension_mixin',
3365 ],
3366 'swarming': {},
3367 'test_suites': {
3368 'gtest_tests': 'foo_tests',
3369 },
3370 },
3371 },
3372 },
3373]
3374"""
3375
Brian Sheedy7658c982020-01-08 02:27:583376FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL = """\
3377[
3378 {
3379 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013380 'project': 'chromium',
3381 'bucket': 'ci',
Brian Sheedy7658c982020-01-08 02:27:583382 'name': 'chromium.test',
3383 'machines': {
3384 'Fake Tester': {
3385 'remove_mixins': ['waterfall_mixin'],
3386 'swarming': {},
3387 'test_suites': {
3388 'gtest_tests': 'foo_tests',
3389 },
3390 },
3391 },
3392 },
3393]
3394"""
3395
Stephen Martinis11672542018-10-29 18:17:213396FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL = """\
3397[
3398 {
Greg Gutermanf60eb052020-03-12 17:40:013399 'project': 'chromium',
3400 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213401 'name': 'chromium.test',
3402 'machines': {
3403 'Fake Tester': {
3404 'mixins': ['random_mixin'],
3405 'swarming': {},
3406 'test_suites': {
3407 'gtest_tests': 'foo_tests',
3408 },
3409 },
3410 },
3411 },
3412]
3413"""
3414
3415FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL = """\
3416[
3417 {
Greg Gutermanf60eb052020-03-12 17:40:013418 'project': 'chromium',
3419 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213420 'name': 'chromium.test',
3421 'machines': {
3422 'Fake Tester': {
3423 'mixins': ['dimension_mixin'],
3424 'swarming': {},
3425 'test_suites': {
3426 'gtest_tests': 'foo_tests',
3427 },
3428 },
3429 },
3430 },
3431]
3432"""
3433
3434FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL = """\
3435[
3436 {
Greg Gutermanf60eb052020-03-12 17:40:013437 'project': 'chromium',
3438 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213439 'name': 'chromium.test',
3440 'machines': {
3441 'Fake Tester': {
3442 'mixins': ['dimension_mixin'],
3443 'os_type': 'win',
3444 'browser_config': 'release',
3445 'test_suites': {
3446 'gpu_telemetry_tests': 'foo_tests',
3447 },
3448 },
3449 },
3450 },
3451]
3452"""
3453
3454# Swarming mixins must be a list, a single string is not allowed.
3455FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL = """\
3456[
3457 {
Greg Gutermanf60eb052020-03-12 17:40:013458 'project': 'chromium',
3459 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213460 'name': 'chromium.test',
3461 'machines': {
3462 'Fake Tester': {
3463 'mixins': 'dimension_mixin',
3464 'swarming': {},
3465 'test_suites': {
3466 'gtest_tests': 'foo_tests',
3467 },
3468 },
3469 },
3470 },
3471]
3472"""
3473FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL = """\
3474[
3475 {
Greg Gutermanf60eb052020-03-12 17:40:013476 'project': 'chromium',
3477 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213478 'name': 'chromium.test',
3479 'machines': {
3480 'Fake Tester': {
3481 'mixins': ['nonexistant'],
3482 'swarming': {},
3483 'test_suites': {
3484 'gtest_tests': 'foo_tests',
3485 },
3486 },
3487 },
3488 },
3489]
3490"""
3491
3492FOO_GTESTS_TEST_MIXIN_WATERFALL = """\
3493[
3494 {
Greg Gutermanf60eb052020-03-12 17:40:013495 'project': 'chromium',
3496 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213497 'name': 'chromium.test',
Greg Gutermanf60eb052020-03-12 17:40:013498 'mixins': ['waterfall_mixin'],
Stephen Martinis11672542018-10-29 18:17:213499 'machines': {
3500 'Fake Tester': {
3501 'swarming': {},
3502 'test_suites': {
3503 'gtest_tests': 'foo_tests',
3504 },
3505 },
3506 },
3507 },
3508]
3509"""
3510
3511FOO_GTESTS_SORTING_MIXINS_WATERFALL = """\
3512[
3513 {
3514 'mixins': ['a_mixin', 'b_mixin', 'c_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013515 'project': 'chromium',
3516 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213517 'name': 'chromium.test',
3518 'machines': {
3519 'Fake Tester': {
3520 'swarming': {
3521 'dimension_sets': [
3522 {
3523 'kvm': '1',
3524 },
3525 ],
3526 },
3527 'test_suites': {
3528 'gtest_tests': 'foo_tests',
3529 },
3530 },
3531 },
3532 },
3533]
3534"""
3535
3536FOO_TEST_SUITE_WITH_MIXIN = """\
3537{
3538 'basic_suites': {
3539 'foo_tests': {
3540 'foo_test': {
3541 'swarming': {
3542 'dimension_sets': [
3543 {
3544 'integrity': 'high',
3545 }
3546 ],
3547 'expiration': 120,
3548 },
3549 'mixins': ['test_mixin'],
3550 },
3551 },
3552 },
3553}
3554"""
3555
3556# These mixins are invalid; if passed to check_input_file_consistency, they will
3557# fail. These are used for output file consistency checks.
3558SWARMING_MIXINS = """\
3559{
3560 'builder_mixin': {
3561 'swarming': {
3562 'value': 'builder',
3563 },
3564 },
3565 'dimension_mixin': {
3566 'swarming': {
3567 'dimensions': {
3568 'iama': 'mixin',
3569 },
3570 },
3571 },
3572 'random_mixin': {
3573 'value': 'random',
3574 },
3575 'test_mixin': {
3576 'swarming': {
3577 'value': 'test',
3578 },
3579 },
3580 'waterfall_mixin': {
3581 'swarming': {
3582 'value': 'waterfall',
3583 },
3584 },
3585}
3586"""
3587
Wezc0e835b702018-10-30 00:38:413588SWARMING_MIXINS_APPEND = """\
3589{
3590 'builder_mixin': {
3591 '$mixin_append': {
3592 'args': [ '--mixin-argument' ],
Austin Eng148d9f0f2022-02-08 19:18:533593 'linux_args': [ '--linux-mixin-argument' ],
Wezc0e835b702018-10-30 00:38:413594 },
3595 },
3596}
3597"""
3598
3599SWARMING_MIXINS_APPEND_NOT_LIST = """\
3600{
3601 'builder_mixin': {
3602 '$mixin_append': {
3603 'args': 'I am not a list',
3604 },
3605 },
3606}
3607"""
3608
3609SWARMING_MIXINS_APPEND_TO_SWARMING = """\
3610{
3611 'builder_mixin': {
3612 '$mixin_append': {
3613 'swarming': [ 'swarming!' ],
3614 },
3615 },
3616}
3617"""
3618
Zhaoyang Li473dd0ae2021-05-10 18:28:283619SWARMING_MIXINS_APPEND_NAMED_CACHES = """\
3620{
3621 'builder_mixin': {
3622 '$mixin_append': {
3623 'swarming': {
3624 'named_caches': [
3625 {
3626 'name': 'cache',
3627 'file': 'cache_file',
3628 },
3629 ]
3630 },
3631 },
3632 },
3633}
3634"""
3635
3636SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES = """\
3637{
3638 'builder_mixin': {
3639 '$mixin_append': {
3640 'swarming': {
3641 'named_caches': [
3642 {
3643 'name': 'cache',
3644 'file': 'cache_file',
3645 },
3646 ],
3647 'other_key': 'some value',
3648 },
3649 },
3650 },
3651}
3652"""
3653
Brian Sheedycae63b22020-06-10 22:52:113654SWARMING_MIXINS_DIMENSION_SETS = """\
3655{
3656 'dimension_set_mixin_1': {
3657 'swarming': {
3658 'dimension_sets': [
3659 {
3660 'value': 'ds1',
3661 },
3662 ],
3663 },
3664 },
3665 'dimension_set_mixin_2': {
3666 'swarming': {
3667 'dimension_sets': [
3668 {
3669 'value': 'ds2',
3670 },
3671 ],
3672 },
3673 },
3674 'duplicate_dimension_set_mixin_1': {
3675 'swarming': {
3676 'dimension_sets': [
3677 {
3678 'value': 'ds1',
3679 },
3680 ],
3681 },
3682 },
3683 'dimension_mixin': {
3684 'swarming': {
3685 'dimensions': {
3686 'other_value': 'dimension_mixin',
3687 },
3688 },
3689 },
3690}
3691"""
3692
Stephen Martinis11672542018-10-29 18:17:213693SWARMING_MIXINS_DUPLICATED = """\
3694{
3695 'builder_mixin': {
3696 'value': 'builder',
3697 },
3698 'builder_mixin': {
3699 'value': 'builder',
3700 },
3701}
3702"""
3703
3704SWARMING_MIXINS_UNSORTED = """\
3705{
3706 'b_mixin': {
3707 'b': 'b',
3708 },
3709 'a_mixin': {
3710 'a': 'a',
3711 },
3712 'c_mixin': {
3713 'c': 'c',
3714 },
3715}
3716"""
3717
3718SWARMING_MIXINS_SORTED = """\
3719{
3720 'a_mixin': {
3721 'a': 'a',
3722 },
3723 'b_mixin': {
3724 'b': 'b',
3725 },
3726 'c_mixin': {
3727 'c': 'c',
3728 },
3729}
3730"""
3731
Brian Sheedycae63b22020-06-10 22:52:113732WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT = """\
3733{
3734 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3735 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3736 "Fake Tester": {
3737 "gtest_tests": [
3738 {
3739 "merge": {
3740 "args": [],
3741 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3742 },
3743 "swarming": {
3744 "can_use_on_swarming_builders": true,
3745 "dimension_sets": [
3746 {
3747 "other_value": "dimension_mixin",
3748 "value": "ds1"
3749 },
3750 {
3751 "other_value": "dimension_mixin",
3752 "value": "ds2"
3753 }
3754 ]
3755 },
3756 "test": "foo_test"
3757 }
3758 ]
3759 }
3760}
3761"""
3762
Stephen Martinis11672542018-10-29 18:17:213763WATERFALL_MIXIN_WATERFALL_OUTPUT = """\
3764{
3765 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3766 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3767 "Fake Tester": {
3768 "gtest_tests": [
3769 {
Stephen Martinisbc7b7772019-05-01 22:01:433770 "merge": {
3771 "args": [],
3772 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3773 },
Stephen Martinis11672542018-10-29 18:17:213774 "swarming": {
3775 "can_use_on_swarming_builders": true,
3776 "dimension_sets": [
3777 {
3778 "integrity": "high"
3779 }
3780 ],
3781 "expiration": 120,
3782 "value": "waterfall"
3783 },
3784 "test": "foo_test"
3785 }
3786 ]
3787 }
3788}
3789"""
3790
Brian Sheedy7658c982020-01-08 02:27:583791WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT = """\
3792{
3793 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3794 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3795 "Fake Tester": {
3796 "gtest_tests": [
3797 {
3798 "merge": {
3799 "args": [],
3800 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3801 },
3802 "swarming": {
3803 "can_use_on_swarming_builders": true,
3804 "dimension_sets": [
3805 {
3806 "integrity": "high"
3807 }
3808 ],
3809 "expiration": 120
3810 },
3811 "test": "foo_test"
3812 }
3813 ]
3814 }
3815}
3816"""
3817
Stephen Martinis11672542018-10-29 18:17:213818WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT = """\
3819{
3820 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3821 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3822 "Fake Tester": {
3823 "gtest_tests": [
3824 {
Stephen Martinisbc7b7772019-05-01 22:01:433825 "merge": {
3826 "args": [],
3827 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3828 },
Stephen Martinis11672542018-10-29 18:17:213829 "swarming": {
3830 "can_use_on_swarming_builders": true,
3831 "dimension_sets": [
3832 {
3833 "integrity": "high"
3834 }
3835 ],
3836 "expiration": 120,
3837 "value": "exception"
3838 },
3839 "test": "foo_test"
3840 }
3841 ]
3842 }
3843}
3844"""
3845
3846BUILDER_MIXIN_WATERFALL_OUTPUT = """\
3847{
3848 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3849 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3850 "Fake Tester": {
3851 "gtest_tests": [
3852 {
Stephen Martinisbc7b7772019-05-01 22:01:433853 "merge": {
3854 "args": [],
3855 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3856 },
Stephen Martinis11672542018-10-29 18:17:213857 "swarming": {
3858 "can_use_on_swarming_builders": true,
3859 "dimension_sets": [
3860 {
3861 "integrity": "high"
3862 }
3863 ],
3864 "expiration": 120,
3865 "value": "builder"
3866 },
3867 "test": "foo_test"
3868 }
3869 ]
3870 }
3871}
3872"""
3873
3874BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT = """\
3875{
3876 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3877 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3878 "Fake Tester": {
3879 "gtest_tests": [
3880 {
Stephen Martinisbc7b7772019-05-01 22:01:433881 "merge": {
3882 "args": [],
3883 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3884 },
Stephen Martinis11672542018-10-29 18:17:213885 "swarming": {
3886 "can_use_on_swarming_builders": true,
3887 "dimension_sets": [
3888 {
3889 "integrity": "high"
3890 }
3891 ],
3892 "expiration": 120
3893 },
3894 "test": "foo_test",
3895 "value": "random"
3896 }
3897 ]
3898 }
3899}
3900"""
3901
Wezc0e835b702018-10-30 00:38:413902BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT = """\
3903{
3904 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3905 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3906 "Fake Tester": {
3907 "gtest_tests": [
3908 {
3909 "args": [
3910 "--c_arg",
3911 "--mixin-argument"
3912 ],
Stephen Martinisbc7b7772019-05-01 22:01:433913 "merge": {
3914 "args": [],
3915 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3916 },
Wezc0e835b702018-10-30 00:38:413917 "swarming": {
3918 "can_use_on_swarming_builders": true
3919 },
3920 "test": "foo_test"
3921 }
3922 ]
3923 }
3924}
3925"""
3926
Austin Eng148d9f0f2022-02-08 19:18:533927BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT = """\
3928{
3929 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3930 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3931 "Fake Tester": {
3932 "gtest_tests": [
3933 {
3934 "args": [
3935 "--c_arg",
3936 "--mixin-argument",
3937 "--linux-mixin-argument"
3938 ],
3939 "merge": {
3940 "args": [],
3941 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3942 },
3943 "swarming": {
3944 "can_use_on_swarming_builders": true
3945 },
3946 "test": "foo_test"
3947 }
3948 ]
3949 }
3950}
3951"""
3952
Zhaoyang Li473dd0ae2021-05-10 18:28:283953BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT = """\
3954{
3955 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3956 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3957 "Fake Tester": {
3958 "gtest_tests": [
3959 {
3960 "merge": {
3961 "args": [],
3962 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3963 },
3964 "swarming": {
3965 "can_use_on_swarming_builders": true,
3966 "named_caches": [
3967 {
3968 "file": "cache_in_test_file",
3969 "name": "cache_in_test"
3970 },
3971 {
3972 "file": "cache_file",
3973 "name": "cache"
3974 }
3975 ]
3976 },
3977 "test": "foo_test"
3978 }
3979 ]
3980 }
3981}
3982"""
3983
Stephen Martinis11672542018-10-29 18:17:213984TEST_MIXIN_WATERFALL_OUTPUT = """\
3985{
3986 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3987 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3988 "Fake Tester": {
3989 "gtest_tests": [
3990 {
Stephen Martinisbc7b7772019-05-01 22:01:433991 "merge": {
3992 "args": [],
3993 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3994 },
Stephen Martinis11672542018-10-29 18:17:213995 "swarming": {
3996 "can_use_on_swarming_builders": true,
3997 "dimension_sets": [
3998 {
3999 "integrity": "high",
4000 "kvm": "1"
4001 }
4002 ],
4003 "expiration": 120,
4004 "value": "test"
4005 },
4006 "test": "foo_test"
4007 }
4008 ]
4009 }
4010}
4011"""
4012
4013DIMENSIONS_MIXIN_WATERFALL_OUTPUT = """\
4014{
4015 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4016 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4017 "Fake Tester": {
4018 "gtest_tests": [
4019 {
Stephen Martinisbc7b7772019-05-01 22:01:434020 "merge": {
4021 "args": [],
4022 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4023 },
Stephen Martinis11672542018-10-29 18:17:214024 "swarming": {
4025 "can_use_on_swarming_builders": true,
4026 "dimension_sets": [
4027 {
4028 "iama": "mixin",
4029 "integrity": "high"
4030 }
4031 ],
4032 "expiration": 120,
4033 "value": "test"
4034 },
4035 "test": "foo_test"
4036 }
4037 ]
4038 }
4039}
4040"""
4041
Garrett Beaty1afaccc2020-06-25 19:58:154042
4043class MixinTests(TestCase):
Stephen Martinis11672542018-10-29 18:17:214044 """Tests for the mixins feature."""
4045 def test_mixins_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:154046 fbb = FakeBBGen(self.args,
4047 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214048 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414049 LUCI_MILO_CFG,
4050 mixins=SWARMING_MIXINS_SORTED)
Stephen Martinis11672542018-10-29 18:17:214051 fbb.check_input_file_consistency(verbose=True)
4052 self.assertFalse(fbb.printed_lines)
4053
Garrett Beaty1afaccc2020-06-25 19:58:154054 fbb = FakeBBGen(self.args,
4055 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214056 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414057 LUCI_MILO_CFG,
4058 mixins=SWARMING_MIXINS_UNSORTED)
Stephen Martinis11672542018-10-29 18:17:214059 with self.assertRaises(generate_buildbot_json.BBGenErr):
4060 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:534061 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:234062 self.assertRegex(joined_lines, '.*\+ ._mixin.*')
4063 self.assertRegex(joined_lines, '.*\- ._mixin.*')
Stephen Martinis11672542018-10-29 18:17:214064 fbb.printed_lines = []
4065 self.assertFalse(fbb.printed_lines)
4066
4067 def test_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:154068 fbb = FakeBBGen(self.args,
4069 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214070 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414071 LUCI_MILO_CFG,
4072 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154073 self.create_testing_buildbot_json_file('chromium.test.json',
4074 WATERFALL_MIXIN_WATERFALL_OUTPUT)
4075 self.create_testing_buildbot_json_file('chromium.ci.json',
4076 WATERFALL_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214077 fbb.check_output_file_consistency(verbose=True)
4078 self.assertFalse(fbb.printed_lines)
4079
4080 def test_waterfall_exception_overrides(self):
Garrett Beaty1afaccc2020-06-25 19:58:154081 fbb = FakeBBGen(self.args,
4082 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214083 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414084 LUCI_MILO_CFG,
4085 exceptions=SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS,
4086 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154087 self.create_testing_buildbot_json_file(
4088 'chromium.test.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
4089 self.create_testing_buildbot_json_file(
4090 'chromium.ci.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214091 fbb.check_output_file_consistency(verbose=True)
4092 self.assertFalse(fbb.printed_lines)
4093
4094 def test_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:154095 fbb = FakeBBGen(self.args,
4096 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214097 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414098 LUCI_MILO_CFG,
4099 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154100 self.create_testing_buildbot_json_file('chromium.test.json',
4101 BUILDER_MIXIN_WATERFALL_OUTPUT)
4102 self.create_testing_buildbot_json_file('chromium.ci.json',
4103 BUILDER_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214104 fbb.check_output_file_consistency(verbose=True)
4105 self.assertFalse(fbb.printed_lines)
4106
4107 def test_builder_non_swarming(self):
Garrett Beaty1afaccc2020-06-25 19:58:154108 fbb = FakeBBGen(self.args,
4109 FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214110 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414111 LUCI_MILO_CFG,
4112 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154113 self.create_testing_buildbot_json_file(
4114 'chromium.test.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
4115 self.create_testing_buildbot_json_file(
4116 'chromium.ci.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214117 fbb.check_output_file_consistency(verbose=True)
4118 self.assertFalse(fbb.printed_lines)
4119
4120 def test_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:154121 fbb = FakeBBGen(self.args,
4122 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214123 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414124 LUCI_MILO_CFG,
4125 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154126 self.create_testing_buildbot_json_file('chromium.test.json',
4127 TEST_MIXIN_WATERFALL_OUTPUT)
4128 self.create_testing_buildbot_json_file('chromium.ci.json',
4129 TEST_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214130 fbb.check_output_file_consistency(verbose=True)
4131 self.assertFalse(fbb.printed_lines)
4132
4133 def test_dimension(self):
Garrett Beaty1afaccc2020-06-25 19:58:154134 fbb = FakeBBGen(self.args,
4135 FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214136 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414137 LUCI_MILO_CFG,
4138 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154139 self.create_testing_buildbot_json_file('chromium.test.json',
4140 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
4141 self.create_testing_buildbot_json_file('chromium.ci.json',
4142 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214143 fbb.check_output_file_consistency(verbose=True)
4144 self.assertFalse(fbb.printed_lines)
4145
4146 def test_dimension_gpu(self):
Garrett Beaty1afaccc2020-06-25 19:58:154147 fbb = FakeBBGen(self.args,
4148 FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214149 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414150 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:194151 mixins=SWARMING_MIXINS,
4152 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:154153 self.create_testing_buildbot_json_file('chromium.test.json',
4154 GPU_DIMENSIONS_WATERFALL_OUTPUT)
4155 self.create_testing_buildbot_json_file('chromium.ci.json',
4156 GPU_DIMENSIONS_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214157 fbb.check_output_file_consistency(verbose=True)
4158 self.assertFalse(fbb.printed_lines)
4159
4160 def test_unreferenced(self):
Garrett Beaty1afaccc2020-06-25 19:58:154161 fbb = FakeBBGen(self.args,
4162 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214163 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414164 LUCI_MILO_CFG,
4165 mixins=SWARMING_MIXINS)
Jamie Madillcf4f8c72021-05-20 19:24:234166 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4167 '.*mixins are unreferenced.*'):
Stephen Martinis11672542018-10-29 18:17:214168 fbb.check_input_file_consistency(verbose=True)
4169 self.assertFalse(fbb.printed_lines)
4170
Stephen Martinis11672542018-10-29 18:17:214171 def test_unused(self):
Garrett Beaty1afaccc2020-06-25 19:58:154172 fbb = FakeBBGen(self.args,
4173 FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214174 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414175 LUCI_MILO_CFG,
4176 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154177 self.create_testing_buildbot_json_file('chromium.test.json',
4178 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
4179 self.create_testing_buildbot_json_file('chromium.ci.json',
4180 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214181 with self.assertRaises(generate_buildbot_json.BBGenErr):
4182 fbb.check_output_file_consistency(verbose=True)
4183 self.assertFalse(fbb.printed_lines)
4184
4185 def test_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:154186 fbb = FakeBBGen(self.args,
4187 FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:214188 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:414189 LUCI_MILO_CFG,
4190 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154191 self.create_testing_buildbot_json_file('chromium.test.json',
4192 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
4193 self.create_testing_buildbot_json_file('chromium.ci.json',
4194 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:214195 with self.assertRaises(generate_buildbot_json.BBGenErr):
4196 fbb.check_output_file_consistency(verbose=True)
4197 self.assertFalse(fbb.printed_lines)
4198
4199
4200 def test_no_duplicate_keys(self):
Garrett Beaty1afaccc2020-06-25 19:58:154201 fbb = FakeBBGen(self.args,
4202 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:204203 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414204 LUCI_MILO_CFG,
4205 mixins=SWARMING_MIXINS_DUPLICATED)
Jamie Madillcf4f8c72021-05-20 19:24:234206 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:204207 generate_buildbot_json.BBGenErr,
Stephen Martinisb72f6d22018-10-04 23:29:014208 'The following files have invalid keys: mixins.pyl'):
Stephen Martinis54d64ad2018-09-21 22:16:204209 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:534210 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:234211 self.assertRegex(joined_lines, '.*\- builder_mixin')
Stephen Martinis5bef0fc2020-01-06 22:47:534212 fbb.printed_lines = []
4213 self.assertFalse(fbb.printed_lines)
4214
4215 def test_no_duplicate_keys_basic_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:154216 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE_NOT_SORTED,
Stephen Martinis5bef0fc2020-01-06 22:47:534217 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:234218 with self.assertRaisesRegex(
Stephen Martinis5bef0fc2020-01-06 22:47:534219 generate_buildbot_json.BBGenErr,
4220 'The following files have invalid keys: test_suites.pyl'):
4221 fbb.check_input_file_consistency(verbose=True)
4222 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:234223 self.assertRegex(joined_lines, '.*\- a_test')
4224 self.assertRegex(joined_lines, '.*\+ a_test')
Stephen Martinis54d64ad2018-09-21 22:16:204225 fbb.printed_lines = []
4226 self.assertFalse(fbb.printed_lines)
4227
4228 def test_type_assert_printing_help(self):
Garrett Beaty1afaccc2020-06-25 19:58:154229 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, TEST_SUITES_SYNTAX_ERROR,
Stephen Martinis54d64ad2018-09-21 22:16:204230 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:234231 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4232 'Invalid \.pyl file \'test_suites.pyl\'.*'):
Stephen Martinis54d64ad2018-09-21 22:16:204233 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:234234 self.assertEqual(fbb.printed_lines, [
4235 '== test_suites.pyl ==',
4236 '<snip>',
4237 '1 {',
4238 "2 'basic_suites': {",
4239 '--------------------------------------------------------------------'
4240 '------------',
4241 '3 3: {',
4242 '-------^------------------------------------------------------------'
4243 '------------',
4244 "4 'suite_c': {},",
4245 '5 },',
4246 '<snip>',
4247 ])
Stephen Martinis54d64ad2018-09-21 22:16:204248
Wezc0e835b702018-10-30 00:38:414249 def test_mixin_append_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:154250 fbb = FakeBBGen(self.args,
4251 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414252 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414253 LUCI_MILO_CFG,
4254 mixins=SWARMING_MIXINS_APPEND)
Garrett Beaty1afaccc2020-06-25 19:58:154255 self.create_testing_buildbot_json_file(
4256 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
4257 self.create_testing_buildbot_json_file(
4258 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
Wezc0e835b702018-10-30 00:38:414259 fbb.check_output_file_consistency(verbose=True)
4260 self.assertFalse(fbb.printed_lines)
4261
Austin Eng148d9f0f2022-02-08 19:18:534262 def test_mixin_append_linux_args(self):
4263 fbb = FakeBBGen(self.args,
4264 FOO_LINUX_GTESTS_BUILDER_MIXIN_WATERFALL,
4265 FOO_TEST_SUITE_WITH_ARGS,
4266 LUCI_MILO_CFG,
4267 mixins=SWARMING_MIXINS_APPEND)
4268 self.create_testing_buildbot_json_file(
4269 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT)
4270 self.create_testing_buildbot_json_file(
4271 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT)
4272 fbb.check_output_file_consistency(verbose=True)
4273 self.assertFalse(fbb.printed_lines)
4274
Zhaoyang Li473dd0ae2021-05-10 18:28:284275 def test_mixin_append_swarming_named_caches(self):
4276 fbb = FakeBBGen(self.args,
4277 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
4278 FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES,
4279 LUCI_MILO_CFG,
4280 mixins=SWARMING_MIXINS_APPEND_NAMED_CACHES)
4281 self.create_testing_buildbot_json_file(
4282 'chromium.test.json',
4283 BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
4284 self.create_testing_buildbot_json_file(
4285 'chromium.ci.json', BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
4286 fbb.check_output_file_consistency(verbose=True)
4287 self.assertFalse(fbb.printed_lines)
4288
4289 def test_mixin_append_swarming_error(self):
4290 fbb = FakeBBGen(self.args,
4291 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
4292 FOO_TEST_SUITE_WITH_ARGS,
4293 LUCI_MILO_CFG,
4294 mixins=SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES)
Jamie Madillcf4f8c72021-05-20 19:24:234295 with self.assertRaisesRegex(
Zhaoyang Li473dd0ae2021-05-10 18:28:284296 generate_buildbot_json.BBGenErr,
4297 'Only named_caches is supported under swarming key in '
4298 '\$mixin_append, but there are: \[\'named_caches\', \'other_key\'\]'):
4299 fbb.check_output_file_consistency(verbose=True)
4300 self.assertFalse(fbb.printed_lines)
4301
Wezc0e835b702018-10-30 00:38:414302 def test_mixin_append_mixin_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:154303 fbb = FakeBBGen(self.args,
4304 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414305 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414306 LUCI_MILO_CFG,
4307 mixins=SWARMING_MIXINS_APPEND_NOT_LIST)
Jamie Madillcf4f8c72021-05-20 19:24:234308 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4309 'Key "args" in \$mixin_append must be a list.'):
Wezc0e835b702018-10-30 00:38:414310 fbb.check_output_file_consistency(verbose=True)
4311 self.assertFalse(fbb.printed_lines)
4312
4313 def test_mixin_append_test_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:154314 fbb = FakeBBGen(self.args,
4315 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414316 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414317 LUCI_MILO_CFG,
4318 mixins=SWARMING_MIXINS_APPEND_TO_SWARMING)
Jamie Madillcf4f8c72021-05-20 19:24:234319 with self.assertRaisesRegex(
Wezc0e835b702018-10-30 00:38:414320 generate_buildbot_json.BBGenErr,
4321 'Cannot apply \$mixin_append to non-list "swarming".'):
4322 fbb.check_output_file_consistency(verbose=True)
4323 self.assertFalse(fbb.printed_lines)
Stephen Martinis54d64ad2018-09-21 22:16:204324
Brian Sheedy7658c982020-01-08 02:27:584325 def test_remove_mixin_builder_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:154326 fbb = FakeBBGen(self.args,
4327 FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584328 FOO_TEST_SUITE,
4329 LUCI_MILO_CFG,
4330 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154331 self.create_testing_buildbot_json_file(
4332 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4333 self.create_testing_buildbot_json_file(
4334 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584335 fbb.check_output_file_consistency(verbose=True)
4336 self.assertFalse(fbb.printed_lines)
4337
4338 def test_remove_mixin_test_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:154339 fbb = FakeBBGen(self.args,
4340 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584341 FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN,
4342 LUCI_MILO_CFG,
4343 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154344 self.create_testing_buildbot_json_file(
4345 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4346 self.create_testing_buildbot_json_file(
4347 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584348 fbb.check_output_file_consistency(verbose=True)
4349 self.assertFalse(fbb.printed_lines)
4350
4351 def test_remove_mixin_test_remove_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:154352 fbb = FakeBBGen(self.args,
4353 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584354 FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN,
4355 LUCI_MILO_CFG,
4356 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154357 self.create_testing_buildbot_json_file(
4358 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4359 self.create_testing_buildbot_json_file(
4360 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584361 fbb.check_output_file_consistency(verbose=True)
4362 self.assertFalse(fbb.printed_lines)
4363
Brian Sheedycae63b22020-06-10 22:52:114364 def test_dimension_sets_application(self):
Garrett Beaty1afaccc2020-06-25 19:58:154365 fbb = FakeBBGen(self.args,
4366 FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL,
Brian Sheedycae63b22020-06-10 22:52:114367 FOO_TEST_SUITE_NO_DIMENSIONS,
4368 LUCI_MILO_CFG,
4369 mixins=SWARMING_MIXINS_DIMENSION_SETS)
Garrett Beaty1afaccc2020-06-25 19:58:154370 self.create_testing_buildbot_json_file(
4371 'chromium.test.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
4372 self.create_testing_buildbot_json_file(
4373 'chromium.ci.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
Brian Sheedycae63b22020-06-10 22:52:114374 fbb.check_output_file_consistency(verbose=True)
4375 self.assertFalse(fbb.printed_lines)
4376
Karen Qiane24b7ee2019-02-12 23:37:064377TEST_SUITE_WITH_PARAMS = """\
4378{
4379 'basic_suites': {
4380 'bar_tests': {
4381 'bar_test': {
4382 'args': ['--no-xvfb'],
4383 'swarming': {
4384 'dimension_sets': [
4385 {
4386 'device_os': 'NMF26U'
4387 }
4388 ],
4389 },
4390 'should_retry_with_patch': False,
4391 'name': 'bar_test'
4392 },
4393 'bar_test_test': {
4394 'swarming': {
4395 'dimension_sets': [
4396 {
4397 'kvm': '1'
4398 }
4399 ],
4400 'hard_timeout': 1000
4401 },
4402 'should_retry_with_patch': True
4403 }
4404 },
4405 'foo_tests': {
4406 'foo_test_empty': {},
4407 'foo_test': {
4408 'args': [
4409 '--jobs=1',
4410 '--verbose'
4411 ],
4412 'swarming': {
4413 'dimension_sets': [
4414 {
4415 'device_os': 'MMB29Q'
4416 }
4417 ],
4418 'hard_timeout': 1800
4419 }
4420 },
4421 'foo_test_test': {
4422 'swarming': {
4423 },
4424 'name': 'pls'
4425 },
4426 },
4427 },
4428 'compound_suites': {
4429 'composition_tests': [
4430 'foo_tests',
4431 'bar_tests',
4432 ],
4433 },
4434}
4435"""
4436TEST_QUERY_BOTS_OUTPUT = {
4437 "Fake Android M Tester": {
4438 "gtest_tests": [
4439 {
4440 "test": "foo_test",
Stephen Martinisbc7b7772019-05-01 22:01:434441 "merge": {
4442 "args": [],
4443 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4444 },
Karen Qiane24b7ee2019-02-12 23:37:064445 "swarming": {
4446 "can_use_on_swarming_builders": False
4447 }
4448 }
4449 ]
4450 },
4451 "Fake Android L Tester": {
4452 "gtest_tests": [
4453 {
4454 "test": "foo_test",
4455 "args": [
4456 "--gs-results-bucket=chromium-result-details",
4457 "--recover-devices"
4458 ],
Stephen Martinisbc7b7772019-05-01 22:01:434459 "merge": {
4460 "args": [],
4461 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4462 },
Karen Qiane24b7ee2019-02-12 23:37:064463 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064464 "dimension_sets":[
4465 {
Ben Pastenee012aea42019-05-14 22:32:284466 "device_os": "LMY41U",
4467 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224468 "device_type": "hammerhead",
4469 'os': 'Android'
Karen Qiane24b7ee2019-02-12 23:37:064470 }
4471 ],
4472 "can_use_on_swarming_builders": True
4473 }
4474 }
4475 ]
4476 },
4477 "Fake Android K Tester": {
4478 "additional_compile_targets": ["bar_test"],
4479 "gtest_tests": [
4480 {
4481 "test": "foo_test",
4482 "args": [
4483 "--gs-results-bucket=chromium-result-details",
4484 "--recover-devices"
4485 ],
Stephen Martinisbc7b7772019-05-01 22:01:434486 "merge": {
4487 "args": [],
4488 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4489 },
Karen Qiane24b7ee2019-02-12 23:37:064490 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064491 "dimension_sets": [
4492 {
4493 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284494 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224495 "device_type": "hammerhead",
4496 "os": "Android",
Karen Qiane24b7ee2019-02-12 23:37:064497 }
4498 ],
4499 "can_use_on_swarming_builders": True,
4500 "output_links": [
4501 {
4502 "link": ["https://luci-logdog.appspot.com/v/?s",
4503 "=android%2Fswarming%2Flogcats%2F",
4504 "${TASK_ID}%2F%2B%2Funified_logcats"],
4505 "name": "shard #${SHARD_INDEX} logcats"
4506 }
4507 ]
4508 }
4509 }
4510 ]
4511 },
4512 "Android Builder": {
4513 "additional_compile_targets": ["bar_test"]
4514 }
4515}
4516TEST_QUERY_BOTS_TESTS_OUTPUT = {
4517 "Fake Android M Tester": [
4518 {
Stephen Martinisbc7b7772019-05-01 22:01:434519 "merge": {
4520 "args": [],
4521 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4522 },
Karen Qiane24b7ee2019-02-12 23:37:064523 "test": "foo_test",
4524 "swarming": {
4525 "can_use_on_swarming_builders": False
4526 }
4527 }
4528 ],
4529 "Fake Android L Tester": [
4530 {
4531 "test": "foo_test",
4532 "args": [
4533 "--gs-results-bucket=chromium-result-details",
4534 "--recover-devices"
4535 ],
Stephen Martinisbc7b7772019-05-01 22:01:434536 "merge": {
4537 "args": [],
4538 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4539 },
Karen Qiane24b7ee2019-02-12 23:37:064540 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064541 "dimension_sets": [
4542 {
Ben Pastenee012aea42019-05-14 22:32:284543 "device_os": "LMY41U",
4544 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224545 "device_type": "hammerhead",
4546 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064547 }
4548 ],
4549 "can_use_on_swarming_builders": True
4550 }
4551 }
4552 ],
4553 "Android Builder": [],
4554 "Fake Android K Tester": [
4555 {
4556 "test": "foo_test",
4557 "args": [
4558 "--gs-results-bucket=chromium-result-details",
4559 "--recover-devices"
4560 ],
Stephen Martinisbc7b7772019-05-01 22:01:434561 "merge": {
4562 "args": [],
4563 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4564 },
Karen Qiane24b7ee2019-02-12 23:37:064565 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064566 "dimension_sets": [
4567 {
4568 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284569 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224570 "device_type": "hammerhead",
4571 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064572 }
4573 ],
4574 "can_use_on_swarming_builders": True,
4575 "output_links": [
4576 {
4577 "link": [
4578 "https://luci-logdog.appspot.com/v/?s",
4579 "=android%2Fswarming%2Flogcats%2F",
4580 "${TASK_ID}%2F%2B%2Funified_logcats"
4581 ],
4582 "name": "shard #${SHARD_INDEX} logcats"
4583 }
4584 ]
4585 }
4586 }
4587 ]
4588}
4589
4590TEST_QUERY_BOT_OUTPUT = {
4591 "additional_compile_targets": ["bar_test"],
4592 "gtest_tests": [
4593 {
Stephen Martinisbc7b7772019-05-01 22:01:434594 "test": "foo_test",
4595 "args": [
Karen Qiane24b7ee2019-02-12 23:37:064596 "--gs-results-bucket=chromium-result-details",
4597 "--recover-devices"
Stephen Martinisbc7b7772019-05-01 22:01:434598 ],
4599 "merge": {
4600 "args": [],
4601 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4602 },
4603 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064604 "dimension_sets": [
4605 {
4606 "device_os": "KTU84P",
Ben Pastened15aa8a2019-05-16 16:59:224607 "device_os_type": "userdebug",
4608 "device_type": "hammerhead",
4609 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064610 }
4611 ],
4612 "can_use_on_swarming_builders": True,
4613 "output_links": [
4614 {
4615 "link": ["https://luci-logdog.appspot.com/v/?s",
4616 "=android%2Fswarming%2Flogcats%2F",
4617 "${TASK_ID}%2F%2B%2Funified_logcats"
4618 ],
4619 "name": "shard #${SHARD_INDEX} logcats"
4620 }
4621 ]
4622 }
4623 }
4624 ]
4625}
4626TEST_QUERY_BOT_TESTS_OUTPUT = [
4627 {
4628 "test": "foo_test",
4629 "args": [
4630 "--gs-results-bucket=chromium-result-details",
4631 "--recover-devices"
4632 ],
Stephen Martinisbc7b7772019-05-01 22:01:434633 "merge": {
4634 "args": [],
4635 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4636 },
Karen Qiane24b7ee2019-02-12 23:37:064637 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064638 "dimension_sets": [
4639 {
Ben Pastenee012aea42019-05-14 22:32:284640 "device_os": "LMY41U",
4641 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224642 "device_type": "hammerhead",
4643 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064644 }
4645 ],
4646 "can_use_on_swarming_builders": True
4647 }
4648 }
4649]
4650
4651TEST_QUERY_TESTS_OUTPUT = {
4652 "bar_test": {},
4653 "foo_test": {}
4654}
4655
4656TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT = ["foo_test"]
4657
4658TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT = ["bar_test"]
4659
4660TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT = ["bar_test_test"]
4661
4662TEST_QUERY_TESTS_PARAMS_OUTPUT = ['bar_test_test']
4663
4664TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT = ['bar_test']
4665
4666TEST_QUERY_TEST_OUTPUT = {}
4667
4668TEST_QUERY_TEST_BOTS_OUTPUT = [
Jamie Madillcf4f8c72021-05-20 19:24:234669 "Fake Android K Tester",
4670 "Fake Android L Tester",
4671 "Fake Android M Tester",
Karen Qiane24b7ee2019-02-12 23:37:064672]
4673
4674TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT = ['Fake Tester']
4675
4676TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT = []
4677
Garrett Beaty1afaccc2020-06-25 19:58:154678
4679class QueryTests(TestCase):
Karen Qiane24b7ee2019-02-12 23:37:064680 """Tests for the query feature."""
4681 def test_query_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154682 self.override_args(query='bots',
4683 check=False,
4684 pyl_files_dir=None,
4685 json=None,
4686 waterfall_filters=[])
4687 fbb = FakeBBGen(self.args,
4688 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064689 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414690 LUCI_MILO_CFG,
4691 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064692 fbb.query(fbb.args)
4693 query_json = json.loads("".join(fbb.printed_lines))
4694 self.assertEqual(query_json, TEST_QUERY_BOTS_OUTPUT)
4695
4696 def test_query_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154697 self.override_args(query='bots/blah/blah',
4698 check=False,
4699 pyl_files_dir=None,
4700 json=None,
4701 waterfall_filters=[])
4702 fbb = FakeBBGen(self.args,
4703 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064704 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414705 LUCI_MILO_CFG,
4706 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064707 with self.assertRaises(SystemExit) as cm:
4708 fbb.query(fbb.args)
4709 self.assertEqual(cm.exception.code, 1)
4710 self.assertTrue(fbb.printed_lines)
4711
4712 def test_query_bots_json(self):
Garrett Beaty1afaccc2020-06-25 19:58:154713 self.override_args(query='bots',
4714 check=False,
4715 pyl_files_dir=None,
4716 json='result.json',
4717 waterfall_filters=[])
4718 fbb = FakeBBGen(self.args,
4719 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064720 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414721 LUCI_MILO_CFG,
4722 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064723 fbb.query(fbb.args)
4724 self.assertFalse(fbb.printed_lines)
4725
4726 def test_query_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154727 self.override_args(query='bots/tests',
4728 check=False,
4729 pyl_files_dir=None,
4730 json=None,
4731 waterfall_filters=[])
4732 fbb = FakeBBGen(self.args,
4733 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064734 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414735 LUCI_MILO_CFG,
4736 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064737 fbb.query(fbb.args)
4738 query_json = json.loads("".join(fbb.printed_lines))
4739 self.assertEqual(query_json, TEST_QUERY_BOTS_TESTS_OUTPUT)
4740
4741 def test_query_invalid_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154742 self.override_args(query='bots/tdfjdk',
4743 check=False,
4744 pyl_files_dir=None,
4745 json=None,
4746 waterfall_filters=[])
4747 fbb = FakeBBGen(self.args,
4748 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064749 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414750 LUCI_MILO_CFG,
4751 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064752 with self.assertRaises(SystemExit) as cm:
4753 fbb.query(fbb.args)
4754 self.assertEqual(cm.exception.code, 1)
4755 self.assertTrue(fbb.printed_lines)
4756
4757 def test_query_bot(self):
Garrett Beaty1afaccc2020-06-25 19:58:154758 self.override_args(query='bot/Fake Android K Tester',
4759 check=False,
4760 pyl_files_dir=None,
4761 json=None,
4762 waterfall_filters=[])
4763 fbb = FakeBBGen(self.args,
4764 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064765 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414766 LUCI_MILO_CFG,
4767 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064768 fbb.query(fbb.args)
4769 query_json = json.loads("".join(fbb.printed_lines))
Garrett Beaty1afaccc2020-06-25 19:58:154770 self.maxDiff = None # pragma pylint: disable=attribute-defined-outside-init
Karen Qiane24b7ee2019-02-12 23:37:064771 self.assertEqual(query_json, TEST_QUERY_BOT_OUTPUT)
4772
4773 def test_query_bot_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154774 self.override_args(query='bot/bot1',
4775 check=False,
4776 pyl_files_dir=None,
4777 json=None,
4778 waterfall_filters=[])
4779 fbb = FakeBBGen(self.args,
4780 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064781 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414782 LUCI_MILO_CFG,
4783 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064784 with self.assertRaises(SystemExit) as cm:
4785 fbb.query(fbb.args)
4786 self.assertEqual(cm.exception.code, 1)
4787 self.assertTrue(fbb.printed_lines)
4788
4789 def test_query_bot_invalid_query_too_many(self):
Garrett Beaty1afaccc2020-06-25 19:58:154790 self.override_args(query='bot/Fake Android K Tester/blah/blah',
4791 check=False,
4792 pyl_files_dir=None,
4793 json=None,
4794 waterfall_filters=[])
4795 fbb = FakeBBGen(self.args,
4796 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064797 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414798 LUCI_MILO_CFG,
4799 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064800 with self.assertRaises(SystemExit) as cm:
4801 fbb.query(fbb.args)
4802 self.assertEqual(cm.exception.code, 1)
4803 self.assertTrue(fbb.printed_lines)
4804
4805 def test_query_bot_invalid_query_no_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154806 self.override_args(query='bot/Fake Android K Tester/blahs',
4807 check=False,
4808 pyl_files_dir=None,
4809 json=None,
4810 waterfall_filters=[])
4811 fbb = FakeBBGen(self.args,
4812 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064813 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414814 LUCI_MILO_CFG,
4815 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064816 with self.assertRaises(SystemExit) as cm:
4817 fbb.query(fbb.args)
4818 self.assertEqual(cm.exception.code, 1)
4819 self.assertTrue(fbb.printed_lines)
4820
4821 def test_query_bot_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154822 self.override_args(query='bot/Fake Android L Tester/tests',
4823 check=False,
4824 pyl_files_dir=None,
4825 json=None,
4826 waterfall_filters=[])
4827 fbb = FakeBBGen(self.args,
4828 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064829 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414830 LUCI_MILO_CFG,
4831 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064832 fbb.query(fbb.args)
4833 query_json = json.loads("".join(fbb.printed_lines))
4834 self.assertEqual(query_json, TEST_QUERY_BOT_TESTS_OUTPUT)
4835
4836 def test_query_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154837 self.override_args(query='tests',
4838 check=False,
4839 pyl_files_dir=None,
4840 json=None,
4841 waterfall_filters=[])
4842 fbb = FakeBBGen(self.args,
4843 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064844 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414845 LUCI_MILO_CFG,
4846 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064847 fbb.query(fbb.args)
4848 query_json = json.loads("".join(fbb.printed_lines))
4849 self.assertEqual(query_json, TEST_QUERY_TESTS_OUTPUT)
4850
4851 def test_query_tests_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154852 self.override_args(query='tests/blah/blah',
4853 check=False,
4854 pyl_files_dir=None,
4855 json=None,
4856 waterfall_filters=[])
4857 fbb = FakeBBGen(self.args,
4858 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064859 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414860 LUCI_MILO_CFG,
4861 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064862 with self.assertRaises(SystemExit) as cm:
4863 fbb.query(fbb.args)
4864 self.assertEqual(cm.exception.code, 1)
4865 self.assertTrue(fbb.printed_lines)
4866
4867 def test_query_tests_multiple_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154868 self.override_args(query='tests/--jobs=1&--verbose',
4869 check=False,
4870 pyl_files_dir=None,
4871 json=None,
4872 waterfall_filters=[])
4873 fbb = FakeBBGen(self.args,
4874 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064875 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414876 LUCI_MILO_CFG,
4877 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064878 fbb.query(fbb.args)
4879 query_json = json.loads("".join(fbb.printed_lines))
4880 self.assertEqual(query_json, TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT)
4881
4882 def test_query_tests_invalid_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154883 self.override_args(query='tests/device_os?',
4884 check=False,
4885 pyl_files_dir=None,
4886 json=None,
4887 waterfall_filters=[])
4888 fbb = FakeBBGen(self.args,
4889 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064890 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414891 LUCI_MILO_CFG,
4892 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064893 with self.assertRaises(SystemExit) as cm:
4894 fbb.query(fbb.args)
4895 self.assertEqual(cm.exception.code, 1)
4896 self.assertTrue(fbb.printed_lines)
4897
4898 def test_query_tests_dimension_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154899 self.override_args(query='tests/device_os:NMF26U',
4900 check=False,
4901 pyl_files_dir=None,
4902 json=None,
4903 waterfall_filters=[])
4904 fbb = FakeBBGen(self.args,
4905 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064906 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414907 LUCI_MILO_CFG,
4908 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064909 fbb.query(fbb.args)
4910 query_json = json.loads("".join(fbb.printed_lines))
4911 self.assertEqual(query_json, TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT)
4912
4913 def test_query_tests_swarming_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154914 self.override_args(query='tests/hard_timeout:1000',
4915 check=False,
4916 pyl_files_dir=None,
4917 json=None,
4918 waterfall_filters=[])
4919 fbb = FakeBBGen(self.args,
4920 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064921 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414922 LUCI_MILO_CFG,
4923 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064924 fbb.query(fbb.args)
4925 query_json = json.loads("".join(fbb.printed_lines))
4926 self.assertEqual(query_json, TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT)
4927
4928 def test_query_tests_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154929 self.override_args(query='tests/should_retry_with_patch:true',
4930 check=False,
4931 pyl_files_dir=None,
4932 json=None,
4933 waterfall_filters=[])
4934 fbb = FakeBBGen(self.args,
4935 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064936 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414937 LUCI_MILO_CFG,
4938 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064939 fbb.query(fbb.args)
4940 query_json = json.loads("".join(fbb.printed_lines))
4941 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_OUTPUT)
4942
4943 def test_query_tests_params_false(self):
Garrett Beaty1afaccc2020-06-25 19:58:154944 self.override_args(query='tests/should_retry_with_patch:false',
4945 check=False,
4946 pyl_files_dir=None,
4947 json=None,
4948 waterfall_filters=[])
4949 fbb = FakeBBGen(self.args,
4950 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064951 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414952 LUCI_MILO_CFG,
4953 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064954 fbb.query(fbb.args)
4955 query_json = json.loads("".join(fbb.printed_lines))
4956 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT)
4957
4958 def test_query_test(self):
Garrett Beaty1afaccc2020-06-25 19:58:154959 self.override_args(query='test/foo_test',
4960 check=False,
4961 pyl_files_dir=None,
4962 json=None,
4963 waterfall_filters=[])
4964 fbb = FakeBBGen(self.args,
4965 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064966 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414967 LUCI_MILO_CFG,
4968 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064969 fbb.query(fbb.args)
4970 query_json = json.loads("".join(fbb.printed_lines))
4971 self.assertEqual(query_json, TEST_QUERY_TEST_OUTPUT)
4972
4973 def test_query_test_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154974 self.override_args(query='test/foo_foo',
4975 check=False,
4976 pyl_files_dir=None,
4977 json=None,
4978 waterfall_filters=[])
4979 fbb = FakeBBGen(self.args,
4980 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064981 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414982 LUCI_MILO_CFG,
4983 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064984 with self.assertRaises(SystemExit) as cm:
4985 fbb.query(fbb.args)
4986 self.assertEqual(cm.exception.code, 1)
4987 self.assertTrue(fbb.printed_lines)
4988
4989 def test_query_test_invalid_length(self):
Garrett Beaty1afaccc2020-06-25 19:58:154990 self.override_args(query='test/foo_tests/foo/foo',
4991 check=False,
4992 pyl_files_dir=None,
4993 json=None,
4994 waterfall_filters=[])
4995 fbb = FakeBBGen(self.args,
4996 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064997 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414998 LUCI_MILO_CFG,
4999 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065000 with self.assertRaises(SystemExit) as cm:
5001 fbb.query(fbb.args)
5002 self.assertEqual(cm.exception.code, 1)
5003 self.assertTrue(fbb.printed_lines)
5004
5005 def test_query_test_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:155006 self.override_args(query='test/foo_test/bots',
5007 check=False,
5008 pyl_files_dir=None,
5009 json=None,
5010 waterfall_filters=[])
5011 fbb = FakeBBGen(self.args,
5012 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:065013 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:415014 LUCI_MILO_CFG,
5015 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065016 fbb.query(fbb.args)
5017 query_json = json.loads("".join(fbb.printed_lines))
5018 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_OUTPUT)
5019
5020 def test_query_test_bots_isolated_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:155021 self.override_args(query='test/foo_test/bots',
5022 check=False,
5023 pyl_files_dir=None,
5024 json=None,
5025 waterfall_filters=[])
5026 fbb = FakeBBGen(self.args,
5027 FOO_ISOLATED_SCRIPTS_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:065028 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:415029 LUCI_MILO_CFG,
5030 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065031 fbb.query(fbb.args)
5032 query_json = json.loads("".join(fbb.printed_lines))
5033 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT)
5034
5035 def test_query_test_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:155036 self.override_args(query='test/foo_tests/foo',
5037 check=False,
5038 pyl_files_dir=None,
5039 json=None,
5040 waterfall_filters=[])
5041 fbb = FakeBBGen(self.args,
5042 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:065043 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:415044 LUCI_MILO_CFG,
5045 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065046 with self.assertRaises(SystemExit) as cm:
5047 fbb.query(fbb.args)
5048 self.assertEqual(cm.exception.code, 1)
5049 self.assertTrue(fbb.printed_lines)
5050
5051 def test_query_test_bots_no_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:155052 self.override_args(query='test/bar_tests/bots',
5053 check=False,
5054 pyl_files_dir=None,
5055 json=None,
5056 waterfall_filters=[])
5057 fbb = FakeBBGen(self.args,
5058 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:065059 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:415060 LUCI_MILO_CFG,
5061 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065062 fbb.query(fbb.args)
5063 query_json = json.loads("".join(fbb.printed_lines))
5064 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT)
5065
5066 def test_query_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:155067 self.override_args(query='foo',
5068 check=False,
5069 pyl_files_dir=None,
5070 json=None,
5071 waterfall_filters=[])
5072 fbb = FakeBBGen(self.args,
5073 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:065074 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:415075 LUCI_MILO_CFG,
5076 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:065077 with self.assertRaises(SystemExit) as cm:
5078 fbb.query(fbb.args)
5079 self.assertEqual(cm.exception.code, 1)
5080 self.assertTrue(fbb.printed_lines)
5081
Brian Sheedye6ea0ee2019-07-11 02:54:375082
5083FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES = """\
5084{
5085 'basic_suites': {
5086 'foo_tests': {
5087 'foo_test': {
5088 'args': [
5089 '--enable-features',
5090 'Foo,Bar',
5091 ],
5092 },
5093 },
5094 },
5095}
5096"""
5097
5098
5099FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE = """\
5100{
5101 'foo_test': {
5102 'replacements': {
5103 'Fake Tester': {
5104 'args': {
5105 '--c_arg': None,
5106 },
5107 },
5108 },
5109 },
5110}
5111"""
5112
5113
5114FOO_TEST_REPLACEMENTS_REMOVE_VALUE = """\
5115{
5116 'foo_test': {
5117 'replacements': {
5118 'Fake Tester': {
5119 'args': {
5120 '--enable-features': None,
5121 },
5122 },
5123 },
5124 },
5125}
5126"""
5127
5128
5129FOO_TEST_REPLACEMENTS_REPLACE_VALUE = """\
5130{
5131 'foo_test': {
5132 'replacements': {
5133 'Fake Tester': {
5134 'args': {
5135 '--enable-features': 'Bar,Baz',
5136 },
5137 },
5138 },
5139 },
5140}
5141"""
5142
5143
5144FOO_TEST_REPLACEMENTS_INVALID_KEY = """\
5145{
5146 'foo_test': {
5147 'replacements': {
5148 'Fake Tester': {
5149 'invalid': {
5150 '--enable-features': 'Bar,Baz',
5151 },
5152 },
5153 },
5154 },
5155}
5156"""
5157
5158
5159REPLACEMENTS_REMOVE_OUTPUT = """\
5160{
5161 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5162 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5163 "Fake Tester": {
5164 "gtest_tests": [
5165 {
5166 "args": [],
5167 "merge": {
5168 "args": [],
5169 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5170 },
5171 "swarming": {
5172 "can_use_on_swarming_builders": true,
5173 "dimension_sets": [
5174 {
5175 "kvm": "1"
5176 }
5177 ]
5178 },
5179 "test": "foo_test"
5180 }
5181 ]
5182 }
5183}
5184"""
5185
5186REPLACEMENTS_VALUE_OUTPUT = """\
5187{
5188 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5189 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5190 "Fake Tester": {
5191 "gtest_tests": [
5192 {
5193 "args": [
5194 "--enable-features=Bar,Baz"
5195 ],
5196 "merge": {
5197 "args": [],
5198 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5199 },
5200 "swarming": {
5201 "can_use_on_swarming_builders": true,
5202 "dimension_sets": [
5203 {
5204 "kvm": "1"
5205 }
5206 ]
5207 },
5208 "test": "foo_test"
5209 }
5210 ]
5211 }
5212}
5213"""
5214
5215REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT = """\
5216{
5217 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5218 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5219 "Fake Tester": {
5220 "gtest_tests": [
5221 {
5222 "args": [
5223 "--enable-features",
5224 "Bar,Baz"
5225 ],
5226 "merge": {
5227 "args": [],
5228 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5229 },
5230 "swarming": {
5231 "can_use_on_swarming_builders": true,
5232 "dimension_sets": [
5233 {
5234 "kvm": "1"
5235 }
5236 ]
5237 },
5238 "test": "foo_test"
5239 }
5240 ]
5241 }
5242}
5243"""
5244
5245
Garrett Beaty1afaccc2020-06-25 19:58:155246class ReplacementTests(TestCase):
Brian Sheedye6ea0ee2019-07-11 02:54:375247 """Tests for the arg replacement feature."""
5248 def test_replacement_valid_remove_no_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155249 fbb = FakeBBGen(self.args,
5250 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375251 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:415252 LUCI_MILO_CFG,
5253 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155254 self.create_testing_buildbot_json_file('chromium.test.json',
5255 REPLACEMENTS_REMOVE_OUTPUT)
5256 self.create_testing_buildbot_json_file('chromium.ci.json',
5257 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375258 fbb.check_output_file_consistency(verbose=True)
5259 self.assertFalse(fbb.printed_lines)
5260
5261 def test_replacement_valid_remove_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155262 fbb = FakeBBGen(self.args,
5263 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375264 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:415265 LUCI_MILO_CFG,
5266 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155267 self.create_testing_buildbot_json_file('chromium.test.json',
5268 REPLACEMENTS_REMOVE_OUTPUT)
5269 self.create_testing_buildbot_json_file('chromium.ci.json',
5270 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375271 fbb.check_output_file_consistency(verbose=True)
5272 self.assertFalse(fbb.printed_lines)
5273
5274 def test_replacement_valid_replace_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155275 fbb = FakeBBGen(self.args,
5276 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375277 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:415278 LUCI_MILO_CFG,
5279 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155280 self.create_testing_buildbot_json_file('chromium.test.json',
5281 REPLACEMENTS_VALUE_OUTPUT)
5282 self.create_testing_buildbot_json_file('chromium.ci.json',
5283 REPLACEMENTS_VALUE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375284 fbb.check_output_file_consistency(verbose=True)
5285 self.assertFalse(fbb.printed_lines)
5286
5287 def test_replacement_valid_replace_value_separate_entries(self):
Garrett Beaty1afaccc2020-06-25 19:58:155288 fbb = FakeBBGen(self.args,
5289 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375290 FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES,
Nodir Turakulovfce34292019-12-18 17:05:415291 LUCI_MILO_CFG,
5292 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155293 self.create_testing_buildbot_json_file(
5294 'chromium.test.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
5295 self.create_testing_buildbot_json_file(
5296 'chromium.ci.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375297 fbb.check_output_file_consistency(verbose=True)
5298 self.assertFalse(fbb.printed_lines)
5299
5300 def test_replacement_invalid_key_not_valid(self):
Garrett Beaty1afaccc2020-06-25 19:58:155301 fbb = FakeBBGen(self.args,
5302 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375303 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:415304 LUCI_MILO_CFG,
5305 exceptions=FOO_TEST_REPLACEMENTS_INVALID_KEY)
Jamie Madillcf4f8c72021-05-20 19:24:235306 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5307 'Given replacement key *'):
Brian Sheedye6ea0ee2019-07-11 02:54:375308 fbb.check_output_file_consistency(verbose=True)
5309
5310 def test_replacement_invalid_key_not_found(self):
Garrett Beaty1afaccc2020-06-25 19:58:155311 fbb = FakeBBGen(self.args,
5312 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375313 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:415314 LUCI_MILO_CFG,
5315 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Jamie Madillcf4f8c72021-05-20 19:24:235316 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5317 'Could not find *'):
Brian Sheedye6ea0ee2019-07-11 02:54:375318 fbb.check_output_file_consistency(verbose=True)
5319
Jeff Yoon8154e582019-12-03 23:30:015320
Brian Sheedya31578e2020-05-18 20:24:365321FOO_TEST_SUITE_WITH_MAGIC_ARGS = """\
5322{
5323 'basic_suites': {
5324 'foo_tests': {
5325 'foo_test': {
5326 'args': [
5327 '$$MAGIC_SUBSTITUTION_TestOnlySubstitution',
5328 ],
5329 },
5330 },
5331 },
5332}
5333"""
5334
5335
5336FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS = """\
5337{
5338 'basic_suites': {
5339 'foo_tests': {
5340 'foo_test': {
5341 'args': [
5342 '$$MAGIC_SUBSTITUTION_NotARealSubstitution',
5343 ],
5344 },
5345 },
5346 },
5347}
5348"""
5349
5350
5351MAGIC_SUBSTITUTIONS_OUTPUT = """\
5352{
5353 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5354 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5355 "Fake Tester": {
5356 "gtest_tests": [
5357 {
5358 "args": [
5359 "--magic-substitution-success"
5360 ],
5361 "merge": {
5362 "args": [],
5363 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5364 },
5365 "swarming": {
5366 "can_use_on_swarming_builders": true,
5367 "dimension_sets": [
5368 {
5369 "kvm": "1"
5370 }
5371 ]
5372 },
5373 "test": "foo_test"
5374 }
5375 ]
5376 }
5377}
5378"""
5379
5380
Garrett Beaty1afaccc2020-06-25 19:58:155381class MagicSubstitutionTests(TestCase):
Brian Sheedya31578e2020-05-18 20:24:365382 """Tests for the magic substitution feature."""
5383 def test_valid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155384 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5385 FOO_TEST_SUITE_WITH_MAGIC_ARGS, LUCI_MILO_CFG)
5386 self.create_testing_buildbot_json_file('chromium.test.json',
5387 MAGIC_SUBSTITUTIONS_OUTPUT)
5388 self.create_testing_buildbot_json_file('chromium.ci.json',
5389 MAGIC_SUBSTITUTIONS_OUTPUT)
Brian Sheedya31578e2020-05-18 20:24:365390 fbb.check_output_file_consistency(verbose=True)
5391 self.assertFalse(fbb.printed_lines)
5392
5393 def test_invalid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155394 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5395 FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:235396 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5397 'Magic substitution function *'):
Brian Sheedya31578e2020-05-18 20:24:365398 fbb.check_output_file_consistency(verbose=True)
5399
5400
Jeff Yoon8154e582019-12-03 23:30:015401# Matrix compound composition test suites
5402
5403MATRIX_COMPOUND_EMPTY = """\
5404{
5405 'basic_suites': {
5406 'bar_tests': {
5407 'bar_test': {},
5408 },
5409 'foo_tests': {
5410 'foo_test': {},
5411 },
5412 },
5413 'matrix_compound_suites': {
5414 'matrix_tests': {
5415 'foo_tests': {},
5416 'bar_tests': {},
5417 },
5418 },
5419}
5420"""
5421
Sven Zhengb51bd0482022-08-26 18:26:255422MATRIX_COMPOUND_EMPTY_WITH_DESCRIPTION = """\
5423{
5424 'basic_suites': {
5425 'bar_tests': {
5426 'bar_test': {
5427 'description': 'This is a bar test',
5428 },
5429 },
5430 'foo_tests': {
5431 'foo_test': {},
5432 },
5433 },
5434 'matrix_compound_suites': {
5435 'matrix_tests': {
5436 'foo_tests': {},
5437 'bar_tests': {},
5438 },
5439 },
5440}
5441"""
5442
Jeff Yoon67c3e832020-02-08 07:39:385443MATRIX_COMPOUND_MISSING_IDENTIFIER = """\
Jeff Yoon8154e582019-12-03 23:30:015444{
5445 'basic_suites': {
5446 'foo_tests': {
5447 'foo_test': {},
5448 },
5449 },
5450 'matrix_compound_suites': {
5451 'matrix_tests': {
5452 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385453 'variants': [
5454 {
5455 'swarming': {
5456 'dimension_sets': [
5457 {
5458 'foo': 'bar',
5459 },
5460 ],
Jeff Yoon8154e582019-12-03 23:30:015461 },
Jeff Yoon67c3e832020-02-08 07:39:385462 },
5463 ],
Jeff Yoon8154e582019-12-03 23:30:015464 },
5465 },
5466 },
5467}
5468"""
5469
Sven Zhengef0d0872022-04-04 22:13:295470MATRIX_COMPOUND_EMPTY_IDENTIFIER = """\
5471{
5472 'basic_suites': {
5473 'foo_tests': {
5474 'foo_test': {},
5475 },
5476 },
5477 'matrix_compound_suites': {
5478 'matrix_tests': {
5479 'foo_tests': {
5480 'variants': [
5481 {
5482 'identifier': '',
5483 'swarming': {
5484 'dimension_sets': [
5485 {
5486 'foo': 'empty identifier not allowed',
5487 },
5488 ],
5489 },
5490 },
5491 ],
5492 },
5493 },
5494 },
5495}
5496"""
5497
5498MATRIX_COMPOUND_TRAILING_IDENTIFIER = """\
5499{
5500 'basic_suites': {
5501 'foo_tests': {
5502 'foo_test': {},
5503 },
5504 },
5505 'matrix_compound_suites': {
5506 'matrix_tests': {
5507 'foo_tests': {
5508 'variants': [
5509 {
5510 'identifier': ' ',
5511 'swarming': {
5512 'dimension_sets': [
5513 {
5514 'foo': 'strip to empty not allowed',
5515 },
5516 ],
5517 },
5518 },
5519 ],
5520 },
5521 'foo_tests': {
5522 'variants': [
5523 {
5524 'identifier': 'id ',
5525 'swarming': {
5526 'dimension_sets': [
5527 {
5528 'foo': 'trailing whitespace not allowed',
5529 },
5530 ],
5531 },
5532 },
5533 ],
5534 },
5535 },
5536 },
5537}
5538"""
5539
Jeff Yoon8154e582019-12-03 23:30:015540MATRIX_MISMATCHED_SWARMING_LENGTH = """\
5541{
5542 'basic_suites': {
5543 'foo_tests': {
5544 'foo_test': {
5545 'swarming': {
5546 'dimension_sets': [
5547 {
5548 'hello': 'world',
5549 }
5550 ],
5551 },
5552 },
5553 },
5554 },
5555 'matrix_compound_suites': {
5556 'matrix_tests': {
5557 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385558 'variants': [
5559 {
5560 'identifier': 'test',
5561 'swarming': {
5562 'dimension_sets': [
5563 {
5564 'foo': 'bar',
5565 },
5566 {
5567 'bar': 'foo',
5568 }
5569 ],
Jeff Yoon8154e582019-12-03 23:30:015570 },
Jeff Yoon67c3e832020-02-08 07:39:385571 },
5572 ],
Jeff Yoon8154e582019-12-03 23:30:015573 },
5574 },
5575 },
5576}
5577"""
5578
5579MATRIX_REF_NONEXISTENT = """\
5580{
5581 'basic_suites': {
5582 'foo_tests': {
5583 'foo_test': {},
5584 },
5585 },
5586 'matrix_compound_suites': {
5587 'matrix_tests': {
5588 'bar_test': {},
5589 },
5590 },
5591}
5592"""
5593
Jeff Yoon67c3e832020-02-08 07:39:385594MATRIX_COMPOUND_REF_COMPOSITION = """\
Jeff Yoon8154e582019-12-03 23:30:015595{
5596 'basic_suites': {
5597 'foo_tests': {
5598 'foo_test': {},
5599 },
5600 },
5601 'compound_suites': {
5602 'sample_composition': {
5603 'foo_tests': {},
5604 },
5605 },
5606 'matrix_compound_suites': {
5607 'matrix_tests': {
5608 'sample_composition': {},
5609 },
5610 },
5611}
5612"""
5613
5614MATRIX_COMPOSITION_REF_MATRIX = """\
5615{
5616 'basic_suites': {
5617 'foo_tests': {
5618 'foo_test': {},
5619 },
5620 },
5621 'matrix_compound_suites': {
5622 'a_test': {
5623 'foo_tests': {},
5624 },
5625 'matrix_tests': {
5626 'a_test': {},
5627 },
5628 },
5629}
5630"""
5631
Jeff Yoon67c3e832020-02-08 07:39:385632MATRIX_COMPOUND_VARIANTS_MIXINS_MERGE = """\
5633{
5634 'basic_suites': {
5635 'foo_tests': {
5636 'set': {
5637 'mixins': [ 'test_mixin' ],
5638 },
5639 },
5640 },
5641 'matrix_compound_suites': {
5642 'matrix_tests': {
5643 'foo_tests': {
5644 'variants': [
5645 {
5646 'mixins': [ 'dimension_mixin' ],
5647 },
5648 ],
5649 },
5650 },
5651 },
5652}
5653"""
5654
5655MATRIX_COMPOUND_VARIANTS_MIXINS = """\
5656{
5657 'basic_suites': {
5658 'foo_tests': {
5659 'set': {
5660 'mixins': [ 'test_mixin' ],
5661 },
5662 },
5663 },
5664 'matrix_compound_suites': {
5665 'matrix_tests': {
5666 'foo_tests': {
5667 'variants': [
5668 {
5669 'mixins': [
5670 'dimension_mixin',
5671 'waterfall_mixin',
5672 'builder_mixin',
5673 'random_mixin'
5674 ],
5675 },
5676 ],
5677 },
5678 },
5679 },
5680}
5681"""
5682
5683MATRIX_COMPOUND_VARIANTS_MIXINS_REMOVE = """\
5684{
5685 'basic_suites': {
5686 'foo_tests': {
5687 'set': {
5688 'remove_mixins': ['builder_mixin'],
5689 },
5690 },
5691 },
5692 'matrix_compound_suites': {
5693 'matrix_tests': {
5694 'foo_tests': {
5695 'variants': [
5696 {
5697 'mixins': [ 'builder_mixin' ],
5698 }
5699 ],
5700 },
5701 },
5702 },
5703}
5704"""
5705
5706MATRIX_COMPOUND_CONFLICTING_TEST_SUITES = """\
5707{
5708 'basic_suites': {
5709 'bar_tests': {
5710 'baz_tests': {
5711 'args': [
5712 '--bar',
5713 ],
5714 }
5715 },
5716 'foo_tests': {
5717 'baz_tests': {
5718 'args': [
5719 '--foo',
5720 ],
5721 }
5722 },
5723 },
5724 'matrix_compound_suites': {
5725 'matrix_tests': {
5726 'bar_tests': {
5727 'variants': [
5728 {
5729 'identifier': 'bar',
5730 }
5731 ],
5732 },
5733 'foo_tests': {
5734 'variants': [
5735 {
5736 'identifier': 'foo'
5737 }
5738 ]
5739 }
5740 },
5741 },
5742}
5743"""
5744
5745MATRIX_COMPOUND_TARGETS_ARGS = """\
5746{
5747 'basic_suites': {
5748 'foo_tests': {
5749 'args_test': {
5750 'args': [
5751 '--iam'
5752 ],
5753 },
5754 }
5755 },
5756 'matrix_compound_suites': {
5757 'matrix_tests': {
5758 'foo_tests': {
5759 'variants': [
5760 {
5761 'identifier': 'args',
5762 'args': [
5763 '--anarg',
5764 ],
5765 },
5766 {
5767 'identifier': 'swarming',
5768 'swarming': {
5769 'a': 'b',
5770 'dimension_sets': [
5771 {
5772 'hello': 'world',
5773 }
5774 ]
5775 }
5776 },
5777 {
5778 'identifier': 'mixins',
5779 'mixins': [ 'dimension_mixin' ],
5780 }
5781 ],
5782 },
5783 },
5784 },
5785}
5786"""
5787
5788MATRIX_COMPOUND_TARGETS_MIXINS = """\
5789{
5790 'basic_suites': {
5791 'foo_tests': {
5792 'mixins_test': {
5793 'mixins': [ 'test_mixin' ],
5794 },
5795 }
5796 },
5797 'matrix_compound_suites': {
5798 'matrix_tests': {
5799 'foo_tests': {
Jeff Yoon85fb8df2020-08-20 16:47:435800 'mixins': [ 'random_mixin' ],
Jeff Yoon67c3e832020-02-08 07:39:385801 'variants': [
5802 {
5803 'identifier': 'args',
5804 'args': [
5805 '--anarg',
5806 ],
5807 },
5808 {
5809 'identifier': 'swarming',
5810 'swarming': {
5811 'a': 'b',
5812 'dimension_sets': [
5813 {
5814 'hello': 'world',
5815 }
5816 ]
5817 }
5818 },
5819 {
5820 'identifier': 'mixins',
5821 'mixins': [ 'dimension_mixin' ],
5822 }
5823 ],
5824 },
5825 },
5826 },
5827}
5828"""
5829
5830MATRIX_COMPOUND_TARGETS_SWARMING = """\
5831{
5832 'basic_suites': {
5833 'foo_tests': {
5834 'swarming_test': {
5835 'swarming': {
5836 'foo': 'bar',
5837 'dimension_sets': [
5838 {
5839 'foo': 'bar',
5840 },
5841 ],
5842 },
5843 },
5844 }
5845 },
5846 'matrix_compound_suites': {
5847 'matrix_tests': {
5848 'foo_tests': {
5849 'variants': [
5850 {
5851 'identifier': 'args',
5852 'args': [
5853 '--anarg',
5854 ],
5855 },
5856 {
5857 'identifier': 'swarming',
5858 'swarming': {
5859 'a': 'b',
5860 'dimension_sets': [
5861 {
5862 'hello': 'world',
5863 }
5864 ]
5865 }
5866 },
5867 {
5868 'identifier': 'mixins',
5869 'mixins': [ 'dimension_mixin' ],
5870 }
5871 ],
5872 },
5873 },
5874 },
5875}
5876"""
Jeff Yoon8154e582019-12-03 23:30:015877
Jeff Yoonda581c32020-03-06 03:56:055878MATRIX_COMPOUND_VARIANTS_REF = """\
5879{
5880 'basic_suites': {
5881 'foo_tests': {
5882 'swarming_test': {},
5883 }
5884 },
5885 'matrix_compound_suites': {
5886 'matrix_tests': {
5887 'foo_tests': {
5888 'variants': [
5889 'a_variant'
5890 ],
5891 },
5892 },
5893 },
5894}
5895"""
5896
Sven Zhengb51bd0482022-08-26 18:26:255897MATRIX_COMPOUND_VARIANTS_REF_WITH_DESCRIPTION = """\
5898{
5899 'basic_suites': {
5900 'foo_tests': {
5901 'swarming_test': {
5902 'description': 'This is a swarming test.'
5903 },
5904 }
5905 },
5906 'matrix_compound_suites': {
5907 'matrix_tests': {
5908 'foo_tests': {
5909 'variants': [
5910 'a_variant'
5911 ],
5912 },
5913 },
5914 },
5915}
5916"""
5917
Rakib M. Hasanc9e01c62020-07-27 22:48:125918MATRIX_COMPOUND_TEST_WITH_TEST_KEY = """\
5919{
5920 'basic_suites': {
5921 'foo_tests': {
5922 'swarming_test': {
5923 'test': 'foo_test_apk'
5924 },
5925 }
5926 },
5927 'matrix_compound_suites': {
5928 'matrix_tests': {
5929 'foo_tests': {
5930 'variants': [
5931 'a_variant',
5932 ],
5933 },
5934 },
5935 },
5936}
5937"""
5938
Jeff Yoonda581c32020-03-06 03:56:055939MATRIX_COMPOUND_MIXED_VARIANTS_REF = """\
5940{
5941 'basic_suites': {
5942 'foo_tests': {
5943 'swarming_test': {},
5944 }
5945 },
5946 'matrix_compound_suites': {
5947 'matrix_tests': {
5948 'foo_tests': {
5949 'variants': [
5950 'a_variant',
5951 {
5952 'args': [
5953 'a',
5954 'b'
5955 ],
5956 'identifier': 'ab',
5957 }
5958 ],
5959 },
5960 },
5961 },
5962}
5963"""
5964
5965VARIANTS_FILE = """\
5966{
5967 'a_variant': {
5968 'args': [
5969 '--platform',
5970 'device',
5971 '--version',
5972 '1'
5973 ],
5974 'identifier': 'a_variant'
5975 }
5976}
5977"""
5978
Sven Zhengb51bd0482022-08-26 18:26:255979VARIANTS_FILE_WITH_DESCRIPTION = """\
5980{
5981 'a_variant': {
5982 'identifier': 'a_variant',
5983 'description': 'Variant description.'
5984 }
5985}
5986"""
5987
Jeff Yoonda581c32020-03-06 03:56:055988MULTI_VARIANTS_FILE = """\
5989{
5990 'a_variant': {
5991 'args': [
5992 '--platform',
5993 'device',
5994 '--version',
5995 '1'
5996 ],
5997 'identifier': 'a_variant'
5998 },
5999 'b_variant': {
6000 'args': [
6001 '--platform',
6002 'sim',
6003 '--version',
6004 '2'
6005 ],
6006 'identifier': 'b_variant'
6007 }
6008}
6009"""
6010
Jeff Yoon8154e582019-12-03 23:30:016011# # Dictionary composition test suite outputs
6012
Sven Zheng2fe6dd6f2021-08-06 21:12:276013MATRIX_COMPOUND_OUTPUT = """\
Jeff Yoon8154e582019-12-03 23:30:016014{
6015 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6016 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6017 "Fake Tester": {
Sven Zheng2fe6dd6f2021-08-06 21:12:276018 "gtest_tests": [
6019 {
6020 "merge": {
6021 "args": [],
6022 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6023 },
6024 "swarming": {
6025 "can_use_on_swarming_builders": true
6026 },
6027 "test": "bar_test"
6028 },
6029 {
6030 "merge": {
6031 "args": [],
6032 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6033 },
6034 "swarming": {
6035 "can_use_on_swarming_builders": true
6036 },
6037 "test": "foo_test"
6038 }
6039 ]
Jeff Yoon8154e582019-12-03 23:30:016040 }
6041}
6042"""
6043
Sven Zhengb51bd0482022-08-26 18:26:256044MATRIX_COMPOUND_OUTPUT_WITH_DESCRIPTION = """\
6045{
6046 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6047 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6048 "Fake Tester": {
6049 "gtest_tests": [
6050 {
6051 "description": "This is a bar test",
6052 "merge": {
6053 "args": [],
6054 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6055 },
6056 "swarming": {
6057 "can_use_on_swarming_builders": true
6058 },
6059 "test": "bar_test"
6060 },
6061 {
6062 "merge": {
6063 "args": [],
6064 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6065 },
6066 "swarming": {
6067 "can_use_on_swarming_builders": true
6068 },
6069 "test": "foo_test"
6070 }
6071 ]
6072 }
6073}
6074"""
6075
Rakib M. Hasanc9e01c62020-07-27 22:48:126076MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT = """\
6077{
6078 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6079 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6080 "Fake Tester": {
6081 "gtest_tests": [
6082 {
6083 "args": [
6084 "--platform",
6085 "device",
6086 "--version",
6087 "1"
6088 ],
6089 "merge": {
6090 "args": [],
6091 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6092 },
Sven Zhengef0d0872022-04-04 22:13:296093 "name": "swarming_test a_variant",
Rakib M. Hasanc9e01c62020-07-27 22:48:126094 "swarming": {
6095 "can_use_on_swarming_builders": true
6096 },
Ben Pastene5f231cf22022-05-05 18:03:076097 "test": "foo_test_apk",
6098 "variant_id": "a_variant"
Rakib M. Hasanc9e01c62020-07-27 22:48:126099 }
6100 ]
6101 }
6102}
6103"""
6104
Jeff Yoon67c3e832020-02-08 07:39:386105MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS = """\
Jeff Yoon8154e582019-12-03 23:30:016106{
6107 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6108 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6109 "Fake Tester": {
6110 "gtest_tests": [
6111 {
Jeff Yoon67c3e832020-02-08 07:39:386112 "args": [
6113 "--iam",
6114 "--anarg"
6115 ],
Jeff Yoon8154e582019-12-03 23:30:016116 "merge": {
6117 "args": [],
6118 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6119 },
Sven Zhengef0d0872022-04-04 22:13:296120 "name": "args_test args",
Jeff Yoon67c3e832020-02-08 07:39:386121 "swarming": {
6122 "can_use_on_swarming_builders": true
6123 },
Ben Pastene5f231cf22022-05-05 18:03:076124 "test": "args_test",
6125 "variant_id": "args"
Jeff Yoon67c3e832020-02-08 07:39:386126 },
6127 {
6128 "args": [
6129 "--iam"
6130 ],
6131 "merge": {
6132 "args": [],
6133 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6134 },
Sven Zhengef0d0872022-04-04 22:13:296135 "name": "args_test mixins",
Jeff Yoon67c3e832020-02-08 07:39:386136 "swarming": {
6137 "can_use_on_swarming_builders": true,
6138 "dimension_sets": [
6139 {
6140 "iama": "mixin"
6141 }
6142 ]
6143 },
Ben Pastene5f231cf22022-05-05 18:03:076144 "test": "args_test",
6145 "variant_id": "mixins"
Jeff Yoon67c3e832020-02-08 07:39:386146 },
6147 {
6148 "args": [
6149 "--iam"
6150 ],
6151 "merge": {
6152 "args": [],
6153 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6154 },
Sven Zhengef0d0872022-04-04 22:13:296155 "name": "args_test swarming",
Jeff Yoon67c3e832020-02-08 07:39:386156 "swarming": {
6157 "a": "b",
6158 "can_use_on_swarming_builders": true,
6159 "dimension_sets": [
6160 {
6161 "hello": "world"
6162 }
6163 ]
6164 },
Ben Pastene5f231cf22022-05-05 18:03:076165 "test": "args_test",
6166 "variant_id": "swarming"
Jeff Yoon67c3e832020-02-08 07:39:386167 }
6168 ]
6169 }
6170}
6171"""
6172
6173MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS = """\
6174{
6175 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6176 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6177 "Fake Tester": {
6178 "gtest_tests": [
6179 {
6180 "args": [
6181 "--anarg"
6182 ],
6183 "merge": {
6184 "args": [],
6185 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6186 },
Sven Zhengef0d0872022-04-04 22:13:296187 "name": "mixins_test args",
Jeff Yoon67c3e832020-02-08 07:39:386188 "swarming": {
6189 "can_use_on_swarming_builders": true,
6190 "value": "test"
6191 },
Jeff Yoon85fb8df2020-08-20 16:47:436192 "test": "mixins_test",
Ben Pastene5f231cf22022-05-05 18:03:076193 "value": "random",
6194 "variant_id": "args"
Jeff Yoon67c3e832020-02-08 07:39:386195 },
6196 {
6197 "args": [],
6198 "merge": {
6199 "args": [],
6200 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6201 },
Sven Zhengef0d0872022-04-04 22:13:296202 "name": "mixins_test mixins",
Jeff Yoon67c3e832020-02-08 07:39:386203 "swarming": {
6204 "can_use_on_swarming_builders": true,
6205 "dimension_sets": [
6206 {
6207 "iama": "mixin"
6208 }
6209 ],
6210 "value": "test"
6211 },
Jeff Yoon85fb8df2020-08-20 16:47:436212 "test": "mixins_test",
Ben Pastene5f231cf22022-05-05 18:03:076213 "value": "random",
6214 "variant_id": "mixins"
Jeff Yoon67c3e832020-02-08 07:39:386215 },
6216 {
6217 "args": [],
6218 "merge": {
6219 "args": [],
6220 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6221 },
Sven Zhengef0d0872022-04-04 22:13:296222 "name": "mixins_test swarming",
Jeff Yoon67c3e832020-02-08 07:39:386223 "swarming": {
6224 "a": "b",
6225 "can_use_on_swarming_builders": true,
6226 "dimension_sets": [
6227 {
6228 "hello": "world"
6229 }
6230 ],
6231 "value": "test"
6232 },
Jeff Yoon85fb8df2020-08-20 16:47:436233 "test": "mixins_test",
Ben Pastene5f231cf22022-05-05 18:03:076234 "value": "random",
6235 "variant_id": "swarming"
Jeff Yoon67c3e832020-02-08 07:39:386236 }
6237 ]
6238 }
6239}
6240"""
6241
6242MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING = """\
6243{
6244 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6245 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6246 "Fake Tester": {
6247 "gtest_tests": [
6248 {
6249 "args": [
6250 "--anarg"
6251 ],
6252 "merge": {
6253 "args": [],
6254 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6255 },
Sven Zhengef0d0872022-04-04 22:13:296256 "name": "swarming_test args",
Jeff Yoon8154e582019-12-03 23:30:016257 "swarming": {
6258 "can_use_on_swarming_builders": true,
6259 "dimension_sets": [
6260 {
6261 "foo": "bar"
6262 }
Jeff Yoon67c3e832020-02-08 07:39:386263 ],
6264 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:016265 },
Ben Pastene5f231cf22022-05-05 18:03:076266 "test": "swarming_test",
6267 "variant_id": "args"
Jeff Yoon67c3e832020-02-08 07:39:386268 },
Jeff Yoon8154e582019-12-03 23:30:016269 {
Jeff Yoon67c3e832020-02-08 07:39:386270 "args": [],
Jeff Yoon8154e582019-12-03 23:30:016271 "merge": {
6272 "args": [],
6273 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6274 },
Sven Zhengef0d0872022-04-04 22:13:296275 "name": "swarming_test mixins",
Jeff Yoon8154e582019-12-03 23:30:016276 "swarming": {
6277 "can_use_on_swarming_builders": true,
6278 "dimension_sets": [
6279 {
6280 "foo": "bar",
Jeff Yoon67c3e832020-02-08 07:39:386281 "iama": "mixin"
6282 }
6283 ],
6284 "foo": "bar"
6285 },
Ben Pastene5f231cf22022-05-05 18:03:076286 "test": "swarming_test",
6287 "variant_id": "mixins"
Jeff Yoon67c3e832020-02-08 07:39:386288 },
6289 {
6290 "args": [],
6291 "merge": {
6292 "args": [],
6293 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6294 },
Sven Zhengef0d0872022-04-04 22:13:296295 "name": "swarming_test swarming",
Jeff Yoon67c3e832020-02-08 07:39:386296 "swarming": {
6297 "a": "b",
6298 "can_use_on_swarming_builders": true,
6299 "dimension_sets": [
6300 {
6301 "foo": "bar",
Jeff Yoon8154e582019-12-03 23:30:016302 "hello": "world"
6303 }
Jeff Yoon67c3e832020-02-08 07:39:386304 ],
6305 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:016306 },
Ben Pastene5f231cf22022-05-05 18:03:076307 "test": "swarming_test",
6308 "variant_id": "swarming"
Jeff Yoon8154e582019-12-03 23:30:016309 }
6310 ]
6311 }
6312}
6313"""
6314
Jeff Yoonda581c32020-03-06 03:56:056315MATRIX_COMPOUND_VARIANTS_REF_OUTPUT = """\
6316{
6317 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6318 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6319 "Fake Tester": {
6320 "gtest_tests": [
6321 {
6322 "args": [
6323 "--platform",
6324 "device",
6325 "--version",
6326 "1"
6327 ],
6328 "merge": {
6329 "args": [],
6330 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6331 },
Sven Zhengef0d0872022-04-04 22:13:296332 "name": "swarming_test a_variant",
Jeff Yoonda581c32020-03-06 03:56:056333 "swarming": {
6334 "can_use_on_swarming_builders": true
6335 },
Ben Pastene5f231cf22022-05-05 18:03:076336 "test": "swarming_test",
6337 "variant_id": "a_variant"
Jeff Yoonda581c32020-03-06 03:56:056338 }
6339 ]
6340 }
6341}
6342"""
6343
Sven Zhengb51bd0482022-08-26 18:26:256344MATRIX_COMPOUND_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT = """\
6345{
6346 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6347 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6348 "Fake Tester": {
6349 "gtest_tests": [
6350 {
6351 "args": [],
6352 "description": "Variant description.",
6353 "merge": {
6354 "args": [],
6355 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6356 },
6357 "name": "swarming_test a_variant",
6358 "swarming": {
6359 "can_use_on_swarming_builders": true
6360 },
6361 "test": "swarming_test",
6362 "variant_id": "a_variant"
6363 }
6364 ]
6365 }
6366}
6367"""
6368
6369MATRIX_COMPOUND_WITH_DECRIPTION_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT = """\
6370{
6371 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6372 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6373 "Fake Tester": {
6374 "gtest_tests": [
6375 {
6376 "args": [],
6377 "description": "This is a swarming test.\\nVariant description.",
6378 "merge": {
6379 "args": [],
6380 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6381 },
6382 "name": "swarming_test a_variant",
6383 "swarming": {
6384 "can_use_on_swarming_builders": true
6385 },
6386 "test": "swarming_test",
6387 "variant_id": "a_variant"
6388 }
6389 ]
6390 }
6391}
6392"""
6393
Xinan Lin05fb9c1752020-12-17 00:15:526394EMPTY_SKYLAB_TEST_EXCEPTIONS = """\
6395{
Sven Zhengef0d0872022-04-04 22:13:296396 'tast.foo OCTOPUS_TOT': {
Xinan Lin05fb9c1752020-12-17 00:15:526397 'remove_from': [
6398 'Fake Tester',
6399 ]
6400 },
Sven Zhengef0d0872022-04-04 22:13:296401 'tast.foo OCTOPUS_TOT-1': {
Xinan Lin05fb9c1752020-12-17 00:15:526402 'remove_from': [
6403 'Fake Tester',
6404 ]
6405 }
6406}
6407"""
6408
6409MATRIX_SKYLAB_WATERFALL = """\
6410[
6411 {
6412 'project': 'chromium',
6413 'bucket': 'ci',
6414 'name': 'chromium.test',
6415 'machines': {
6416 'Fake Tester': {
6417 'test_suites': {
6418 'skylab_tests': 'cros_skylab_basic_x86',
6419 },
6420 },
6421 },
6422 },
6423]
6424"""
6425
6426MATRIX_COMPOUND_SKYLAB_REF = """\
6427{
6428 'basic_suites': {
6429 'cros_skylab_basic': {
6430 'tast.basic': {
6431 'suite': 'tast.basic',
6432 'timeout': 3600,
6433 },
6434 'tast.foo': {
6435 'suite': 'tast.foo',
6436 'timeout': 3600,
6437 },
6438 },
6439 },
6440 'compound_suites': {},
6441 'matrix_compound_suites': {
6442 'cros_skylab_basic_x86': {
6443 'cros_skylab_basic': {
6444 'variants': [
6445 {
6446 'skylab': {
6447 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:486448 'cros_chrome_version': '89.0.3234.0',
Xinan Lin05fb9c1752020-12-17 00:15:526449 'cros_img': 'octopus-release/R89-13655.0.0',
6450 },
Jieting Yangef6b1042021-11-30 21:33:486451 'enabled': True,
Xinan Lin05fb9c1752020-12-17 00:15:526452 'identifier': 'OCTOPUS_TOT',
6453 },
6454 {
6455 'skylab': {
6456 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:486457 'cros_chrome_version': '88.0.2324.0',
Xinan Lin05fb9c1752020-12-17 00:15:526458 'cros_img': 'octopus-release/R88-13597.23.0',
6459 },
Jieting Yangef6b1042021-11-30 21:33:486460 'enabled': True,
6461 'identifier': 'OCTOPUS_TOT-1',
6462 },
6463 ]
6464 },
6465 },
6466 },
6467}
6468"""
6469
6470ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF = """\
6471{
6472 'basic_suites': {
6473 'cros_skylab_basic': {
6474 'tast.basic': {
6475 'suite': 'tast.basic',
6476 'timeout': 3600,
6477 },
6478 'tast.foo': {
6479 'suite': 'tast.foo',
6480 'timeout': 3600,
6481 },
6482 },
6483 },
6484 'compound_suites': {},
6485 'matrix_compound_suites': {
6486 'cros_skylab_basic_x86': {
6487 'cros_skylab_basic': {
6488 'variants': [
6489 {
6490 'skylab': {
6491 'cros_board': 'octopus',
6492 'cros_chrome_version': '89.0.3234.0',
6493 'cros_img': 'octopus-release/R89-13655.0.0',
6494 },
6495 'enabled': True,
6496 'identifier': 'OCTOPUS_TOT',
6497 },
6498 {
6499 'skylab': {
6500 'cros_board': 'octopus',
6501 'cros_chrome_version': '88.0.2324.0',
6502 'cros_img': 'octopus-release/R88-13597.23.0',
6503 },
6504 'enabled': False,
Xinan Lin05fb9c1752020-12-17 00:15:526505 'identifier': 'OCTOPUS_TOT-1',
6506 },
6507 ]
6508 },
6509 },
6510 },
6511}
6512"""
6513
6514VARIATION_SKYLAB_OUTPUT = """\
6515{
6516 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6517 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6518 "Fake Tester": {
6519 "skylab_tests": [
6520 {
6521 "args": [],
6522 "cros_board": "octopus",
6523 "cros_img": "octopus-release/R89-13655.0.0",
Sven Zhengef0d0872022-04-04 22:13:296524 "name": "tast.basic OCTOPUS_TOT",
Xinan Lin05fb9c1752020-12-17 00:15:526525 "suite": "tast.basic",
6526 "swarming": {},
6527 "test": "tast.basic",
Ben Pastene5f231cf22022-05-05 18:03:076528 "timeout": 3600,
6529 "variant_id": "OCTOPUS_TOT"
Xinan Lin05fb9c1752020-12-17 00:15:526530 },
6531 {
6532 "args": [],
6533 "cros_board": "octopus",
6534 "cros_img": "octopus-release/R88-13597.23.0",
Sven Zhengef0d0872022-04-04 22:13:296535 "name": "tast.basic OCTOPUS_TOT-1",
Xinan Lin05fb9c1752020-12-17 00:15:526536 "suite": "tast.basic",
6537 "swarming": {},
6538 "test": "tast.basic",
Ben Pastene5f231cf22022-05-05 18:03:076539 "timeout": 3600,
6540 "variant_id": "OCTOPUS_TOT-1"
Xinan Lin05fb9c1752020-12-17 00:15:526541 }
6542 ]
6543 }
6544}
6545"""
6546
Jieting Yangef6b1042021-11-30 21:33:486547ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT = """\
6548{
6549 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6550 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6551 "Fake Tester": {
6552 "skylab_tests": [
6553 {
6554 "args": [],
6555 "cros_board": "octopus",
6556 "cros_img": "octopus-release/R89-13655.0.0",
Sven Zhengef0d0872022-04-04 22:13:296557 "name": "tast.basic OCTOPUS_TOT",
Jieting Yangef6b1042021-11-30 21:33:486558 "suite": "tast.basic",
6559 "swarming": {},
6560 "test": "tast.basic",
Ben Pastene5f231cf22022-05-05 18:03:076561 "timeout": 3600,
6562 "variant_id": "OCTOPUS_TOT"
Jieting Yangef6b1042021-11-30 21:33:486563 }
6564 ]
6565 }
6566}
6567"""
6568
Garrett Beaty1afaccc2020-06-25 19:58:156569
6570class MatrixCompositionTests(TestCase):
Jeff Yoon8154e582019-12-03 23:30:016571
6572 def test_good_structure_no_configs(self):
6573 """
6574 Tests matrix compound test suite structure with no configs,
6575 no conflicts and no bad references
6576 """
Garrett Beaty1afaccc2020-06-25 19:58:156577 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6578 MATRIX_COMPOUND_EMPTY, LUCI_MILO_CFG)
6579 self.create_testing_buildbot_json_file('chromium.test.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276580 MATRIX_COMPOUND_OUTPUT)
Garrett Beaty1afaccc2020-06-25 19:58:156581 self.create_testing_buildbot_json_file('chromium.ci.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276582 MATRIX_COMPOUND_OUTPUT)
Jeff Yoon8154e582019-12-03 23:30:016583 fbb.check_output_file_consistency(verbose=True)
6584 self.assertFalse(fbb.printed_lines)
6585
Sven Zhengb51bd0482022-08-26 18:26:256586 def test_good_structure_with_description(self):
6587 """
6588 Tests matrix compound test suite structure with description.
6589 """
6590 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6591 MATRIX_COMPOUND_EMPTY_WITH_DESCRIPTION, LUCI_MILO_CFG)
6592 self.create_testing_buildbot_json_file(
6593 'chromium.test.json', MATRIX_COMPOUND_OUTPUT_WITH_DESCRIPTION)
6594 self.create_testing_buildbot_json_file(
6595 'chromium.ci.json', MATRIX_COMPOUND_OUTPUT_WITH_DESCRIPTION)
6596 fbb.check_output_file_consistency(verbose=True)
6597 self.assertFalse(fbb.printed_lines)
6598
Jeff Yoon67c3e832020-02-08 07:39:386599 def test_missing_identifier(self):
Jeff Yoon8154e582019-12-03 23:30:016600 """
Jeff Yoon67c3e832020-02-08 07:39:386601 Variant is missing an identifier
Jeff Yoon8154e582019-12-03 23:30:016602 """
Garrett Beaty1afaccc2020-06-25 19:58:156603 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6604 MATRIX_COMPOUND_MISSING_IDENTIFIER, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236605 with self.assertRaisesRegex(
6606 generate_buildbot_json.BBGenErr,
Jeff Yoon67c3e832020-02-08 07:39:386607 'Missing required identifier field in matrix compound suite*'):
6608 fbb.check_output_file_consistency(verbose=True)
Jeff Yoon8154e582019-12-03 23:30:016609
Sven Zhengef0d0872022-04-04 22:13:296610 def test_empty_identifier(self):
6611 """
6612 Variant identifier is empty.
6613 """
6614 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6615 MATRIX_COMPOUND_EMPTY_IDENTIFIER, LUCI_MILO_CFG)
6616 with self.assertRaisesRegex(
6617 generate_buildbot_json.BBGenErr,
6618 'Identifier field can not be "" in matrix compound suite*'):
6619 fbb.check_output_file_consistency(verbose=True)
6620
6621 def test_trailing_identifier(self):
6622 """
6623 Variant identifier has trailing whitespace.
6624 """
6625 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6626 MATRIX_COMPOUND_TRAILING_IDENTIFIER, LUCI_MILO_CFG)
6627 with self.assertRaisesRegex(
6628 generate_buildbot_json.BBGenErr,
6629 'Identifier field can not have leading and trailing whitespace in'
6630 ' matrix compound suite*'):
6631 fbb.check_output_file_consistency(verbose=True)
6632
Jeff Yoon8154e582019-12-03 23:30:016633 def test_mismatched_swarming_length(self):
6634 """
6635 Swarming dimension set length mismatch test. Composition set > basic set
6636 """
Garrett Beaty1afaccc2020-06-25 19:58:156637 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6638 MATRIX_MISMATCHED_SWARMING_LENGTH, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236639 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6640 'Error merging lists by key *'):
Jeff Yoon8154e582019-12-03 23:30:016641 fbb.check_output_file_consistency(verbose=True)
6642
Jeff Yoon8154e582019-12-03 23:30:016643 def test_noexistent_ref(self):
6644 """
6645 Test referencing a non-existent basic test suite
6646 """
Garrett Beaty1afaccc2020-06-25 19:58:156647 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6648 MATRIX_REF_NONEXISTENT, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236649 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6650 'Unable to find reference to *'):
Jeff Yoon8154e582019-12-03 23:30:016651 fbb.check_output_file_consistency(verbose=True)
6652
6653 def test_ref_to_composition(self):
6654 """
6655 Test referencing another composition test suite
6656 """
Garrett Beaty1afaccc2020-06-25 19:58:156657 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6658 MATRIX_COMPOUND_REF_COMPOSITION, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236659 with self.assertRaisesRegex(
6660 generate_buildbot_json.BBGenErr,
6661 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016662 fbb.check_output_file_consistency(verbose=True)
6663
6664 def test_ref_to_matrix(self):
6665 """
6666 Test referencing another matrix test suite
6667 """
Garrett Beaty1afaccc2020-06-25 19:58:156668 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6669 MATRIX_COMPOSITION_REF_MATRIX, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236670 with self.assertRaisesRegex(
6671 generate_buildbot_json.BBGenErr,
6672 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016673 fbb.check_output_file_consistency(verbose=True)
6674
Jeff Yoon67c3e832020-02-08 07:39:386675 def test_conflicting_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:156676 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6677 MATRIX_COMPOUND_CONFLICTING_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236678 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6679 'Conflicting test definitions.*'):
Jeff Yoon67c3e832020-02-08 07:39:386680 fbb.check_input_file_consistency(verbose=True)
6681 self.assertFalse(fbb.printed_lines)
6682
6683 def test_variants_swarming_dict_merge_args(self):
6684 """
6685 Test targets with swarming dictionary defined by both basic and matrix
6686 """
Garrett Beaty1afaccc2020-06-25 19:58:156687 fbb = FakeBBGen(self.args,
6688 MATRIX_GTEST_SUITE_WATERFALL,
6689 MATRIX_COMPOUND_TARGETS_ARGS,
6690 LUCI_MILO_CFG,
6691 mixins=SWARMING_MIXINS)
6692 self.create_testing_buildbot_json_file(
6693 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
6694 self.create_testing_buildbot_json_file(
6695 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
Jeff Yoon67c3e832020-02-08 07:39:386696 fbb.check_output_file_consistency(verbose=True)
6697 self.assertFalse(fbb.printed_lines)
6698
6699 def test_variants_swarming_dict_merge_mixins(self):
6700 """
6701 Test targets with swarming dictionary defined by both basic and matrix
6702 """
Garrett Beaty1afaccc2020-06-25 19:58:156703 fbb = FakeBBGen(self.args,
6704 MATRIX_GTEST_SUITE_WATERFALL,
6705 MATRIX_COMPOUND_TARGETS_MIXINS,
6706 LUCI_MILO_CFG,
6707 mixins=SWARMING_MIXINS)
6708 self.create_testing_buildbot_json_file(
6709 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
6710 self.create_testing_buildbot_json_file(
6711 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
Jeff Yoon67c3e832020-02-08 07:39:386712 fbb.check_output_file_consistency(verbose=True)
6713 self.assertFalse(fbb.printed_lines)
6714
6715 def test_variants_swarming_dict_swarming(self):
6716 """
6717 Test targets with swarming dictionary defined by both basic and matrix
6718 """
Garrett Beaty1afaccc2020-06-25 19:58:156719 fbb = FakeBBGen(self.args,
6720 MATRIX_GTEST_SUITE_WATERFALL,
6721 MATRIX_COMPOUND_TARGETS_SWARMING,
6722 LUCI_MILO_CFG,
6723 mixins=SWARMING_MIXINS)
6724 self.create_testing_buildbot_json_file(
6725 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
6726 self.create_testing_buildbot_json_file(
6727 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
Jeff Yoon67c3e832020-02-08 07:39:386728 fbb.check_output_file_consistency(verbose=True)
6729 self.assertFalse(fbb.printed_lines)
6730
Rakib M. Hasanc9e01c62020-07-27 22:48:126731 def test_variant_test_suite_with_test_key(self):
6732 """
6733 Test targets in matrix compound test suites with variants
6734 """
6735 fbb = FakeBBGen(self.args,
6736 MATRIX_GTEST_SUITE_WATERFALL,
6737 MATRIX_COMPOUND_TEST_WITH_TEST_KEY,
6738 LUCI_MILO_CFG,
6739 variants=VARIANTS_FILE)
6740 self.create_testing_buildbot_json_file(
6741 'chromium.test.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6742 self.create_testing_buildbot_json_file(
6743 'chromium.ci.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6744 fbb.check_output_file_consistency(verbose=True)
6745 self.assertFalse(fbb.printed_lines)
6746
Sven Zhengb51bd0482022-08-26 18:26:256747 def test_variants_with_description(self):
6748 """Test variants with description field"""
6749 fbb = FakeBBGen(self.args,
6750 MATRIX_GTEST_SUITE_WATERFALL,
6751 MATRIX_COMPOUND_VARIANTS_REF,
6752 LUCI_MILO_CFG,
6753 variants=VARIANTS_FILE_WITH_DESCRIPTION)
6754 self.create_testing_buildbot_json_file(
6755 'chromium.test.json',
6756 MATRIX_COMPOUND_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT)
6757 self.create_testing_buildbot_json_file(
6758 'chromium.ci.json',
6759 MATRIX_COMPOUND_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT)
6760 fbb.check_output_file_consistency(verbose=True)
6761 self.assertFalse(fbb.printed_lines)
6762
6763 def test_both_test_suite_and_variants_with_description(self):
6764 """Test both test suite and variants with description field"""
6765 fbb = FakeBBGen(self.args,
6766 MATRIX_GTEST_SUITE_WATERFALL,
6767 MATRIX_COMPOUND_VARIANTS_REF_WITH_DESCRIPTION,
6768 LUCI_MILO_CFG,
6769 variants=VARIANTS_FILE_WITH_DESCRIPTION)
6770 self.create_testing_buildbot_json_file(
6771 'chromium.test.json',
6772 MATRIX_COMPOUND_WITH_DECRIPTION_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT)
6773 self.create_testing_buildbot_json_file(
6774 'chromium.ci.json',
6775 MATRIX_COMPOUND_WITH_DECRIPTION_VARIANTS_REF_WITH_DESCRIPTION_OUTPUT)
6776 fbb.check_output_file_consistency(verbose=True)
6777 self.assertFalse(fbb.printed_lines)
6778
Jeff Yoonda581c32020-03-06 03:56:056779 def test_variants_pyl_ref(self):
6780 """Test targets with variants string ref"""
Garrett Beaty1afaccc2020-06-25 19:58:156781 fbb = FakeBBGen(self.args,
6782 MATRIX_GTEST_SUITE_WATERFALL,
6783 MATRIX_COMPOUND_VARIANTS_REF,
6784 LUCI_MILO_CFG,
6785 variants=VARIANTS_FILE)
6786 self.create_testing_buildbot_json_file('chromium.test.json',
6787 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
6788 self.create_testing_buildbot_json_file('chromium.ci.json',
6789 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jeff Yoonda581c32020-03-06 03:56:056790 fbb.check_output_file_consistency(verbose=True)
6791 self.assertFalse(fbb.printed_lines)
6792
6793 def test_variants_pyl_no_ref(self):
6794 """Test targets with variants string ref, not defined in variants.pyl"""
Garrett Beaty1afaccc2020-06-25 19:58:156795 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6796 MATRIX_COMPOUND_VARIANTS_REF, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236797 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6798 'Missing variant definition for *'):
Jeff Yoonda581c32020-03-06 03:56:056799 fbb.check_output_file_consistency(verbose=True)
6800
6801 def test_variants_pyl_all_unreferenced(self):
6802 """Test targets with variants in variants.pyl, unreferenced in tests"""
Garrett Beaty1afaccc2020-06-25 19:58:156803 fbb = FakeBBGen(self.args,
6804 MATRIX_GTEST_SUITE_WATERFALL,
6805 MATRIX_COMPOUND_MIXED_VARIANTS_REF,
6806 LUCI_MILO_CFG,
6807 variants=MULTI_VARIANTS_FILE)
6808 # self.create_testing_buildbot_json_file(
6809 # 'chromium.test.json', MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jamie Madillcf4f8c72021-05-20 19:24:236810 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6811 'The following variants were unreferenced *'):
Jeff Yoonda581c32020-03-06 03:56:056812 fbb.check_input_file_consistency(verbose=True)
6813
Xinan Lin05fb9c1752020-12-17 00:15:526814 def test_good_skylab_matrix_with_variants(self):
6815 fbb = FakeBBGen(self.args,
6816 MATRIX_SKYLAB_WATERFALL,
6817 MATRIX_COMPOUND_SKYLAB_REF,
6818 LUCI_MILO_CFG,
6819 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6820 self.create_testing_buildbot_json_file('chromium.test.json',
6821 VARIATION_SKYLAB_OUTPUT)
6822 fbb.check_input_file_consistency(verbose=True)
6823 fbb.check_output_file_consistency(verbose=True)
6824 self.assertFalse(fbb.printed_lines)
6825
Jieting Yangef6b1042021-11-30 21:33:486826 def test_enabled_and_disabled_skylab_matrix_with_variants(self):
6827 """Test with disabled variants"""
6828 fbb = FakeBBGen(self.args,
6829 MATRIX_SKYLAB_WATERFALL,
6830 ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF,
6831 LUCI_MILO_CFG,
6832 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6833 # some skylab test variant is disabled; the corresponding skylab tests
6834 # is not generated.
6835 self.create_testing_buildbot_json_file(
6836 'chromium.test.json', ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT)
6837 fbb.check_input_file_consistency(verbose=True)
6838 fbb.check_output_file_consistency(verbose=True)
6839 self.assertFalse(fbb.printed_lines)
6840
Jeff Yoon8154e582019-12-03 23:30:016841
Dirk Pranke772f55f2021-04-28 04:51:166842MAC_TEST_SUITE = """\
6843{
6844 'basic_suites': {
6845 'foo_tests': {
6846 'foo_test': {
6847 },
6848 },
6849 },
6850}
6851"""
6852
6853MAC_GTESTS_WATERFALL = """\
6854[
6855 {
6856 'project': 'chromium',
6857 'bucket': 'ci',
6858 'name': 'chromium.test',
6859 'machines': {
6860 'Mac': {
6861 'swarming': {
6862 'can_use_on_swarming_builders': True,
6863 },
6864 'test_suites': {
6865 'gtest_tests': 'foo_tests',
6866 },
6867 },
6868 },
6869 },
6870]
6871"""
6872
6873MAC_GTEST_WATERFALL_OUTPUT = """\
6874{
6875 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6876 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6877 "Mac": {
6878 "gtest_tests": [
6879 {
6880 "merge": {
6881 "args": [],
6882 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6883 },
6884 "swarming": {
6885 "can_use_on_swarming_builders": true
6886 },
6887 "test": "foo_test"
6888 }
6889 ]
6890 }
6891}
6892"""
6893
6894MAC_ISOLATED_SCRIPTS_WATERFALL = """\
6895[
6896 {
6897 'project': 'chromium',
6898 'bucket': 'ci',
6899 'name': 'chromium.test',
6900 'machines': {
6901 'Mac': {
6902 'swarming': {
6903 'dimension_sets': [
6904 {
6905 'os': 'Mac',
6906 },
6907 ],
6908 },
6909 'test_suites': {
6910 'isolated_scripts': 'foo_tests',
6911 },
6912 },
6913 },
6914 },
6915]
6916"""
6917
6918MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT = """\
6919{
6920 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6921 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6922 "Mac": {
6923 "isolated_scripts": [
6924 {
6925 "isolate_name": "foo_test",
6926 "merge": {
6927 "args": [],
6928 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
6929 },
6930 "name": "foo_test",
6931 "swarming": {
6932 "can_use_on_swarming_builders": true,
6933 "dimension_sets": [
6934 {
6935 "os": "Mac"
6936 }
6937 ]
6938 }
6939 }
6940 ]
6941 }
6942}
6943"""
6944
6945MAC_LUCI_MILO_CFG = """\
6946consoles {
6947 builders {
6948 name: "buildbucket/luci.chromium.ci/Mac"
6949 }
6950}
6951"""
6952
6953
6954class SwarmingTests(TestCase):
6955 def test_mac_builder_with_no_cpu_dimension_in_gtest_fails(self):
6956 fbb = FakeBBGen(self.args, MAC_GTESTS_WATERFALL, MAC_TEST_SUITE,
6957 MAC_LUCI_MILO_CFG)
6958 self.create_testing_buildbot_json_file('chromium.test.json',
6959 MAC_GTEST_WATERFALL_OUTPUT)
6960 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236961 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6962 'os and cpu',
6963 fbb.check_output_file_consistency,
6964 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166965 self.assertFalse(fbb.printed_lines)
6966
6967 def test_mac_builder_with_no_cpu_dimension_in_isolated_script_fails(self):
6968 fbb = FakeBBGen(self.args, MAC_ISOLATED_SCRIPTS_WATERFALL, MAC_TEST_SUITE,
6969 MAC_LUCI_MILO_CFG)
6970 self.create_testing_buildbot_json_file(
6971 'chromium.test.json', MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT)
6972 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236973 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6974 'os and cpu',
6975 fbb.check_output_file_consistency,
6976 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166977 self.assertFalse(fbb.printed_lines)
6978
6979
Kenneth Russelleb60cbd22017-12-05 07:54:286980if __name__ == '__main__':
6981 unittest.main()