blob: 155befccb52481a4eb0f922d82a042237dcc615d [file] [log] [blame]
Jamie Madillcf4f8c72021-05-20 19:24:231#!/usr/bin/env vpython3
Kenneth Russelleb60cbd22017-12-05 07:54:282# Copyright 2017 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Tests for generate_buildbot_json.py."""
7
Zhiling Huangbe008172018-03-08 19:13:118import argparse
Garrett Beaty777c2912020-05-07 00:54:339import contextlib
10import json
Zhiling Huangbe008172018-03-08 19:13:1111import os
Kenneth Russelleb60cbd22017-12-05 07:54:2812import unittest
Garrett Beaty777c2912020-05-07 00:54:3313
Kenneth Russelleb60cbd22017-12-05 07:54:2814import generate_buildbot_json
Garrett Beaty1afaccc2020-06-25 19:58:1515from pyfakefs import fake_filesystem_unittest
Kenneth Russelleb60cbd22017-12-05 07:54:2816
Nodir Turakulovfce34292019-12-18 17:05:4117EMPTY_PYL_FILE = """\
18{
19}
20"""
21
Garrett Beaty1afaccc2020-06-25 19:58:1522# Use this value to refer to the directory containing this code
23# The tests use a fake filesystem and python filesystem calls are monkey-patched
24# to use the fake filesystem, which affects abspath
25THIS_DIR = os.path.dirname(os.path.abspath(__file__))
26
27
28class TestCase(fake_filesystem_unittest.TestCase):
29 def setUp(self):
30 self.setUpPyfakefs()
31 self.fs.cwd = THIS_DIR
32 self.args = generate_buildbot_json.BBJSONGenerator.parse_args([])
33
34 def override_args(self, **kwargs):
Jamie Madillcf4f8c72021-05-20 19:24:2335 for k, v in kwargs.items():
Garrett Beaty1afaccc2020-06-25 19:58:1536 setattr(self.args, k, v)
37
38 def create_testing_buildbot_json_file(self, path, contents):
39 return self.fs.create_file(os.path.join(THIS_DIR, path), contents=contents)
40
Kenneth Russelleb60cbd22017-12-05 07:54:2841
Garrett Beaty777c2912020-05-07 00:54:3342@contextlib.contextmanager
43def dump_on_failure(fbb, dump=True):
44 try:
45 yield
46 except:
47 if dump:
48 for l in fbb.printed_lines:
Jamie Madillcf4f8c72021-05-20 19:24:2349 print(l)
Garrett Beaty777c2912020-05-07 00:54:3350 raise
51
Kenneth Russelleb60cbd22017-12-05 07:54:2852class FakeBBGen(generate_buildbot_json.BBJSONGenerator):
Garrett Beaty1afaccc2020-06-25 19:58:1553 def __init__(self,
54 args,
55 waterfalls,
56 test_suites,
57 luci_milo_cfg,
Garrett Beaty4f3e9212020-06-25 20:21:4958 project_pyl='{"validate_source_side_specs_have_builder": True}',
Nodir Turakulovfce34292019-12-18 17:05:4159 exceptions=EMPTY_PYL_FILE,
60 mixins=EMPTY_PYL_FILE,
Jeff Yoonda581c32020-03-06 03:56:0561 gn_isolate_map=EMPTY_PYL_FILE,
62 variants=EMPTY_PYL_FILE):
Garrett Beaty1afaccc2020-06-25 19:58:1563 super(FakeBBGen, self).__init__(args)
64
65 pyl_files_dir = args.pyl_files_dir or THIS_DIR
66 infra_config_dir = args.infra_config_dir
67
68 files = {
69 (pyl_files_dir, 'waterfalls.pyl'): waterfalls,
70 (pyl_files_dir, 'test_suites.pyl'): test_suites,
71 (pyl_files_dir, 'test_suite_exceptions.pyl'): exceptions,
72 (pyl_files_dir, 'mixins.pyl'): mixins,
73 (pyl_files_dir, 'gn_isolate_map.pyl'): gn_isolate_map,
Chong Guee622242020-10-28 18:17:3574 (pyl_files_dir, 'gn_isolate_map2.pyl'): GPU_TELEMETRY_GN_ISOLATE_MAP,
Garrett Beaty1afaccc2020-06-25 19:58:1575 (pyl_files_dir, 'variants.pyl'): variants,
Garrett Beaty4f3e9212020-06-25 20:21:4976 (infra_config_dir, 'generated/project.pyl'): project_pyl,
Garrett Beatyff6e98d2021-09-02 17:00:1677 (infra_config_dir, 'generated/luci/luci-milo.cfg'): luci_milo_cfg,
78 (infra_config_dir, 'generated/luci/luci-milo-dev.cfg'): '',
Kenneth Russelleb60cbd22017-12-05 07:54:2879 }
Jamie Madillcf4f8c72021-05-20 19:24:2380 for (d, filename), content in files.items():
Garrett Beaty4f3e9212020-06-25 20:21:4981 if content is None:
82 continue
Garrett Beaty1afaccc2020-06-25 19:58:1583 path = os.path.join(d, filename)
84 parent = os.path.abspath(os.path.dirname(path))
85 if not os.path.exists(parent):
86 os.makedirs(parent)
87 with open(path, 'w') as f:
88 f.write(content)
89
Stephen Martinis7eb8b612018-09-21 00:17:5090 self.printed_lines = []
91
92 def print_line(self, line):
93 self.printed_lines.append(line)
Kenneth Russelleb60cbd22017-12-05 07:54:2894
Kenneth Russell73c3bd8b2018-10-19 22:30:1995 # pragma pylint: disable=arguments-differ
96 def check_output_file_consistency(self, verbose=False, dump=True):
Garrett Beaty777c2912020-05-07 00:54:3397 with dump_on_failure(self, dump=verbose and dump):
Kenneth Russell73c3bd8b2018-10-19 22:30:1998 super(FakeBBGen, self).check_output_file_consistency(verbose)
Kenneth Russell73c3bd8b2018-10-19 22:30:1999# pragma pylint: enable=arguments-differ
100
Kenneth Russelleb60cbd22017-12-05 07:54:28101
102FOO_GTESTS_WATERFALL = """\
103[
104 {
Greg Gutermanf60eb052020-03-12 17:40:01105 'project': 'chromium',
106 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28107 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43108 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28109 'Fake Tester': {
110 'swarming': {
111 'dimension_sets': [
112 {
113 'kvm': '1',
114 },
115 ],
116 },
117 'test_suites': {
118 'gtest_tests': 'foo_tests',
119 },
120 },
121 },
122 },
123]
124"""
125
Kenneth Russell650995a2018-05-03 21:17:01126FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL = """\
127[
128 {
Greg Gutermanf60eb052020-03-12 17:40:01129 'project': 'chromium',
130 'bucket': 'ci',
Kenneth Russell650995a2018-05-03 21:17:01131 'name': 'chromium.test',
132 'machines': {
133 'Fake Tester': {
134 'test_suites': {
135 'gtest_tests': 'foo_tests',
136 },
137 'args': [
138 '--enable-features=Baz',
139 ],
140 },
141 },
142 },
143]
144"""
145
Ben Pastenea9e583b2019-01-16 02:57:26146FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL = """\
147[
148 {
Greg Gutermanf60eb052020-03-12 17:40:01149 'project': 'chromium',
150 'bucket': 'ci',
Ben Pastenea9e583b2019-01-16 02:57:26151 'name': 'chromium.test',
152 'machines': {
153 'Fake Tester': {
154 'swarming': {
155 'dimension_sets': [
156 {
157 "device_type": "foo_device",
158 },
159 ],
160 },
161 'test_suites': {
162 'gtest_tests': 'foo_tests',
163 },
164 'os_type': 'chromeos',
165 },
166 },
167 },
168]
169"""
Stephen Martinisf83893722018-09-19 00:02:18170
Kenneth Russell8a386d42018-06-02 09:48:01171FOO_LINUX_GTESTS_WATERFALL = """\
172[
173 {
Greg Gutermanf60eb052020-03-12 17:40:01174 'project': 'chromium',
175 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01176 'name': 'chromium.test',
177 'machines': {
178 'Fake Tester': {
179 'os_type': 'linux',
180 'test_suites': {
181 'gtest_tests': 'foo_tests',
182 },
183 },
184 },
185 },
186]
187"""
188
Kenneth Russelleb60cbd22017-12-05 07:54:28189COMPOSITION_GTEST_SUITE_WATERFALL = """\
190[
191 {
Greg Gutermanf60eb052020-03-12 17:40:01192 'project': 'chromium',
193 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28194 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43195 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28196 'Fake Tester': {
197 'test_suites': {
198 'gtest_tests': 'composition_tests',
199 },
200 },
201 },
202 },
203]
204"""
205
John Budorickedfe7f872018-01-23 15:27:22206COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL = """\
207[
208 {
Greg Gutermanf60eb052020-03-12 17:40:01209 'project': 'chromium',
210 'bucket': 'ci',
John Budorickedfe7f872018-01-23 15:27:22211 'name': 'chromium.test',
212 'machines': {
213 'Fake Tester': {
214 'test_suites': {
215 'gtest_tests': 'composition_tests',
216 },
217 'args': [
218 '--this-is-an-argument',
219 ],
220 },
221 },
222 },
223]
224"""
225
Kenneth Russelleb60cbd22017-12-05 07:54:28226FOO_ISOLATED_SCRIPTS_WATERFALL = """\
227[
228 {
Greg Gutermanf60eb052020-03-12 17:40:01229 'project': 'chromium',
230 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28231 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43232 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28233 'Fake Tester': {
234 'test_suites': {
235 'isolated_scripts': 'composition_tests',
236 },
237 },
238 },
239 },
240]
241"""
242
Dirk Pranke0e879b22020-07-16 23:53:56243FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID = """\
244[
245 {
246 'project': 'chromium',
247 'bucket': 'ci',
248 'name': 'chromium.test',
249 'machines': {
250 'Fake Tester': {
Yuly Novikov26dd47052021-02-11 00:57:14251 'os_type': 'android',
Dirk Pranke0e879b22020-07-16 23:53:56252 'test_suites': {
253 'isolated_scripts': 'composition_tests',
254 },
255 'use_android_presentation': True,
256 },
257 },
258 },
259]
260"""
261
Kenneth Russelleb60cbd22017-12-05 07:54:28262FOO_SCRIPT_WATERFALL = """\
263[
264 {
Greg Gutermanf60eb052020-03-12 17:40:01265 'project': 'chromium',
266 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28267 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43268 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28269 'Fake Tester': {
270 'test_suites': {
271 'scripts': 'foo_scripts',
272 },
273 },
274 },
275 },
276]
277"""
278
Brian Sheedy158cd0f2019-04-26 01:12:44279FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS = """\
280[
281 {
Greg Gutermanf60eb052020-03-12 17:40:01282 'project': 'chromium',
283 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44284 'name': 'chromium.test',
285 'machines': {
286 'Fake Tester': {
287 'forbid_script_tests': True,
288 'test_suites': {
289 'scripts': 'foo_scripts',
290 },
291 },
292 },
293 },
294]
295"""
296
297FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS = """\
298[
299 {
Greg Gutermanf60eb052020-03-12 17:40:01300 'project': 'chromium',
301 'bucket': 'ci',
Brian Sheedy158cd0f2019-04-26 01:12:44302 'name': 'chromium.test',
303 'forbid_script_tests': True,
304 'machines': {
305 'Fake Tester': {
306 'test_suites': {
307 'scripts': 'foo_scripts',
308 },
309 },
310 },
311 },
312]
313"""
314
Kenneth Russelleb60cbd22017-12-05 07:54:28315FOO_JUNIT_WATERFALL = """\
316[
317 {
Greg Gutermanf60eb052020-03-12 17:40:01318 'project': 'chromium',
319 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28320 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43321 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28322 'Fake Tester': {
323 'test_suites': {
324 'junit_tests': 'composition_tests',
325 },
326 },
327 },
328 },
329]
330"""
331
Kenneth Russell8a386d42018-06-02 09:48:01332FOO_GPU_TELEMETRY_TEST_WATERFALL = """\
333[
334 {
Greg Gutermanf60eb052020-03-12 17:40:01335 'project': 'chromium',
336 'bucket': 'ci',
Kenneth Russell8a386d42018-06-02 09:48:01337 'name': 'chromium.test',
338 'machines': {
339 'Fake Tester': {
340 'os_type': 'win',
341 'browser_config': 'release',
342 'swarming': {
343 'dimension_sets': [
344 {
345 'gpu': '10de:1cb3',
346 },
347 ],
348 },
349 'test_suites': {
350 'gpu_telemetry_tests': 'composition_tests',
351 },
352 },
353 },
354 },
355]
356"""
357
Brian Sheedyf74819b2021-06-04 01:38:38358FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID = """\
359[
360 {
361 'project': 'chromium',
362 'bucket': 'ci',
363 'name': 'chromium.test',
364 'machines': {
365 'Fake Tester': {
366 'os_type': 'android',
367 'browser_config': 'android-chromium',
368 'swarming': {
369 'dimension_sets': [
370 {
371 'device_type': 'bullhead',
372 },
373 ],
374 },
375 'test_suites': {
376 'gpu_telemetry_tests': 'composition_tests',
377 },
378 },
379 },
380 },
381]
382"""
383
384FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID_WEBVIEW = """\
385[
386 {
387 'project': 'chromium',
388 'bucket': 'ci',
389 'name': 'chromium.test',
390 'machines': {
391 'Fake Tester': {
392 'os_type': 'android',
393 'browser_config': 'not-a-real-browser',
394 'swarming': {
395 'dimension_sets': [
396 {
397 'device_type': 'bullhead',
398 },
399 ],
400 },
401 'test_suites': {
402 'android_webview_gpu_telemetry_tests': 'composition_tests',
403 },
404 },
405 },
406 },
407]
408"""
409
Chong Guc2ca5d02022-01-11 19:52:17410FOO_GPU_TELEMETRY_TEST_WATERFALL_FUCHSIA = """\
411[
412 {
413 'project': 'chromium',
414 'bucket': 'ci',
415 'name': 'chromium.test',
416 'machines': {
417 'Fake Tester': {
418 'os_type': 'fuchsia',
419 'browser_config': 'fuchsia-chrome',
420 'swarming': {
421 'dimension_sets': [
422 {
423 'kvm': '1',
424 },
425 ],
426 },
427 'test_suites': {
428 'gpu_telemetry_tests': 'composition_tests',
429 },
430 },
431 },
432 },
433]
434"""
435
Kenneth Russell384a1732019-03-16 02:36:02436NVIDIA_GPU_TELEMETRY_TEST_WATERFALL = """\
437[
438 {
Greg Gutermanf60eb052020-03-12 17:40:01439 'project': 'chromium',
440 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02441 'name': 'chromium.test',
442 'machines': {
443 'Fake Tester': {
444 'os_type': 'win',
445 'browser_config': 'release',
446 'swarming': {
447 'dimension_sets': [
448 {
Brian Sheedy0e26c4e02020-05-28 22:09:09449 'gpu': '10de:1cb3-26.21.14.3102',
Kenneth Russell384a1732019-03-16 02:36:02450 },
451 ],
452 },
453 'test_suites': {
454 'gpu_telemetry_tests': 'composition_tests',
455 },
456 },
457 },
458 },
459]
460"""
461
462INTEL_GPU_TELEMETRY_TEST_WATERFALL = """\
463[
464 {
Greg Gutermanf60eb052020-03-12 17:40:01465 'project': 'chromium',
466 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02467 'name': 'chromium.test',
468 'machines': {
469 'Fake Tester': {
470 'os_type': 'win',
471 'browser_config': 'release',
472 'swarming': {
473 'dimension_sets': [
474 {
Brian Sheedy0e26c4e02020-05-28 22:09:09475 'gpu': '8086:5912-24.20.100.6286',
Kenneth Russell384a1732019-03-16 02:36:02476 },
477 ],
478 },
479 'test_suites': {
480 'gpu_telemetry_tests': 'composition_tests',
481 },
482 },
483 },
484 },
485]
486"""
487
Brian Sheedyf9387db7b2019-08-05 19:26:10488INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL = """\
489[
490 {
Greg Gutermanf60eb052020-03-12 17:40:01491 'project': 'chromium',
492 'bucket': 'ci',
Brian Sheedyf9387db7b2019-08-05 19:26:10493 'name': 'chromium.test',
494 'machines': {
495 'Fake Tester': {
496 'os_type': 'win',
497 'browser_config': 'release',
498 'swarming': {
499 'dimension_sets': [
500 {
Brian Sheedy0e26c4e02020-05-28 22:09:09501 'gpu': '8086:3e92-24.20.100.6286',
Brian Sheedyf9387db7b2019-08-05 19:26:10502 },
503 ],
504 },
505 'test_suites': {
506 'gpu_telemetry_tests': 'composition_tests',
507 },
508 },
509 },
510 },
511]
512"""
513
Kenneth Russelleb60cbd22017-12-05 07:54:28514UNKNOWN_TEST_SUITE_WATERFALL = """\
515[
516 {
Greg Gutermanf60eb052020-03-12 17:40:01517 'project': 'chromium',
518 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28519 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43520 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28521 'Fake Tester': {
522 'test_suites': {
523 'gtest_tests': 'baz_tests',
524 },
525 },
526 },
527 },
528]
529"""
530
531UNKNOWN_TEST_SUITE_TYPE_WATERFALL = """\
532[
533 {
Greg Gutermanf60eb052020-03-12 17:40:01534 'project': 'chromium',
535 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28536 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43537 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28538 'Fake Tester': {
539 'test_suites': {
540 'gtest_tests': 'foo_tests',
541 'foo_test_type': 'foo_tests',
542 },
543 },
544 },
545 },
546]
547"""
548
549ANDROID_WATERFALL = """\
550[
551 {
Greg Gutermanf60eb052020-03-12 17:40:01552 'project': 'chromium',
553 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28554 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43555 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28556 'Android Builder': {
557 'additional_compile_targets': [
558 'bar_test',
559 ],
560 },
Kenneth Russelleb60cbd22017-12-05 07:54:28561 'Fake Android K Tester': {
562 'additional_compile_targets': [
563 'bar_test',
564 ],
565 'swarming': {
566 'dimension_sets': [
567 {
568 'device_os': 'KTU84P',
569 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22570 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28571 },
572 ],
573 },
574 'os_type': 'android',
Nico Weber79dc5f6852018-07-13 19:38:49575 'skip_merge_script': True,
Kenneth Russelleb60cbd22017-12-05 07:54:28576 'test_suites': {
577 'gtest_tests': 'foo_tests',
578 },
579 },
580 'Fake Android L Tester': {
581 'swarming': {
582 'dimension_sets': [
583 {
Ben Pastenee012aea42019-05-14 22:32:28584 'device_os': 'LMY41U',
585 'device_os_type': 'user',
Kenneth Russelleb60cbd22017-12-05 07:54:28586 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22587 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28588 },
589 ],
590 },
591 'os_type': 'android',
592 'skip_merge_script': True,
593 'skip_output_links': True,
594 'test_suites': {
595 'gtest_tests': 'foo_tests',
596 },
597 },
598 'Fake Android M Tester': {
599 'swarming': {
600 'dimension_sets': [
601 {
602 'device_os': 'MMB29Q',
603 'device_type': 'bullhead',
Ben Pastened15aa8a2019-05-16 16:59:22604 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28605 },
606 ],
607 },
608 'os_type': 'android',
609 'use_swarming': False,
610 'test_suites': {
611 'gtest_tests': 'foo_tests',
612 },
613 },
614 },
615 },
616]
617"""
618
Nico Weberd18b8962018-05-16 19:39:38619UNKNOWN_BOT_GTESTS_WATERFALL = """\
620[
621 {
Greg Gutermanf60eb052020-03-12 17:40:01622 'project': 'chromium',
623 'bucket': 'ci',
Nico Weberd18b8962018-05-16 19:39:38624 'name': 'chromium.test',
625 'machines': {
626 'Unknown Bot': {
627 'test_suites': {
628 'gtest_tests': 'foo_tests',
629 },
630 },
631 },
632 },
633]
634"""
635
Jeff Yoon8154e582019-12-03 23:30:01636MATRIX_GTEST_SUITE_WATERFALL = """\
637[
638 {
Greg Gutermanf60eb052020-03-12 17:40:01639 'project': 'chromium',
640 'bucket': 'ci',
Jeff Yoon8154e582019-12-03 23:30:01641 'name': 'chromium.test',
642 'machines': {
643 'Fake Tester': {
644 'test_suites': {
645 'gtest_tests': 'matrix_tests',
646 },
647 },
648 },
649 },
650]
651"""
652
Jeff Yoon67c3e832020-02-08 07:39:38653MATRIX_GTEST_SUITE_WATERFALL_MIXINS = """\
654[
655 {
Greg Gutermanf60eb052020-03-12 17:40:01656 'project': 'chromium',
657 'bucket': 'ci',
Jeff Yoon67c3e832020-02-08 07:39:38658 'name': 'chromium.test',
659 'machines': {
660 'Fake Tester': {
661 'mixins': ['dimension_mixin'],
662 'test_suites': {
663 'gtest_tests': 'matrix_tests',
664 },
665 },
666 },
667 },
668]
669"""
670
Kenneth Russelleb60cbd22017-12-05 07:54:28671FOO_TEST_SUITE = """\
672{
Stephen Martinis54d64ad2018-09-21 22:16:20673 'basic_suites': {
674 'foo_tests': {
675 'foo_test': {
676 'swarming': {
677 'dimension_sets': [
678 {
679 'integrity': 'high',
680 }
681 ],
682 'expiration': 120,
683 },
Kenneth Russelleb60cbd22017-12-05 07:54:28684 },
685 },
686 },
687}
688"""
689
Brian Sheedycae63b22020-06-10 22:52:11690FOO_TEST_SUITE_NO_DIMENSIONS = """\
691{
692 'basic_suites': {
693 'foo_tests': {
694 'foo_test': {
695 },
696 },
697 },
698}
699"""
700
Stephen Martinis5bef0fc2020-01-06 22:47:53701FOO_TEST_SUITE_NOT_SORTED = """\
702{
703 'basic_suites': {
704 'foo_tests': {
705 'foo_test': {},
706 'a_test': {},
707 },
708 },
709}
710"""
711
Kenneth Russell8ceeabf2017-12-11 17:53:28712FOO_TEST_SUITE_WITH_ARGS = """\
713{
Stephen Martinis54d64ad2018-09-21 22:16:20714 'basic_suites': {
715 'foo_tests': {
716 'foo_test': {
717 'args': [
718 '--c_arg',
719 ],
720 },
Kenneth Russell8ceeabf2017-12-11 17:53:28721 },
722 },
723}
724"""
725
Zhaoyang Li473dd0ae2021-05-10 18:28:28726FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES = """\
727{
728 'basic_suites': {
729 'foo_tests': {
730 'foo_test': {
731 'swarming': {
732 'named_caches': [
733 {
734 'name': 'cache_in_test',
735 'file': 'cache_in_test_file',
736 },
737 ],
738 },
739 },
740 },
741 },
742}
743"""
744
Kenneth Russell8a386d42018-06-02 09:48:01745FOO_TEST_SUITE_WITH_LINUX_ARGS = """\
746{
Stephen Martinis54d64ad2018-09-21 22:16:20747 'basic_suites': {
748 'foo_tests': {
749 'foo_test': {
750 'linux_args': [
751 '--no-xvfb',
752 ],
753 },
Kenneth Russell8a386d42018-06-02 09:48:01754 },
755 },
756}
757"""
758
Kenneth Russell650995a2018-05-03 21:17:01759FOO_TEST_SUITE_WITH_ENABLE_FEATURES = """\
760{
Stephen Martinis54d64ad2018-09-21 22:16:20761 'basic_suites': {
762 'foo_tests': {
763 'foo_test': {
764 'args': [
765 '--enable-features=Foo,Bar',
766 ],
767 },
Kenneth Russell650995a2018-05-03 21:17:01768 },
769 },
770}
771"""
772
Brian Sheedy7658c982020-01-08 02:27:58773FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN = """\
774{
775 'basic_suites': {
776 'foo_tests': {
777 'foo_test': {
778 'remove_mixins': ['waterfall_mixin'],
779 'swarming': {
780 'dimension_sets': [
781 {
782 'integrity': 'high',
783 }
784 ],
785 'expiration': 120,
786 },
787 },
788 },
789 },
790}
791"""
792
793FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN = """\
794{
795 'basic_suites': {
796 'foo_tests': {
797 'foo_test': {
798 'remove_mixins': ['builder_mixin'],
799 'swarming': {
800 'dimension_sets': [
801 {
802 'integrity': 'high',
803 }
804 ],
805 'expiration': 120,
806 },
807 },
808 },
809 },
810}
811"""
812
Kenneth Russelleb60cbd22017-12-05 07:54:28813FOO_SCRIPT_SUITE = """\
814{
Stephen Martinis54d64ad2018-09-21 22:16:20815 'basic_suites': {
816 'foo_scripts': {
817 'foo_test': {
818 'script': 'foo.py',
819 },
820 'bar_test': {
821 'script': 'bar.py',
822 },
Kenneth Russelleb60cbd22017-12-05 07:54:28823 },
824 },
825}
826"""
827
Kenneth Russelleb60cbd22017-12-05 07:54:28828GOOD_COMPOSITION_TEST_SUITES = """\
829{
Stephen Martinis54d64ad2018-09-21 22:16:20830 'basic_suites': {
831 'bar_tests': {
832 'bar_test': {},
833 },
834 'foo_tests': {
835 'foo_test': {},
836 },
Kenneth Russelleb60cbd22017-12-05 07:54:28837 },
Stephen Martinis54d64ad2018-09-21 22:16:20838 'compound_suites': {
839 'composition_tests': [
840 'foo_tests',
841 'bar_tests',
842 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28843 },
Kenneth Russelleb60cbd22017-12-05 07:54:28844}
845"""
846
847BAD_COMPOSITION_TEST_SUITES = """\
848{
Stephen Martinis54d64ad2018-09-21 22:16:20849 'basic_suites': {
850 'bar_tests': {},
851 'foo_tests': {},
852 },
853 'compound_suites': {
854 'buggy_composition_tests': [
855 'bar_tests',
856 ],
857 'composition_tests': [
858 'foo_tests',
859 'buggy_composition_tests',
860 ],
861 },
862}
863"""
864
Andrew Luo0f1dee02019-09-06 16:50:47865CONFLICTING_COMPOSITION_TEST_SUITES = """\
866{
867 'basic_suites': {
868 'bar_tests': {
869 'baz_tests': {
870 'args': [
871 '--bar',
872 ],
873 }
874 },
875 'foo_tests': {
876 'baz_tests': {
877 'args': [
878 '--foo',
879 ],
880 }
881 },
882 },
883 'compound_suites': {
884 'foobar_tests': [
885 'foo_tests',
886 'bar_tests',
887 ],
888 },
889}
890"""
891
Stephen Martinis54d64ad2018-09-21 22:16:20892DUPLICATES_COMPOSITION_TEST_SUITES = """\
893{
894 'basic_suites': {
895 'bar_tests': {},
Jeff Yoon8154e582019-12-03 23:30:01896 'buggy_composition_tests': {},
Stephen Martinis54d64ad2018-09-21 22:16:20897 'foo_tests': {},
898 },
899 'compound_suites': {
900 'bar_tests': [
901 'foo_tests',
902 ],
903 'composition_tests': [
904 'foo_tests',
905 'buggy_composition_tests',
906 ],
907 },
Kenneth Russelleb60cbd22017-12-05 07:54:28908}
909"""
910
Dirk Pranke1b767092017-12-07 04:44:23911SCRIPT_SUITE = """\
912{
Stephen Martinis54d64ad2018-09-21 22:16:20913 'basic_suites': {
914 'foo_scripts': {
915 'foo_test': {
916 'script': 'foo.py',
917 },
Dirk Pranke1b767092017-12-07 04:44:23918 },
919 },
920}
921"""
922
Kenneth Russelleb60cbd22017-12-05 07:54:28923UNREFED_TEST_SUITE = """\
924{
Stephen Martinis54d64ad2018-09-21 22:16:20925 'basic_suites': {
926 'bar_tests': {},
927 'foo_tests': {},
928 },
Kenneth Russelleb60cbd22017-12-05 07:54:28929}
930"""
931
932REUSING_TEST_WITH_DIFFERENT_NAME = """\
933{
Stephen Martinis54d64ad2018-09-21 22:16:20934 'basic_suites': {
935 'foo_tests': {
936 'foo_test': {},
937 'variation_test': {
938 'args': [
939 '--variation',
940 ],
941 'test': 'foo_test',
942 },
Kenneth Russelleb60cbd22017-12-05 07:54:28943 },
944 },
945}
946"""
947
Kenneth Russell8a386d42018-06-02 09:48:01948COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST = """\
949{
Stephen Martinis54d64ad2018-09-21 22:16:20950 'basic_suites': {
951 'foo_tests': {
952 'foo': {},
953 },
954 'bar_tests': {
955 'bar_test': {},
956 },
Kenneth Russell8a386d42018-06-02 09:48:01957 },
Stephen Martinis54d64ad2018-09-21 22:16:20958 'compound_suites': {
959 'composition_tests': [
960 'foo_tests',
961 'bar_tests',
962 ],
Kenneth Russell8a386d42018-06-02 09:48:01963 },
Kenneth Russell8a386d42018-06-02 09:48:01964}
965"""
966
Kenneth Russell384a1732019-03-16 02:36:02967COMPOSITION_SUITE_WITH_GPU_ARGS = """\
968{
969 'basic_suites': {
970 'foo_tests': {
971 'foo': {
972 'args': [
973 '--gpu-vendor-id',
974 '${gpu_vendor_id}',
975 '--gpu-device-id',
976 '${gpu_device_id}',
977 ],
978 },
979 },
980 'bar_tests': {
981 'bar_test': {},
982 },
983 },
984 'compound_suites': {
985 'composition_tests': [
986 'foo_tests',
987 'bar_tests',
988 ],
989 },
990}
991"""
992
Brian Sheedyd8c0c73d2021-07-05 02:11:30993COMPOSITION_SUITE_WITH_PIXEL_AND_FILTER = """\
994{
995 'basic_suites': {
996 'foo_tests': {
997 'pixel': {
998 'args': [
999 '--git-revision=aaaa',
1000 '--test-filter=bar',
1001 ],
1002 },
1003 },
1004 'bar_tests': {
1005 'bar_test': {},
1006 },
1007 },
1008 'compound_suites': {
1009 'composition_tests': [
1010 'foo_tests',
1011 'bar_tests',
1012 ],
1013 },
1014}
1015"""
1016
Jamie Madilla8be0d72020-10-02 05:24:041017GTEST_AS_ISOLATED_SCRIPT_SUITE = """\
1018{
1019 'basic_suites': {
1020 'foo_tests': {
1021 'foo_test': {
1022 'script': 'foo.py',
1023 'use_isolated_scripts_api': True,
1024 },
1025 },
1026 },
1027}
1028"""
1029
Dirk Pranke1b767092017-12-07 04:44:231030SCRIPT_WITH_ARGS_EXCEPTIONS = """\
1031{
1032 'foo_test': {
1033 'modifications': {
1034 'Fake Tester': {
1035 'args': ['--fake-arg'],
1036 },
1037 },
1038 },
1039}
1040"""
1041
Stephen Martinis0382bc12018-09-17 22:29:071042SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS = """\
1043{
1044 'foo_test': {
1045 'modifications': {
1046 'Fake Tester': {
1047 'swarming': {
1048 'value': 'exception',
1049 },
1050 },
1051 },
1052 },
1053}
1054"""
1055
Kenneth Russelleb60cbd22017-12-05 07:54:281056NO_BAR_TEST_EXCEPTIONS = """\
1057{
1058 'bar_test': {
1059 'remove_from': [
1060 'Fake Tester',
1061 ]
1062 }
1063}
1064"""
1065
1066EMPTY_BAR_TEST_EXCEPTIONS = """\
1067{
1068 'bar_test': {
1069 }
1070}
1071"""
1072
Stephen Martinis54d64ad2018-09-21 22:16:201073EXCEPTIONS_SORTED = """\
1074{
1075 'suite_c': {
1076 'modifications': {
1077 'Fake Tester': {
1078 'foo': 'bar',
1079 },
1080 },
1081 },
1082 'suite_d': {
1083 'modifications': {
1084 'Fake Tester': {
1085 'foo': 'baz',
1086 },
1087 },
1088 },
1089}
1090"""
1091
1092EXCEPTIONS_UNSORTED = """\
1093{
1094 'suite_d': {
1095 'modifications': {
1096 'Fake Tester': {
1097 'foo': 'baz',
1098 },
1099 },
1100 },
1101 'suite_c': {
1102 'modifications': {
1103 'Fake Tester': {
1104 'foo': 'bar',
1105 },
1106 },
1107 },
1108}
1109"""
1110
Stephen Martinis5bef0fc2020-01-06 22:47:531111EXCEPTIONS_PER_TEST_UNSORTED = """\
1112{
1113 'suite_d': {
1114 'modifications': {
1115 'Other Tester': {
1116 'foo': 'baz',
1117 },
1118 'Fake Tester': {
1119 'foo': 'baz',
1120 },
1121 },
1122 },
1123}
1124"""
1125
1126EXCEPTIONS_DUPS_REMOVE_FROM = """\
1127{
1128 'suite_d': {
1129 'remove_from': [
1130 'Fake Tester',
1131 'Fake Tester',
1132 ],
1133 'modifications': {
1134 'Fake Tester': {
1135 'foo': 'baz',
1136 },
1137 },
1138 },
1139}
1140"""
1141
Kenneth Russelleb60cbd22017-12-05 07:54:281142FOO_TEST_MODIFICATIONS = """\
1143{
1144 'foo_test': {
1145 'modifications': {
1146 'Fake Tester': {
1147 'args': [
1148 '--bar',
1149 ],
1150 'swarming': {
1151 'hard_timeout': 600,
1152 },
1153 },
1154 },
1155 }
1156}
1157"""
1158
John Budorick5bc387fe2019-05-09 20:02:531159FOO_TEST_EXPLICIT_NONE_EXCEPTIONS = """\
1160{
1161 'foo_test': {
1162 'modifications': {
1163 'Fake Tester': {
1164 'swarming': {
1165 'dimension_sets': [
1166 {
1167 'integrity': None,
1168 },
1169 ],
1170 },
1171 },
1172 },
1173 },
1174}
1175"""
1176
Kenneth Russelleb60cbd22017-12-05 07:54:281177NONEXISTENT_REMOVAL = """\
1178{
1179 'foo_test': {
1180 'remove_from': [
1181 'Nonexistent Tester',
1182 ]
1183 }
1184}
1185"""
1186
1187NONEXISTENT_MODIFICATION = """\
1188{
1189 'foo_test': {
1190 'modifications': {
1191 'Nonexistent Tester': {
1192 'args': [],
1193 },
1194 },
1195 }
1196}
1197"""
1198
1199COMPOSITION_WATERFALL_OUTPUT = """\
1200{
1201 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1202 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1203 "Fake Tester": {
1204 "gtest_tests": [
1205 {
Stephen Martinisbc7b7772019-05-01 22:01:431206 "merge": {
1207 "args": [],
1208 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1209 },
Kenneth Russelleb60cbd22017-12-05 07:54:281210 "swarming": {
1211 "can_use_on_swarming_builders": true
1212 },
1213 "test": "bar_test"
1214 },
1215 {
Stephen Martinisbc7b7772019-05-01 22:01:431216 "merge": {
1217 "args": [],
1218 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1219 },
Kenneth Russelleb60cbd22017-12-05 07:54:281220 "swarming": {
1221 "can_use_on_swarming_builders": true
1222 },
1223 "test": "foo_test"
1224 }
1225 ]
1226 }
1227}
1228"""
1229
John Budorickedfe7f872018-01-23 15:27:221230COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT = """\
1231{
1232 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1233 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1234 "Fake Tester": {
1235 "gtest_tests": [
1236 {
1237 "args": [
1238 "--this-is-an-argument"
1239 ],
Stephen Martinisbc7b7772019-05-01 22:01:431240 "merge": {
1241 "args": [],
1242 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1243 },
John Budorickedfe7f872018-01-23 15:27:221244 "swarming": {
1245 "can_use_on_swarming_builders": true
1246 },
1247 "test": "bar_test"
1248 },
1249 {
1250 "args": [
1251 "--this-is-an-argument"
1252 ],
Stephen Martinisbc7b7772019-05-01 22:01:431253 "merge": {
1254 "args": [],
1255 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1256 },
John Budorickedfe7f872018-01-23 15:27:221257 "swarming": {
1258 "can_use_on_swarming_builders": true
1259 },
1260 "test": "foo_test"
1261 }
1262 ]
1263 }
1264}
1265"""
1266
Kenneth Russelleb60cbd22017-12-05 07:54:281267VARIATION_GTEST_OUTPUT = """\
1268{
1269 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1270 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1271 "Fake Tester": {
1272 "gtest_tests": [
1273 {
Stephen Martinisbc7b7772019-05-01 22:01:431274 "merge": {
1275 "args": [],
1276 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1277 },
Kenneth Russelleb60cbd22017-12-05 07:54:281278 "swarming": {
1279 "can_use_on_swarming_builders": true,
1280 "dimension_sets": [
1281 {
1282 "kvm": "1"
1283 }
1284 ]
1285 },
Nodir Turakulovfce34292019-12-18 17:05:411286 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111287 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281288 },
1289 {
1290 "args": [
1291 "--variation"
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 "name": "variation_test",
1298 "swarming": {
1299 "can_use_on_swarming_builders": true,
1300 "dimension_sets": [
1301 {
1302 "kvm": "1"
1303 }
1304 ]
1305 },
Nodir Turakulovfce34292019-12-18 17:05:411306 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111307 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281308 }
1309 ]
1310 }
1311}
1312"""
1313
Jamie Madilla8be0d72020-10-02 05:24:041314FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT = """\
1315{
1316 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1317 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1318 "Fake Tester": {
1319 "gtest_tests": [
1320 {
1321 "merge": {
1322 "args": [],
1323 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1324 },
1325 "script": "foo.py",
1326 "swarming": {
1327 "can_use_on_swarming_builders": true,
1328 "dimension_sets": [
1329 {
1330 "kvm": "1"
1331 }
1332 ]
1333 },
1334 "test": "foo_test",
1335 "test_id_prefix": "ninja://chrome/test:foo_test/",
1336 "use_isolated_scripts_api": true
1337 }
1338 ]
1339 }
1340}
1341"""
1342
Kenneth Russelleb60cbd22017-12-05 07:54:281343COMPOSITION_WATERFALL_FILTERED_OUTPUT = """\
1344{
1345 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1346 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1347 "Fake Tester": {
1348 "gtest_tests": [
1349 {
Stephen Martinisbc7b7772019-05-01 22:01:431350 "merge": {
1351 "args": [],
1352 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1353 },
Kenneth Russelleb60cbd22017-12-05 07:54:281354 "swarming": {
1355 "can_use_on_swarming_builders": true
1356 },
1357 "test": "foo_test"
1358 }
1359 ]
1360 }
1361}
1362"""
1363
Kenneth Russell8ceeabf2017-12-11 17:53:281364MERGED_ARGS_OUTPUT = """\
1365{
1366 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1367 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1368 "Fake Tester": {
1369 "gtest_tests": [
1370 {
1371 "args": [
Stephen Martinis3bed2ab2018-04-23 19:42:061372 "--c_arg",
1373 "--bar"
Kenneth Russell8ceeabf2017-12-11 17:53:281374 ],
Stephen Martinisbc7b7772019-05-01 22:01:431375 "merge": {
1376 "args": [],
1377 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1378 },
Kenneth Russell8ceeabf2017-12-11 17:53:281379 "swarming": {
1380 "can_use_on_swarming_builders": true,
1381 "dimension_sets": [
1382 {
1383 "kvm": "1"
1384 }
1385 ],
1386 "hard_timeout": 600
1387 },
1388 "test": "foo_test"
1389 }
1390 ]
1391 }
1392}
1393"""
1394
Kenneth Russell8a386d42018-06-02 09:48:011395LINUX_ARGS_OUTPUT = """\
1396{
1397 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1398 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1399 "Fake Tester": {
1400 "gtest_tests": [
1401 {
1402 "args": [
1403 "--no-xvfb"
1404 ],
Stephen Martinisbc7b7772019-05-01 22:01:431405 "merge": {
1406 "args": [],
1407 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1408 },
Kenneth Russell8a386d42018-06-02 09:48:011409 "swarming": {
1410 "can_use_on_swarming_builders": true
1411 },
1412 "test": "foo_test"
1413 }
1414 ]
1415 }
1416}
1417"""
1418
Kenneth Russell650995a2018-05-03 21:17:011419MERGED_ENABLE_FEATURES_OUTPUT = """\
1420{
1421 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1422 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1423 "Fake Tester": {
1424 "gtest_tests": [
1425 {
1426 "args": [
1427 "--enable-features=Foo,Bar,Baz"
1428 ],
Stephen Martinisbc7b7772019-05-01 22:01:431429 "merge": {
1430 "args": [],
1431 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1432 },
Kenneth Russell650995a2018-05-03 21:17:011433 "swarming": {
1434 "can_use_on_swarming_builders": true
1435 },
1436 "test": "foo_test"
1437 }
1438 ]
1439 }
1440}
1441"""
1442
Kenneth Russelleb60cbd22017-12-05 07:54:281443MODIFIED_OUTPUT = """\
1444{
1445 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1446 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1447 "Fake Tester": {
1448 "gtest_tests": [
1449 {
1450 "args": [
1451 "--bar"
1452 ],
Stephen Martinisbc7b7772019-05-01 22:01:431453 "merge": {
1454 "args": [],
1455 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1456 },
Kenneth Russelleb60cbd22017-12-05 07:54:281457 "swarming": {
1458 "can_use_on_swarming_builders": true,
1459 "dimension_sets": [
1460 {
1461 "integrity": "high",
1462 "kvm": "1"
1463 }
1464 ],
1465 "expiration": 120,
1466 "hard_timeout": 600
1467 },
1468 "test": "foo_test"
1469 }
1470 ]
1471 }
1472}
1473"""
1474
John Budorick5bc387fe2019-05-09 20:02:531475EXPLICIT_NONE_OUTPUT = """\
1476{
1477 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1478 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1479 "Fake Tester": {
1480 "gtest_tests": [
1481 {
1482 "merge": {
1483 "args": [],
1484 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1485 },
1486 "swarming": {
1487 "can_use_on_swarming_builders": true,
1488 "dimension_sets": [
1489 {
1490 "kvm": "1"
1491 }
1492 ],
1493 "expiration": 120
1494 },
1495 "test": "foo_test"
1496 }
1497 ]
1498 }
1499}
1500"""
1501
Kenneth Russelleb60cbd22017-12-05 07:54:281502ISOLATED_SCRIPT_OUTPUT = """\
1503{
1504 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1505 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1506 "Fake Tester": {
1507 "isolated_scripts": [
1508 {
1509 "isolate_name": "foo_test",
Stephen Martinisf50047062019-05-06 22:26:171510 "merge": {
1511 "args": [],
1512 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1513 },
Kenneth Russelleb60cbd22017-12-05 07:54:281514 "name": "foo_test",
1515 "swarming": {
1516 "can_use_on_swarming_builders": true
1517 }
1518 }
1519 ]
1520 }
1521}
1522"""
1523
Dirk Pranke0e879b22020-07-16 23:53:561524ISOLATED_SCRIPT_OUTPUT_ANDROID = """\
1525{
1526 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1527 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1528 "Fake Tester": {
1529 "isolated_scripts": [
1530 {
1531 "args": [
1532 "--gs-results-bucket=chromium-result-details"
1533 ],
1534 "isolate_name": "foo_test",
1535 "merge": {
1536 "args": [
1537 "--bucket",
1538 "chromium-result-details",
1539 "--test-name",
1540 "foo_test"
1541 ],
Yuly Novikov26dd47052021-02-11 00:57:141542 "script": \
1543"//build/android/pylib/results/presentation/test_results_presentation.py"
Dirk Pranke0e879b22020-07-16 23:53:561544 },
1545 "name": "foo_test",
1546 "swarming": {
1547 "can_use_on_swarming_builders": true,
1548 "cipd_packages": [
1549 {
1550 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1551 "location": "bin",
Yuly Novikov26dd47052021-02-11 00:57:141552 "revision": \
1553"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
Dirk Pranke0e879b22020-07-16 23:53:561554 }
1555 ],
1556 "output_links": [
1557 {
1558 "link": [
1559 "https://luci-logdog.appspot.com/v/?s",
1560 "=android%2Fswarming%2Flogcats%2F",
1561 "${TASK_ID}%2F%2B%2Funified_logcats"
1562 ],
1563 "name": "shard #${SHARD_INDEX} logcats"
1564 }
1565 ]
1566 }
1567 }
1568 ]
1569 }
1570}
1571"""
1572
Kenneth Russelleb60cbd22017-12-05 07:54:281573SCRIPT_OUTPUT = """\
1574{
1575 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1576 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1577 "Fake Tester": {
1578 "scripts": [
1579 {
1580 "name": "foo_test",
1581 "script": "foo.py"
1582 }
1583 ]
1584 }
1585}
1586"""
1587
Dirk Pranke1b767092017-12-07 04:44:231588SCRIPT_WITH_ARGS_OUTPUT = """\
1589{
1590 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1591 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1592 "Fake Tester": {
1593 "scripts": [
1594 {
1595 "args": [
1596 "--fake-arg"
1597 ],
1598 "name": "foo_test",
1599 "script": "foo.py"
1600 }
1601 ]
1602 }
1603}
1604"""
1605
Kenneth Russelleb60cbd22017-12-05 07:54:281606JUNIT_OUTPUT = """\
1607{
1608 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1609 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1610 "Fake Tester": {
1611 "junit_tests": [
1612 {
John Budorickcadc4952019-09-16 23:51:371613 "name": "foo_test",
Kenneth Russelleb60cbd22017-12-05 07:54:281614 "test": "foo_test"
1615 }
1616 ]
1617 }
1618}
1619"""
1620
Kenneth Russell8a386d42018-06-02 09:48:011621GPU_TELEMETRY_TEST_OUTPUT = """\
1622{
1623 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1624 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1625 "Fake Tester": {
1626 "isolated_scripts": [
1627 {
1628 "args": [
1629 "foo",
1630 "--show-stdout",
1631 "--browser=release",
1632 "--passthrough",
1633 "-v",
1634 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1635 ],
1636 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171637 "merge": {
1638 "args": [],
1639 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1640 },
Kenneth Russell8a386d42018-06-02 09:48:011641 "name": "foo_tests",
Kenneth Russell44910c32018-12-03 23:35:111642 "should_retry_with_patch": false,
Kenneth Russell8a386d42018-06-02 09:48:011643 "swarming": {
1644 "can_use_on_swarming_builders": true,
1645 "dimension_sets": [
1646 {
1647 "gpu": "10de:1cb3"
1648 }
erikchen6da2d9b2018-08-03 23:01:141649 ],
1650 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191651 },
Chan Li17d969f92020-07-10 00:50:031652 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell8a386d42018-06-02 09:48:011653 }
1654 ]
1655 }
1656}
1657"""
1658
Brian Sheedyf74819b2021-06-04 01:38:381659GPU_TELEMETRY_TEST_OUTPUT_ANDROID = """\
1660{
1661 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1662 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1663 "Fake Tester": {
1664 "isolated_scripts": [
1665 {
1666 "args": [
1667 "foo",
1668 "--show-stdout",
1669 "--browser=android-chromium",
1670 "--passthrough",
1671 "-v",
1672 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1673 ],
1674 "isolate_name": "telemetry_gpu_integration_test_android_chrome",
1675 "merge": {
1676 "args": [],
1677 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1678 },
1679 "name": "foo_tests",
1680 "should_retry_with_patch": false,
1681 "swarming": {
1682 "can_use_on_swarming_builders": true,
1683 "cipd_packages": [
1684 {
1685 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1686 "location": "bin",
1687 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1688 }
1689 ],
1690 "dimension_sets": [
1691 {
1692 "device_type": "bullhead"
1693 }
1694 ],
1695 "idempotent": false
1696 },
1697 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_chrome/"
1698 }
1699 ]
1700 }
1701}
1702"""
1703
1704GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW = """\
1705{
1706 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1707 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1708 "Fake Tester": {
1709 "isolated_scripts": [
1710 {
1711 "args": [
1712 "foo",
1713 "--show-stdout",
1714 "--browser=android-webview-instrumentation",
1715 "--passthrough",
1716 "-v",
1717 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1718 ],
1719 "isolate_name": "telemetry_gpu_integration_test_android_webview",
1720 "merge": {
1721 "args": [],
1722 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1723 },
1724 "name": "foo_tests",
1725 "should_retry_with_patch": false,
1726 "swarming": {
1727 "can_use_on_swarming_builders": true,
1728 "cipd_packages": [
1729 {
1730 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1731 "location": "bin",
1732 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1733 }
1734 ],
1735 "dimension_sets": [
1736 {
1737 "device_type": "bullhead"
1738 }
1739 ],
1740 "idempotent": false
1741 },
1742 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_webview/"
1743 }
1744 ]
1745 }
1746}
1747"""
1748
Chong Guc2ca5d02022-01-11 19:52:171749GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA = """\
1750{
1751 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1752 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1753 "Fake Tester": {
1754 "isolated_scripts": [
1755 {
1756 "args": [
1757 "foo",
1758 "--show-stdout",
1759 "--browser=fuchsia-chrome",
1760 "--passthrough",
1761 "-v",
1762 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1763 ],
1764 "isolate_name": "telemetry_gpu_integration_test_fuchsia",
1765 "merge": {
1766 "args": [],
1767 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1768 },
1769 "name": "foo_tests",
1770 "should_retry_with_patch": false,
1771 "swarming": {
1772 "can_use_on_swarming_builders": true,
1773 "dimension_sets": [
1774 {
1775 "kvm": "1"
1776 }
1777 ],
1778 "idempotent": false
1779 },
1780 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_fuchsia/"
1781 }
1782 ]
1783 }
1784}
1785"""
1786
Kenneth Russell384a1732019-03-16 02:36:021787NVIDIA_GPU_TELEMETRY_TEST_OUTPUT = """\
1788{
1789 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1790 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1791 "Fake Tester": {
1792 "isolated_scripts": [
1793 {
1794 "args": [
1795 "foo",
1796 "--show-stdout",
1797 "--browser=release",
1798 "--passthrough",
1799 "-v",
1800 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1801 "--gpu-vendor-id",
1802 "10de",
1803 "--gpu-device-id",
1804 "1cb3"
1805 ],
1806 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171807 "merge": {
1808 "args": [],
1809 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1810 },
Kenneth Russell384a1732019-03-16 02:36:021811 "name": "foo_tests",
1812 "should_retry_with_patch": false,
1813 "swarming": {
1814 "can_use_on_swarming_builders": true,
1815 "dimension_sets": [
1816 {
Brian Sheedy0e26c4e02020-05-28 22:09:091817 "gpu": "10de:1cb3-26.21.14.3102"
Kenneth Russell384a1732019-03-16 02:36:021818 }
1819 ],
1820 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191821 },
Chan Li17d969f92020-07-10 00:50:031822 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021823 }
1824 ]
1825 }
1826}
1827"""
1828
1829INTEL_GPU_TELEMETRY_TEST_OUTPUT = """\
1830{
1831 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1832 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1833 "Fake Tester": {
1834 "isolated_scripts": [
1835 {
1836 "args": [
1837 "foo",
1838 "--show-stdout",
1839 "--browser=release",
1840 "--passthrough",
1841 "-v",
1842 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1843 "--gpu-vendor-id",
1844 "8086",
1845 "--gpu-device-id",
1846 "5912"
1847 ],
1848 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171849 "merge": {
1850 "args": [],
1851 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1852 },
Kenneth Russell384a1732019-03-16 02:36:021853 "name": "foo_tests",
1854 "should_retry_with_patch": false,
1855 "swarming": {
1856 "can_use_on_swarming_builders": true,
1857 "dimension_sets": [
1858 {
Brian Sheedy0e26c4e02020-05-28 22:09:091859 "gpu": "8086:5912-24.20.100.6286"
Kenneth Russell384a1732019-03-16 02:36:021860 }
1861 ],
1862 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191863 },
Chan Li17d969f92020-07-10 00:50:031864 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021865 }
1866 ]
1867 }
1868}
1869"""
1870
Brian Sheedyf9387db7b2019-08-05 19:26:101871INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT = """\
1872{
1873 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1874 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1875 "Fake Tester": {
1876 "isolated_scripts": [
1877 {
1878 "args": [
1879 "foo",
1880 "--show-stdout",
1881 "--browser=release",
1882 "--passthrough",
1883 "-v",
1884 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1885 "--gpu-vendor-id",
1886 "8086",
1887 "--gpu-device-id",
1888 "3e92"
1889 ],
1890 "isolate_name": "telemetry_gpu_integration_test",
1891 "merge": {
1892 "args": [],
1893 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1894 },
1895 "name": "foo_tests",
1896 "should_retry_with_patch": false,
1897 "swarming": {
1898 "can_use_on_swarming_builders": true,
1899 "dimension_sets": [
1900 {
Brian Sheedy0e26c4e02020-05-28 22:09:091901 "gpu": "8086:3e92-24.20.100.6286"
Brian Sheedyf9387db7b2019-08-05 19:26:101902 }
1903 ],
1904 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191905 },
Chan Li17d969f92020-07-10 00:50:031906 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Brian Sheedyf9387db7b2019-08-05 19:26:101907 }
1908 ]
1909 }
1910}
1911"""
1912
Kenneth Russelleb60cbd22017-12-05 07:54:281913ANDROID_WATERFALL_OUTPUT = """\
1914{
1915 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1916 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1917 "Android Builder": {
1918 "additional_compile_targets": [
1919 "bar_test"
1920 ]
1921 },
1922 "Fake Android K Tester": {
1923 "additional_compile_targets": [
1924 "bar_test"
1925 ],
1926 "gtest_tests": [
1927 {
John Budorick826d5ed2017-12-28 19:27:321928 "args": [
Kenneth Russell5612d64a2018-06-02 21:12:301929 "--gs-results-bucket=chromium-result-details",
1930 "--recover-devices"
John Budorick826d5ed2017-12-28 19:27:321931 ],
Stephen Martinisbc7b7772019-05-01 22:01:431932 "merge": {
1933 "args": [],
1934 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1935 },
Kenneth Russelleb60cbd22017-12-05 07:54:281936 "swarming": {
1937 "can_use_on_swarming_builders": true,
1938 "cipd_packages": [
1939 {
1940 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1941 "location": "bin",
1942 "revision": \
1943"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1944 }
1945 ],
1946 "dimension_sets": [
1947 {
1948 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:281949 "device_os_type": "userdebug",
Kenneth Russelleb60cbd22017-12-05 07:54:281950 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221951 "integrity": "high",
1952 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281953 }
1954 ],
1955 "expiration": 120,
1956 "output_links": [
1957 {
1958 "link": [
1959 "https://luci-logdog.appspot.com/v/?s",
1960 "=android%2Fswarming%2Flogcats%2F",
1961 "${TASK_ID}%2F%2B%2Funified_logcats"
1962 ],
1963 "name": "shard #${SHARD_INDEX} logcats"
1964 }
1965 ]
1966 },
1967 "test": "foo_test"
1968 }
1969 ]
1970 },
1971 "Fake Android L Tester": {
1972 "gtest_tests": [
1973 {
Benjamin Pastene766d48f52017-12-18 21:47:421974 "args": [
John Budorick826d5ed2017-12-28 19:27:321975 "--gs-results-bucket=chromium-result-details",
Benjamin Pastene766d48f52017-12-18 21:47:421976 "--recover-devices"
1977 ],
Stephen Martinisbc7b7772019-05-01 22:01:431978 "merge": {
1979 "args": [],
1980 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1981 },
Kenneth Russelleb60cbd22017-12-05 07:54:281982 "swarming": {
1983 "can_use_on_swarming_builders": true,
1984 "cipd_packages": [
1985 {
1986 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1987 "location": "bin",
1988 "revision": \
1989"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1990 }
1991 ],
1992 "dimension_sets": [
1993 {
Ben Pastenee012aea42019-05-14 22:32:281994 "device_os": "LMY41U",
1995 "device_os_type": "user",
Kenneth Russelleb60cbd22017-12-05 07:54:281996 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221997 "integrity": "high",
1998 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281999 }
2000 ],
2001 "expiration": 120
2002 },
2003 "test": "foo_test"
2004 }
2005 ]
2006 },
2007 "Fake Android M Tester": {
2008 "gtest_tests": [
2009 {
Stephen Martinisbc7b7772019-05-01 22:01:432010 "merge": {
2011 "args": [],
2012 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2013 },
Kenneth Russelleb60cbd22017-12-05 07:54:282014 "swarming": {
2015 "can_use_on_swarming_builders": false
2016 },
2017 "test": "foo_test"
2018 }
2019 ]
2020 }
2021}
2022"""
2023
Ben Pastenea9e583b2019-01-16 02:57:262024CHROMEOS_TRIGGER_SCRIPT_OUTPUT = """\
2025{
2026 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2027 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2028 "Fake Tester": {
2029 "gtest_tests": [
2030 {
Stephen Martinisbc7b7772019-05-01 22:01:432031 "merge": {
2032 "args": [],
2033 "script": "//testing/merge_scripts/standard_gtest_merge.py"
2034 },
Ben Pastenea9e583b2019-01-16 02:57:262035 "swarming": {
2036 "can_use_on_swarming_builders": true,
2037 "dimension_sets": [
2038 {
2039 "device_type": "foo_device",
2040 "integrity": "high"
2041 }
2042 ],
2043 "expiration": 120
2044 },
2045 "test": "foo_test",
2046 "trigger_script": {
2047 "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
2048 }
2049 }
2050 ]
2051 }
2052}
2053"""
2054
Stephen Martinis2a0667022018-09-25 22:31:142055GPU_DIMENSIONS_WATERFALL_OUTPUT = """\
2056{
2057 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
2058 "AAAAA2 See generate_buildbot_json.py to make changes": {},
2059 "Fake Tester": {
2060 "isolated_scripts": [
2061 {
2062 "args": [
2063 "foo_test",
2064 "--show-stdout",
2065 "--browser=release",
2066 "--passthrough",
2067 "-v",
2068 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
2069 ],
2070 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:172071 "merge": {
2072 "args": [],
2073 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2074 },
Stephen Martinis2a0667022018-09-25 22:31:142075 "name": "foo_test",
Kenneth Russell44910c32018-12-03 23:35:112076 "should_retry_with_patch": false,
Stephen Martinis2a0667022018-09-25 22:31:142077 "swarming": {
2078 "can_use_on_swarming_builders": true,
2079 "dimension_sets": [
2080 {
2081 "iama": "mixin",
2082 "integrity": "high"
2083 }
2084 ],
2085 "expiration": 120,
2086 "idempotent": false,
2087 "value": "test"
Chan Liab7d8dd82020-04-24 23:42:192088 },
Chan Li17d969f92020-07-10 00:50:032089 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Stephen Martinis2a0667022018-09-25 22:31:142090 }
2091 ]
2092 }
2093}
2094"""
2095
Kenneth Russell78fd8702018-05-17 01:15:522096LUCI_MILO_CFG = """\
2097consoles {
2098 builders {
2099 name: "buildbucket/luci.chromium.ci/Fake Tester"
2100 }
2101}
2102"""
2103
Stephen Martinis54d64ad2018-09-21 22:16:202104LUCI_MILO_CFG_WATERFALL_SORTING = """\
2105consoles {
2106 builders {
2107 name: "buildbucket/luci.chromium.ci/Fake Tester"
2108 name: "buildbucket/luci.chromium.ci/Really Fake Tester"
2109 }
2110}
2111"""
2112
Stephen Martinis54d64ad2018-09-21 22:16:202113TEST_SUITE_SORTING_WATERFALL = """
2114[
2115 {
Greg Gutermanf60eb052020-03-12 17:40:012116 'project': 'chromium',
2117 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202118 'name': 'chromium.test',
2119 'machines': {
2120 'Fake Tester': {
2121 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562122 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202123 'scripts': 'suite_b',
2124 },
2125 },
2126 },
2127 },
2128]
2129"""
2130
2131TEST_SUITE_SORTED_WATERFALL = """
2132[
2133 {
Greg Gutermanf60eb052020-03-12 17:40:012134 'project': 'chromium',
2135 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202136 'name': 'chromium.test',
2137 'machines': {
2138 'Fake Tester': {
2139 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562140 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202141 'scripts': 'suite_b',
2142 },
2143 },
2144 'Really Fake Tester': {
2145 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562146 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202147 'scripts': 'suite_b',
2148 },
2149 },
2150 },
2151 },
2152 {
Greg Gutermanf60eb052020-03-12 17:40:012153 'project': 'chromium',
2154 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202155 'name': 'chromium.zz.test',
2156 'machines': {
2157 'Fake Tester': {
2158 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562159 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202160 'scripts': 'suite_b',
2161 },
2162 },
2163 'Really Fake Tester': {
2164 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562165 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202166 'scripts': 'suite_b',
2167 },
2168 },
2169 },
2170 },
2171]
2172"""
2173
2174TEST_SUITE_UNSORTED_WATERFALL_1 = """
2175[
2176 {
Greg Gutermanf60eb052020-03-12 17:40:012177 'project': 'chromium',
2178 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202179 'name': 'chromium.zz.test',
2180 'machines': {
2181 'Fake Tester': {
2182 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562183 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202184 'scripts': 'suite_b',
2185 },
2186 },
2187 'Really Fake Tester': {
2188 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562189 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202190 'scripts': 'suite_b',
2191 },
2192 },
2193 },
2194 },
2195 {
Greg Gutermanf60eb052020-03-12 17:40:012196 'project': 'chromium',
2197 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202198 'name': 'chromium.test',
2199 'machines': {
2200 'Fake Tester': {
2201 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562202 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202203 'scripts': 'suite_b',
2204 },
2205 },
2206 'Really Fake Tester': {
2207 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562208 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202209 'scripts': 'suite_b',
2210 },
2211 },
2212 },
2213 },
2214]
2215"""
2216
2217TEST_SUITE_UNSORTED_WATERFALL_2 = """
2218[
2219 {
Greg Gutermanf60eb052020-03-12 17:40:012220 'project': 'chromium',
2221 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202222 'name': 'chromium.test',
2223 'machines': {
2224 'Really Fake Tester': {
2225 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562226 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202227 'scripts': 'suite_b',
2228 },
2229 },
2230 'Fake Tester': {
2231 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562232 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202233 'scripts': 'suite_b',
2234 },
2235 },
2236 },
2237 },
2238 {
Greg Gutermanf60eb052020-03-12 17:40:012239 'project': 'chromium',
2240 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202241 'name': 'chromium.zz.test',
2242 'machines': {
2243 'Fake Tester': {
2244 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562245 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202246 'scripts': 'suite_b',
2247 },
2248 },
2249 'Really Fake Tester': {
2250 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562251 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202252 'scripts': 'suite_b',
2253 },
2254 },
2255 },
2256 },
2257]
2258"""
2259
2260# Note that the suites in basic_suites would be sorted after the suites in
2261# compound_suites. This is valid though, because each set of suites is sorted
2262# separately.
Dirk Pranke0e879b22020-07-16 23:53:562263# suite_c is a 'gtest_tests' test
2264# suite_d is a 'scripts' test
Stephen Martinis54d64ad2018-09-21 22:16:202265TEST_SUITE_SORTED = """\
2266{
2267 'basic_suites': {
2268 'suite_c': {
2269 'suite_c': {},
2270 },
2271 'suite_d': {
2272 'script': {
2273 'script': 'suite_d.py',
2274 }
2275 },
2276 },
2277 'compound_suites': {
2278 'suite_a': [
2279 'suite_c',
2280 ],
2281 'suite_b': [
2282 'suite_d',
2283 ],
2284 },
2285}
2286"""
2287
2288TEST_SUITE_UNSORTED_1 = """\
2289{
2290 'basic_suites': {
2291 'suite_d': {
2292 'a': 'b',
2293 },
2294 'suite_c': {
2295 'a': 'b',
2296 },
2297 },
2298 'compound_suites': {
2299 'suite_a': [
2300 'suite_c',
2301 ],
2302 'suite_b': [
2303 'suite_d',
2304 ],
2305 },
2306}
2307"""
2308
2309TEST_SUITE_UNSORTED_2 = """\
2310{
2311 'basic_suites': {
2312 'suite_c': {
2313 'a': 'b',
2314 },
2315 'suite_d': {
2316 'a': 'b',
2317 },
2318 },
2319 'compound_suites': {
2320 'suite_b': [
2321 'suite_c',
2322 ],
2323 'suite_a': [
2324 'suite_d',
2325 ],
2326 },
2327}
2328"""
2329TEST_SUITE_UNSORTED_3 = """\
2330{
2331 'basic_suites': {
2332 'suite_d': {
2333 'a': 'b',
2334 },
2335 'suite_c': {
2336 'a': 'b',
2337 },
2338 },
2339 'compound_suites': {
2340 'suite_b': [
2341 'suite_c',
2342 ],
2343 'suite_a': [
2344 'suite_d',
2345 ],
2346 },
2347}
2348"""
2349
2350
2351TEST_SUITES_SYNTAX_ERROR = """\
2352{
2353 'basic_suites': {
2354 3: {
2355 'suite_c': {},
2356 },
2357 },
2358 'compound_suites': {},
2359}
2360"""
2361
Nodir Turakulovfce34292019-12-18 17:05:412362GN_ISOLATE_MAP="""\
2363{
2364 'foo_test': {
2365 'label': '//chrome/test:foo_test',
2366 'type': 'windowed_test_launcher',
2367 }
2368}
2369"""
2370
Chan Liab7d8dd82020-04-24 23:42:192371GPU_TELEMETRY_GN_ISOLATE_MAP="""\
2372{
2373 'telemetry_gpu_integration_test': {
2374 'label': '//chrome/test:telemetry_gpu_integration_test',
2375 'type': 'script',
2376 }
2377}
2378"""
Brian Sheedyf74819b2021-06-04 01:38:382379
2380GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID = """\
2381{
2382 'telemetry_gpu_integration_test_android_chrome': {
2383 'label': '//chrome/test:telemetry_gpu_integration_test_android_chrome',
2384 'type': 'script',
2385 }
2386}
2387"""
2388
2389GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW = """\
2390{
2391 'telemetry_gpu_integration_test_android_webview': {
2392 'label': '//chrome/test:telemetry_gpu_integration_test_android_webview',
2393 'type': 'script',
2394 }
2395}
2396"""
2397
Chong Guc2ca5d02022-01-11 19:52:172398GPU_TELEMETRY_GN_ISOLATE_MAP_FUCHSIA = """\
2399{
2400 'telemetry_gpu_integration_test_fuchsia': {
2401 'label': '//chrome/test:telemetry_gpu_integration_test_fuchsia',
2402 'type': 'script',
2403 }
2404}
2405"""
2406
Corentin Wallez55b8e772020-04-24 17:39:282407GN_ISOLATE_MAP_KEY_LABEL_MISMATCH="""\
2408{
2409 'foo_test': {
2410 'label': '//chrome/test:foo_test_tmp',
2411 'type': 'windowed_test_launcher',
2412 }
2413}
2414"""
2415
2416GN_ISOLATE_MAP_USING_IMPLICIT_NAME="""\
2417{
2418 'foo_test': {
2419 'label': '//chrome/foo_test',
2420 'type': 'windowed_test_launcher',
2421 }
2422}
2423"""
2424
Garrett Beaty1afaccc2020-06-25 19:58:152425class UnitTest(TestCase):
Kenneth Russelleb60cbd22017-12-05 07:54:282426 def test_base_generator(self):
2427 # Only needed for complete code coverage.
2428 self.assertRaises(NotImplementedError,
2429 generate_buildbot_json.BaseGenerator(None).generate,
2430 None, None, None, None)
2431 self.assertRaises(NotImplementedError,
2432 generate_buildbot_json.BaseGenerator(None).sort,
2433 None)
2434
2435 def test_good_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152436 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522437 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502438 fbb.check_input_file_consistency(verbose=True)
2439 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282440
2441 def test_good_composition_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152442 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2443 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502444 fbb.check_input_file_consistency(verbose=True)
2445 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282446
2447 def test_bad_composition_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152448 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2449 BAD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232450 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2451 'compound_suites may not refer to.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502452 fbb.check_input_file_consistency(verbose=True)
2453 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282454
Andrew Luo0f1dee02019-09-06 16:50:472455 def test_composition_test_suites_no_conflicts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152456 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2457 CONFLICTING_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232458 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2459 'Conflicting test definitions.*'):
Andrew Luo0f1dee02019-09-06 16:50:472460 fbb.check_input_file_consistency(verbose=True)
2461 self.assertFalse(fbb.printed_lines)
2462
Stephen Martinis54d64ad2018-09-21 22:16:202463 def test_composition_test_suites_no_duplicate_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:152464 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2465 DUPLICATES_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232466 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2467 '.*may not duplicate basic test suite.*'):
Stephen Martinis54d64ad2018-09-21 22:16:202468 fbb.check_input_file_consistency(verbose=True)
2469 self.assertFalse(fbb.printed_lines)
2470
Kenneth Russelleb60cbd22017-12-05 07:54:282471 def test_unknown_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152472 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522473 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232474 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2475 'Test suite baz_tests from machine.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502476 fbb.check_input_file_consistency(verbose=True)
2477 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282478
2479 def test_unknown_test_suite_types_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152480 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_TYPE_WATERFALL,
2481 FOO_TEST_SUITE, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232482 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2483 'Unknown test suite type foo_test_type.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502484 fbb.check_input_file_consistency(verbose=True)
2485 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282486
2487 def test_unrefed_test_suite_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152488 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, UNREFED_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522489 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232490 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2491 '.*unreferenced.*bar_tests.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502492 fbb.check_input_file_consistency(verbose=True)
2493 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282494
2495 def test_good_waterfall_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152496 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2497 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2498 self.create_testing_buildbot_json_file('chromium.test.json',
2499 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282500 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502501 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282502
2503 def test_reusing_gtest_targets(self):
Garrett Beaty1afaccc2020-06-25 19:58:152504 fbb = FakeBBGen(self.args,
2505 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282506 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412507 LUCI_MILO_CFG,
2508 gn_isolate_map=GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152509 self.create_testing_buildbot_json_file('chromium.test.json',
2510 VARIATION_GTEST_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282511 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502512 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282513
Chong Guee622242020-10-28 18:17:352514 def test_load_multiple_isolate_map_files_with_duplicates(self):
2515 self.args.isolate_map_files = ['gn_isolate_map.pyl']
2516 fbb = FakeBBGen(self.args,
2517 FOO_GTESTS_WATERFALL,
2518 REUSING_TEST_WITH_DIFFERENT_NAME,
2519 LUCI_MILO_CFG,
2520 gn_isolate_map=GN_ISOLATE_MAP)
Jamie Madillcf4f8c72021-05-20 19:24:232521 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2522 'Duplicate targets in isolate map files.*'):
Chong Guee622242020-10-28 18:17:352523 fbb.load_configuration_files()
2524
2525 def test_load_multiple_isolate_map_files_without_duplicates(self):
2526 self.args.isolate_map_files = ['gn_isolate_map2.pyl']
2527 fbb = FakeBBGen(self.args,
2528 FOO_GTESTS_WATERFALL,
2529 REUSING_TEST_WITH_DIFFERENT_NAME,
2530 LUCI_MILO_CFG,
2531 gn_isolate_map=GN_ISOLATE_MAP)
2532 fbb.load_configuration_files()
2533 isolate_dict = {}
2534 isolate_map_1 = fbb.load_pyl_file('gn_isolate_map.pyl')
2535 isolate_map_2 = fbb.load_pyl_file('gn_isolate_map2.pyl')
2536 isolate_dict.update(isolate_map_1)
2537 isolate_dict.update(isolate_map_2)
Jamie Madillcf4f8c72021-05-20 19:24:232538 self.assertEqual(isolate_dict, fbb.gn_isolate_map)
Chong Guee622242020-10-28 18:17:352539
Corentin Wallez55b8e772020-04-24 17:39:282540 def test_gn_isolate_map_with_label_mismatch(self):
Garrett Beaty1afaccc2020-06-25 19:58:152541 fbb = FakeBBGen(self.args,
2542 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282543 FOO_TEST_SUITE,
2544 LUCI_MILO_CFG,
2545 gn_isolate_map=GN_ISOLATE_MAP_KEY_LABEL_MISMATCH)
Jamie Madillcf4f8c72021-05-20 19:24:232546 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2547 'key name.*foo_test.*label.*'
2548 'foo_test_tmp.*'):
Corentin Wallez55b8e772020-04-24 17:39:282549 fbb.check_input_file_consistency(verbose=True)
2550 self.assertFalse(fbb.printed_lines)
2551
2552 def test_gn_isolate_map_using_implicit_gn_name(self):
Garrett Beaty1afaccc2020-06-25 19:58:152553 fbb = FakeBBGen(self.args,
2554 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282555 FOO_TEST_SUITE,
2556 LUCI_MILO_CFG,
2557 gn_isolate_map=GN_ISOLATE_MAP_USING_IMPLICIT_NAME)
Jamie Madillcf4f8c72021-05-20 19:24:232558 with self.assertRaisesRegex(
2559 generate_buildbot_json.BBGenErr,
2560 'Malformed.*//chrome/foo_test.*for key.*'
2561 'foo_test.*'):
Corentin Wallez55b8e772020-04-24 17:39:282562 fbb.check_input_file_consistency(verbose=True)
2563 self.assertFalse(fbb.printed_lines)
2564
Kenneth Russelleb60cbd22017-12-05 07:54:282565 def test_noop_exception_does_nothing(self):
Garrett Beaty1afaccc2020-06-25 19:58:152566 fbb = FakeBBGen(self.args,
2567 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282568 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412569 LUCI_MILO_CFG,
2570 exceptions=EMPTY_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152571 self.create_testing_buildbot_json_file('chromium.test.json',
2572 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282573 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502574 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282575
Kenneth Russell8ceeabf2017-12-11 17:53:282576 def test_test_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152577 fbb = FakeBBGen(self.args,
2578 FOO_GTESTS_WATERFALL,
Kenneth Russell8ceeabf2017-12-11 17:53:282579 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412580 LUCI_MILO_CFG,
2581 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152582 self.create_testing_buildbot_json_file('chromium.test.json',
2583 MERGED_ARGS_OUTPUT)
Kenneth Russell8ceeabf2017-12-11 17:53:282584 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502585 self.assertFalse(fbb.printed_lines)
Kenneth Russell8ceeabf2017-12-11 17:53:282586
Kenneth Russell650995a2018-05-03 21:17:012587 def test_enable_features_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152588 fbb = FakeBBGen(self.args, FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL,
2589 FOO_TEST_SUITE_WITH_ENABLE_FEATURES, LUCI_MILO_CFG)
2590 self.create_testing_buildbot_json_file('chromium.test.json',
2591 MERGED_ENABLE_FEATURES_OUTPUT)
Kenneth Russell650995a2018-05-03 21:17:012592 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502593 self.assertFalse(fbb.printed_lines)
Kenneth Russell650995a2018-05-03 21:17:012594
Kenneth Russell8a386d42018-06-02 09:48:012595 def test_linux_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152596 fbb = FakeBBGen(self.args, FOO_LINUX_GTESTS_WATERFALL,
2597 FOO_TEST_SUITE_WITH_LINUX_ARGS, LUCI_MILO_CFG)
2598 self.create_testing_buildbot_json_file('chromium.test.json',
2599 LINUX_ARGS_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012600 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502601 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012602
Kenneth Russelleb60cbd22017-12-05 07:54:282603 def test_test_filtering(self):
Garrett Beaty1afaccc2020-06-25 19:58:152604 fbb = FakeBBGen(self.args,
2605 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282606 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412607 LUCI_MILO_CFG,
2608 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152609 self.create_testing_buildbot_json_file(
2610 'chromium.test.json', COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282611 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502612 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282613
2614 def test_test_modifications(self):
Garrett Beaty1afaccc2020-06-25 19:58:152615 fbb = FakeBBGen(self.args,
2616 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282617 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412618 LUCI_MILO_CFG,
2619 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152620 self.create_testing_buildbot_json_file('chromium.test.json',
2621 MODIFIED_OUTPUT)
2622 self.create_testing_buildbot_json_file('chromium.ci.json', MODIFIED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282623 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502624 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282625
John Budorick5bc387fe2019-05-09 20:02:532626 def test_test_with_explicit_none(self):
Garrett Beaty1afaccc2020-06-25 19:58:152627 fbb = FakeBBGen(self.args,
2628 FOO_GTESTS_WATERFALL,
John Budorick5bc387fe2019-05-09 20:02:532629 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412630 LUCI_MILO_CFG,
2631 exceptions=FOO_TEST_EXPLICIT_NONE_EXCEPTIONS,
2632 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:152633 self.create_testing_buildbot_json_file('chromium.test.json',
2634 EXPLICIT_NONE_OUTPUT)
2635 self.create_testing_buildbot_json_file('chromium.ci.json',
2636 EXPLICIT_NONE_OUTPUT)
John Budorick5bc387fe2019-05-09 20:02:532637 fbb.check_output_file_consistency(verbose=True)
2638 self.assertFalse(fbb.printed_lines)
2639
Kenneth Russelleb60cbd22017-12-05 07:54:282640 def test_isolated_script_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152641 fbb = FakeBBGen(self.args,
2642 FOO_ISOLATED_SCRIPTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282643 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412644 LUCI_MILO_CFG,
2645 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152646 self.create_testing_buildbot_json_file('chromium.test.json',
2647 ISOLATED_SCRIPT_OUTPUT)
2648 self.create_testing_buildbot_json_file('chromium.ci.json',
2649 ISOLATED_SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282650 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502651 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282652
Dirk Pranke0e879b22020-07-16 23:53:562653 def test_isolated_script_tests(self):
2654 fbb = FakeBBGen(self.args,
2655 FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID,
2656 GOOD_COMPOSITION_TEST_SUITES,
2657 LUCI_MILO_CFG,
2658 exceptions=NO_BAR_TEST_EXCEPTIONS)
2659 self.create_testing_buildbot_json_file('chromium.test.json',
2660 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2661 self.create_testing_buildbot_json_file('chromium.ci.json',
2662 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2663 fbb.check_output_file_consistency(verbose=True)
2664 self.assertFalse(fbb.printed_lines)
2665
Dirk Pranke1b767092017-12-07 04:44:232666 def test_script_with_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152667 fbb = FakeBBGen(self.args,
2668 FOO_SCRIPT_WATERFALL,
Dirk Pranke1b767092017-12-07 04:44:232669 SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412670 LUCI_MILO_CFG,
2671 exceptions=SCRIPT_WITH_ARGS_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152672 self.create_testing_buildbot_json_file('chromium.test.json',
2673 SCRIPT_WITH_ARGS_OUTPUT)
2674 self.create_testing_buildbot_json_file('chromium.ci.json',
2675 SCRIPT_WITH_ARGS_OUTPUT)
Dirk Pranke1b767092017-12-07 04:44:232676 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502677 self.assertFalse(fbb.printed_lines)
Dirk Pranke1b767092017-12-07 04:44:232678
2679 def test_script(self):
Garrett Beaty1afaccc2020-06-25 19:58:152680 fbb = FakeBBGen(self.args,
2681 FOO_SCRIPT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282682 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412683 LUCI_MILO_CFG,
2684 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152685 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
2686 self.create_testing_buildbot_json_file('chromium.ci.json', SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282687 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502688 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282689
Brian Sheedy158cd0f2019-04-26 01:12:442690 def test_script_machine_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152691 fbb = FakeBBGen(self.args,
2692 FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442693 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412694 LUCI_MILO_CFG,
2695 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232696 with self.assertRaisesRegex(
2697 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442698 'Attempted to generate a script test on tester.*'):
2699 fbb.check_output_file_consistency(verbose=True)
2700
2701 def test_script_waterfall_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152702 fbb = FakeBBGen(self.args,
2703 FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442704 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412705 LUCI_MILO_CFG,
2706 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232707 with self.assertRaisesRegex(
2708 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442709 'Attempted to generate a script test on tester.*'):
2710 fbb.check_output_file_consistency(verbose=True)
2711
Kenneth Russelleb60cbd22017-12-05 07:54:282712 def test_junit_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152713 fbb = FakeBBGen(self.args,
2714 FOO_JUNIT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282715 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412716 LUCI_MILO_CFG,
2717 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152718 self.create_testing_buildbot_json_file('chromium.test.json', JUNIT_OUTPUT)
2719 self.create_testing_buildbot_json_file('chromium.ci.json', JUNIT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282720 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502721 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282722
Kenneth Russell8a386d42018-06-02 09:48:012723 def test_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152724 fbb = FakeBBGen(self.args,
2725 FOO_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell8a386d42018-06-02 09:48:012726 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
Nodir Turakulovfce34292019-12-18 17:05:412727 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192728 exceptions=NO_BAR_TEST_EXCEPTIONS,
2729 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152730 self.create_testing_buildbot_json_file('chromium.test.json',
2731 GPU_TELEMETRY_TEST_OUTPUT)
2732 self.create_testing_buildbot_json_file('chromium.ci.json',
2733 GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012734 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502735 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012736
Brian Sheedyd8c0c73d2021-07-05 02:11:302737 def test_gpu_telemetry_tests_pixel_with_filter(self):
2738 fbb = FakeBBGen(self.args,
2739 FOO_GPU_TELEMETRY_TEST_WATERFALL,
2740 COMPOSITION_SUITE_WITH_PIXEL_AND_FILTER,
2741 LUCI_MILO_CFG,
2742 exceptions=NO_BAR_TEST_EXCEPTIONS,
2743 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
2744 self.create_testing_buildbot_json_file('chromium.test.json',
2745 GPU_TELEMETRY_TEST_OUTPUT)
2746 self.create_testing_buildbot_json_file('chromium.ci.json',
2747 GPU_TELEMETRY_TEST_OUTPUT)
2748 with self.assertRaises(RuntimeError):
2749 fbb.check_output_file_consistency(verbose=True)
2750
Brian Sheedyf74819b2021-06-04 01:38:382751 def test_gpu_telemetry_tests_android(self):
2752 fbb = FakeBBGen(self.args,
2753 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID,
2754 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2755 LUCI_MILO_CFG,
2756 exceptions=NO_BAR_TEST_EXCEPTIONS,
2757 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID)
2758 self.create_testing_buildbot_json_file('chromium.test.json',
2759 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2760 self.create_testing_buildbot_json_file('chromium.ci.json',
2761 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2762 fbb.check_output_file_consistency(verbose=True)
2763 self.assertFalse(fbb.printed_lines)
2764
2765 def test_gpu_telemetry_tests_android_webview(self):
2766 fbb = FakeBBGen(self.args,
2767 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID_WEBVIEW,
2768 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2769 LUCI_MILO_CFG,
2770 exceptions=NO_BAR_TEST_EXCEPTIONS,
2771 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW)
2772 self.create_testing_buildbot_json_file(
2773 'chromium.test.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2774 self.create_testing_buildbot_json_file(
2775 'chromium.ci.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2776 fbb.check_output_file_consistency(verbose=True)
2777 self.assertFalse(fbb.printed_lines)
2778
Chong Guc2ca5d02022-01-11 19:52:172779 def test_gpu_telemetry_tests_fuchsia(self):
2780 fbb = FakeBBGen(self.args,
2781 FOO_GPU_TELEMETRY_TEST_WATERFALL_FUCHSIA,
2782 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2783 LUCI_MILO_CFG,
2784 exceptions=NO_BAR_TEST_EXCEPTIONS,
2785 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_FUCHSIA)
2786 self.create_testing_buildbot_json_file('chromium.test.json',
2787 GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA)
2788 self.create_testing_buildbot_json_file('chromium.ci.json',
2789 GPU_TELEMETRY_TEST_OUTPUT_FUCHSIA)
2790 fbb.check_output_file_consistency(verbose=True)
2791 self.assertFalse(fbb.printed_lines)
2792
Kenneth Russell384a1732019-03-16 02:36:022793 def test_nvidia_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152794 fbb = FakeBBGen(self.args,
2795 NVIDIA_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022796 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412797 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192798 exceptions=NO_BAR_TEST_EXCEPTIONS,
2799 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152800 self.create_testing_buildbot_json_file('chromium.test.json',
2801 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
2802 self.create_testing_buildbot_json_file('chromium.ci.json',
2803 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022804 fbb.check_output_file_consistency(verbose=True)
2805 self.assertFalse(fbb.printed_lines)
2806
2807 def test_intel_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152808 fbb = FakeBBGen(self.args,
2809 INTEL_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022810 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412811 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192812 exceptions=NO_BAR_TEST_EXCEPTIONS,
2813 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152814 self.create_testing_buildbot_json_file('chromium.test.json',
2815 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
2816 self.create_testing_buildbot_json_file('chromium.ci.json',
2817 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022818 fbb.check_output_file_consistency(verbose=True)
2819 self.assertFalse(fbb.printed_lines)
2820
Brian Sheedyf9387db7b2019-08-05 19:26:102821 def test_intel_uhd_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152822 fbb = FakeBBGen(self.args,
2823 INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL,
Brian Sheedyf9387db7b2019-08-05 19:26:102824 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412825 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192826 exceptions=NO_BAR_TEST_EXCEPTIONS,
2827 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152828 self.create_testing_buildbot_json_file('chromium.test.json',
2829 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
2830 self.create_testing_buildbot_json_file('chromium.ci.json',
2831 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
Brian Sheedyf9387db7b2019-08-05 19:26:102832 fbb.check_output_file_consistency(verbose=True)
2833 self.assertFalse(fbb.printed_lines)
2834
Jamie Madilla8be0d72020-10-02 05:24:042835 def test_gtest_as_isolated_Script(self):
2836 fbb = FakeBBGen(self.args,
2837 FOO_GTESTS_WATERFALL,
2838 GTEST_AS_ISOLATED_SCRIPT_SUITE,
2839 LUCI_MILO_CFG,
2840 gn_isolate_map=GN_ISOLATE_MAP)
2841 self.create_testing_buildbot_json_file(
2842 'chromium.test.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
2843 self.create_testing_buildbot_json_file(
2844 'chromium.ci.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
2845 fbb.check_output_file_consistency(verbose=True)
2846 self.assertFalse(fbb.printed_lines)
2847
Kenneth Russelleb60cbd22017-12-05 07:54:282848 def test_ungenerated_output_files_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152849 fbb = FakeBBGen(self.args,
2850 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282851 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412852 LUCI_MILO_CFG,
2853 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152854 self.create_testing_buildbot_json_file(
2855 'chromium.test.json', '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Stephen Martinis7eb8b612018-09-21 00:17:502856 with self.assertRaises(generate_buildbot_json.BBGenErr):
Kenneth Russell73c3bd8b2018-10-19 22:30:192857 fbb.check_output_file_consistency(verbose=True, dump=False)
Stephen Martinis7eb8b612018-09-21 00:17:502858 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232859 self.assertRegex(
Dirk Pranke6269d302020-10-01 00:14:392860 joined_lines, 'File chromium.test.json did not have the following'
Stephen Martinis7eb8b612018-09-21 00:17:502861 ' expected contents:.*')
Jamie Madillcf4f8c72021-05-20 19:24:232862 self.assertRegex(joined_lines, '.*--- expected.*')
2863 self.assertRegex(joined_lines, '.*\+\+\+ current.*')
Stephen Martinis7eb8b612018-09-21 00:17:502864 fbb.printed_lines = []
2865 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282866
2867 def test_android_output_options(self):
Garrett Beaty1afaccc2020-06-25 19:58:152868 fbb = FakeBBGen(self.args, ANDROID_WATERFALL, FOO_TEST_SUITE, LUCI_MILO_CFG)
2869 self.create_testing_buildbot_json_file('chromium.test.json',
2870 ANDROID_WATERFALL_OUTPUT)
2871 self.create_testing_buildbot_json_file('chromium.ci.json',
2872 ANDROID_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282873 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502874 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282875
2876 def test_nonexistent_removal_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152877 fbb = FakeBBGen(self.args,
2878 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282879 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412880 LUCI_MILO_CFG,
2881 exceptions=NONEXISTENT_REMOVAL)
Jamie Madillcf4f8c72021-05-20 19:24:232882 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2883 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502884 fbb.check_input_file_consistency(verbose=True)
2885 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282886
2887 def test_nonexistent_modification_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152888 fbb = FakeBBGen(self.args,
2889 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282890 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412891 LUCI_MILO_CFG,
2892 exceptions=NONEXISTENT_MODIFICATION)
Jamie Madillcf4f8c72021-05-20 19:24:232893 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2894 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502895 fbb.check_input_file_consistency(verbose=True)
2896 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282897
John Budorickedfe7f872018-01-23 15:27:222898 def test_waterfall_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152899 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL,
2900 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2901 self.create_testing_buildbot_json_file(
2902 'chromium.test.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
2903 self.create_testing_buildbot_json_file(
2904 'chromium.ci.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
John Budorickedfe7f872018-01-23 15:27:222905 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502906 self.assertFalse(fbb.printed_lines)
John Budorickedfe7f872018-01-23 15:27:222907
Ben Pastenea9e583b2019-01-16 02:57:262908 def test_chromeos_trigger_script_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152909 fbb = FakeBBGen(self.args, FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL,
2910 FOO_TEST_SUITE, LUCI_MILO_CFG)
2911 self.create_testing_buildbot_json_file('chromium.test.json',
2912 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
2913 self.create_testing_buildbot_json_file('chromium.ci.json',
2914 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
Ben Pastenea9e583b2019-01-16 02:57:262915 fbb.check_output_file_consistency(verbose=True)
2916 self.assertFalse(fbb.printed_lines)
2917
Zhiling Huangbe008172018-03-08 19:13:112918 def test_relative_pyl_file_dir(self):
Garrett Beaty1afaccc2020-06-25 19:58:152919 self.override_args(pyl_files_dir='relative/path/', waterfall_filters=[])
2920 fbb = FakeBBGen(self.args,
2921 FOO_GTESTS_WATERFALL,
Zhiling Huangbe008172018-03-08 19:13:112922 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412923 LUCI_MILO_CFG,
2924 gn_isolate_map=GN_ISOLATE_MAP)
Stephen Martinis7eb8b612018-09-21 00:17:502925 fbb.check_input_file_consistency(verbose=True)
Garrett Beaty1afaccc2020-06-25 19:58:152926 self.create_testing_buildbot_json_file('relative/path/chromium.test.json',
2927 VARIATION_GTEST_OUTPUT)
2928 self.create_testing_buildbot_json_file('relative/path/chromium.ci.json',
2929 VARIATION_GTEST_OUTPUT)
Zhiling Huangbe008172018-03-08 19:13:112930 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502931 self.assertFalse(fbb.printed_lines)
Zhiling Huangbe008172018-03-08 19:13:112932
Nico Weberd18b8962018-05-16 19:39:382933 def test_nonexistent_bot_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152934 fbb = FakeBBGen(self.args, UNKNOWN_BOT_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522935 LUCI_MILO_CFG)
Nico Weberd18b8962018-05-16 19:39:382936 with self.assertRaises(generate_buildbot_json.BBGenErr):
Stephen Martinis7eb8b612018-09-21 00:17:502937 fbb.check_input_file_consistency(verbose=True)
2938 self.assertFalse(fbb.printed_lines)
Nico Weberd18b8962018-05-16 19:39:382939
Garrett Beaty4f3e9212020-06-25 20:21:492940 def test_nonexistent_bot_raises_when_no_project_pyl_exists(self):
Garrett Beaty1afaccc2020-06-25 19:58:152941 fbb = FakeBBGen(self.args,
2942 UNKNOWN_BOT_GTESTS_WATERFALL,
Garrett Beaty2a02de3c2020-05-15 13:57:352943 FOO_TEST_SUITE,
2944 LUCI_MILO_CFG,
Garrett Beaty4f3e9212020-06-25 20:21:492945 project_pyl=None)
2946 with self.assertRaises(generate_buildbot_json.BBGenErr):
2947 fbb.check_input_file_consistency(verbose=True)
2948 self.assertFalse(fbb.printed_lines)
2949
2950 def test_nonexistent_bot_does_not_raise_when_validation_disabled(self):
2951 fbb = FakeBBGen(
2952 self.args,
2953 UNKNOWN_BOT_GTESTS_WATERFALL,
2954 FOO_TEST_SUITE,
2955 LUCI_MILO_CFG,
2956 project_pyl='{"validate_source_side_specs_have_builder": False}')
Garrett Beaty2a02de3c2020-05-15 13:57:352957 fbb.check_input_file_consistency(verbose=True)
2958
Stephen Martinis54d64ad2018-09-21 22:16:202959 def test_waterfalls_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152960 fbb = FakeBBGen(self.args, TEST_SUITE_SORTED_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:202961 LUCI_MILO_CFG_WATERFALL_SORTING)
2962 fbb.check_input_file_consistency(verbose=True)
2963 self.assertFalse(fbb.printed_lines)
2964
Garrett Beaty1afaccc2020-06-25 19:58:152965 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_1,
2966 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:232967 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:202968 generate_buildbot_json.BBGenErr,
2969 'The following files have invalid keys: waterfalls.pyl'):
2970 fbb.check_input_file_consistency(verbose=True)
2971 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232972 self.assertRegex(joined_lines, '.*\+ chromium\..*test.*')
2973 self.assertRegex(joined_lines, '.*\- chromium\..*test.*')
Stephen Martinis54d64ad2018-09-21 22:16:202974 fbb.printed_lines = []
2975 self.assertFalse(fbb.printed_lines)
2976
Garrett Beaty1afaccc2020-06-25 19:58:152977 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_2,
2978 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:232979 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:202980 generate_buildbot_json.BBGenErr,
2981 'The following files have invalid keys: waterfalls.pyl'):
2982 fbb.check_input_file_consistency(verbose=True)
2983 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232984 self.assertRegex(joined_lines, '.*\+.*Fake Tester.*')
2985 self.assertRegex(joined_lines, '.*\-.*Fake Tester.*')
Stephen Martinis54d64ad2018-09-21 22:16:202986 fbb.printed_lines = []
2987 self.assertFalse(fbb.printed_lines)
2988
2989 def test_test_suite_exceptions_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152990 fbb = FakeBBGen(self.args,
2991 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:202992 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:412993 LUCI_MILO_CFG,
2994 exceptions=EXCEPTIONS_SORTED)
Stephen Martinis7eb8b612018-09-21 00:17:502995 fbb.check_input_file_consistency(verbose=True)
2996 self.assertFalse(fbb.printed_lines)
Stephen Martinisf83893722018-09-19 00:02:182997
Garrett Beaty1afaccc2020-06-25 19:58:152998 fbb = FakeBBGen(self.args,
2999 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203000 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:413001 LUCI_MILO_CFG,
Stephen Martinis5bef0fc2020-01-06 22:47:533002 exceptions=EXCEPTIONS_DUPS_REMOVE_FROM)
3003 with self.assertRaises(generate_buildbot_json.BBGenErr):
3004 fbb.check_input_file_consistency(verbose=True)
3005 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233006 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:533007 fbb.printed_lines = []
3008 self.assertFalse(fbb.printed_lines)
3009
3010 def test_test_suite_exceptions_no_dups_remove_from(self):
Garrett Beaty1afaccc2020-06-25 19:58:153011 fbb = FakeBBGen(self.args,
3012 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533013 TEST_SUITE_SORTED,
3014 LUCI_MILO_CFG,
3015 exceptions=EXCEPTIONS_SORTED)
3016 fbb.check_input_file_consistency(verbose=True)
3017 self.assertFalse(fbb.printed_lines)
3018
Garrett Beaty1afaccc2020-06-25 19:58:153019 fbb = FakeBBGen(self.args,
3020 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533021 TEST_SUITE_SORTED,
3022 LUCI_MILO_CFG,
3023 exceptions=EXCEPTIONS_PER_TEST_UNSORTED)
Stephen Martinis5bef0fc2020-01-06 22:47:533024 with self.assertRaises(generate_buildbot_json.BBGenErr):
3025 fbb.check_input_file_consistency(verbose=True)
3026 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233027 self.assertRegex(joined_lines, '.*\+ Fake Tester.*')
3028 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:533029 fbb.printed_lines = []
3030 self.assertFalse(fbb.printed_lines)
3031
3032 def test_test_suite_exceptions_per_test_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153033 fbb = FakeBBGen(self.args,
3034 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533035 TEST_SUITE_SORTED,
3036 LUCI_MILO_CFG,
3037 exceptions=EXCEPTIONS_SORTED)
3038 fbb.check_input_file_consistency(verbose=True)
3039 self.assertFalse(fbb.printed_lines)
3040
Garrett Beaty1afaccc2020-06-25 19:58:153041 fbb = FakeBBGen(self.args,
3042 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:533043 TEST_SUITE_SORTED,
3044 LUCI_MILO_CFG,
Nodir Turakulovfce34292019-12-18 17:05:413045 exceptions=EXCEPTIONS_UNSORTED)
Stephen Martinis54d64ad2018-09-21 22:16:203046 with self.assertRaises(generate_buildbot_json.BBGenErr):
3047 fbb.check_input_file_consistency(verbose=True)
3048 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233049 self.assertRegex(joined_lines, '.*\+ suite_.*')
3050 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:203051 fbb.printed_lines = []
3052 self.assertFalse(fbb.printed_lines)
3053
3054 def test_test_suites_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153055 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:203056 LUCI_MILO_CFG)
3057 fbb.check_input_file_consistency(verbose=True)
3058 self.assertFalse(fbb.printed_lines)
3059
3060 for unsorted in (
3061 TEST_SUITE_UNSORTED_1,
3062 TEST_SUITE_UNSORTED_2,
3063 TEST_SUITE_UNSORTED_3,
3064 ):
Garrett Beaty1afaccc2020-06-25 19:58:153065 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, unsorted,
Stephen Martinis54d64ad2018-09-21 22:16:203066 LUCI_MILO_CFG)
3067 with self.assertRaises(generate_buildbot_json.BBGenErr):
3068 fbb.check_input_file_consistency(verbose=True)
3069 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233070 self.assertRegex(joined_lines, '.*\+ suite_.*')
3071 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:203072 fbb.printed_lines = []
3073 self.assertFalse(fbb.printed_lines)
3074
Stephen Martinis11672542018-10-29 18:17:213075
3076FOO_GTESTS_WATERFALL_MIXIN_WATERFALL = """\
3077[
3078 {
3079 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013080 'project': 'chromium',
3081 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213082 'name': 'chromium.test',
3083 'machines': {
3084 'Fake Tester': {
3085 'swarming': {},
3086 'test_suites': {
3087 'gtest_tests': 'foo_tests',
3088 },
3089 },
3090 },
3091 },
3092]
3093"""
3094
3095FOO_GTESTS_BUILDER_MIXIN_WATERFALL = """\
3096[
3097 {
Greg Gutermanf60eb052020-03-12 17:40:013098 'project': 'chromium',
3099 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213100 'name': 'chromium.test',
3101 'machines': {
3102 'Fake Tester': {
3103 'mixins': ['builder_mixin'],
3104 'swarming': {},
3105 'test_suites': {
3106 'gtest_tests': 'foo_tests',
3107 },
3108 },
3109 },
3110 },
3111]
3112"""
3113
Austin Eng148d9f0f2022-02-08 19:18:533114FOO_LINUX_GTESTS_BUILDER_MIXIN_WATERFALL = """\
3115[
3116 {
3117 'project': 'chromium',
3118 'bucket': 'ci',
3119 'name': 'chromium.test',
3120 'machines': {
3121 'Fake Tester': {
3122 'os_type': 'linux',
3123 'mixins': ['builder_mixin'],
3124 'swarming': {},
3125 'test_suites': {
3126 'gtest_tests': 'foo_tests',
3127 },
3128 },
3129 },
3130 },
3131]
3132"""
3133
Brian Sheedycae63b22020-06-10 22:52:113134FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL = """\
3135[
3136 {
3137 'project': 'chromium',
3138 'bucket': 'ci',
3139 'name': 'chromium.test',
3140 'machines': {
3141 'Fake Tester': {
3142 'mixins': [
3143 'dimension_set_mixin_1',
3144 'dimension_set_mixin_2',
3145 'duplicate_dimension_set_mixin_1',
3146 'dimension_mixin',
3147 ],
3148 'swarming': {},
3149 'test_suites': {
3150 'gtest_tests': 'foo_tests',
3151 },
3152 },
3153 },
3154 },
3155]
3156"""
3157
Brian Sheedy7658c982020-01-08 02:27:583158FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL = """\
3159[
3160 {
3161 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013162 'project': 'chromium',
3163 'bucket': 'ci',
Brian Sheedy7658c982020-01-08 02:27:583164 'name': 'chromium.test',
3165 'machines': {
3166 'Fake Tester': {
3167 'remove_mixins': ['waterfall_mixin'],
3168 'swarming': {},
3169 'test_suites': {
3170 'gtest_tests': 'foo_tests',
3171 },
3172 },
3173 },
3174 },
3175]
3176"""
3177
Stephen Martinis11672542018-10-29 18:17:213178FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL = """\
3179[
3180 {
Greg Gutermanf60eb052020-03-12 17:40:013181 'project': 'chromium',
3182 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213183 'name': 'chromium.test',
3184 'machines': {
3185 'Fake Tester': {
3186 'mixins': ['random_mixin'],
3187 'swarming': {},
3188 'test_suites': {
3189 'gtest_tests': 'foo_tests',
3190 },
3191 },
3192 },
3193 },
3194]
3195"""
3196
3197FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL = """\
3198[
3199 {
Greg Gutermanf60eb052020-03-12 17:40:013200 'project': 'chromium',
3201 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213202 'name': 'chromium.test',
3203 'machines': {
3204 'Fake Tester': {
3205 'mixins': ['dimension_mixin'],
3206 'swarming': {},
3207 'test_suites': {
3208 'gtest_tests': 'foo_tests',
3209 },
3210 },
3211 },
3212 },
3213]
3214"""
3215
3216FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL = """\
3217[
3218 {
Greg Gutermanf60eb052020-03-12 17:40:013219 'project': 'chromium',
3220 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213221 'name': 'chromium.test',
3222 'machines': {
3223 'Fake Tester': {
3224 'mixins': ['dimension_mixin'],
3225 'os_type': 'win',
3226 'browser_config': 'release',
3227 'test_suites': {
3228 'gpu_telemetry_tests': 'foo_tests',
3229 },
3230 },
3231 },
3232 },
3233]
3234"""
3235
3236# Swarming mixins must be a list, a single string is not allowed.
3237FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL = """\
3238[
3239 {
Greg Gutermanf60eb052020-03-12 17:40:013240 'project': 'chromium',
3241 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213242 'name': 'chromium.test',
3243 'machines': {
3244 'Fake Tester': {
3245 'mixins': 'dimension_mixin',
3246 'swarming': {},
3247 'test_suites': {
3248 'gtest_tests': 'foo_tests',
3249 },
3250 },
3251 },
3252 },
3253]
3254"""
3255FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL = """\
3256[
3257 {
Greg Gutermanf60eb052020-03-12 17:40:013258 'project': 'chromium',
3259 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213260 'name': 'chromium.test',
3261 'machines': {
3262 'Fake Tester': {
3263 'mixins': ['nonexistant'],
3264 'swarming': {},
3265 'test_suites': {
3266 'gtest_tests': 'foo_tests',
3267 },
3268 },
3269 },
3270 },
3271]
3272"""
3273
3274FOO_GTESTS_TEST_MIXIN_WATERFALL = """\
3275[
3276 {
Greg Gutermanf60eb052020-03-12 17:40:013277 'project': 'chromium',
3278 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213279 'name': 'chromium.test',
Greg Gutermanf60eb052020-03-12 17:40:013280 'mixins': ['waterfall_mixin'],
Stephen Martinis11672542018-10-29 18:17:213281 'machines': {
3282 'Fake Tester': {
3283 'swarming': {},
3284 'test_suites': {
3285 'gtest_tests': 'foo_tests',
3286 },
3287 },
3288 },
3289 },
3290]
3291"""
3292
3293FOO_GTESTS_SORTING_MIXINS_WATERFALL = """\
3294[
3295 {
3296 'mixins': ['a_mixin', 'b_mixin', 'c_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013297 'project': 'chromium',
3298 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213299 'name': 'chromium.test',
3300 'machines': {
3301 'Fake Tester': {
3302 'swarming': {
3303 'dimension_sets': [
3304 {
3305 'kvm': '1',
3306 },
3307 ],
3308 },
3309 'test_suites': {
3310 'gtest_tests': 'foo_tests',
3311 },
3312 },
3313 },
3314 },
3315]
3316"""
3317
3318FOO_TEST_SUITE_WITH_MIXIN = """\
3319{
3320 'basic_suites': {
3321 'foo_tests': {
3322 'foo_test': {
3323 'swarming': {
3324 'dimension_sets': [
3325 {
3326 'integrity': 'high',
3327 }
3328 ],
3329 'expiration': 120,
3330 },
3331 'mixins': ['test_mixin'],
3332 },
3333 },
3334 },
3335}
3336"""
3337
3338# These mixins are invalid; if passed to check_input_file_consistency, they will
3339# fail. These are used for output file consistency checks.
3340SWARMING_MIXINS = """\
3341{
3342 'builder_mixin': {
3343 'swarming': {
3344 'value': 'builder',
3345 },
3346 },
3347 'dimension_mixin': {
3348 'swarming': {
3349 'dimensions': {
3350 'iama': 'mixin',
3351 },
3352 },
3353 },
3354 'random_mixin': {
3355 'value': 'random',
3356 },
3357 'test_mixin': {
3358 'swarming': {
3359 'value': 'test',
3360 },
3361 },
3362 'waterfall_mixin': {
3363 'swarming': {
3364 'value': 'waterfall',
3365 },
3366 },
3367}
3368"""
3369
Wezc0e835b702018-10-30 00:38:413370SWARMING_MIXINS_APPEND = """\
3371{
3372 'builder_mixin': {
3373 '$mixin_append': {
3374 'args': [ '--mixin-argument' ],
Austin Eng148d9f0f2022-02-08 19:18:533375 'linux_args': [ '--linux-mixin-argument' ],
Wezc0e835b702018-10-30 00:38:413376 },
3377 },
3378}
3379"""
3380
3381SWARMING_MIXINS_APPEND_NOT_LIST = """\
3382{
3383 'builder_mixin': {
3384 '$mixin_append': {
3385 'args': 'I am not a list',
3386 },
3387 },
3388}
3389"""
3390
3391SWARMING_MIXINS_APPEND_TO_SWARMING = """\
3392{
3393 'builder_mixin': {
3394 '$mixin_append': {
3395 'swarming': [ 'swarming!' ],
3396 },
3397 },
3398}
3399"""
3400
Zhaoyang Li473dd0ae2021-05-10 18:28:283401SWARMING_MIXINS_APPEND_NAMED_CACHES = """\
3402{
3403 'builder_mixin': {
3404 '$mixin_append': {
3405 'swarming': {
3406 'named_caches': [
3407 {
3408 'name': 'cache',
3409 'file': 'cache_file',
3410 },
3411 ]
3412 },
3413 },
3414 },
3415}
3416"""
3417
3418SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES = """\
3419{
3420 'builder_mixin': {
3421 '$mixin_append': {
3422 'swarming': {
3423 'named_caches': [
3424 {
3425 'name': 'cache',
3426 'file': 'cache_file',
3427 },
3428 ],
3429 'other_key': 'some value',
3430 },
3431 },
3432 },
3433}
3434"""
3435
Brian Sheedycae63b22020-06-10 22:52:113436SWARMING_MIXINS_DIMENSION_SETS = """\
3437{
3438 'dimension_set_mixin_1': {
3439 'swarming': {
3440 'dimension_sets': [
3441 {
3442 'value': 'ds1',
3443 },
3444 ],
3445 },
3446 },
3447 'dimension_set_mixin_2': {
3448 'swarming': {
3449 'dimension_sets': [
3450 {
3451 'value': 'ds2',
3452 },
3453 ],
3454 },
3455 },
3456 'duplicate_dimension_set_mixin_1': {
3457 'swarming': {
3458 'dimension_sets': [
3459 {
3460 'value': 'ds1',
3461 },
3462 ],
3463 },
3464 },
3465 'dimension_mixin': {
3466 'swarming': {
3467 'dimensions': {
3468 'other_value': 'dimension_mixin',
3469 },
3470 },
3471 },
3472}
3473"""
3474
Stephen Martinis11672542018-10-29 18:17:213475SWARMING_MIXINS_DUPLICATED = """\
3476{
3477 'builder_mixin': {
3478 'value': 'builder',
3479 },
3480 'builder_mixin': {
3481 'value': 'builder',
3482 },
3483}
3484"""
3485
3486SWARMING_MIXINS_UNSORTED = """\
3487{
3488 'b_mixin': {
3489 'b': 'b',
3490 },
3491 'a_mixin': {
3492 'a': 'a',
3493 },
3494 'c_mixin': {
3495 'c': 'c',
3496 },
3497}
3498"""
3499
3500SWARMING_MIXINS_SORTED = """\
3501{
3502 'a_mixin': {
3503 'a': 'a',
3504 },
3505 'b_mixin': {
3506 'b': 'b',
3507 },
3508 'c_mixin': {
3509 'c': 'c',
3510 },
3511}
3512"""
3513
Brian Sheedycae63b22020-06-10 22:52:113514WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT = """\
3515{
3516 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3517 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3518 "Fake Tester": {
3519 "gtest_tests": [
3520 {
3521 "merge": {
3522 "args": [],
3523 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3524 },
3525 "swarming": {
3526 "can_use_on_swarming_builders": true,
3527 "dimension_sets": [
3528 {
3529 "other_value": "dimension_mixin",
3530 "value": "ds1"
3531 },
3532 {
3533 "other_value": "dimension_mixin",
3534 "value": "ds2"
3535 }
3536 ]
3537 },
3538 "test": "foo_test"
3539 }
3540 ]
3541 }
3542}
3543"""
3544
Stephen Martinis11672542018-10-29 18:17:213545WATERFALL_MIXIN_WATERFALL_OUTPUT = """\
3546{
3547 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3548 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3549 "Fake Tester": {
3550 "gtest_tests": [
3551 {
Stephen Martinisbc7b7772019-05-01 22:01:433552 "merge": {
3553 "args": [],
3554 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3555 },
Stephen Martinis11672542018-10-29 18:17:213556 "swarming": {
3557 "can_use_on_swarming_builders": true,
3558 "dimension_sets": [
3559 {
3560 "integrity": "high"
3561 }
3562 ],
3563 "expiration": 120,
3564 "value": "waterfall"
3565 },
3566 "test": "foo_test"
3567 }
3568 ]
3569 }
3570}
3571"""
3572
Brian Sheedy7658c982020-01-08 02:27:583573WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT = """\
3574{
3575 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3576 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3577 "Fake Tester": {
3578 "gtest_tests": [
3579 {
3580 "merge": {
3581 "args": [],
3582 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3583 },
3584 "swarming": {
3585 "can_use_on_swarming_builders": true,
3586 "dimension_sets": [
3587 {
3588 "integrity": "high"
3589 }
3590 ],
3591 "expiration": 120
3592 },
3593 "test": "foo_test"
3594 }
3595 ]
3596 }
3597}
3598"""
3599
Stephen Martinis11672542018-10-29 18:17:213600WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT = """\
3601{
3602 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3603 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3604 "Fake Tester": {
3605 "gtest_tests": [
3606 {
Stephen Martinisbc7b7772019-05-01 22:01:433607 "merge": {
3608 "args": [],
3609 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3610 },
Stephen Martinis11672542018-10-29 18:17:213611 "swarming": {
3612 "can_use_on_swarming_builders": true,
3613 "dimension_sets": [
3614 {
3615 "integrity": "high"
3616 }
3617 ],
3618 "expiration": 120,
3619 "value": "exception"
3620 },
3621 "test": "foo_test"
3622 }
3623 ]
3624 }
3625}
3626"""
3627
3628BUILDER_MIXIN_WATERFALL_OUTPUT = """\
3629{
3630 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3631 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3632 "Fake Tester": {
3633 "gtest_tests": [
3634 {
Stephen Martinisbc7b7772019-05-01 22:01:433635 "merge": {
3636 "args": [],
3637 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3638 },
Stephen Martinis11672542018-10-29 18:17:213639 "swarming": {
3640 "can_use_on_swarming_builders": true,
3641 "dimension_sets": [
3642 {
3643 "integrity": "high"
3644 }
3645 ],
3646 "expiration": 120,
3647 "value": "builder"
3648 },
3649 "test": "foo_test"
3650 }
3651 ]
3652 }
3653}
3654"""
3655
3656BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT = """\
3657{
3658 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3659 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3660 "Fake Tester": {
3661 "gtest_tests": [
3662 {
Stephen Martinisbc7b7772019-05-01 22:01:433663 "merge": {
3664 "args": [],
3665 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3666 },
Stephen Martinis11672542018-10-29 18:17:213667 "swarming": {
3668 "can_use_on_swarming_builders": true,
3669 "dimension_sets": [
3670 {
3671 "integrity": "high"
3672 }
3673 ],
3674 "expiration": 120
3675 },
3676 "test": "foo_test",
3677 "value": "random"
3678 }
3679 ]
3680 }
3681}
3682"""
3683
Wezc0e835b702018-10-30 00:38:413684BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT = """\
3685{
3686 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3687 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3688 "Fake Tester": {
3689 "gtest_tests": [
3690 {
3691 "args": [
3692 "--c_arg",
3693 "--mixin-argument"
3694 ],
Stephen Martinisbc7b7772019-05-01 22:01:433695 "merge": {
3696 "args": [],
3697 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3698 },
Wezc0e835b702018-10-30 00:38:413699 "swarming": {
3700 "can_use_on_swarming_builders": true
3701 },
3702 "test": "foo_test"
3703 }
3704 ]
3705 }
3706}
3707"""
3708
Austin Eng148d9f0f2022-02-08 19:18:533709BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT = """\
3710{
3711 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3712 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3713 "Fake Tester": {
3714 "gtest_tests": [
3715 {
3716 "args": [
3717 "--c_arg",
3718 "--mixin-argument",
3719 "--linux-mixin-argument"
3720 ],
3721 "merge": {
3722 "args": [],
3723 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3724 },
3725 "swarming": {
3726 "can_use_on_swarming_builders": true
3727 },
3728 "test": "foo_test"
3729 }
3730 ]
3731 }
3732}
3733"""
3734
Zhaoyang Li473dd0ae2021-05-10 18:28:283735BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT = """\
3736{
3737 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3738 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3739 "Fake Tester": {
3740 "gtest_tests": [
3741 {
3742 "merge": {
3743 "args": [],
3744 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3745 },
3746 "swarming": {
3747 "can_use_on_swarming_builders": true,
3748 "named_caches": [
3749 {
3750 "file": "cache_in_test_file",
3751 "name": "cache_in_test"
3752 },
3753 {
3754 "file": "cache_file",
3755 "name": "cache"
3756 }
3757 ]
3758 },
3759 "test": "foo_test"
3760 }
3761 ]
3762 }
3763}
3764"""
3765
Stephen Martinis11672542018-10-29 18:17:213766TEST_MIXIN_WATERFALL_OUTPUT = """\
3767{
3768 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3769 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3770 "Fake Tester": {
3771 "gtest_tests": [
3772 {
Stephen Martinisbc7b7772019-05-01 22:01:433773 "merge": {
3774 "args": [],
3775 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3776 },
Stephen Martinis11672542018-10-29 18:17:213777 "swarming": {
3778 "can_use_on_swarming_builders": true,
3779 "dimension_sets": [
3780 {
3781 "integrity": "high",
3782 "kvm": "1"
3783 }
3784 ],
3785 "expiration": 120,
3786 "value": "test"
3787 },
3788 "test": "foo_test"
3789 }
3790 ]
3791 }
3792}
3793"""
3794
3795DIMENSIONS_MIXIN_WATERFALL_OUTPUT = """\
3796{
3797 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3798 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3799 "Fake Tester": {
3800 "gtest_tests": [
3801 {
Stephen Martinisbc7b7772019-05-01 22:01:433802 "merge": {
3803 "args": [],
3804 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3805 },
Stephen Martinis11672542018-10-29 18:17:213806 "swarming": {
3807 "can_use_on_swarming_builders": true,
3808 "dimension_sets": [
3809 {
3810 "iama": "mixin",
3811 "integrity": "high"
3812 }
3813 ],
3814 "expiration": 120,
3815 "value": "test"
3816 },
3817 "test": "foo_test"
3818 }
3819 ]
3820 }
3821}
3822"""
3823
Garrett Beaty1afaccc2020-06-25 19:58:153824
3825class MixinTests(TestCase):
Stephen Martinis11672542018-10-29 18:17:213826 """Tests for the mixins feature."""
3827 def test_mixins_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153828 fbb = FakeBBGen(self.args,
3829 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213830 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413831 LUCI_MILO_CFG,
3832 mixins=SWARMING_MIXINS_SORTED)
Stephen Martinis11672542018-10-29 18:17:213833 fbb.check_input_file_consistency(verbose=True)
3834 self.assertFalse(fbb.printed_lines)
3835
Garrett Beaty1afaccc2020-06-25 19:58:153836 fbb = FakeBBGen(self.args,
3837 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213838 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413839 LUCI_MILO_CFG,
3840 mixins=SWARMING_MIXINS_UNSORTED)
Stephen Martinis11672542018-10-29 18:17:213841 with self.assertRaises(generate_buildbot_json.BBGenErr):
3842 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533843 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233844 self.assertRegex(joined_lines, '.*\+ ._mixin.*')
3845 self.assertRegex(joined_lines, '.*\- ._mixin.*')
Stephen Martinis11672542018-10-29 18:17:213846 fbb.printed_lines = []
3847 self.assertFalse(fbb.printed_lines)
3848
3849 def test_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153850 fbb = FakeBBGen(self.args,
3851 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213852 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413853 LUCI_MILO_CFG,
3854 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153855 self.create_testing_buildbot_json_file('chromium.test.json',
3856 WATERFALL_MIXIN_WATERFALL_OUTPUT)
3857 self.create_testing_buildbot_json_file('chromium.ci.json',
3858 WATERFALL_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213859 fbb.check_output_file_consistency(verbose=True)
3860 self.assertFalse(fbb.printed_lines)
3861
3862 def test_waterfall_exception_overrides(self):
Garrett Beaty1afaccc2020-06-25 19:58:153863 fbb = FakeBBGen(self.args,
3864 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213865 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413866 LUCI_MILO_CFG,
3867 exceptions=SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS,
3868 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153869 self.create_testing_buildbot_json_file(
3870 'chromium.test.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
3871 self.create_testing_buildbot_json_file(
3872 'chromium.ci.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213873 fbb.check_output_file_consistency(verbose=True)
3874 self.assertFalse(fbb.printed_lines)
3875
3876 def test_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:153877 fbb = FakeBBGen(self.args,
3878 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213879 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413880 LUCI_MILO_CFG,
3881 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153882 self.create_testing_buildbot_json_file('chromium.test.json',
3883 BUILDER_MIXIN_WATERFALL_OUTPUT)
3884 self.create_testing_buildbot_json_file('chromium.ci.json',
3885 BUILDER_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213886 fbb.check_output_file_consistency(verbose=True)
3887 self.assertFalse(fbb.printed_lines)
3888
3889 def test_builder_non_swarming(self):
Garrett Beaty1afaccc2020-06-25 19:58:153890 fbb = FakeBBGen(self.args,
3891 FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213892 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413893 LUCI_MILO_CFG,
3894 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153895 self.create_testing_buildbot_json_file(
3896 'chromium.test.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
3897 self.create_testing_buildbot_json_file(
3898 'chromium.ci.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213899 fbb.check_output_file_consistency(verbose=True)
3900 self.assertFalse(fbb.printed_lines)
3901
3902 def test_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153903 fbb = FakeBBGen(self.args,
3904 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213905 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413906 LUCI_MILO_CFG,
3907 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153908 self.create_testing_buildbot_json_file('chromium.test.json',
3909 TEST_MIXIN_WATERFALL_OUTPUT)
3910 self.create_testing_buildbot_json_file('chromium.ci.json',
3911 TEST_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213912 fbb.check_output_file_consistency(verbose=True)
3913 self.assertFalse(fbb.printed_lines)
3914
3915 def test_dimension(self):
Garrett Beaty1afaccc2020-06-25 19:58:153916 fbb = FakeBBGen(self.args,
3917 FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213918 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413919 LUCI_MILO_CFG,
3920 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153921 self.create_testing_buildbot_json_file('chromium.test.json',
3922 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3923 self.create_testing_buildbot_json_file('chromium.ci.json',
3924 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213925 fbb.check_output_file_consistency(verbose=True)
3926 self.assertFalse(fbb.printed_lines)
3927
3928 def test_dimension_gpu(self):
Garrett Beaty1afaccc2020-06-25 19:58:153929 fbb = FakeBBGen(self.args,
3930 FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213931 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413932 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193933 mixins=SWARMING_MIXINS,
3934 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153935 self.create_testing_buildbot_json_file('chromium.test.json',
3936 GPU_DIMENSIONS_WATERFALL_OUTPUT)
3937 self.create_testing_buildbot_json_file('chromium.ci.json',
3938 GPU_DIMENSIONS_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213939 fbb.check_output_file_consistency(verbose=True)
3940 self.assertFalse(fbb.printed_lines)
3941
3942 def test_unreferenced(self):
Garrett Beaty1afaccc2020-06-25 19:58:153943 fbb = FakeBBGen(self.args,
3944 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213945 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413946 LUCI_MILO_CFG,
3947 mixins=SWARMING_MIXINS)
Jamie Madillcf4f8c72021-05-20 19:24:233948 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3949 '.*mixins are unreferenced.*'):
Stephen Martinis11672542018-10-29 18:17:213950 fbb.check_input_file_consistency(verbose=True)
3951 self.assertFalse(fbb.printed_lines)
3952
Stephen Martinis11672542018-10-29 18:17:213953 def test_unused(self):
Garrett Beaty1afaccc2020-06-25 19:58:153954 fbb = FakeBBGen(self.args,
3955 FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213956 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413957 LUCI_MILO_CFG,
3958 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153959 self.create_testing_buildbot_json_file('chromium.test.json',
3960 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3961 self.create_testing_buildbot_json_file('chromium.ci.json',
3962 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213963 with self.assertRaises(generate_buildbot_json.BBGenErr):
3964 fbb.check_output_file_consistency(verbose=True)
3965 self.assertFalse(fbb.printed_lines)
3966
3967 def test_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153968 fbb = FakeBBGen(self.args,
3969 FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213970 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413971 LUCI_MILO_CFG,
3972 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153973 self.create_testing_buildbot_json_file('chromium.test.json',
3974 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3975 self.create_testing_buildbot_json_file('chromium.ci.json',
3976 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213977 with self.assertRaises(generate_buildbot_json.BBGenErr):
3978 fbb.check_output_file_consistency(verbose=True)
3979 self.assertFalse(fbb.printed_lines)
3980
3981
3982 def test_no_duplicate_keys(self):
Garrett Beaty1afaccc2020-06-25 19:58:153983 fbb = FakeBBGen(self.args,
3984 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203985 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413986 LUCI_MILO_CFG,
3987 mixins=SWARMING_MIXINS_DUPLICATED)
Jamie Madillcf4f8c72021-05-20 19:24:233988 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:203989 generate_buildbot_json.BBGenErr,
Stephen Martinisb72f6d22018-10-04 23:29:013990 'The following files have invalid keys: mixins.pyl'):
Stephen Martinis54d64ad2018-09-21 22:16:203991 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533992 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233993 self.assertRegex(joined_lines, '.*\- builder_mixin')
Stephen Martinis5bef0fc2020-01-06 22:47:533994 fbb.printed_lines = []
3995 self.assertFalse(fbb.printed_lines)
3996
3997 def test_no_duplicate_keys_basic_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153998 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE_NOT_SORTED,
Stephen Martinis5bef0fc2020-01-06 22:47:533999 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:234000 with self.assertRaisesRegex(
Stephen Martinis5bef0fc2020-01-06 22:47:534001 generate_buildbot_json.BBGenErr,
4002 'The following files have invalid keys: test_suites.pyl'):
4003 fbb.check_input_file_consistency(verbose=True)
4004 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:234005 self.assertRegex(joined_lines, '.*\- a_test')
4006 self.assertRegex(joined_lines, '.*\+ a_test')
Stephen Martinis54d64ad2018-09-21 22:16:204007 fbb.printed_lines = []
4008 self.assertFalse(fbb.printed_lines)
4009
4010 def test_type_assert_printing_help(self):
Garrett Beaty1afaccc2020-06-25 19:58:154011 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, TEST_SUITES_SYNTAX_ERROR,
Stephen Martinis54d64ad2018-09-21 22:16:204012 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:234013 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4014 'Invalid \.pyl file \'test_suites.pyl\'.*'):
Stephen Martinis54d64ad2018-09-21 22:16:204015 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:234016 self.assertEqual(fbb.printed_lines, [
4017 '== test_suites.pyl ==',
4018 '<snip>',
4019 '1 {',
4020 "2 'basic_suites': {",
4021 '--------------------------------------------------------------------'
4022 '------------',
4023 '3 3: {',
4024 '-------^------------------------------------------------------------'
4025 '------------',
4026 "4 'suite_c': {},",
4027 '5 },',
4028 '<snip>',
4029 ])
Stephen Martinis54d64ad2018-09-21 22:16:204030
Wezc0e835b702018-10-30 00:38:414031 def test_mixin_append_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:154032 fbb = FakeBBGen(self.args,
4033 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414034 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414035 LUCI_MILO_CFG,
4036 mixins=SWARMING_MIXINS_APPEND)
Garrett Beaty1afaccc2020-06-25 19:58:154037 self.create_testing_buildbot_json_file(
4038 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
4039 self.create_testing_buildbot_json_file(
4040 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
Wezc0e835b702018-10-30 00:38:414041 fbb.check_output_file_consistency(verbose=True)
4042 self.assertFalse(fbb.printed_lines)
4043
Austin Eng148d9f0f2022-02-08 19:18:534044 def test_mixin_append_linux_args(self):
4045 fbb = FakeBBGen(self.args,
4046 FOO_LINUX_GTESTS_BUILDER_MIXIN_WATERFALL,
4047 FOO_TEST_SUITE_WITH_ARGS,
4048 LUCI_MILO_CFG,
4049 mixins=SWARMING_MIXINS_APPEND)
4050 self.create_testing_buildbot_json_file(
4051 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT)
4052 self.create_testing_buildbot_json_file(
4053 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_LINUX_WATERFALL_OUTPUT)
4054 fbb.check_output_file_consistency(verbose=True)
4055 self.assertFalse(fbb.printed_lines)
4056
Zhaoyang Li473dd0ae2021-05-10 18:28:284057 def test_mixin_append_swarming_named_caches(self):
4058 fbb = FakeBBGen(self.args,
4059 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
4060 FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES,
4061 LUCI_MILO_CFG,
4062 mixins=SWARMING_MIXINS_APPEND_NAMED_CACHES)
4063 self.create_testing_buildbot_json_file(
4064 'chromium.test.json',
4065 BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
4066 self.create_testing_buildbot_json_file(
4067 'chromium.ci.json', BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
4068 fbb.check_output_file_consistency(verbose=True)
4069 self.assertFalse(fbb.printed_lines)
4070
4071 def test_mixin_append_swarming_error(self):
4072 fbb = FakeBBGen(self.args,
4073 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
4074 FOO_TEST_SUITE_WITH_ARGS,
4075 LUCI_MILO_CFG,
4076 mixins=SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES)
Jamie Madillcf4f8c72021-05-20 19:24:234077 with self.assertRaisesRegex(
Zhaoyang Li473dd0ae2021-05-10 18:28:284078 generate_buildbot_json.BBGenErr,
4079 'Only named_caches is supported under swarming key in '
4080 '\$mixin_append, but there are: \[\'named_caches\', \'other_key\'\]'):
4081 fbb.check_output_file_consistency(verbose=True)
4082 self.assertFalse(fbb.printed_lines)
4083
Wezc0e835b702018-10-30 00:38:414084 def test_mixin_append_mixin_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:154085 fbb = FakeBBGen(self.args,
4086 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414087 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414088 LUCI_MILO_CFG,
4089 mixins=SWARMING_MIXINS_APPEND_NOT_LIST)
Jamie Madillcf4f8c72021-05-20 19:24:234090 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4091 'Key "args" in \$mixin_append must be a list.'):
Wezc0e835b702018-10-30 00:38:414092 fbb.check_output_file_consistency(verbose=True)
4093 self.assertFalse(fbb.printed_lines)
4094
4095 def test_mixin_append_test_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:154096 fbb = FakeBBGen(self.args,
4097 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:414098 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414099 LUCI_MILO_CFG,
4100 mixins=SWARMING_MIXINS_APPEND_TO_SWARMING)
Jamie Madillcf4f8c72021-05-20 19:24:234101 with self.assertRaisesRegex(
Wezc0e835b702018-10-30 00:38:414102 generate_buildbot_json.BBGenErr,
4103 'Cannot apply \$mixin_append to non-list "swarming".'):
4104 fbb.check_output_file_consistency(verbose=True)
4105 self.assertFalse(fbb.printed_lines)
Stephen Martinis54d64ad2018-09-21 22:16:204106
Brian Sheedy7658c982020-01-08 02:27:584107 def test_remove_mixin_builder_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:154108 fbb = FakeBBGen(self.args,
4109 FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584110 FOO_TEST_SUITE,
4111 LUCI_MILO_CFG,
4112 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154113 self.create_testing_buildbot_json_file(
4114 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4115 self.create_testing_buildbot_json_file(
4116 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584117 fbb.check_output_file_consistency(verbose=True)
4118 self.assertFalse(fbb.printed_lines)
4119
4120 def test_remove_mixin_test_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:154121 fbb = FakeBBGen(self.args,
4122 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584123 FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN,
4124 LUCI_MILO_CFG,
4125 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154126 self.create_testing_buildbot_json_file(
4127 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4128 self.create_testing_buildbot_json_file(
4129 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584130 fbb.check_output_file_consistency(verbose=True)
4131 self.assertFalse(fbb.printed_lines)
4132
4133 def test_remove_mixin_test_remove_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:154134 fbb = FakeBBGen(self.args,
4135 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:584136 FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN,
4137 LUCI_MILO_CFG,
4138 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:154139 self.create_testing_buildbot_json_file(
4140 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
4141 self.create_testing_buildbot_json_file(
4142 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:584143 fbb.check_output_file_consistency(verbose=True)
4144 self.assertFalse(fbb.printed_lines)
4145
Brian Sheedycae63b22020-06-10 22:52:114146 def test_dimension_sets_application(self):
Garrett Beaty1afaccc2020-06-25 19:58:154147 fbb = FakeBBGen(self.args,
4148 FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL,
Brian Sheedycae63b22020-06-10 22:52:114149 FOO_TEST_SUITE_NO_DIMENSIONS,
4150 LUCI_MILO_CFG,
4151 mixins=SWARMING_MIXINS_DIMENSION_SETS)
Garrett Beaty1afaccc2020-06-25 19:58:154152 self.create_testing_buildbot_json_file(
4153 'chromium.test.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
4154 self.create_testing_buildbot_json_file(
4155 'chromium.ci.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
Brian Sheedycae63b22020-06-10 22:52:114156 fbb.check_output_file_consistency(verbose=True)
4157 self.assertFalse(fbb.printed_lines)
4158
Karen Qiane24b7ee2019-02-12 23:37:064159TEST_SUITE_WITH_PARAMS = """\
4160{
4161 'basic_suites': {
4162 'bar_tests': {
4163 'bar_test': {
4164 'args': ['--no-xvfb'],
4165 'swarming': {
4166 'dimension_sets': [
4167 {
4168 'device_os': 'NMF26U'
4169 }
4170 ],
4171 },
4172 'should_retry_with_patch': False,
4173 'name': 'bar_test'
4174 },
4175 'bar_test_test': {
4176 'swarming': {
4177 'dimension_sets': [
4178 {
4179 'kvm': '1'
4180 }
4181 ],
4182 'hard_timeout': 1000
4183 },
4184 'should_retry_with_patch': True
4185 }
4186 },
4187 'foo_tests': {
4188 'foo_test_empty': {},
4189 'foo_test': {
4190 'args': [
4191 '--jobs=1',
4192 '--verbose'
4193 ],
4194 'swarming': {
4195 'dimension_sets': [
4196 {
4197 'device_os': 'MMB29Q'
4198 }
4199 ],
4200 'hard_timeout': 1800
4201 }
4202 },
4203 'foo_test_test': {
4204 'swarming': {
4205 },
4206 'name': 'pls'
4207 },
4208 },
4209 },
4210 'compound_suites': {
4211 'composition_tests': [
4212 'foo_tests',
4213 'bar_tests',
4214 ],
4215 },
4216}
4217"""
4218TEST_QUERY_BOTS_OUTPUT = {
4219 "Fake Android M Tester": {
4220 "gtest_tests": [
4221 {
4222 "test": "foo_test",
Stephen Martinisbc7b7772019-05-01 22:01:434223 "merge": {
4224 "args": [],
4225 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4226 },
Karen Qiane24b7ee2019-02-12 23:37:064227 "swarming": {
4228 "can_use_on_swarming_builders": False
4229 }
4230 }
4231 ]
4232 },
4233 "Fake Android L Tester": {
4234 "gtest_tests": [
4235 {
4236 "test": "foo_test",
4237 "args": [
4238 "--gs-results-bucket=chromium-result-details",
4239 "--recover-devices"
4240 ],
Stephen Martinisbc7b7772019-05-01 22:01:434241 "merge": {
4242 "args": [],
4243 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4244 },
Karen Qiane24b7ee2019-02-12 23:37:064245 "swarming": {
4246 "cipd_packages": [
4247 {
4248 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4249 "location": "bin",
4250 "revision":
4251 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4252 }
4253 ],
4254 "dimension_sets":[
4255 {
Ben Pastenee012aea42019-05-14 22:32:284256 "device_os": "LMY41U",
4257 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224258 "device_type": "hammerhead",
4259 'os': 'Android'
Karen Qiane24b7ee2019-02-12 23:37:064260 }
4261 ],
4262 "can_use_on_swarming_builders": True
4263 }
4264 }
4265 ]
4266 },
4267 "Fake Android K Tester": {
4268 "additional_compile_targets": ["bar_test"],
4269 "gtest_tests": [
4270 {
4271 "test": "foo_test",
4272 "args": [
4273 "--gs-results-bucket=chromium-result-details",
4274 "--recover-devices"
4275 ],
Stephen Martinisbc7b7772019-05-01 22:01:434276 "merge": {
4277 "args": [],
4278 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4279 },
Karen Qiane24b7ee2019-02-12 23:37:064280 "swarming": {
4281 "cipd_packages": [
4282 {
4283 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4284 "location": "bin",
4285 "revision":
4286 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4287 }
4288 ],
4289 "dimension_sets": [
4290 {
4291 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284292 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224293 "device_type": "hammerhead",
4294 "os": "Android",
Karen Qiane24b7ee2019-02-12 23:37:064295 }
4296 ],
4297 "can_use_on_swarming_builders": True,
4298 "output_links": [
4299 {
4300 "link": ["https://luci-logdog.appspot.com/v/?s",
4301 "=android%2Fswarming%2Flogcats%2F",
4302 "${TASK_ID}%2F%2B%2Funified_logcats"],
4303 "name": "shard #${SHARD_INDEX} logcats"
4304 }
4305 ]
4306 }
4307 }
4308 ]
4309 },
4310 "Android Builder": {
4311 "additional_compile_targets": ["bar_test"]
4312 }
4313}
4314TEST_QUERY_BOTS_TESTS_OUTPUT = {
4315 "Fake Android M Tester": [
4316 {
Stephen Martinisbc7b7772019-05-01 22:01:434317 "merge": {
4318 "args": [],
4319 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4320 },
Karen Qiane24b7ee2019-02-12 23:37:064321 "test": "foo_test",
4322 "swarming": {
4323 "can_use_on_swarming_builders": False
4324 }
4325 }
4326 ],
4327 "Fake Android L Tester": [
4328 {
4329 "test": "foo_test",
4330 "args": [
4331 "--gs-results-bucket=chromium-result-details",
4332 "--recover-devices"
4333 ],
Stephen Martinisbc7b7772019-05-01 22:01:434334 "merge": {
4335 "args": [],
4336 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4337 },
Karen Qiane24b7ee2019-02-12 23:37:064338 "swarming": {
4339 "cipd_packages": [
4340 {
4341 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4342 "location": "bin",
4343 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4344 }
4345 ],
4346 "dimension_sets": [
4347 {
Ben Pastenee012aea42019-05-14 22:32:284348 "device_os": "LMY41U",
4349 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224350 "device_type": "hammerhead",
4351 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064352 }
4353 ],
4354 "can_use_on_swarming_builders": True
4355 }
4356 }
4357 ],
4358 "Android Builder": [],
4359 "Fake Android K Tester": [
4360 {
4361 "test": "foo_test",
4362 "args": [
4363 "--gs-results-bucket=chromium-result-details",
4364 "--recover-devices"
4365 ],
Stephen Martinisbc7b7772019-05-01 22:01:434366 "merge": {
4367 "args": [],
4368 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4369 },
Karen Qiane24b7ee2019-02-12 23:37:064370 "swarming": {
4371 "cipd_packages": [
4372 {
4373 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4374 "location": "bin",
4375 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4376 }
4377 ],
4378 "dimension_sets": [
4379 {
4380 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284381 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224382 "device_type": "hammerhead",
4383 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064384 }
4385 ],
4386 "can_use_on_swarming_builders": True,
4387 "output_links": [
4388 {
4389 "link": [
4390 "https://luci-logdog.appspot.com/v/?s",
4391 "=android%2Fswarming%2Flogcats%2F",
4392 "${TASK_ID}%2F%2B%2Funified_logcats"
4393 ],
4394 "name": "shard #${SHARD_INDEX} logcats"
4395 }
4396 ]
4397 }
4398 }
4399 ]
4400}
4401
4402TEST_QUERY_BOT_OUTPUT = {
4403 "additional_compile_targets": ["bar_test"],
4404 "gtest_tests": [
4405 {
Stephen Martinisbc7b7772019-05-01 22:01:434406 "test": "foo_test",
4407 "args": [
Karen Qiane24b7ee2019-02-12 23:37:064408 "--gs-results-bucket=chromium-result-details",
4409 "--recover-devices"
Stephen Martinisbc7b7772019-05-01 22:01:434410 ],
4411 "merge": {
4412 "args": [],
4413 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4414 },
4415 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064416 "cipd_packages": [
4417 {
4418 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4419 "location": "bin",
4420 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4421 }
4422 ],
4423 "dimension_sets": [
4424 {
4425 "device_os": "KTU84P",
Ben Pastened15aa8a2019-05-16 16:59:224426 "device_os_type": "userdebug",
4427 "device_type": "hammerhead",
4428 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064429 }
4430 ],
4431 "can_use_on_swarming_builders": True,
4432 "output_links": [
4433 {
4434 "link": ["https://luci-logdog.appspot.com/v/?s",
4435 "=android%2Fswarming%2Flogcats%2F",
4436 "${TASK_ID}%2F%2B%2Funified_logcats"
4437 ],
4438 "name": "shard #${SHARD_INDEX} logcats"
4439 }
4440 ]
4441 }
4442 }
4443 ]
4444}
4445TEST_QUERY_BOT_TESTS_OUTPUT = [
4446 {
4447 "test": "foo_test",
4448 "args": [
4449 "--gs-results-bucket=chromium-result-details",
4450 "--recover-devices"
4451 ],
Stephen Martinisbc7b7772019-05-01 22:01:434452 "merge": {
4453 "args": [],
4454 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4455 },
Karen Qiane24b7ee2019-02-12 23:37:064456 "swarming": {
4457 "cipd_packages": [
4458 {
4459 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4460 "location": "bin",
4461 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4462 }
4463 ],
4464 "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
4477TEST_QUERY_TESTS_OUTPUT = {
4478 "bar_test": {},
4479 "foo_test": {}
4480}
4481
4482TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT = ["foo_test"]
4483
4484TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT = ["bar_test"]
4485
4486TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT = ["bar_test_test"]
4487
4488TEST_QUERY_TESTS_PARAMS_OUTPUT = ['bar_test_test']
4489
4490TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT = ['bar_test']
4491
4492TEST_QUERY_TEST_OUTPUT = {}
4493
4494TEST_QUERY_TEST_BOTS_OUTPUT = [
Jamie Madillcf4f8c72021-05-20 19:24:234495 "Fake Android K Tester",
4496 "Fake Android L Tester",
4497 "Fake Android M Tester",
Karen Qiane24b7ee2019-02-12 23:37:064498]
4499
4500TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT = ['Fake Tester']
4501
4502TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT = []
4503
Garrett Beaty1afaccc2020-06-25 19:58:154504
4505class QueryTests(TestCase):
Karen Qiane24b7ee2019-02-12 23:37:064506 """Tests for the query feature."""
4507 def test_query_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154508 self.override_args(query='bots',
4509 check=False,
4510 pyl_files_dir=None,
4511 json=None,
4512 waterfall_filters=[])
4513 fbb = FakeBBGen(self.args,
4514 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064515 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414516 LUCI_MILO_CFG,
4517 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064518 fbb.query(fbb.args)
4519 query_json = json.loads("".join(fbb.printed_lines))
4520 self.assertEqual(query_json, TEST_QUERY_BOTS_OUTPUT)
4521
4522 def test_query_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154523 self.override_args(query='bots/blah/blah',
4524 check=False,
4525 pyl_files_dir=None,
4526 json=None,
4527 waterfall_filters=[])
4528 fbb = FakeBBGen(self.args,
4529 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064530 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414531 LUCI_MILO_CFG,
4532 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064533 with self.assertRaises(SystemExit) as cm:
4534 fbb.query(fbb.args)
4535 self.assertEqual(cm.exception.code, 1)
4536 self.assertTrue(fbb.printed_lines)
4537
4538 def test_query_bots_json(self):
Garrett Beaty1afaccc2020-06-25 19:58:154539 self.override_args(query='bots',
4540 check=False,
4541 pyl_files_dir=None,
4542 json='result.json',
4543 waterfall_filters=[])
4544 fbb = FakeBBGen(self.args,
4545 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064546 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414547 LUCI_MILO_CFG,
4548 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064549 fbb.query(fbb.args)
4550 self.assertFalse(fbb.printed_lines)
4551
4552 def test_query_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154553 self.override_args(query='bots/tests',
4554 check=False,
4555 pyl_files_dir=None,
4556 json=None,
4557 waterfall_filters=[])
4558 fbb = FakeBBGen(self.args,
4559 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064560 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414561 LUCI_MILO_CFG,
4562 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064563 fbb.query(fbb.args)
4564 query_json = json.loads("".join(fbb.printed_lines))
4565 self.assertEqual(query_json, TEST_QUERY_BOTS_TESTS_OUTPUT)
4566
4567 def test_query_invalid_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154568 self.override_args(query='bots/tdfjdk',
4569 check=False,
4570 pyl_files_dir=None,
4571 json=None,
4572 waterfall_filters=[])
4573 fbb = FakeBBGen(self.args,
4574 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064575 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414576 LUCI_MILO_CFG,
4577 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064578 with self.assertRaises(SystemExit) as cm:
4579 fbb.query(fbb.args)
4580 self.assertEqual(cm.exception.code, 1)
4581 self.assertTrue(fbb.printed_lines)
4582
4583 def test_query_bot(self):
Garrett Beaty1afaccc2020-06-25 19:58:154584 self.override_args(query='bot/Fake Android K Tester',
4585 check=False,
4586 pyl_files_dir=None,
4587 json=None,
4588 waterfall_filters=[])
4589 fbb = FakeBBGen(self.args,
4590 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064591 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414592 LUCI_MILO_CFG,
4593 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064594 fbb.query(fbb.args)
4595 query_json = json.loads("".join(fbb.printed_lines))
Garrett Beaty1afaccc2020-06-25 19:58:154596 self.maxDiff = None # pragma pylint: disable=attribute-defined-outside-init
Karen Qiane24b7ee2019-02-12 23:37:064597 self.assertEqual(query_json, TEST_QUERY_BOT_OUTPUT)
4598
4599 def test_query_bot_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154600 self.override_args(query='bot/bot1',
4601 check=False,
4602 pyl_files_dir=None,
4603 json=None,
4604 waterfall_filters=[])
4605 fbb = FakeBBGen(self.args,
4606 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064607 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414608 LUCI_MILO_CFG,
4609 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064610 with self.assertRaises(SystemExit) as cm:
4611 fbb.query(fbb.args)
4612 self.assertEqual(cm.exception.code, 1)
4613 self.assertTrue(fbb.printed_lines)
4614
4615 def test_query_bot_invalid_query_too_many(self):
Garrett Beaty1afaccc2020-06-25 19:58:154616 self.override_args(query='bot/Fake Android K Tester/blah/blah',
4617 check=False,
4618 pyl_files_dir=None,
4619 json=None,
4620 waterfall_filters=[])
4621 fbb = FakeBBGen(self.args,
4622 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064623 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414624 LUCI_MILO_CFG,
4625 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064626 with self.assertRaises(SystemExit) as cm:
4627 fbb.query(fbb.args)
4628 self.assertEqual(cm.exception.code, 1)
4629 self.assertTrue(fbb.printed_lines)
4630
4631 def test_query_bot_invalid_query_no_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154632 self.override_args(query='bot/Fake Android K Tester/blahs',
4633 check=False,
4634 pyl_files_dir=None,
4635 json=None,
4636 waterfall_filters=[])
4637 fbb = FakeBBGen(self.args,
4638 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064639 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414640 LUCI_MILO_CFG,
4641 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064642 with self.assertRaises(SystemExit) as cm:
4643 fbb.query(fbb.args)
4644 self.assertEqual(cm.exception.code, 1)
4645 self.assertTrue(fbb.printed_lines)
4646
4647 def test_query_bot_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154648 self.override_args(query='bot/Fake Android L Tester/tests',
4649 check=False,
4650 pyl_files_dir=None,
4651 json=None,
4652 waterfall_filters=[])
4653 fbb = FakeBBGen(self.args,
4654 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064655 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414656 LUCI_MILO_CFG,
4657 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064658 fbb.query(fbb.args)
4659 query_json = json.loads("".join(fbb.printed_lines))
4660 self.assertEqual(query_json, TEST_QUERY_BOT_TESTS_OUTPUT)
4661
4662 def test_query_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154663 self.override_args(query='tests',
4664 check=False,
4665 pyl_files_dir=None,
4666 json=None,
4667 waterfall_filters=[])
4668 fbb = FakeBBGen(self.args,
4669 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064670 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414671 LUCI_MILO_CFG,
4672 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064673 fbb.query(fbb.args)
4674 query_json = json.loads("".join(fbb.printed_lines))
4675 self.assertEqual(query_json, TEST_QUERY_TESTS_OUTPUT)
4676
4677 def test_query_tests_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154678 self.override_args(query='tests/blah/blah',
4679 check=False,
4680 pyl_files_dir=None,
4681 json=None,
4682 waterfall_filters=[])
4683 fbb = FakeBBGen(self.args,
4684 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064685 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414686 LUCI_MILO_CFG,
4687 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064688 with self.assertRaises(SystemExit) as cm:
4689 fbb.query(fbb.args)
4690 self.assertEqual(cm.exception.code, 1)
4691 self.assertTrue(fbb.printed_lines)
4692
4693 def test_query_tests_multiple_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154694 self.override_args(query='tests/--jobs=1&--verbose',
4695 check=False,
4696 pyl_files_dir=None,
4697 json=None,
4698 waterfall_filters=[])
4699 fbb = FakeBBGen(self.args,
4700 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064701 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414702 LUCI_MILO_CFG,
4703 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064704 fbb.query(fbb.args)
4705 query_json = json.loads("".join(fbb.printed_lines))
4706 self.assertEqual(query_json, TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT)
4707
4708 def test_query_tests_invalid_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154709 self.override_args(query='tests/device_os?',
4710 check=False,
4711 pyl_files_dir=None,
4712 json=None,
4713 waterfall_filters=[])
4714 fbb = FakeBBGen(self.args,
4715 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064716 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414717 LUCI_MILO_CFG,
4718 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064719 with self.assertRaises(SystemExit) as cm:
4720 fbb.query(fbb.args)
4721 self.assertEqual(cm.exception.code, 1)
4722 self.assertTrue(fbb.printed_lines)
4723
4724 def test_query_tests_dimension_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154725 self.override_args(query='tests/device_os:NMF26U',
4726 check=False,
4727 pyl_files_dir=None,
4728 json=None,
4729 waterfall_filters=[])
4730 fbb = FakeBBGen(self.args,
4731 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064732 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414733 LUCI_MILO_CFG,
4734 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064735 fbb.query(fbb.args)
4736 query_json = json.loads("".join(fbb.printed_lines))
4737 self.assertEqual(query_json, TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT)
4738
4739 def test_query_tests_swarming_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154740 self.override_args(query='tests/hard_timeout:1000',
4741 check=False,
4742 pyl_files_dir=None,
4743 json=None,
4744 waterfall_filters=[])
4745 fbb = FakeBBGen(self.args,
4746 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064747 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414748 LUCI_MILO_CFG,
4749 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064750 fbb.query(fbb.args)
4751 query_json = json.loads("".join(fbb.printed_lines))
4752 self.assertEqual(query_json, TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT)
4753
4754 def test_query_tests_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154755 self.override_args(query='tests/should_retry_with_patch:true',
4756 check=False,
4757 pyl_files_dir=None,
4758 json=None,
4759 waterfall_filters=[])
4760 fbb = FakeBBGen(self.args,
4761 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064762 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414763 LUCI_MILO_CFG,
4764 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064765 fbb.query(fbb.args)
4766 query_json = json.loads("".join(fbb.printed_lines))
4767 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_OUTPUT)
4768
4769 def test_query_tests_params_false(self):
Garrett Beaty1afaccc2020-06-25 19:58:154770 self.override_args(query='tests/should_retry_with_patch:false',
4771 check=False,
4772 pyl_files_dir=None,
4773 json=None,
4774 waterfall_filters=[])
4775 fbb = FakeBBGen(self.args,
4776 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064777 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414778 LUCI_MILO_CFG,
4779 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064780 fbb.query(fbb.args)
4781 query_json = json.loads("".join(fbb.printed_lines))
4782 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT)
4783
4784 def test_query_test(self):
Garrett Beaty1afaccc2020-06-25 19:58:154785 self.override_args(query='test/foo_test',
4786 check=False,
4787 pyl_files_dir=None,
4788 json=None,
4789 waterfall_filters=[])
4790 fbb = FakeBBGen(self.args,
4791 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064792 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414793 LUCI_MILO_CFG,
4794 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064795 fbb.query(fbb.args)
4796 query_json = json.loads("".join(fbb.printed_lines))
4797 self.assertEqual(query_json, TEST_QUERY_TEST_OUTPUT)
4798
4799 def test_query_test_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154800 self.override_args(query='test/foo_foo',
4801 check=False,
4802 pyl_files_dir=None,
4803 json=None,
4804 waterfall_filters=[])
4805 fbb = FakeBBGen(self.args,
4806 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064807 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414808 LUCI_MILO_CFG,
4809 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064810 with self.assertRaises(SystemExit) as cm:
4811 fbb.query(fbb.args)
4812 self.assertEqual(cm.exception.code, 1)
4813 self.assertTrue(fbb.printed_lines)
4814
4815 def test_query_test_invalid_length(self):
Garrett Beaty1afaccc2020-06-25 19:58:154816 self.override_args(query='test/foo_tests/foo/foo',
4817 check=False,
4818 pyl_files_dir=None,
4819 json=None,
4820 waterfall_filters=[])
4821 fbb = FakeBBGen(self.args,
4822 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064823 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414824 LUCI_MILO_CFG,
4825 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064826 with self.assertRaises(SystemExit) as cm:
4827 fbb.query(fbb.args)
4828 self.assertEqual(cm.exception.code, 1)
4829 self.assertTrue(fbb.printed_lines)
4830
4831 def test_query_test_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154832 self.override_args(query='test/foo_test/bots',
4833 check=False,
4834 pyl_files_dir=None,
4835 json=None,
4836 waterfall_filters=[])
4837 fbb = FakeBBGen(self.args,
4838 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064839 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414840 LUCI_MILO_CFG,
4841 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064842 fbb.query(fbb.args)
4843 query_json = json.loads("".join(fbb.printed_lines))
4844 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_OUTPUT)
4845
4846 def test_query_test_bots_isolated_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:154847 self.override_args(query='test/foo_test/bots',
4848 check=False,
4849 pyl_files_dir=None,
4850 json=None,
4851 waterfall_filters=[])
4852 fbb = FakeBBGen(self.args,
4853 FOO_ISOLATED_SCRIPTS_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064854 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414855 LUCI_MILO_CFG,
4856 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064857 fbb.query(fbb.args)
4858 query_json = json.loads("".join(fbb.printed_lines))
4859 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT)
4860
4861 def test_query_test_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154862 self.override_args(query='test/foo_tests/foo',
4863 check=False,
4864 pyl_files_dir=None,
4865 json=None,
4866 waterfall_filters=[])
4867 fbb = FakeBBGen(self.args,
4868 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064869 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414870 LUCI_MILO_CFG,
4871 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064872 with self.assertRaises(SystemExit) as cm:
4873 fbb.query(fbb.args)
4874 self.assertEqual(cm.exception.code, 1)
4875 self.assertTrue(fbb.printed_lines)
4876
4877 def test_query_test_bots_no_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154878 self.override_args(query='test/bar_tests/bots',
4879 check=False,
4880 pyl_files_dir=None,
4881 json=None,
4882 waterfall_filters=[])
4883 fbb = FakeBBGen(self.args,
4884 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064885 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414886 LUCI_MILO_CFG,
4887 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064888 fbb.query(fbb.args)
4889 query_json = json.loads("".join(fbb.printed_lines))
4890 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT)
4891
4892 def test_query_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154893 self.override_args(query='foo',
4894 check=False,
4895 pyl_files_dir=None,
4896 json=None,
4897 waterfall_filters=[])
4898 fbb = FakeBBGen(self.args,
4899 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064900 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414901 LUCI_MILO_CFG,
4902 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064903 with self.assertRaises(SystemExit) as cm:
4904 fbb.query(fbb.args)
4905 self.assertEqual(cm.exception.code, 1)
4906 self.assertTrue(fbb.printed_lines)
4907
Brian Sheedye6ea0ee2019-07-11 02:54:374908
4909FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES = """\
4910{
4911 'basic_suites': {
4912 'foo_tests': {
4913 'foo_test': {
4914 'args': [
4915 '--enable-features',
4916 'Foo,Bar',
4917 ],
4918 },
4919 },
4920 },
4921}
4922"""
4923
4924
4925FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE = """\
4926{
4927 'foo_test': {
4928 'replacements': {
4929 'Fake Tester': {
4930 'args': {
4931 '--c_arg': None,
4932 },
4933 },
4934 },
4935 },
4936}
4937"""
4938
4939
4940FOO_TEST_REPLACEMENTS_REMOVE_VALUE = """\
4941{
4942 'foo_test': {
4943 'replacements': {
4944 'Fake Tester': {
4945 'args': {
4946 '--enable-features': None,
4947 },
4948 },
4949 },
4950 },
4951}
4952"""
4953
4954
4955FOO_TEST_REPLACEMENTS_REPLACE_VALUE = """\
4956{
4957 'foo_test': {
4958 'replacements': {
4959 'Fake Tester': {
4960 'args': {
4961 '--enable-features': 'Bar,Baz',
4962 },
4963 },
4964 },
4965 },
4966}
4967"""
4968
4969
4970FOO_TEST_REPLACEMENTS_INVALID_KEY = """\
4971{
4972 'foo_test': {
4973 'replacements': {
4974 'Fake Tester': {
4975 'invalid': {
4976 '--enable-features': 'Bar,Baz',
4977 },
4978 },
4979 },
4980 },
4981}
4982"""
4983
4984
4985REPLACEMENTS_REMOVE_OUTPUT = """\
4986{
4987 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4988 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4989 "Fake Tester": {
4990 "gtest_tests": [
4991 {
4992 "args": [],
4993 "merge": {
4994 "args": [],
4995 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4996 },
4997 "swarming": {
4998 "can_use_on_swarming_builders": true,
4999 "dimension_sets": [
5000 {
5001 "kvm": "1"
5002 }
5003 ]
5004 },
5005 "test": "foo_test"
5006 }
5007 ]
5008 }
5009}
5010"""
5011
5012REPLACEMENTS_VALUE_OUTPUT = """\
5013{
5014 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5015 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5016 "Fake Tester": {
5017 "gtest_tests": [
5018 {
5019 "args": [
5020 "--enable-features=Bar,Baz"
5021 ],
5022 "merge": {
5023 "args": [],
5024 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5025 },
5026 "swarming": {
5027 "can_use_on_swarming_builders": true,
5028 "dimension_sets": [
5029 {
5030 "kvm": "1"
5031 }
5032 ]
5033 },
5034 "test": "foo_test"
5035 }
5036 ]
5037 }
5038}
5039"""
5040
5041REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT = """\
5042{
5043 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5044 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5045 "Fake Tester": {
5046 "gtest_tests": [
5047 {
5048 "args": [
5049 "--enable-features",
5050 "Bar,Baz"
5051 ],
5052 "merge": {
5053 "args": [],
5054 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5055 },
5056 "swarming": {
5057 "can_use_on_swarming_builders": true,
5058 "dimension_sets": [
5059 {
5060 "kvm": "1"
5061 }
5062 ]
5063 },
5064 "test": "foo_test"
5065 }
5066 ]
5067 }
5068}
5069"""
5070
5071
Garrett Beaty1afaccc2020-06-25 19:58:155072class ReplacementTests(TestCase):
Brian Sheedye6ea0ee2019-07-11 02:54:375073 """Tests for the arg replacement feature."""
5074 def test_replacement_valid_remove_no_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155075 fbb = FakeBBGen(self.args,
5076 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375077 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:415078 LUCI_MILO_CFG,
5079 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155080 self.create_testing_buildbot_json_file('chromium.test.json',
5081 REPLACEMENTS_REMOVE_OUTPUT)
5082 self.create_testing_buildbot_json_file('chromium.ci.json',
5083 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375084 fbb.check_output_file_consistency(verbose=True)
5085 self.assertFalse(fbb.printed_lines)
5086
5087 def test_replacement_valid_remove_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155088 fbb = FakeBBGen(self.args,
5089 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375090 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:415091 LUCI_MILO_CFG,
5092 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155093 self.create_testing_buildbot_json_file('chromium.test.json',
5094 REPLACEMENTS_REMOVE_OUTPUT)
5095 self.create_testing_buildbot_json_file('chromium.ci.json',
5096 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375097 fbb.check_output_file_consistency(verbose=True)
5098 self.assertFalse(fbb.printed_lines)
5099
5100 def test_replacement_valid_replace_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:155101 fbb = FakeBBGen(self.args,
5102 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375103 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:415104 LUCI_MILO_CFG,
5105 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155106 self.create_testing_buildbot_json_file('chromium.test.json',
5107 REPLACEMENTS_VALUE_OUTPUT)
5108 self.create_testing_buildbot_json_file('chromium.ci.json',
5109 REPLACEMENTS_VALUE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375110 fbb.check_output_file_consistency(verbose=True)
5111 self.assertFalse(fbb.printed_lines)
5112
5113 def test_replacement_valid_replace_value_separate_entries(self):
Garrett Beaty1afaccc2020-06-25 19:58:155114 fbb = FakeBBGen(self.args,
5115 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375116 FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES,
Nodir Turakulovfce34292019-12-18 17:05:415117 LUCI_MILO_CFG,
5118 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:155119 self.create_testing_buildbot_json_file(
5120 'chromium.test.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
5121 self.create_testing_buildbot_json_file(
5122 'chromium.ci.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:375123 fbb.check_output_file_consistency(verbose=True)
5124 self.assertFalse(fbb.printed_lines)
5125
5126 def test_replacement_invalid_key_not_valid(self):
Garrett Beaty1afaccc2020-06-25 19:58:155127 fbb = FakeBBGen(self.args,
5128 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375129 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:415130 LUCI_MILO_CFG,
5131 exceptions=FOO_TEST_REPLACEMENTS_INVALID_KEY)
Jamie Madillcf4f8c72021-05-20 19:24:235132 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5133 'Given replacement key *'):
Brian Sheedye6ea0ee2019-07-11 02:54:375134 fbb.check_output_file_consistency(verbose=True)
5135
5136 def test_replacement_invalid_key_not_found(self):
Garrett Beaty1afaccc2020-06-25 19:58:155137 fbb = FakeBBGen(self.args,
5138 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:375139 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:415140 LUCI_MILO_CFG,
5141 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Jamie Madillcf4f8c72021-05-20 19:24:235142 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5143 'Could not find *'):
Brian Sheedye6ea0ee2019-07-11 02:54:375144 fbb.check_output_file_consistency(verbose=True)
5145
Jeff Yoon8154e582019-12-03 23:30:015146
Brian Sheedya31578e2020-05-18 20:24:365147FOO_TEST_SUITE_WITH_MAGIC_ARGS = """\
5148{
5149 'basic_suites': {
5150 'foo_tests': {
5151 'foo_test': {
5152 'args': [
5153 '$$MAGIC_SUBSTITUTION_TestOnlySubstitution',
5154 ],
5155 },
5156 },
5157 },
5158}
5159"""
5160
5161
5162FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS = """\
5163{
5164 'basic_suites': {
5165 'foo_tests': {
5166 'foo_test': {
5167 'args': [
5168 '$$MAGIC_SUBSTITUTION_NotARealSubstitution',
5169 ],
5170 },
5171 },
5172 },
5173}
5174"""
5175
5176
5177MAGIC_SUBSTITUTIONS_OUTPUT = """\
5178{
5179 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5180 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5181 "Fake Tester": {
5182 "gtest_tests": [
5183 {
5184 "args": [
5185 "--magic-substitution-success"
5186 ],
5187 "merge": {
5188 "args": [],
5189 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5190 },
5191 "swarming": {
5192 "can_use_on_swarming_builders": true,
5193 "dimension_sets": [
5194 {
5195 "kvm": "1"
5196 }
5197 ]
5198 },
5199 "test": "foo_test"
5200 }
5201 ]
5202 }
5203}
5204"""
5205
5206
Garrett Beaty1afaccc2020-06-25 19:58:155207class MagicSubstitutionTests(TestCase):
Brian Sheedya31578e2020-05-18 20:24:365208 """Tests for the magic substitution feature."""
5209 def test_valid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155210 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5211 FOO_TEST_SUITE_WITH_MAGIC_ARGS, LUCI_MILO_CFG)
5212 self.create_testing_buildbot_json_file('chromium.test.json',
5213 MAGIC_SUBSTITUTIONS_OUTPUT)
5214 self.create_testing_buildbot_json_file('chromium.ci.json',
5215 MAGIC_SUBSTITUTIONS_OUTPUT)
Brian Sheedya31578e2020-05-18 20:24:365216 fbb.check_output_file_consistency(verbose=True)
5217 self.assertFalse(fbb.printed_lines)
5218
5219 def test_invalid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155220 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5221 FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:235222 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5223 'Magic substitution function *'):
Brian Sheedya31578e2020-05-18 20:24:365224 fbb.check_output_file_consistency(verbose=True)
5225
5226
Jeff Yoon8154e582019-12-03 23:30:015227# Matrix compound composition test suites
5228
5229MATRIX_COMPOUND_EMPTY = """\
5230{
5231 'basic_suites': {
5232 'bar_tests': {
5233 'bar_test': {},
5234 },
5235 'foo_tests': {
5236 'foo_test': {},
5237 },
5238 },
5239 'matrix_compound_suites': {
5240 'matrix_tests': {
5241 'foo_tests': {},
5242 'bar_tests': {},
5243 },
5244 },
5245}
5246"""
5247
Jeff Yoon67c3e832020-02-08 07:39:385248MATRIX_COMPOUND_MISSING_IDENTIFIER = """\
Jeff Yoon8154e582019-12-03 23:30:015249{
5250 'basic_suites': {
5251 'foo_tests': {
5252 'foo_test': {},
5253 },
5254 },
5255 'matrix_compound_suites': {
5256 'matrix_tests': {
5257 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385258 'variants': [
5259 {
5260 'swarming': {
5261 'dimension_sets': [
5262 {
5263 'foo': 'bar',
5264 },
5265 ],
Jeff Yoon8154e582019-12-03 23:30:015266 },
Jeff Yoon67c3e832020-02-08 07:39:385267 },
5268 ],
Jeff Yoon8154e582019-12-03 23:30:015269 },
5270 },
5271 },
5272}
5273"""
5274
5275MATRIX_MISMATCHED_SWARMING_LENGTH = """\
5276{
5277 'basic_suites': {
5278 'foo_tests': {
5279 'foo_test': {
5280 'swarming': {
5281 'dimension_sets': [
5282 {
5283 'hello': 'world',
5284 }
5285 ],
5286 },
5287 },
5288 },
5289 },
5290 'matrix_compound_suites': {
5291 'matrix_tests': {
5292 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385293 'variants': [
5294 {
5295 'identifier': 'test',
5296 'swarming': {
5297 'dimension_sets': [
5298 {
5299 'foo': 'bar',
5300 },
5301 {
5302 'bar': 'foo',
5303 }
5304 ],
Jeff Yoon8154e582019-12-03 23:30:015305 },
Jeff Yoon67c3e832020-02-08 07:39:385306 },
5307 ],
Jeff Yoon8154e582019-12-03 23:30:015308 },
5309 },
5310 },
5311}
5312"""
5313
5314MATRIX_REF_NONEXISTENT = """\
5315{
5316 'basic_suites': {
5317 'foo_tests': {
5318 'foo_test': {},
5319 },
5320 },
5321 'matrix_compound_suites': {
5322 'matrix_tests': {
5323 'bar_test': {},
5324 },
5325 },
5326}
5327"""
5328
Jeff Yoon67c3e832020-02-08 07:39:385329MATRIX_COMPOUND_REF_COMPOSITION = """\
Jeff Yoon8154e582019-12-03 23:30:015330{
5331 'basic_suites': {
5332 'foo_tests': {
5333 'foo_test': {},
5334 },
5335 },
5336 'compound_suites': {
5337 'sample_composition': {
5338 'foo_tests': {},
5339 },
5340 },
5341 'matrix_compound_suites': {
5342 'matrix_tests': {
5343 'sample_composition': {},
5344 },
5345 },
5346}
5347"""
5348
5349MATRIX_COMPOSITION_REF_MATRIX = """\
5350{
5351 'basic_suites': {
5352 'foo_tests': {
5353 'foo_test': {},
5354 },
5355 },
5356 'matrix_compound_suites': {
5357 'a_test': {
5358 'foo_tests': {},
5359 },
5360 'matrix_tests': {
5361 'a_test': {},
5362 },
5363 },
5364}
5365"""
5366
Jeff Yoon67c3e832020-02-08 07:39:385367MATRIX_COMPOUND_VARIANTS_MIXINS_MERGE = """\
5368{
5369 'basic_suites': {
5370 'foo_tests': {
5371 'set': {
5372 'mixins': [ 'test_mixin' ],
5373 },
5374 },
5375 },
5376 'matrix_compound_suites': {
5377 'matrix_tests': {
5378 'foo_tests': {
5379 'variants': [
5380 {
5381 'mixins': [ 'dimension_mixin' ],
5382 },
5383 ],
5384 },
5385 },
5386 },
5387}
5388"""
5389
5390MATRIX_COMPOUND_VARIANTS_MIXINS = """\
5391{
5392 'basic_suites': {
5393 'foo_tests': {
5394 'set': {
5395 'mixins': [ 'test_mixin' ],
5396 },
5397 },
5398 },
5399 'matrix_compound_suites': {
5400 'matrix_tests': {
5401 'foo_tests': {
5402 'variants': [
5403 {
5404 'mixins': [
5405 'dimension_mixin',
5406 'waterfall_mixin',
5407 'builder_mixin',
5408 'random_mixin'
5409 ],
5410 },
5411 ],
5412 },
5413 },
5414 },
5415}
5416"""
5417
5418MATRIX_COMPOUND_VARIANTS_MIXINS_REMOVE = """\
5419{
5420 'basic_suites': {
5421 'foo_tests': {
5422 'set': {
5423 'remove_mixins': ['builder_mixin'],
5424 },
5425 },
5426 },
5427 'matrix_compound_suites': {
5428 'matrix_tests': {
5429 'foo_tests': {
5430 'variants': [
5431 {
5432 'mixins': [ 'builder_mixin' ],
5433 }
5434 ],
5435 },
5436 },
5437 },
5438}
5439"""
5440
5441MATRIX_COMPOUND_CONFLICTING_TEST_SUITES = """\
5442{
5443 'basic_suites': {
5444 'bar_tests': {
5445 'baz_tests': {
5446 'args': [
5447 '--bar',
5448 ],
5449 }
5450 },
5451 'foo_tests': {
5452 'baz_tests': {
5453 'args': [
5454 '--foo',
5455 ],
5456 }
5457 },
5458 },
5459 'matrix_compound_suites': {
5460 'matrix_tests': {
5461 'bar_tests': {
5462 'variants': [
5463 {
5464 'identifier': 'bar',
5465 }
5466 ],
5467 },
5468 'foo_tests': {
5469 'variants': [
5470 {
5471 'identifier': 'foo'
5472 }
5473 ]
5474 }
5475 },
5476 },
5477}
5478"""
5479
5480MATRIX_COMPOUND_TARGETS_ARGS = """\
5481{
5482 'basic_suites': {
5483 'foo_tests': {
5484 'args_test': {
5485 'args': [
5486 '--iam'
5487 ],
5488 },
5489 }
5490 },
5491 'matrix_compound_suites': {
5492 'matrix_tests': {
5493 'foo_tests': {
5494 'variants': [
5495 {
5496 'identifier': 'args',
5497 'args': [
5498 '--anarg',
5499 ],
5500 },
5501 {
5502 'identifier': 'swarming',
5503 'swarming': {
5504 'a': 'b',
5505 'dimension_sets': [
5506 {
5507 'hello': 'world',
5508 }
5509 ]
5510 }
5511 },
5512 {
5513 'identifier': 'mixins',
5514 'mixins': [ 'dimension_mixin' ],
5515 }
5516 ],
5517 },
5518 },
5519 },
5520}
5521"""
5522
5523MATRIX_COMPOUND_TARGETS_MIXINS = """\
5524{
5525 'basic_suites': {
5526 'foo_tests': {
5527 'mixins_test': {
5528 'mixins': [ 'test_mixin' ],
5529 },
5530 }
5531 },
5532 'matrix_compound_suites': {
5533 'matrix_tests': {
5534 'foo_tests': {
Jeff Yoon85fb8df2020-08-20 16:47:435535 'mixins': [ 'random_mixin' ],
Jeff Yoon67c3e832020-02-08 07:39:385536 'variants': [
5537 {
5538 'identifier': 'args',
5539 'args': [
5540 '--anarg',
5541 ],
5542 },
5543 {
5544 'identifier': 'swarming',
5545 'swarming': {
5546 'a': 'b',
5547 'dimension_sets': [
5548 {
5549 'hello': 'world',
5550 }
5551 ]
5552 }
5553 },
5554 {
5555 'identifier': 'mixins',
5556 'mixins': [ 'dimension_mixin' ],
5557 }
5558 ],
5559 },
5560 },
5561 },
5562}
5563"""
5564
5565MATRIX_COMPOUND_TARGETS_SWARMING = """\
5566{
5567 'basic_suites': {
5568 'foo_tests': {
5569 'swarming_test': {
5570 'swarming': {
5571 'foo': 'bar',
5572 'dimension_sets': [
5573 {
5574 'foo': 'bar',
5575 },
5576 ],
5577 },
5578 },
5579 }
5580 },
5581 'matrix_compound_suites': {
5582 'matrix_tests': {
5583 'foo_tests': {
5584 'variants': [
5585 {
5586 'identifier': 'args',
5587 'args': [
5588 '--anarg',
5589 ],
5590 },
5591 {
5592 'identifier': 'swarming',
5593 'swarming': {
5594 'a': 'b',
5595 'dimension_sets': [
5596 {
5597 'hello': 'world',
5598 }
5599 ]
5600 }
5601 },
5602 {
5603 'identifier': 'mixins',
5604 'mixins': [ 'dimension_mixin' ],
5605 }
5606 ],
5607 },
5608 },
5609 },
5610}
5611"""
Jeff Yoon8154e582019-12-03 23:30:015612
Jeff Yoonda581c32020-03-06 03:56:055613MATRIX_COMPOUND_VARIANTS_REF = """\
5614{
5615 'basic_suites': {
5616 'foo_tests': {
5617 'swarming_test': {},
5618 }
5619 },
5620 'matrix_compound_suites': {
5621 'matrix_tests': {
5622 'foo_tests': {
5623 'variants': [
5624 'a_variant'
5625 ],
5626 },
5627 },
5628 },
5629}
5630"""
5631
Rakib M. Hasanc9e01c62020-07-27 22:48:125632MATRIX_COMPOUND_TEST_WITH_TEST_KEY = """\
5633{
5634 'basic_suites': {
5635 'foo_tests': {
5636 'swarming_test': {
5637 'test': 'foo_test_apk'
5638 },
5639 }
5640 },
5641 'matrix_compound_suites': {
5642 'matrix_tests': {
5643 'foo_tests': {
5644 'variants': [
5645 'a_variant',
5646 ],
5647 },
5648 },
5649 },
5650}
5651"""
5652
Jeff Yoonda581c32020-03-06 03:56:055653MATRIX_COMPOUND_MIXED_VARIANTS_REF = """\
5654{
5655 'basic_suites': {
5656 'foo_tests': {
5657 'swarming_test': {},
5658 }
5659 },
5660 'matrix_compound_suites': {
5661 'matrix_tests': {
5662 'foo_tests': {
5663 'variants': [
5664 'a_variant',
5665 {
5666 'args': [
5667 'a',
5668 'b'
5669 ],
5670 'identifier': 'ab',
5671 }
5672 ],
5673 },
5674 },
5675 },
5676}
5677"""
5678
5679VARIANTS_FILE = """\
5680{
5681 'a_variant': {
5682 'args': [
5683 '--platform',
5684 'device',
5685 '--version',
5686 '1'
5687 ],
5688 'identifier': 'a_variant'
5689 }
5690}
5691"""
5692
5693MULTI_VARIANTS_FILE = """\
5694{
5695 'a_variant': {
5696 'args': [
5697 '--platform',
5698 'device',
5699 '--version',
5700 '1'
5701 ],
5702 'identifier': 'a_variant'
5703 },
5704 'b_variant': {
5705 'args': [
5706 '--platform',
5707 'sim',
5708 '--version',
5709 '2'
5710 ],
5711 'identifier': 'b_variant'
5712 }
5713}
5714"""
5715
Jeff Yoon8154e582019-12-03 23:30:015716# # Dictionary composition test suite outputs
5717
Sven Zheng2fe6dd6f2021-08-06 21:12:275718MATRIX_COMPOUND_OUTPUT = """\
Jeff Yoon8154e582019-12-03 23:30:015719{
5720 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5721 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5722 "Fake Tester": {
Sven Zheng2fe6dd6f2021-08-06 21:12:275723 "gtest_tests": [
5724 {
5725 "merge": {
5726 "args": [],
5727 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5728 },
5729 "swarming": {
5730 "can_use_on_swarming_builders": true
5731 },
5732 "test": "bar_test"
5733 },
5734 {
5735 "merge": {
5736 "args": [],
5737 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5738 },
5739 "swarming": {
5740 "can_use_on_swarming_builders": true
5741 },
5742 "test": "foo_test"
5743 }
5744 ]
Jeff Yoon8154e582019-12-03 23:30:015745 }
5746}
5747"""
5748
Rakib M. Hasanc9e01c62020-07-27 22:48:125749MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT = """\
5750{
5751 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5752 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5753 "Fake Tester": {
5754 "gtest_tests": [
5755 {
5756 "args": [
5757 "--platform",
5758 "device",
5759 "--version",
5760 "1"
5761 ],
5762 "merge": {
5763 "args": [],
5764 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5765 },
5766 "name": "swarming_test_a_variant",
5767 "swarming": {
5768 "can_use_on_swarming_builders": true
5769 },
5770 "test": "foo_test_apk"
5771 }
5772 ]
5773 }
5774}
5775"""
5776
Jeff Yoon67c3e832020-02-08 07:39:385777MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS = """\
Jeff Yoon8154e582019-12-03 23:30:015778{
5779 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5780 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5781 "Fake Tester": {
5782 "gtest_tests": [
5783 {
Jeff Yoon67c3e832020-02-08 07:39:385784 "args": [
5785 "--iam",
5786 "--anarg"
5787 ],
Jeff Yoon8154e582019-12-03 23:30:015788 "merge": {
5789 "args": [],
5790 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5791 },
Jeff Yoon67c3e832020-02-08 07:39:385792 "name": "args_test_args",
5793 "swarming": {
5794 "can_use_on_swarming_builders": true
5795 },
5796 "test": "args_test"
5797 },
5798 {
5799 "args": [
5800 "--iam"
5801 ],
5802 "merge": {
5803 "args": [],
5804 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5805 },
5806 "name": "args_test_mixins",
5807 "swarming": {
5808 "can_use_on_swarming_builders": true,
5809 "dimension_sets": [
5810 {
5811 "iama": "mixin"
5812 }
5813 ]
5814 },
5815 "test": "args_test"
5816 },
5817 {
5818 "args": [
5819 "--iam"
5820 ],
5821 "merge": {
5822 "args": [],
5823 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5824 },
5825 "name": "args_test_swarming",
5826 "swarming": {
5827 "a": "b",
5828 "can_use_on_swarming_builders": true,
5829 "dimension_sets": [
5830 {
5831 "hello": "world"
5832 }
5833 ]
5834 },
5835 "test": "args_test"
5836 }
5837 ]
5838 }
5839}
5840"""
5841
5842MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS = """\
5843{
5844 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5845 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5846 "Fake Tester": {
5847 "gtest_tests": [
5848 {
5849 "args": [
5850 "--anarg"
5851 ],
5852 "merge": {
5853 "args": [],
5854 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5855 },
5856 "name": "mixins_test_args",
5857 "swarming": {
5858 "can_use_on_swarming_builders": true,
5859 "value": "test"
5860 },
Jeff Yoon85fb8df2020-08-20 16:47:435861 "test": "mixins_test",
5862 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385863 },
5864 {
5865 "args": [],
5866 "merge": {
5867 "args": [],
5868 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5869 },
5870 "name": "mixins_test_mixins",
5871 "swarming": {
5872 "can_use_on_swarming_builders": true,
5873 "dimension_sets": [
5874 {
5875 "iama": "mixin"
5876 }
5877 ],
5878 "value": "test"
5879 },
Jeff Yoon85fb8df2020-08-20 16:47:435880 "test": "mixins_test",
5881 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385882 },
5883 {
5884 "args": [],
5885 "merge": {
5886 "args": [],
5887 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5888 },
5889 "name": "mixins_test_swarming",
5890 "swarming": {
5891 "a": "b",
5892 "can_use_on_swarming_builders": true,
5893 "dimension_sets": [
5894 {
5895 "hello": "world"
5896 }
5897 ],
5898 "value": "test"
5899 },
Jeff Yoon85fb8df2020-08-20 16:47:435900 "test": "mixins_test",
5901 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385902 }
5903 ]
5904 }
5905}
5906"""
5907
5908MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING = """\
5909{
5910 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5911 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5912 "Fake Tester": {
5913 "gtest_tests": [
5914 {
5915 "args": [
5916 "--anarg"
5917 ],
5918 "merge": {
5919 "args": [],
5920 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5921 },
5922 "name": "swarming_test_args",
Jeff Yoon8154e582019-12-03 23:30:015923 "swarming": {
5924 "can_use_on_swarming_builders": true,
5925 "dimension_sets": [
5926 {
5927 "foo": "bar"
5928 }
Jeff Yoon67c3e832020-02-08 07:39:385929 ],
5930 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015931 },
Jeff Yoon67c3e832020-02-08 07:39:385932 "test": "swarming_test"
5933 },
Jeff Yoon8154e582019-12-03 23:30:015934 {
Jeff Yoon67c3e832020-02-08 07:39:385935 "args": [],
Jeff Yoon8154e582019-12-03 23:30:015936 "merge": {
5937 "args": [],
5938 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5939 },
Jeff Yoon67c3e832020-02-08 07:39:385940 "name": "swarming_test_mixins",
Jeff Yoon8154e582019-12-03 23:30:015941 "swarming": {
5942 "can_use_on_swarming_builders": true,
5943 "dimension_sets": [
5944 {
5945 "foo": "bar",
Jeff Yoon67c3e832020-02-08 07:39:385946 "iama": "mixin"
5947 }
5948 ],
5949 "foo": "bar"
5950 },
5951 "test": "swarming_test"
5952 },
5953 {
5954 "args": [],
5955 "merge": {
5956 "args": [],
5957 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5958 },
5959 "name": "swarming_test_swarming",
5960 "swarming": {
5961 "a": "b",
5962 "can_use_on_swarming_builders": true,
5963 "dimension_sets": [
5964 {
5965 "foo": "bar",
Jeff Yoon8154e582019-12-03 23:30:015966 "hello": "world"
5967 }
Jeff Yoon67c3e832020-02-08 07:39:385968 ],
5969 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015970 },
Jeff Yoon67c3e832020-02-08 07:39:385971 "test": "swarming_test"
Jeff Yoon8154e582019-12-03 23:30:015972 }
5973 ]
5974 }
5975}
5976"""
5977
Jeff Yoonda581c32020-03-06 03:56:055978MATRIX_COMPOUND_VARIANTS_REF_OUTPUT = """\
5979{
5980 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5981 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5982 "Fake Tester": {
5983 "gtest_tests": [
5984 {
5985 "args": [
5986 "--platform",
5987 "device",
5988 "--version",
5989 "1"
5990 ],
5991 "merge": {
5992 "args": [],
5993 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5994 },
5995 "name": "swarming_test_a_variant",
5996 "swarming": {
5997 "can_use_on_swarming_builders": true
5998 },
5999 "test": "swarming_test"
6000 }
6001 ]
6002 }
6003}
6004"""
6005
Xinan Lin05fb9c1752020-12-17 00:15:526006EMPTY_SKYLAB_TEST_EXCEPTIONS = """\
6007{
6008 'tast.foo_OCTOPUS_TOT': {
6009 'remove_from': [
6010 'Fake Tester',
6011 ]
6012 },
6013 'tast.foo_OCTOPUS_TOT-1': {
6014 'remove_from': [
6015 'Fake Tester',
6016 ]
6017 }
6018}
6019"""
6020
6021MATRIX_SKYLAB_WATERFALL = """\
6022[
6023 {
6024 'project': 'chromium',
6025 'bucket': 'ci',
6026 'name': 'chromium.test',
6027 'machines': {
6028 'Fake Tester': {
6029 'test_suites': {
6030 'skylab_tests': 'cros_skylab_basic_x86',
6031 },
6032 },
6033 },
6034 },
6035]
6036"""
6037
6038MATRIX_COMPOUND_SKYLAB_REF = """\
6039{
6040 'basic_suites': {
6041 'cros_skylab_basic': {
6042 'tast.basic': {
6043 'suite': 'tast.basic',
6044 'timeout': 3600,
6045 },
6046 'tast.foo': {
6047 'suite': 'tast.foo',
6048 'timeout': 3600,
6049 },
6050 },
6051 },
6052 'compound_suites': {},
6053 'matrix_compound_suites': {
6054 'cros_skylab_basic_x86': {
6055 'cros_skylab_basic': {
6056 'variants': [
6057 {
6058 'skylab': {
6059 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:486060 'cros_chrome_version': '89.0.3234.0',
Xinan Lin05fb9c1752020-12-17 00:15:526061 'cros_img': 'octopus-release/R89-13655.0.0',
6062 },
Jieting Yangef6b1042021-11-30 21:33:486063 'enabled': True,
Xinan Lin05fb9c1752020-12-17 00:15:526064 'identifier': 'OCTOPUS_TOT',
6065 },
6066 {
6067 'skylab': {
6068 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:486069 'cros_chrome_version': '88.0.2324.0',
Xinan Lin05fb9c1752020-12-17 00:15:526070 'cros_img': 'octopus-release/R88-13597.23.0',
6071 },
Jieting Yangef6b1042021-11-30 21:33:486072 'enabled': True,
6073 'identifier': 'OCTOPUS_TOT-1',
6074 },
6075 ]
6076 },
6077 },
6078 },
6079}
6080"""
6081
6082ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF = """\
6083{
6084 'basic_suites': {
6085 'cros_skylab_basic': {
6086 'tast.basic': {
6087 'suite': 'tast.basic',
6088 'timeout': 3600,
6089 },
6090 'tast.foo': {
6091 'suite': 'tast.foo',
6092 'timeout': 3600,
6093 },
6094 },
6095 },
6096 'compound_suites': {},
6097 'matrix_compound_suites': {
6098 'cros_skylab_basic_x86': {
6099 'cros_skylab_basic': {
6100 'variants': [
6101 {
6102 'skylab': {
6103 'cros_board': 'octopus',
6104 'cros_chrome_version': '89.0.3234.0',
6105 'cros_img': 'octopus-release/R89-13655.0.0',
6106 },
6107 'enabled': True,
6108 'identifier': 'OCTOPUS_TOT',
6109 },
6110 {
6111 'skylab': {
6112 'cros_board': 'octopus',
6113 'cros_chrome_version': '88.0.2324.0',
6114 'cros_img': 'octopus-release/R88-13597.23.0',
6115 },
6116 'enabled': False,
Xinan Lin05fb9c1752020-12-17 00:15:526117 'identifier': 'OCTOPUS_TOT-1',
6118 },
6119 ]
6120 },
6121 },
6122 },
6123}
6124"""
6125
6126VARIATION_SKYLAB_OUTPUT = """\
6127{
6128 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6129 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6130 "Fake Tester": {
6131 "skylab_tests": [
6132 {
6133 "args": [],
6134 "cros_board": "octopus",
6135 "cros_img": "octopus-release/R89-13655.0.0",
6136 "name": "tast.basic_OCTOPUS_TOT",
6137 "suite": "tast.basic",
6138 "swarming": {},
6139 "test": "tast.basic",
6140 "timeout": 3600
6141 },
6142 {
6143 "args": [],
6144 "cros_board": "octopus",
6145 "cros_img": "octopus-release/R88-13597.23.0",
6146 "name": "tast.basic_OCTOPUS_TOT-1",
6147 "suite": "tast.basic",
6148 "swarming": {},
6149 "test": "tast.basic",
6150 "timeout": 3600
6151 }
6152 ]
6153 }
6154}
6155"""
6156
Jieting Yangef6b1042021-11-30 21:33:486157ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT = """\
6158{
6159 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6160 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6161 "Fake Tester": {
6162 "skylab_tests": [
6163 {
6164 "args": [],
6165 "cros_board": "octopus",
6166 "cros_img": "octopus-release/R89-13655.0.0",
6167 "name": "tast.basic_OCTOPUS_TOT",
6168 "suite": "tast.basic",
6169 "swarming": {},
6170 "test": "tast.basic",
6171 "timeout": 3600
6172 }
6173 ]
6174 }
6175}
6176"""
6177
Garrett Beaty1afaccc2020-06-25 19:58:156178
6179class MatrixCompositionTests(TestCase):
Jeff Yoon8154e582019-12-03 23:30:016180
6181 def test_good_structure_no_configs(self):
6182 """
6183 Tests matrix compound test suite structure with no configs,
6184 no conflicts and no bad references
6185 """
Garrett Beaty1afaccc2020-06-25 19:58:156186 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6187 MATRIX_COMPOUND_EMPTY, LUCI_MILO_CFG)
6188 self.create_testing_buildbot_json_file('chromium.test.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276189 MATRIX_COMPOUND_OUTPUT)
Garrett Beaty1afaccc2020-06-25 19:58:156190 self.create_testing_buildbot_json_file('chromium.ci.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276191 MATRIX_COMPOUND_OUTPUT)
Jeff Yoon8154e582019-12-03 23:30:016192 fbb.check_output_file_consistency(verbose=True)
6193 self.assertFalse(fbb.printed_lines)
6194
Jeff Yoon67c3e832020-02-08 07:39:386195 def test_missing_identifier(self):
Jeff Yoon8154e582019-12-03 23:30:016196 """
Jeff Yoon67c3e832020-02-08 07:39:386197 Variant is missing an identifier
Jeff Yoon8154e582019-12-03 23:30:016198 """
Garrett Beaty1afaccc2020-06-25 19:58:156199 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6200 MATRIX_COMPOUND_MISSING_IDENTIFIER, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236201 with self.assertRaisesRegex(
6202 generate_buildbot_json.BBGenErr,
Jeff Yoon67c3e832020-02-08 07:39:386203 'Missing required identifier field in matrix compound suite*'):
6204 fbb.check_output_file_consistency(verbose=True)
Jeff Yoon8154e582019-12-03 23:30:016205
6206 def test_mismatched_swarming_length(self):
6207 """
6208 Swarming dimension set length mismatch test. Composition set > basic set
6209 """
Garrett Beaty1afaccc2020-06-25 19:58:156210 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6211 MATRIX_MISMATCHED_SWARMING_LENGTH, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236212 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6213 'Error merging lists by key *'):
Jeff Yoon8154e582019-12-03 23:30:016214 fbb.check_output_file_consistency(verbose=True)
6215
Jeff Yoon8154e582019-12-03 23:30:016216 def test_noexistent_ref(self):
6217 """
6218 Test referencing a non-existent basic test suite
6219 """
Garrett Beaty1afaccc2020-06-25 19:58:156220 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6221 MATRIX_REF_NONEXISTENT, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236222 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6223 'Unable to find reference to *'):
Jeff Yoon8154e582019-12-03 23:30:016224 fbb.check_output_file_consistency(verbose=True)
6225
6226 def test_ref_to_composition(self):
6227 """
6228 Test referencing another composition test suite
6229 """
Garrett Beaty1afaccc2020-06-25 19:58:156230 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6231 MATRIX_COMPOUND_REF_COMPOSITION, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236232 with self.assertRaisesRegex(
6233 generate_buildbot_json.BBGenErr,
6234 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016235 fbb.check_output_file_consistency(verbose=True)
6236
6237 def test_ref_to_matrix(self):
6238 """
6239 Test referencing another matrix test suite
6240 """
Garrett Beaty1afaccc2020-06-25 19:58:156241 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6242 MATRIX_COMPOSITION_REF_MATRIX, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236243 with self.assertRaisesRegex(
6244 generate_buildbot_json.BBGenErr,
6245 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016246 fbb.check_output_file_consistency(verbose=True)
6247
Jeff Yoon67c3e832020-02-08 07:39:386248 def test_conflicting_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:156249 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6250 MATRIX_COMPOUND_CONFLICTING_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236251 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6252 'Conflicting test definitions.*'):
Jeff Yoon67c3e832020-02-08 07:39:386253 fbb.check_input_file_consistency(verbose=True)
6254 self.assertFalse(fbb.printed_lines)
6255
6256 def test_variants_swarming_dict_merge_args(self):
6257 """
6258 Test targets with swarming dictionary defined by both basic and matrix
6259 """
Garrett Beaty1afaccc2020-06-25 19:58:156260 fbb = FakeBBGen(self.args,
6261 MATRIX_GTEST_SUITE_WATERFALL,
6262 MATRIX_COMPOUND_TARGETS_ARGS,
6263 LUCI_MILO_CFG,
6264 mixins=SWARMING_MIXINS)
6265 self.create_testing_buildbot_json_file(
6266 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
6267 self.create_testing_buildbot_json_file(
6268 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
Jeff Yoon67c3e832020-02-08 07:39:386269 fbb.check_output_file_consistency(verbose=True)
6270 self.assertFalse(fbb.printed_lines)
6271
6272 def test_variants_swarming_dict_merge_mixins(self):
6273 """
6274 Test targets with swarming dictionary defined by both basic and matrix
6275 """
Garrett Beaty1afaccc2020-06-25 19:58:156276 fbb = FakeBBGen(self.args,
6277 MATRIX_GTEST_SUITE_WATERFALL,
6278 MATRIX_COMPOUND_TARGETS_MIXINS,
6279 LUCI_MILO_CFG,
6280 mixins=SWARMING_MIXINS)
6281 self.create_testing_buildbot_json_file(
6282 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
6283 self.create_testing_buildbot_json_file(
6284 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
Jeff Yoon67c3e832020-02-08 07:39:386285 fbb.check_output_file_consistency(verbose=True)
6286 self.assertFalse(fbb.printed_lines)
6287
6288 def test_variants_swarming_dict_swarming(self):
6289 """
6290 Test targets with swarming dictionary defined by both basic and matrix
6291 """
Garrett Beaty1afaccc2020-06-25 19:58:156292 fbb = FakeBBGen(self.args,
6293 MATRIX_GTEST_SUITE_WATERFALL,
6294 MATRIX_COMPOUND_TARGETS_SWARMING,
6295 LUCI_MILO_CFG,
6296 mixins=SWARMING_MIXINS)
6297 self.create_testing_buildbot_json_file(
6298 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
6299 self.create_testing_buildbot_json_file(
6300 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
Jeff Yoon67c3e832020-02-08 07:39:386301 fbb.check_output_file_consistency(verbose=True)
6302 self.assertFalse(fbb.printed_lines)
6303
Rakib M. Hasanc9e01c62020-07-27 22:48:126304 def test_variant_test_suite_with_test_key(self):
6305 """
6306 Test targets in matrix compound test suites with variants
6307 """
6308 fbb = FakeBBGen(self.args,
6309 MATRIX_GTEST_SUITE_WATERFALL,
6310 MATRIX_COMPOUND_TEST_WITH_TEST_KEY,
6311 LUCI_MILO_CFG,
6312 variants=VARIANTS_FILE)
6313 self.create_testing_buildbot_json_file(
6314 'chromium.test.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6315 self.create_testing_buildbot_json_file(
6316 'chromium.ci.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6317 fbb.check_output_file_consistency(verbose=True)
6318 self.assertFalse(fbb.printed_lines)
6319
Jeff Yoonda581c32020-03-06 03:56:056320 def test_variants_pyl_ref(self):
6321 """Test targets with variants string ref"""
Garrett Beaty1afaccc2020-06-25 19:58:156322 fbb = FakeBBGen(self.args,
6323 MATRIX_GTEST_SUITE_WATERFALL,
6324 MATRIX_COMPOUND_VARIANTS_REF,
6325 LUCI_MILO_CFG,
6326 variants=VARIANTS_FILE)
6327 self.create_testing_buildbot_json_file('chromium.test.json',
6328 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
6329 self.create_testing_buildbot_json_file('chromium.ci.json',
6330 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jeff Yoonda581c32020-03-06 03:56:056331 fbb.check_output_file_consistency(verbose=True)
6332 self.assertFalse(fbb.printed_lines)
6333
6334 def test_variants_pyl_no_ref(self):
6335 """Test targets with variants string ref, not defined in variants.pyl"""
Garrett Beaty1afaccc2020-06-25 19:58:156336 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6337 MATRIX_COMPOUND_VARIANTS_REF, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236338 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6339 'Missing variant definition for *'):
Jeff Yoonda581c32020-03-06 03:56:056340 fbb.check_output_file_consistency(verbose=True)
6341
6342 def test_variants_pyl_all_unreferenced(self):
6343 """Test targets with variants in variants.pyl, unreferenced in tests"""
Garrett Beaty1afaccc2020-06-25 19:58:156344 fbb = FakeBBGen(self.args,
6345 MATRIX_GTEST_SUITE_WATERFALL,
6346 MATRIX_COMPOUND_MIXED_VARIANTS_REF,
6347 LUCI_MILO_CFG,
6348 variants=MULTI_VARIANTS_FILE)
6349 # self.create_testing_buildbot_json_file(
6350 # 'chromium.test.json', MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jamie Madillcf4f8c72021-05-20 19:24:236351 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6352 'The following variants were unreferenced *'):
Jeff Yoonda581c32020-03-06 03:56:056353 fbb.check_input_file_consistency(verbose=True)
6354
Xinan Lin05fb9c1752020-12-17 00:15:526355 def test_good_skylab_matrix_with_variants(self):
6356 fbb = FakeBBGen(self.args,
6357 MATRIX_SKYLAB_WATERFALL,
6358 MATRIX_COMPOUND_SKYLAB_REF,
6359 LUCI_MILO_CFG,
6360 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6361 self.create_testing_buildbot_json_file('chromium.test.json',
6362 VARIATION_SKYLAB_OUTPUT)
6363 fbb.check_input_file_consistency(verbose=True)
6364 fbb.check_output_file_consistency(verbose=True)
6365 self.assertFalse(fbb.printed_lines)
6366
Jieting Yangef6b1042021-11-30 21:33:486367 def test_enabled_and_disabled_skylab_matrix_with_variants(self):
6368 """Test with disabled variants"""
6369 fbb = FakeBBGen(self.args,
6370 MATRIX_SKYLAB_WATERFALL,
6371 ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF,
6372 LUCI_MILO_CFG,
6373 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6374 # some skylab test variant is disabled; the corresponding skylab tests
6375 # is not generated.
6376 self.create_testing_buildbot_json_file(
6377 'chromium.test.json', ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT)
6378 fbb.check_input_file_consistency(verbose=True)
6379 fbb.check_output_file_consistency(verbose=True)
6380 self.assertFalse(fbb.printed_lines)
6381
Jeff Yoon8154e582019-12-03 23:30:016382
Dirk Pranke772f55f2021-04-28 04:51:166383MAC_TEST_SUITE = """\
6384{
6385 'basic_suites': {
6386 'foo_tests': {
6387 'foo_test': {
6388 },
6389 },
6390 },
6391}
6392"""
6393
6394MAC_GTESTS_WATERFALL = """\
6395[
6396 {
6397 'project': 'chromium',
6398 'bucket': 'ci',
6399 'name': 'chromium.test',
6400 'machines': {
6401 'Mac': {
6402 'swarming': {
6403 'can_use_on_swarming_builders': True,
6404 },
6405 'test_suites': {
6406 'gtest_tests': 'foo_tests',
6407 },
6408 },
6409 },
6410 },
6411]
6412"""
6413
6414MAC_GTEST_WATERFALL_OUTPUT = """\
6415{
6416 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6417 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6418 "Mac": {
6419 "gtest_tests": [
6420 {
6421 "merge": {
6422 "args": [],
6423 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6424 },
6425 "swarming": {
6426 "can_use_on_swarming_builders": true
6427 },
6428 "test": "foo_test"
6429 }
6430 ]
6431 }
6432}
6433"""
6434
6435MAC_ISOLATED_SCRIPTS_WATERFALL = """\
6436[
6437 {
6438 'project': 'chromium',
6439 'bucket': 'ci',
6440 'name': 'chromium.test',
6441 'machines': {
6442 'Mac': {
6443 'swarming': {
6444 'dimension_sets': [
6445 {
6446 'os': 'Mac',
6447 },
6448 ],
6449 },
6450 'test_suites': {
6451 'isolated_scripts': 'foo_tests',
6452 },
6453 },
6454 },
6455 },
6456]
6457"""
6458
6459MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT = """\
6460{
6461 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6462 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6463 "Mac": {
6464 "isolated_scripts": [
6465 {
6466 "isolate_name": "foo_test",
6467 "merge": {
6468 "args": [],
6469 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
6470 },
6471 "name": "foo_test",
6472 "swarming": {
6473 "can_use_on_swarming_builders": true,
6474 "dimension_sets": [
6475 {
6476 "os": "Mac"
6477 }
6478 ]
6479 }
6480 }
6481 ]
6482 }
6483}
6484"""
6485
6486MAC_LUCI_MILO_CFG = """\
6487consoles {
6488 builders {
6489 name: "buildbucket/luci.chromium.ci/Mac"
6490 }
6491}
6492"""
6493
6494
6495class SwarmingTests(TestCase):
6496 def test_mac_builder_with_no_cpu_dimension_in_gtest_fails(self):
6497 fbb = FakeBBGen(self.args, MAC_GTESTS_WATERFALL, MAC_TEST_SUITE,
6498 MAC_LUCI_MILO_CFG)
6499 self.create_testing_buildbot_json_file('chromium.test.json',
6500 MAC_GTEST_WATERFALL_OUTPUT)
6501 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236502 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6503 'os and cpu',
6504 fbb.check_output_file_consistency,
6505 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166506 self.assertFalse(fbb.printed_lines)
6507
6508 def test_mac_builder_with_no_cpu_dimension_in_isolated_script_fails(self):
6509 fbb = FakeBBGen(self.args, MAC_ISOLATED_SCRIPTS_WATERFALL, MAC_TEST_SUITE,
6510 MAC_LUCI_MILO_CFG)
6511 self.create_testing_buildbot_json_file(
6512 'chromium.test.json', MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT)
6513 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236514 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6515 'os and cpu',
6516 fbb.check_output_file_consistency,
6517 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166518 self.assertFalse(fbb.printed_lines)
6519
6520
Kenneth Russelleb60cbd22017-12-05 07:54:286521if __name__ == '__main__':
6522 unittest.main()