blob: 4297cfb940d36ef1113cc4d7c52e26b66aa73f08 [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
Kenneth Russell384a1732019-03-16 02:36:02410NVIDIA_GPU_TELEMETRY_TEST_WATERFALL = """\
411[
412 {
Greg Gutermanf60eb052020-03-12 17:40:01413 'project': 'chromium',
414 'bucket': 'ci',
Kenneth Russell384a1732019-03-16 02:36:02415 'name': 'chromium.test',
416 'machines': {
417 'Fake Tester': {
418 'os_type': 'win',
419 'browser_config': 'release',
420 'swarming': {
421 'dimension_sets': [
422 {
Brian Sheedy0e26c4e02020-05-28 22:09:09423 'gpu': '10de:1cb3-26.21.14.3102',
Kenneth Russell384a1732019-03-16 02:36:02424 },
425 ],
426 },
427 'test_suites': {
428 'gpu_telemetry_tests': 'composition_tests',
429 },
430 },
431 },
432 },
433]
434"""
435
436INTEL_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': '8086:5912-24.20.100.6286',
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
Brian Sheedyf9387db7b2019-08-05 19:26:10462INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL = """\
463[
464 {
Greg Gutermanf60eb052020-03-12 17:40:01465 'project': 'chromium',
466 'bucket': 'ci',
Brian Sheedyf9387db7b2019-08-05 19:26:10467 '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:3e92-24.20.100.6286',
Brian Sheedyf9387db7b2019-08-05 19:26:10476 },
477 ],
478 },
479 'test_suites': {
480 'gpu_telemetry_tests': 'composition_tests',
481 },
482 },
483 },
484 },
485]
486"""
487
Kenneth Russelleb60cbd22017-12-05 07:54:28488UNKNOWN_TEST_SUITE_WATERFALL = """\
489[
490 {
Greg Gutermanf60eb052020-03-12 17:40:01491 'project': 'chromium',
492 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28493 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43494 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28495 'Fake Tester': {
496 'test_suites': {
497 'gtest_tests': 'baz_tests',
498 },
499 },
500 },
501 },
502]
503"""
504
505UNKNOWN_TEST_SUITE_TYPE_WATERFALL = """\
506[
507 {
Greg Gutermanf60eb052020-03-12 17:40:01508 'project': 'chromium',
509 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28510 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43511 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28512 'Fake Tester': {
513 'test_suites': {
514 'gtest_tests': 'foo_tests',
515 'foo_test_type': 'foo_tests',
516 },
517 },
518 },
519 },
520]
521"""
522
523ANDROID_WATERFALL = """\
524[
525 {
Greg Gutermanf60eb052020-03-12 17:40:01526 'project': 'chromium',
527 'bucket': 'ci',
Kenneth Russelleb60cbd22017-12-05 07:54:28528 'name': 'chromium.test',
Kenneth Russell139f8642017-12-05 08:51:43529 'machines': {
Kenneth Russelleb60cbd22017-12-05 07:54:28530 'Android Builder': {
531 'additional_compile_targets': [
532 'bar_test',
533 ],
534 },
Kenneth Russelleb60cbd22017-12-05 07:54:28535 'Fake Android K Tester': {
536 'additional_compile_targets': [
537 'bar_test',
538 ],
539 'swarming': {
540 'dimension_sets': [
541 {
542 'device_os': 'KTU84P',
543 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22544 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28545 },
546 ],
547 },
548 'os_type': 'android',
Nico Weber79dc5f6852018-07-13 19:38:49549 'skip_merge_script': True,
Kenneth Russelleb60cbd22017-12-05 07:54:28550 'test_suites': {
551 'gtest_tests': 'foo_tests',
552 },
553 },
554 'Fake Android L Tester': {
555 'swarming': {
556 'dimension_sets': [
557 {
Ben Pastenee012aea42019-05-14 22:32:28558 'device_os': 'LMY41U',
559 'device_os_type': 'user',
Kenneth Russelleb60cbd22017-12-05 07:54:28560 'device_type': 'hammerhead',
Ben Pastened15aa8a2019-05-16 16:59:22561 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28562 },
563 ],
564 },
565 'os_type': 'android',
566 'skip_merge_script': True,
567 'skip_output_links': True,
568 'test_suites': {
569 'gtest_tests': 'foo_tests',
570 },
571 },
572 'Fake Android M Tester': {
573 'swarming': {
574 'dimension_sets': [
575 {
576 'device_os': 'MMB29Q',
577 'device_type': 'bullhead',
Ben Pastened15aa8a2019-05-16 16:59:22578 'os': 'Android',
Kenneth Russelleb60cbd22017-12-05 07:54:28579 },
580 ],
581 },
582 'os_type': 'android',
583 'use_swarming': False,
584 'test_suites': {
585 'gtest_tests': 'foo_tests',
586 },
587 },
588 },
589 },
590]
591"""
592
Nico Weberd18b8962018-05-16 19:39:38593UNKNOWN_BOT_GTESTS_WATERFALL = """\
594[
595 {
Greg Gutermanf60eb052020-03-12 17:40:01596 'project': 'chromium',
597 'bucket': 'ci',
Nico Weberd18b8962018-05-16 19:39:38598 'name': 'chromium.test',
599 'machines': {
600 'Unknown Bot': {
601 'test_suites': {
602 'gtest_tests': 'foo_tests',
603 },
604 },
605 },
606 },
607]
608"""
609
Jeff Yoon8154e582019-12-03 23:30:01610MATRIX_GTEST_SUITE_WATERFALL = """\
611[
612 {
Greg Gutermanf60eb052020-03-12 17:40:01613 'project': 'chromium',
614 'bucket': 'ci',
Jeff Yoon8154e582019-12-03 23:30:01615 'name': 'chromium.test',
616 'machines': {
617 'Fake Tester': {
618 'test_suites': {
619 'gtest_tests': 'matrix_tests',
620 },
621 },
622 },
623 },
624]
625"""
626
Jeff Yoon67c3e832020-02-08 07:39:38627MATRIX_GTEST_SUITE_WATERFALL_MIXINS = """\
628[
629 {
Greg Gutermanf60eb052020-03-12 17:40:01630 'project': 'chromium',
631 'bucket': 'ci',
Jeff Yoon67c3e832020-02-08 07:39:38632 'name': 'chromium.test',
633 'machines': {
634 'Fake Tester': {
635 'mixins': ['dimension_mixin'],
636 'test_suites': {
637 'gtest_tests': 'matrix_tests',
638 },
639 },
640 },
641 },
642]
643"""
644
Kenneth Russelleb60cbd22017-12-05 07:54:28645FOO_TEST_SUITE = """\
646{
Stephen Martinis54d64ad2018-09-21 22:16:20647 'basic_suites': {
648 'foo_tests': {
649 'foo_test': {
650 'swarming': {
651 'dimension_sets': [
652 {
653 'integrity': 'high',
654 }
655 ],
656 'expiration': 120,
657 },
Kenneth Russelleb60cbd22017-12-05 07:54:28658 },
659 },
660 },
661}
662"""
663
Brian Sheedycae63b22020-06-10 22:52:11664FOO_TEST_SUITE_NO_DIMENSIONS = """\
665{
666 'basic_suites': {
667 'foo_tests': {
668 'foo_test': {
669 },
670 },
671 },
672}
673"""
674
Stephen Martinis5bef0fc2020-01-06 22:47:53675FOO_TEST_SUITE_NOT_SORTED = """\
676{
677 'basic_suites': {
678 'foo_tests': {
679 'foo_test': {},
680 'a_test': {},
681 },
682 },
683}
684"""
685
Kenneth Russell8ceeabf2017-12-11 17:53:28686FOO_TEST_SUITE_WITH_ARGS = """\
687{
Stephen Martinis54d64ad2018-09-21 22:16:20688 'basic_suites': {
689 'foo_tests': {
690 'foo_test': {
691 'args': [
692 '--c_arg',
693 ],
694 },
Kenneth Russell8ceeabf2017-12-11 17:53:28695 },
696 },
697}
698"""
699
Zhaoyang Li473dd0ae2021-05-10 18:28:28700FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES = """\
701{
702 'basic_suites': {
703 'foo_tests': {
704 'foo_test': {
705 'swarming': {
706 'named_caches': [
707 {
708 'name': 'cache_in_test',
709 'file': 'cache_in_test_file',
710 },
711 ],
712 },
713 },
714 },
715 },
716}
717"""
718
Kenneth Russell8a386d42018-06-02 09:48:01719FOO_TEST_SUITE_WITH_LINUX_ARGS = """\
720{
Stephen Martinis54d64ad2018-09-21 22:16:20721 'basic_suites': {
722 'foo_tests': {
723 'foo_test': {
724 'linux_args': [
725 '--no-xvfb',
726 ],
727 },
Kenneth Russell8a386d42018-06-02 09:48:01728 },
729 },
730}
731"""
732
Kenneth Russell650995a2018-05-03 21:17:01733FOO_TEST_SUITE_WITH_ENABLE_FEATURES = """\
734{
Stephen Martinis54d64ad2018-09-21 22:16:20735 'basic_suites': {
736 'foo_tests': {
737 'foo_test': {
738 'args': [
739 '--enable-features=Foo,Bar',
740 ],
741 },
Kenneth Russell650995a2018-05-03 21:17:01742 },
743 },
744}
745"""
746
Brian Sheedy7658c982020-01-08 02:27:58747FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN = """\
748{
749 'basic_suites': {
750 'foo_tests': {
751 'foo_test': {
752 'remove_mixins': ['waterfall_mixin'],
753 'swarming': {
754 'dimension_sets': [
755 {
756 'integrity': 'high',
757 }
758 ],
759 'expiration': 120,
760 },
761 },
762 },
763 },
764}
765"""
766
767FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN = """\
768{
769 'basic_suites': {
770 'foo_tests': {
771 'foo_test': {
772 'remove_mixins': ['builder_mixin'],
773 'swarming': {
774 'dimension_sets': [
775 {
776 'integrity': 'high',
777 }
778 ],
779 'expiration': 120,
780 },
781 },
782 },
783 },
784}
785"""
786
Kenneth Russelleb60cbd22017-12-05 07:54:28787FOO_SCRIPT_SUITE = """\
788{
Stephen Martinis54d64ad2018-09-21 22:16:20789 'basic_suites': {
790 'foo_scripts': {
791 'foo_test': {
792 'script': 'foo.py',
793 },
794 'bar_test': {
795 'script': 'bar.py',
796 },
Kenneth Russelleb60cbd22017-12-05 07:54:28797 },
798 },
799}
800"""
801
Kenneth Russelleb60cbd22017-12-05 07:54:28802GOOD_COMPOSITION_TEST_SUITES = """\
803{
Stephen Martinis54d64ad2018-09-21 22:16:20804 'basic_suites': {
805 'bar_tests': {
806 'bar_test': {},
807 },
808 'foo_tests': {
809 'foo_test': {},
810 },
Kenneth Russelleb60cbd22017-12-05 07:54:28811 },
Stephen Martinis54d64ad2018-09-21 22:16:20812 'compound_suites': {
813 'composition_tests': [
814 'foo_tests',
815 'bar_tests',
816 ],
Kenneth Russelleb60cbd22017-12-05 07:54:28817 },
Kenneth Russelleb60cbd22017-12-05 07:54:28818}
819"""
820
821BAD_COMPOSITION_TEST_SUITES = """\
822{
Stephen Martinis54d64ad2018-09-21 22:16:20823 'basic_suites': {
824 'bar_tests': {},
825 'foo_tests': {},
826 },
827 'compound_suites': {
828 'buggy_composition_tests': [
829 'bar_tests',
830 ],
831 'composition_tests': [
832 'foo_tests',
833 'buggy_composition_tests',
834 ],
835 },
836}
837"""
838
Andrew Luo0f1dee02019-09-06 16:50:47839CONFLICTING_COMPOSITION_TEST_SUITES = """\
840{
841 'basic_suites': {
842 'bar_tests': {
843 'baz_tests': {
844 'args': [
845 '--bar',
846 ],
847 }
848 },
849 'foo_tests': {
850 'baz_tests': {
851 'args': [
852 '--foo',
853 ],
854 }
855 },
856 },
857 'compound_suites': {
858 'foobar_tests': [
859 'foo_tests',
860 'bar_tests',
861 ],
862 },
863}
864"""
865
Stephen Martinis54d64ad2018-09-21 22:16:20866DUPLICATES_COMPOSITION_TEST_SUITES = """\
867{
868 'basic_suites': {
869 'bar_tests': {},
Jeff Yoon8154e582019-12-03 23:30:01870 'buggy_composition_tests': {},
Stephen Martinis54d64ad2018-09-21 22:16:20871 'foo_tests': {},
872 },
873 'compound_suites': {
874 'bar_tests': [
875 'foo_tests',
876 ],
877 'composition_tests': [
878 'foo_tests',
879 'buggy_composition_tests',
880 ],
881 },
Kenneth Russelleb60cbd22017-12-05 07:54:28882}
883"""
884
Dirk Pranke1b767092017-12-07 04:44:23885SCRIPT_SUITE = """\
886{
Stephen Martinis54d64ad2018-09-21 22:16:20887 'basic_suites': {
888 'foo_scripts': {
889 'foo_test': {
890 'script': 'foo.py',
891 },
Dirk Pranke1b767092017-12-07 04:44:23892 },
893 },
894}
895"""
896
Kenneth Russelleb60cbd22017-12-05 07:54:28897UNREFED_TEST_SUITE = """\
898{
Stephen Martinis54d64ad2018-09-21 22:16:20899 'basic_suites': {
900 'bar_tests': {},
901 'foo_tests': {},
902 },
Kenneth Russelleb60cbd22017-12-05 07:54:28903}
904"""
905
906REUSING_TEST_WITH_DIFFERENT_NAME = """\
907{
Stephen Martinis54d64ad2018-09-21 22:16:20908 'basic_suites': {
909 'foo_tests': {
910 'foo_test': {},
911 'variation_test': {
912 'args': [
913 '--variation',
914 ],
915 'test': 'foo_test',
916 },
Kenneth Russelleb60cbd22017-12-05 07:54:28917 },
918 },
919}
920"""
921
Kenneth Russell8a386d42018-06-02 09:48:01922COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST = """\
923{
Stephen Martinis54d64ad2018-09-21 22:16:20924 'basic_suites': {
925 'foo_tests': {
926 'foo': {},
927 },
928 'bar_tests': {
929 'bar_test': {},
930 },
Kenneth Russell8a386d42018-06-02 09:48:01931 },
Stephen Martinis54d64ad2018-09-21 22:16:20932 'compound_suites': {
933 'composition_tests': [
934 'foo_tests',
935 'bar_tests',
936 ],
Kenneth Russell8a386d42018-06-02 09:48:01937 },
Kenneth Russell8a386d42018-06-02 09:48:01938}
939"""
940
Kenneth Russell384a1732019-03-16 02:36:02941COMPOSITION_SUITE_WITH_GPU_ARGS = """\
942{
943 'basic_suites': {
944 'foo_tests': {
945 'foo': {
946 'args': [
947 '--gpu-vendor-id',
948 '${gpu_vendor_id}',
949 '--gpu-device-id',
950 '${gpu_device_id}',
951 ],
952 },
953 },
954 'bar_tests': {
955 'bar_test': {},
956 },
957 },
958 'compound_suites': {
959 'composition_tests': [
960 'foo_tests',
961 'bar_tests',
962 ],
963 },
964}
965"""
966
Brian Sheedyd8c0c73d2021-07-05 02:11:30967COMPOSITION_SUITE_WITH_PIXEL_AND_FILTER = """\
968{
969 'basic_suites': {
970 'foo_tests': {
971 'pixel': {
972 'args': [
973 '--git-revision=aaaa',
974 '--test-filter=bar',
975 ],
976 },
977 },
978 'bar_tests': {
979 'bar_test': {},
980 },
981 },
982 'compound_suites': {
983 'composition_tests': [
984 'foo_tests',
985 'bar_tests',
986 ],
987 },
988}
989"""
990
Jamie Madilla8be0d72020-10-02 05:24:04991GTEST_AS_ISOLATED_SCRIPT_SUITE = """\
992{
993 'basic_suites': {
994 'foo_tests': {
995 'foo_test': {
996 'script': 'foo.py',
997 'use_isolated_scripts_api': True,
998 },
999 },
1000 },
1001}
1002"""
1003
Dirk Pranke1b767092017-12-07 04:44:231004SCRIPT_WITH_ARGS_EXCEPTIONS = """\
1005{
1006 'foo_test': {
1007 'modifications': {
1008 'Fake Tester': {
1009 'args': ['--fake-arg'],
1010 },
1011 },
1012 },
1013}
1014"""
1015
Stephen Martinis0382bc12018-09-17 22:29:071016SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS = """\
1017{
1018 'foo_test': {
1019 'modifications': {
1020 'Fake Tester': {
1021 'swarming': {
1022 'value': 'exception',
1023 },
1024 },
1025 },
1026 },
1027}
1028"""
1029
Kenneth Russelleb60cbd22017-12-05 07:54:281030NO_BAR_TEST_EXCEPTIONS = """\
1031{
1032 'bar_test': {
1033 'remove_from': [
1034 'Fake Tester',
1035 ]
1036 }
1037}
1038"""
1039
1040EMPTY_BAR_TEST_EXCEPTIONS = """\
1041{
1042 'bar_test': {
1043 }
1044}
1045"""
1046
Stephen Martinis54d64ad2018-09-21 22:16:201047EXCEPTIONS_SORTED = """\
1048{
1049 'suite_c': {
1050 'modifications': {
1051 'Fake Tester': {
1052 'foo': 'bar',
1053 },
1054 },
1055 },
1056 'suite_d': {
1057 'modifications': {
1058 'Fake Tester': {
1059 'foo': 'baz',
1060 },
1061 },
1062 },
1063}
1064"""
1065
1066EXCEPTIONS_UNSORTED = """\
1067{
1068 'suite_d': {
1069 'modifications': {
1070 'Fake Tester': {
1071 'foo': 'baz',
1072 },
1073 },
1074 },
1075 'suite_c': {
1076 'modifications': {
1077 'Fake Tester': {
1078 'foo': 'bar',
1079 },
1080 },
1081 },
1082}
1083"""
1084
Stephen Martinis5bef0fc2020-01-06 22:47:531085EXCEPTIONS_PER_TEST_UNSORTED = """\
1086{
1087 'suite_d': {
1088 'modifications': {
1089 'Other Tester': {
1090 'foo': 'baz',
1091 },
1092 'Fake Tester': {
1093 'foo': 'baz',
1094 },
1095 },
1096 },
1097}
1098"""
1099
1100EXCEPTIONS_DUPS_REMOVE_FROM = """\
1101{
1102 'suite_d': {
1103 'remove_from': [
1104 'Fake Tester',
1105 'Fake Tester',
1106 ],
1107 'modifications': {
1108 'Fake Tester': {
1109 'foo': 'baz',
1110 },
1111 },
1112 },
1113}
1114"""
1115
Kenneth Russelleb60cbd22017-12-05 07:54:281116FOO_TEST_MODIFICATIONS = """\
1117{
1118 'foo_test': {
1119 'modifications': {
1120 'Fake Tester': {
1121 'args': [
1122 '--bar',
1123 ],
1124 'swarming': {
1125 'hard_timeout': 600,
1126 },
1127 },
1128 },
1129 }
1130}
1131"""
1132
John Budorick5bc387fe2019-05-09 20:02:531133FOO_TEST_EXPLICIT_NONE_EXCEPTIONS = """\
1134{
1135 'foo_test': {
1136 'modifications': {
1137 'Fake Tester': {
1138 'swarming': {
1139 'dimension_sets': [
1140 {
1141 'integrity': None,
1142 },
1143 ],
1144 },
1145 },
1146 },
1147 },
1148}
1149"""
1150
Kenneth Russelleb60cbd22017-12-05 07:54:281151NONEXISTENT_REMOVAL = """\
1152{
1153 'foo_test': {
1154 'remove_from': [
1155 'Nonexistent Tester',
1156 ]
1157 }
1158}
1159"""
1160
1161NONEXISTENT_MODIFICATION = """\
1162{
1163 'foo_test': {
1164 'modifications': {
1165 'Nonexistent Tester': {
1166 'args': [],
1167 },
1168 },
1169 }
1170}
1171"""
1172
1173COMPOSITION_WATERFALL_OUTPUT = """\
1174{
1175 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1176 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1177 "Fake Tester": {
1178 "gtest_tests": [
1179 {
Stephen Martinisbc7b7772019-05-01 22:01:431180 "merge": {
1181 "args": [],
1182 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1183 },
Kenneth Russelleb60cbd22017-12-05 07:54:281184 "swarming": {
1185 "can_use_on_swarming_builders": true
1186 },
1187 "test": "bar_test"
1188 },
1189 {
Stephen Martinisbc7b7772019-05-01 22:01:431190 "merge": {
1191 "args": [],
1192 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1193 },
Kenneth Russelleb60cbd22017-12-05 07:54:281194 "swarming": {
1195 "can_use_on_swarming_builders": true
1196 },
1197 "test": "foo_test"
1198 }
1199 ]
1200 }
1201}
1202"""
1203
John Budorickedfe7f872018-01-23 15:27:221204COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT = """\
1205{
1206 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1207 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1208 "Fake Tester": {
1209 "gtest_tests": [
1210 {
1211 "args": [
1212 "--this-is-an-argument"
1213 ],
Stephen Martinisbc7b7772019-05-01 22:01:431214 "merge": {
1215 "args": [],
1216 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1217 },
John Budorickedfe7f872018-01-23 15:27:221218 "swarming": {
1219 "can_use_on_swarming_builders": true
1220 },
1221 "test": "bar_test"
1222 },
1223 {
1224 "args": [
1225 "--this-is-an-argument"
1226 ],
Stephen Martinisbc7b7772019-05-01 22:01:431227 "merge": {
1228 "args": [],
1229 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1230 },
John Budorickedfe7f872018-01-23 15:27:221231 "swarming": {
1232 "can_use_on_swarming_builders": true
1233 },
1234 "test": "foo_test"
1235 }
1236 ]
1237 }
1238}
1239"""
1240
Kenneth Russelleb60cbd22017-12-05 07:54:281241VARIATION_GTEST_OUTPUT = """\
1242{
1243 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1244 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1245 "Fake Tester": {
1246 "gtest_tests": [
1247 {
Stephen Martinisbc7b7772019-05-01 22:01:431248 "merge": {
1249 "args": [],
1250 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1251 },
Kenneth Russelleb60cbd22017-12-05 07:54:281252 "swarming": {
1253 "can_use_on_swarming_builders": true,
1254 "dimension_sets": [
1255 {
1256 "kvm": "1"
1257 }
1258 ]
1259 },
Nodir Turakulovfce34292019-12-18 17:05:411260 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111261 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281262 },
1263 {
1264 "args": [
1265 "--variation"
1266 ],
Stephen Martinisbc7b7772019-05-01 22:01:431267 "merge": {
1268 "args": [],
1269 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1270 },
Kenneth Russelleb60cbd22017-12-05 07:54:281271 "name": "variation_test",
1272 "swarming": {
1273 "can_use_on_swarming_builders": true,
1274 "dimension_sets": [
1275 {
1276 "kvm": "1"
1277 }
1278 ]
1279 },
Nodir Turakulovfce34292019-12-18 17:05:411280 "test": "foo_test",
Chan Lia3ad1502020-04-28 05:32:111281 "test_id_prefix": "ninja://chrome/test:foo_test/"
Kenneth Russelleb60cbd22017-12-05 07:54:281282 }
1283 ]
1284 }
1285}
1286"""
1287
Jamie Madilla8be0d72020-10-02 05:24:041288FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT = """\
1289{
1290 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1291 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1292 "Fake Tester": {
1293 "gtest_tests": [
1294 {
1295 "merge": {
1296 "args": [],
1297 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1298 },
1299 "script": "foo.py",
1300 "swarming": {
1301 "can_use_on_swarming_builders": true,
1302 "dimension_sets": [
1303 {
1304 "kvm": "1"
1305 }
1306 ]
1307 },
1308 "test": "foo_test",
1309 "test_id_prefix": "ninja://chrome/test:foo_test/",
1310 "use_isolated_scripts_api": true
1311 }
1312 ]
1313 }
1314}
1315"""
1316
Kenneth Russelleb60cbd22017-12-05 07:54:281317COMPOSITION_WATERFALL_FILTERED_OUTPUT = """\
1318{
1319 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1320 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1321 "Fake Tester": {
1322 "gtest_tests": [
1323 {
Stephen Martinisbc7b7772019-05-01 22:01:431324 "merge": {
1325 "args": [],
1326 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1327 },
Kenneth Russelleb60cbd22017-12-05 07:54:281328 "swarming": {
1329 "can_use_on_swarming_builders": true
1330 },
1331 "test": "foo_test"
1332 }
1333 ]
1334 }
1335}
1336"""
1337
Kenneth Russell8ceeabf2017-12-11 17:53:281338MERGED_ARGS_OUTPUT = """\
1339{
1340 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1341 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1342 "Fake Tester": {
1343 "gtest_tests": [
1344 {
1345 "args": [
Stephen Martinis3bed2ab2018-04-23 19:42:061346 "--c_arg",
1347 "--bar"
Kenneth Russell8ceeabf2017-12-11 17:53:281348 ],
Stephen Martinisbc7b7772019-05-01 22:01:431349 "merge": {
1350 "args": [],
1351 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1352 },
Kenneth Russell8ceeabf2017-12-11 17:53:281353 "swarming": {
1354 "can_use_on_swarming_builders": true,
1355 "dimension_sets": [
1356 {
1357 "kvm": "1"
1358 }
1359 ],
1360 "hard_timeout": 600
1361 },
1362 "test": "foo_test"
1363 }
1364 ]
1365 }
1366}
1367"""
1368
Kenneth Russell8a386d42018-06-02 09:48:011369LINUX_ARGS_OUTPUT = """\
1370{
1371 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1372 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1373 "Fake Tester": {
1374 "gtest_tests": [
1375 {
1376 "args": [
1377 "--no-xvfb"
1378 ],
Stephen Martinisbc7b7772019-05-01 22:01:431379 "merge": {
1380 "args": [],
1381 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1382 },
Kenneth Russell8a386d42018-06-02 09:48:011383 "swarming": {
1384 "can_use_on_swarming_builders": true
1385 },
1386 "test": "foo_test"
1387 }
1388 ]
1389 }
1390}
1391"""
1392
Kenneth Russell650995a2018-05-03 21:17:011393MERGED_ENABLE_FEATURES_OUTPUT = """\
1394{
1395 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1396 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1397 "Fake Tester": {
1398 "gtest_tests": [
1399 {
1400 "args": [
1401 "--enable-features=Foo,Bar,Baz"
1402 ],
Stephen Martinisbc7b7772019-05-01 22:01:431403 "merge": {
1404 "args": [],
1405 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1406 },
Kenneth Russell650995a2018-05-03 21:17:011407 "swarming": {
1408 "can_use_on_swarming_builders": true
1409 },
1410 "test": "foo_test"
1411 }
1412 ]
1413 }
1414}
1415"""
1416
Kenneth Russelleb60cbd22017-12-05 07:54:281417MODIFIED_OUTPUT = """\
1418{
1419 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1420 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1421 "Fake Tester": {
1422 "gtest_tests": [
1423 {
1424 "args": [
1425 "--bar"
1426 ],
Stephen Martinisbc7b7772019-05-01 22:01:431427 "merge": {
1428 "args": [],
1429 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1430 },
Kenneth Russelleb60cbd22017-12-05 07:54:281431 "swarming": {
1432 "can_use_on_swarming_builders": true,
1433 "dimension_sets": [
1434 {
1435 "integrity": "high",
1436 "kvm": "1"
1437 }
1438 ],
1439 "expiration": 120,
1440 "hard_timeout": 600
1441 },
1442 "test": "foo_test"
1443 }
1444 ]
1445 }
1446}
1447"""
1448
John Budorick5bc387fe2019-05-09 20:02:531449EXPLICIT_NONE_OUTPUT = """\
1450{
1451 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1452 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1453 "Fake Tester": {
1454 "gtest_tests": [
1455 {
1456 "merge": {
1457 "args": [],
1458 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1459 },
1460 "swarming": {
1461 "can_use_on_swarming_builders": true,
1462 "dimension_sets": [
1463 {
1464 "kvm": "1"
1465 }
1466 ],
1467 "expiration": 120
1468 },
1469 "test": "foo_test"
1470 }
1471 ]
1472 }
1473}
1474"""
1475
Kenneth Russelleb60cbd22017-12-05 07:54:281476ISOLATED_SCRIPT_OUTPUT = """\
1477{
1478 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1479 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1480 "Fake Tester": {
1481 "isolated_scripts": [
1482 {
1483 "isolate_name": "foo_test",
Stephen Martinisf50047062019-05-06 22:26:171484 "merge": {
1485 "args": [],
1486 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1487 },
Kenneth Russelleb60cbd22017-12-05 07:54:281488 "name": "foo_test",
1489 "swarming": {
1490 "can_use_on_swarming_builders": true
1491 }
1492 }
1493 ]
1494 }
1495}
1496"""
1497
Dirk Pranke0e879b22020-07-16 23:53:561498ISOLATED_SCRIPT_OUTPUT_ANDROID = """\
1499{
1500 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1501 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1502 "Fake Tester": {
1503 "isolated_scripts": [
1504 {
1505 "args": [
1506 "--gs-results-bucket=chromium-result-details"
1507 ],
1508 "isolate_name": "foo_test",
1509 "merge": {
1510 "args": [
1511 "--bucket",
1512 "chromium-result-details",
1513 "--test-name",
1514 "foo_test"
1515 ],
Yuly Novikov26dd47052021-02-11 00:57:141516 "script": \
1517"//build/android/pylib/results/presentation/test_results_presentation.py"
Dirk Pranke0e879b22020-07-16 23:53:561518 },
1519 "name": "foo_test",
1520 "swarming": {
1521 "can_use_on_swarming_builders": true,
1522 "cipd_packages": [
1523 {
1524 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1525 "location": "bin",
Yuly Novikov26dd47052021-02-11 00:57:141526 "revision": \
1527"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
Dirk Pranke0e879b22020-07-16 23:53:561528 }
1529 ],
1530 "output_links": [
1531 {
1532 "link": [
1533 "https://luci-logdog.appspot.com/v/?s",
1534 "=android%2Fswarming%2Flogcats%2F",
1535 "${TASK_ID}%2F%2B%2Funified_logcats"
1536 ],
1537 "name": "shard #${SHARD_INDEX} logcats"
1538 }
1539 ]
1540 }
1541 }
1542 ]
1543 }
1544}
1545"""
1546
Kenneth Russelleb60cbd22017-12-05 07:54:281547SCRIPT_OUTPUT = """\
1548{
1549 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1550 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1551 "Fake Tester": {
1552 "scripts": [
1553 {
1554 "name": "foo_test",
1555 "script": "foo.py"
1556 }
1557 ]
1558 }
1559}
1560"""
1561
Dirk Pranke1b767092017-12-07 04:44:231562SCRIPT_WITH_ARGS_OUTPUT = """\
1563{
1564 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1565 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1566 "Fake Tester": {
1567 "scripts": [
1568 {
1569 "args": [
1570 "--fake-arg"
1571 ],
1572 "name": "foo_test",
1573 "script": "foo.py"
1574 }
1575 ]
1576 }
1577}
1578"""
1579
Kenneth Russelleb60cbd22017-12-05 07:54:281580JUNIT_OUTPUT = """\
1581{
1582 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1583 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1584 "Fake Tester": {
1585 "junit_tests": [
1586 {
John Budorickcadc4952019-09-16 23:51:371587 "name": "foo_test",
Kenneth Russelleb60cbd22017-12-05 07:54:281588 "test": "foo_test"
1589 }
1590 ]
1591 }
1592}
1593"""
1594
Kenneth Russell8a386d42018-06-02 09:48:011595GPU_TELEMETRY_TEST_OUTPUT = """\
1596{
1597 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1598 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1599 "Fake Tester": {
1600 "isolated_scripts": [
1601 {
1602 "args": [
1603 "foo",
1604 "--show-stdout",
1605 "--browser=release",
1606 "--passthrough",
1607 "-v",
1608 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1609 ],
1610 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171611 "merge": {
1612 "args": [],
1613 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1614 },
Kenneth Russell8a386d42018-06-02 09:48:011615 "name": "foo_tests",
Kenneth Russell44910c32018-12-03 23:35:111616 "should_retry_with_patch": false,
Kenneth Russell8a386d42018-06-02 09:48:011617 "swarming": {
1618 "can_use_on_swarming_builders": true,
1619 "dimension_sets": [
1620 {
1621 "gpu": "10de:1cb3"
1622 }
erikchen6da2d9b2018-08-03 23:01:141623 ],
1624 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191625 },
Chan Li17d969f92020-07-10 00:50:031626 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell8a386d42018-06-02 09:48:011627 }
1628 ]
1629 }
1630}
1631"""
1632
Brian Sheedyf74819b2021-06-04 01:38:381633GPU_TELEMETRY_TEST_OUTPUT_ANDROID = """\
1634{
1635 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1636 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1637 "Fake Tester": {
1638 "isolated_scripts": [
1639 {
1640 "args": [
1641 "foo",
1642 "--show-stdout",
1643 "--browser=android-chromium",
1644 "--passthrough",
1645 "-v",
1646 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1647 ],
1648 "isolate_name": "telemetry_gpu_integration_test_android_chrome",
1649 "merge": {
1650 "args": [],
1651 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1652 },
1653 "name": "foo_tests",
1654 "should_retry_with_patch": false,
1655 "swarming": {
1656 "can_use_on_swarming_builders": true,
1657 "cipd_packages": [
1658 {
1659 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1660 "location": "bin",
1661 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1662 }
1663 ],
1664 "dimension_sets": [
1665 {
1666 "device_type": "bullhead"
1667 }
1668 ],
1669 "idempotent": false
1670 },
1671 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_chrome/"
1672 }
1673 ]
1674 }
1675}
1676"""
1677
1678GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW = """\
1679{
1680 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1681 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1682 "Fake Tester": {
1683 "isolated_scripts": [
1684 {
1685 "args": [
1686 "foo",
1687 "--show-stdout",
1688 "--browser=android-webview-instrumentation",
1689 "--passthrough",
1690 "-v",
1691 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
1692 ],
1693 "isolate_name": "telemetry_gpu_integration_test_android_webview",
1694 "merge": {
1695 "args": [],
1696 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1697 },
1698 "name": "foo_tests",
1699 "should_retry_with_patch": false,
1700 "swarming": {
1701 "can_use_on_swarming_builders": true,
1702 "cipd_packages": [
1703 {
1704 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1705 "location": "bin",
1706 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1707 }
1708 ],
1709 "dimension_sets": [
1710 {
1711 "device_type": "bullhead"
1712 }
1713 ],
1714 "idempotent": false
1715 },
1716 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test_android_webview/"
1717 }
1718 ]
1719 }
1720}
1721"""
1722
Kenneth Russell384a1732019-03-16 02:36:021723NVIDIA_GPU_TELEMETRY_TEST_OUTPUT = """\
1724{
1725 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1726 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1727 "Fake Tester": {
1728 "isolated_scripts": [
1729 {
1730 "args": [
1731 "foo",
1732 "--show-stdout",
1733 "--browser=release",
1734 "--passthrough",
1735 "-v",
1736 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1737 "--gpu-vendor-id",
1738 "10de",
1739 "--gpu-device-id",
1740 "1cb3"
1741 ],
1742 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171743 "merge": {
1744 "args": [],
1745 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1746 },
Kenneth Russell384a1732019-03-16 02:36:021747 "name": "foo_tests",
1748 "should_retry_with_patch": false,
1749 "swarming": {
1750 "can_use_on_swarming_builders": true,
1751 "dimension_sets": [
1752 {
Brian Sheedy0e26c4e02020-05-28 22:09:091753 "gpu": "10de:1cb3-26.21.14.3102"
Kenneth Russell384a1732019-03-16 02:36:021754 }
1755 ],
1756 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191757 },
Chan Li17d969f92020-07-10 00:50:031758 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021759 }
1760 ]
1761 }
1762}
1763"""
1764
1765INTEL_GPU_TELEMETRY_TEST_OUTPUT = """\
1766{
1767 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1768 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1769 "Fake Tester": {
1770 "isolated_scripts": [
1771 {
1772 "args": [
1773 "foo",
1774 "--show-stdout",
1775 "--browser=release",
1776 "--passthrough",
1777 "-v",
1778 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1779 "--gpu-vendor-id",
1780 "8086",
1781 "--gpu-device-id",
1782 "5912"
1783 ],
1784 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:171785 "merge": {
1786 "args": [],
1787 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1788 },
Kenneth Russell384a1732019-03-16 02:36:021789 "name": "foo_tests",
1790 "should_retry_with_patch": false,
1791 "swarming": {
1792 "can_use_on_swarming_builders": true,
1793 "dimension_sets": [
1794 {
Brian Sheedy0e26c4e02020-05-28 22:09:091795 "gpu": "8086:5912-24.20.100.6286"
Kenneth Russell384a1732019-03-16 02:36:021796 }
1797 ],
1798 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191799 },
Chan Li17d969f92020-07-10 00:50:031800 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Kenneth Russell384a1732019-03-16 02:36:021801 }
1802 ]
1803 }
1804}
1805"""
1806
Brian Sheedyf9387db7b2019-08-05 19:26:101807INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT = """\
1808{
1809 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1810 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1811 "Fake Tester": {
1812 "isolated_scripts": [
1813 {
1814 "args": [
1815 "foo",
1816 "--show-stdout",
1817 "--browser=release",
1818 "--passthrough",
1819 "-v",
1820 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc",
1821 "--gpu-vendor-id",
1822 "8086",
1823 "--gpu-device-id",
1824 "3e92"
1825 ],
1826 "isolate_name": "telemetry_gpu_integration_test",
1827 "merge": {
1828 "args": [],
1829 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
1830 },
1831 "name": "foo_tests",
1832 "should_retry_with_patch": false,
1833 "swarming": {
1834 "can_use_on_swarming_builders": true,
1835 "dimension_sets": [
1836 {
Brian Sheedy0e26c4e02020-05-28 22:09:091837 "gpu": "8086:3e92-24.20.100.6286"
Brian Sheedyf9387db7b2019-08-05 19:26:101838 }
1839 ],
1840 "idempotent": false
Chan Liab7d8dd82020-04-24 23:42:191841 },
Chan Li17d969f92020-07-10 00:50:031842 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Brian Sheedyf9387db7b2019-08-05 19:26:101843 }
1844 ]
1845 }
1846}
1847"""
1848
Kenneth Russelleb60cbd22017-12-05 07:54:281849ANDROID_WATERFALL_OUTPUT = """\
1850{
1851 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1852 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1853 "Android Builder": {
1854 "additional_compile_targets": [
1855 "bar_test"
1856 ]
1857 },
1858 "Fake Android K Tester": {
1859 "additional_compile_targets": [
1860 "bar_test"
1861 ],
1862 "gtest_tests": [
1863 {
John Budorick826d5ed2017-12-28 19:27:321864 "args": [
Kenneth Russell5612d64a2018-06-02 21:12:301865 "--gs-results-bucket=chromium-result-details",
1866 "--recover-devices"
John Budorick826d5ed2017-12-28 19:27:321867 ],
Stephen Martinisbc7b7772019-05-01 22:01:431868 "merge": {
1869 "args": [],
1870 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1871 },
Kenneth Russelleb60cbd22017-12-05 07:54:281872 "swarming": {
1873 "can_use_on_swarming_builders": true,
1874 "cipd_packages": [
1875 {
1876 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1877 "location": "bin",
1878 "revision": \
1879"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1880 }
1881 ],
1882 "dimension_sets": [
1883 {
1884 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:281885 "device_os_type": "userdebug",
Kenneth Russelleb60cbd22017-12-05 07:54:281886 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221887 "integrity": "high",
1888 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281889 }
1890 ],
1891 "expiration": 120,
1892 "output_links": [
1893 {
1894 "link": [
1895 "https://luci-logdog.appspot.com/v/?s",
1896 "=android%2Fswarming%2Flogcats%2F",
1897 "${TASK_ID}%2F%2B%2Funified_logcats"
1898 ],
1899 "name": "shard #${SHARD_INDEX} logcats"
1900 }
1901 ]
1902 },
1903 "test": "foo_test"
1904 }
1905 ]
1906 },
1907 "Fake Android L Tester": {
1908 "gtest_tests": [
1909 {
Benjamin Pastene766d48f52017-12-18 21:47:421910 "args": [
John Budorick826d5ed2017-12-28 19:27:321911 "--gs-results-bucket=chromium-result-details",
Benjamin Pastene766d48f52017-12-18 21:47:421912 "--recover-devices"
1913 ],
Stephen Martinisbc7b7772019-05-01 22:01:431914 "merge": {
1915 "args": [],
1916 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1917 },
Kenneth Russelleb60cbd22017-12-05 07:54:281918 "swarming": {
1919 "can_use_on_swarming_builders": true,
1920 "cipd_packages": [
1921 {
1922 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
1923 "location": "bin",
1924 "revision": \
1925"git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
1926 }
1927 ],
1928 "dimension_sets": [
1929 {
Ben Pastenee012aea42019-05-14 22:32:281930 "device_os": "LMY41U",
1931 "device_os_type": "user",
Kenneth Russelleb60cbd22017-12-05 07:54:281932 "device_type": "hammerhead",
Ben Pastened15aa8a2019-05-16 16:59:221933 "integrity": "high",
1934 "os": "Android"
Kenneth Russelleb60cbd22017-12-05 07:54:281935 }
1936 ],
1937 "expiration": 120
1938 },
1939 "test": "foo_test"
1940 }
1941 ]
1942 },
1943 "Fake Android M Tester": {
1944 "gtest_tests": [
1945 {
Stephen Martinisbc7b7772019-05-01 22:01:431946 "merge": {
1947 "args": [],
1948 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1949 },
Kenneth Russelleb60cbd22017-12-05 07:54:281950 "swarming": {
1951 "can_use_on_swarming_builders": false
1952 },
1953 "test": "foo_test"
1954 }
1955 ]
1956 }
1957}
1958"""
1959
Ben Pastenea9e583b2019-01-16 02:57:261960CHROMEOS_TRIGGER_SCRIPT_OUTPUT = """\
1961{
1962 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1963 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1964 "Fake Tester": {
1965 "gtest_tests": [
1966 {
Stephen Martinisbc7b7772019-05-01 22:01:431967 "merge": {
1968 "args": [],
1969 "script": "//testing/merge_scripts/standard_gtest_merge.py"
1970 },
Ben Pastenea9e583b2019-01-16 02:57:261971 "swarming": {
1972 "can_use_on_swarming_builders": true,
1973 "dimension_sets": [
1974 {
1975 "device_type": "foo_device",
1976 "integrity": "high"
1977 }
1978 ],
1979 "expiration": 120
1980 },
1981 "test": "foo_test",
1982 "trigger_script": {
1983 "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
1984 }
1985 }
1986 ]
1987 }
1988}
1989"""
1990
Stephen Martinis2a0667022018-09-25 22:31:141991GPU_DIMENSIONS_WATERFALL_OUTPUT = """\
1992{
1993 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
1994 "AAAAA2 See generate_buildbot_json.py to make changes": {},
1995 "Fake Tester": {
1996 "isolated_scripts": [
1997 {
1998 "args": [
1999 "foo_test",
2000 "--show-stdout",
2001 "--browser=release",
2002 "--passthrough",
2003 "-v",
2004 "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc"
2005 ],
2006 "isolate_name": "telemetry_gpu_integration_test",
Stephen Martinisf50047062019-05-06 22:26:172007 "merge": {
2008 "args": [],
2009 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
2010 },
Stephen Martinis2a0667022018-09-25 22:31:142011 "name": "foo_test",
Kenneth Russell44910c32018-12-03 23:35:112012 "should_retry_with_patch": false,
Stephen Martinis2a0667022018-09-25 22:31:142013 "swarming": {
2014 "can_use_on_swarming_builders": true,
2015 "dimension_sets": [
2016 {
2017 "iama": "mixin",
2018 "integrity": "high"
2019 }
2020 ],
2021 "expiration": 120,
2022 "idempotent": false,
2023 "value": "test"
Chan Liab7d8dd82020-04-24 23:42:192024 },
Chan Li17d969f92020-07-10 00:50:032025 "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/"
Stephen Martinis2a0667022018-09-25 22:31:142026 }
2027 ]
2028 }
2029}
2030"""
2031
Kenneth Russell78fd8702018-05-17 01:15:522032LUCI_MILO_CFG = """\
2033consoles {
2034 builders {
2035 name: "buildbucket/luci.chromium.ci/Fake Tester"
2036 }
2037}
2038"""
2039
Stephen Martinis54d64ad2018-09-21 22:16:202040LUCI_MILO_CFG_WATERFALL_SORTING = """\
2041consoles {
2042 builders {
2043 name: "buildbucket/luci.chromium.ci/Fake Tester"
2044 name: "buildbucket/luci.chromium.ci/Really Fake Tester"
2045 }
2046}
2047"""
2048
Stephen Martinis54d64ad2018-09-21 22:16:202049TEST_SUITE_SORTING_WATERFALL = """
2050[
2051 {
Greg Gutermanf60eb052020-03-12 17:40:012052 'project': 'chromium',
2053 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202054 'name': 'chromium.test',
2055 'machines': {
2056 'Fake Tester': {
2057 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562058 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202059 'scripts': 'suite_b',
2060 },
2061 },
2062 },
2063 },
2064]
2065"""
2066
2067TEST_SUITE_SORTED_WATERFALL = """
2068[
2069 {
Greg Gutermanf60eb052020-03-12 17:40:012070 'project': 'chromium',
2071 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202072 'name': 'chromium.test',
2073 'machines': {
2074 'Fake Tester': {
2075 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562076 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202077 'scripts': 'suite_b',
2078 },
2079 },
2080 'Really Fake Tester': {
2081 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562082 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202083 'scripts': 'suite_b',
2084 },
2085 },
2086 },
2087 },
2088 {
Greg Gutermanf60eb052020-03-12 17:40:012089 'project': 'chromium',
2090 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202091 'name': 'chromium.zz.test',
2092 'machines': {
2093 'Fake Tester': {
2094 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562095 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202096 'scripts': 'suite_b',
2097 },
2098 },
2099 'Really Fake Tester': {
2100 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562101 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202102 'scripts': 'suite_b',
2103 },
2104 },
2105 },
2106 },
2107]
2108"""
2109
2110TEST_SUITE_UNSORTED_WATERFALL_1 = """
2111[
2112 {
Greg Gutermanf60eb052020-03-12 17:40:012113 'project': 'chromium',
2114 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202115 'name': 'chromium.zz.test',
2116 'machines': {
2117 'Fake Tester': {
2118 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562119 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202120 'scripts': 'suite_b',
2121 },
2122 },
2123 'Really Fake Tester': {
2124 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562125 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202126 'scripts': 'suite_b',
2127 },
2128 },
2129 },
2130 },
2131 {
Greg Gutermanf60eb052020-03-12 17:40:012132 'project': 'chromium',
2133 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202134 'name': 'chromium.test',
2135 'machines': {
2136 'Fake Tester': {
2137 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562138 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202139 'scripts': 'suite_b',
2140 },
2141 },
2142 'Really Fake Tester': {
2143 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562144 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202145 'scripts': 'suite_b',
2146 },
2147 },
2148 },
2149 },
2150]
2151"""
2152
2153TEST_SUITE_UNSORTED_WATERFALL_2 = """
2154[
2155 {
Greg Gutermanf60eb052020-03-12 17:40:012156 'project': 'chromium',
2157 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202158 'name': 'chromium.test',
2159 'machines': {
2160 'Really Fake Tester': {
2161 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562162 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202163 'scripts': 'suite_b',
2164 },
2165 },
2166 'Fake Tester': {
2167 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562168 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202169 'scripts': 'suite_b',
2170 },
2171 },
2172 },
2173 },
2174 {
Greg Gutermanf60eb052020-03-12 17:40:012175 'project': 'chromium',
2176 'bucket': 'ci',
Stephen Martinis54d64ad2018-09-21 22:16:202177 'name': 'chromium.zz.test',
2178 'machines': {
2179 'Fake Tester': {
2180 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562181 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202182 'scripts': 'suite_b',
2183 },
2184 },
2185 'Really Fake Tester': {
2186 'test_suites': {
Dirk Pranke0e879b22020-07-16 23:53:562187 'gtest_tests': 'suite_a',
Stephen Martinis54d64ad2018-09-21 22:16:202188 'scripts': 'suite_b',
2189 },
2190 },
2191 },
2192 },
2193]
2194"""
2195
2196# Note that the suites in basic_suites would be sorted after the suites in
2197# compound_suites. This is valid though, because each set of suites is sorted
2198# separately.
Dirk Pranke0e879b22020-07-16 23:53:562199# suite_c is a 'gtest_tests' test
2200# suite_d is a 'scripts' test
Stephen Martinis54d64ad2018-09-21 22:16:202201TEST_SUITE_SORTED = """\
2202{
2203 'basic_suites': {
2204 'suite_c': {
2205 'suite_c': {},
2206 },
2207 'suite_d': {
2208 'script': {
2209 'script': 'suite_d.py',
2210 }
2211 },
2212 },
2213 'compound_suites': {
2214 'suite_a': [
2215 'suite_c',
2216 ],
2217 'suite_b': [
2218 'suite_d',
2219 ],
2220 },
2221}
2222"""
2223
2224TEST_SUITE_UNSORTED_1 = """\
2225{
2226 'basic_suites': {
2227 'suite_d': {
2228 'a': 'b',
2229 },
2230 'suite_c': {
2231 'a': 'b',
2232 },
2233 },
2234 'compound_suites': {
2235 'suite_a': [
2236 'suite_c',
2237 ],
2238 'suite_b': [
2239 'suite_d',
2240 ],
2241 },
2242}
2243"""
2244
2245TEST_SUITE_UNSORTED_2 = """\
2246{
2247 'basic_suites': {
2248 'suite_c': {
2249 'a': 'b',
2250 },
2251 'suite_d': {
2252 'a': 'b',
2253 },
2254 },
2255 'compound_suites': {
2256 'suite_b': [
2257 'suite_c',
2258 ],
2259 'suite_a': [
2260 'suite_d',
2261 ],
2262 },
2263}
2264"""
2265TEST_SUITE_UNSORTED_3 = """\
2266{
2267 'basic_suites': {
2268 'suite_d': {
2269 'a': 'b',
2270 },
2271 'suite_c': {
2272 'a': 'b',
2273 },
2274 },
2275 'compound_suites': {
2276 'suite_b': [
2277 'suite_c',
2278 ],
2279 'suite_a': [
2280 'suite_d',
2281 ],
2282 },
2283}
2284"""
2285
2286
2287TEST_SUITES_SYNTAX_ERROR = """\
2288{
2289 'basic_suites': {
2290 3: {
2291 'suite_c': {},
2292 },
2293 },
2294 'compound_suites': {},
2295}
2296"""
2297
Nodir Turakulovfce34292019-12-18 17:05:412298GN_ISOLATE_MAP="""\
2299{
2300 'foo_test': {
2301 'label': '//chrome/test:foo_test',
2302 'type': 'windowed_test_launcher',
2303 }
2304}
2305"""
2306
Chan Liab7d8dd82020-04-24 23:42:192307GPU_TELEMETRY_GN_ISOLATE_MAP="""\
2308{
2309 'telemetry_gpu_integration_test': {
2310 'label': '//chrome/test:telemetry_gpu_integration_test',
2311 'type': 'script',
2312 }
2313}
2314"""
Brian Sheedyf74819b2021-06-04 01:38:382315
2316GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID = """\
2317{
2318 'telemetry_gpu_integration_test_android_chrome': {
2319 'label': '//chrome/test:telemetry_gpu_integration_test_android_chrome',
2320 'type': 'script',
2321 }
2322}
2323"""
2324
2325GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW = """\
2326{
2327 'telemetry_gpu_integration_test_android_webview': {
2328 'label': '//chrome/test:telemetry_gpu_integration_test_android_webview',
2329 'type': 'script',
2330 }
2331}
2332"""
2333
Corentin Wallez55b8e772020-04-24 17:39:282334GN_ISOLATE_MAP_KEY_LABEL_MISMATCH="""\
2335{
2336 'foo_test': {
2337 'label': '//chrome/test:foo_test_tmp',
2338 'type': 'windowed_test_launcher',
2339 }
2340}
2341"""
2342
2343GN_ISOLATE_MAP_USING_IMPLICIT_NAME="""\
2344{
2345 'foo_test': {
2346 'label': '//chrome/foo_test',
2347 'type': 'windowed_test_launcher',
2348 }
2349}
2350"""
2351
Garrett Beaty1afaccc2020-06-25 19:58:152352class UnitTest(TestCase):
Kenneth Russelleb60cbd22017-12-05 07:54:282353 def test_base_generator(self):
2354 # Only needed for complete code coverage.
2355 self.assertRaises(NotImplementedError,
2356 generate_buildbot_json.BaseGenerator(None).generate,
2357 None, None, None, None)
2358 self.assertRaises(NotImplementedError,
2359 generate_buildbot_json.BaseGenerator(None).sort,
2360 None)
2361
2362 def test_good_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152363 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522364 LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502365 fbb.check_input_file_consistency(verbose=True)
2366 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282367
2368 def test_good_composition_test_suites_are_ok(self):
Garrett Beaty1afaccc2020-06-25 19:58:152369 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2370 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Stephen Martinis7eb8b612018-09-21 00:17:502371 fbb.check_input_file_consistency(verbose=True)
2372 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282373
2374 def test_bad_composition_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152375 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2376 BAD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232377 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2378 'compound_suites may not refer to.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502379 fbb.check_input_file_consistency(verbose=True)
2380 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282381
Andrew Luo0f1dee02019-09-06 16:50:472382 def test_composition_test_suites_no_conflicts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152383 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2384 CONFLICTING_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232385 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2386 'Conflicting test definitions.*'):
Andrew Luo0f1dee02019-09-06 16:50:472387 fbb.check_input_file_consistency(verbose=True)
2388 self.assertFalse(fbb.printed_lines)
2389
Stephen Martinis54d64ad2018-09-21 22:16:202390 def test_composition_test_suites_no_duplicate_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:152391 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2392 DUPLICATES_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232393 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2394 '.*may not duplicate basic test suite.*'):
Stephen Martinis54d64ad2018-09-21 22:16:202395 fbb.check_input_file_consistency(verbose=True)
2396 self.assertFalse(fbb.printed_lines)
2397
Kenneth Russelleb60cbd22017-12-05 07:54:282398 def test_unknown_test_suites_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152399 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522400 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232401 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2402 'Test suite baz_tests from machine.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502403 fbb.check_input_file_consistency(verbose=True)
2404 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282405
2406 def test_unknown_test_suite_types_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152407 fbb = FakeBBGen(self.args, UNKNOWN_TEST_SUITE_TYPE_WATERFALL,
2408 FOO_TEST_SUITE, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232409 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2410 'Unknown test suite type foo_test_type.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502411 fbb.check_input_file_consistency(verbose=True)
2412 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282413
2414 def test_unrefed_test_suite_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152415 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, UNREFED_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522416 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:232417 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2418 '.*unreferenced.*bar_tests.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502419 fbb.check_input_file_consistency(verbose=True)
2420 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282421
2422 def test_good_waterfall_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152423 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WATERFALL,
2424 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2425 self.create_testing_buildbot_json_file('chromium.test.json',
2426 COMPOSITION_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282427 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502428 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282429
2430 def test_reusing_gtest_targets(self):
Garrett Beaty1afaccc2020-06-25 19:58:152431 fbb = FakeBBGen(self.args,
2432 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282433 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412434 LUCI_MILO_CFG,
2435 gn_isolate_map=GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152436 self.create_testing_buildbot_json_file('chromium.test.json',
2437 VARIATION_GTEST_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282438 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502439 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282440
Chong Guee622242020-10-28 18:17:352441 def test_load_multiple_isolate_map_files_with_duplicates(self):
2442 self.args.isolate_map_files = ['gn_isolate_map.pyl']
2443 fbb = FakeBBGen(self.args,
2444 FOO_GTESTS_WATERFALL,
2445 REUSING_TEST_WITH_DIFFERENT_NAME,
2446 LUCI_MILO_CFG,
2447 gn_isolate_map=GN_ISOLATE_MAP)
Jamie Madillcf4f8c72021-05-20 19:24:232448 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2449 'Duplicate targets in isolate map files.*'):
Chong Guee622242020-10-28 18:17:352450 fbb.load_configuration_files()
2451
2452 def test_load_multiple_isolate_map_files_without_duplicates(self):
2453 self.args.isolate_map_files = ['gn_isolate_map2.pyl']
2454 fbb = FakeBBGen(self.args,
2455 FOO_GTESTS_WATERFALL,
2456 REUSING_TEST_WITH_DIFFERENT_NAME,
2457 LUCI_MILO_CFG,
2458 gn_isolate_map=GN_ISOLATE_MAP)
2459 fbb.load_configuration_files()
2460 isolate_dict = {}
2461 isolate_map_1 = fbb.load_pyl_file('gn_isolate_map.pyl')
2462 isolate_map_2 = fbb.load_pyl_file('gn_isolate_map2.pyl')
2463 isolate_dict.update(isolate_map_1)
2464 isolate_dict.update(isolate_map_2)
Jamie Madillcf4f8c72021-05-20 19:24:232465 self.assertEqual(isolate_dict, fbb.gn_isolate_map)
Chong Guee622242020-10-28 18:17:352466
Corentin Wallez55b8e772020-04-24 17:39:282467 def test_gn_isolate_map_with_label_mismatch(self):
Garrett Beaty1afaccc2020-06-25 19:58:152468 fbb = FakeBBGen(self.args,
2469 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282470 FOO_TEST_SUITE,
2471 LUCI_MILO_CFG,
2472 gn_isolate_map=GN_ISOLATE_MAP_KEY_LABEL_MISMATCH)
Jamie Madillcf4f8c72021-05-20 19:24:232473 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2474 'key name.*foo_test.*label.*'
2475 'foo_test_tmp.*'):
Corentin Wallez55b8e772020-04-24 17:39:282476 fbb.check_input_file_consistency(verbose=True)
2477 self.assertFalse(fbb.printed_lines)
2478
2479 def test_gn_isolate_map_using_implicit_gn_name(self):
Garrett Beaty1afaccc2020-06-25 19:58:152480 fbb = FakeBBGen(self.args,
2481 FOO_GTESTS_WATERFALL,
Corentin Wallez55b8e772020-04-24 17:39:282482 FOO_TEST_SUITE,
2483 LUCI_MILO_CFG,
2484 gn_isolate_map=GN_ISOLATE_MAP_USING_IMPLICIT_NAME)
Jamie Madillcf4f8c72021-05-20 19:24:232485 with self.assertRaisesRegex(
2486 generate_buildbot_json.BBGenErr,
2487 'Malformed.*//chrome/foo_test.*for key.*'
2488 'foo_test.*'):
Corentin Wallez55b8e772020-04-24 17:39:282489 fbb.check_input_file_consistency(verbose=True)
2490 self.assertFalse(fbb.printed_lines)
2491
Kenneth Russelleb60cbd22017-12-05 07:54:282492 def test_noop_exception_does_nothing(self):
Garrett Beaty1afaccc2020-06-25 19:58:152493 fbb = FakeBBGen(self.args,
2494 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282495 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412496 LUCI_MILO_CFG,
2497 exceptions=EMPTY_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152498 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
Kenneth Russell8ceeabf2017-12-11 17:53:282503 def test_test_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152504 fbb = FakeBBGen(self.args,
2505 FOO_GTESTS_WATERFALL,
Kenneth Russell8ceeabf2017-12-11 17:53:282506 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412507 LUCI_MILO_CFG,
2508 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152509 self.create_testing_buildbot_json_file('chromium.test.json',
2510 MERGED_ARGS_OUTPUT)
Kenneth Russell8ceeabf2017-12-11 17:53:282511 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502512 self.assertFalse(fbb.printed_lines)
Kenneth Russell8ceeabf2017-12-11 17:53:282513
Kenneth Russell650995a2018-05-03 21:17:012514 def test_enable_features_arg_merges(self):
Garrett Beaty1afaccc2020-06-25 19:58:152515 fbb = FakeBBGen(self.args, FOO_GTESTS_WITH_ENABLE_FEATURES_WATERFALL,
2516 FOO_TEST_SUITE_WITH_ENABLE_FEATURES, LUCI_MILO_CFG)
2517 self.create_testing_buildbot_json_file('chromium.test.json',
2518 MERGED_ENABLE_FEATURES_OUTPUT)
Kenneth Russell650995a2018-05-03 21:17:012519 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502520 self.assertFalse(fbb.printed_lines)
Kenneth Russell650995a2018-05-03 21:17:012521
Kenneth Russell8a386d42018-06-02 09:48:012522 def test_linux_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152523 fbb = FakeBBGen(self.args, FOO_LINUX_GTESTS_WATERFALL,
2524 FOO_TEST_SUITE_WITH_LINUX_ARGS, LUCI_MILO_CFG)
2525 self.create_testing_buildbot_json_file('chromium.test.json',
2526 LINUX_ARGS_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012527 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502528 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012529
Kenneth Russelleb60cbd22017-12-05 07:54:282530 def test_test_filtering(self):
Garrett Beaty1afaccc2020-06-25 19:58:152531 fbb = FakeBBGen(self.args,
2532 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282533 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412534 LUCI_MILO_CFG,
2535 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152536 self.create_testing_buildbot_json_file(
2537 'chromium.test.json', COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282538 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502539 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282540
2541 def test_test_modifications(self):
Garrett Beaty1afaccc2020-06-25 19:58:152542 fbb = FakeBBGen(self.args,
2543 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282544 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412545 LUCI_MILO_CFG,
2546 exceptions=FOO_TEST_MODIFICATIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152547 self.create_testing_buildbot_json_file('chromium.test.json',
2548 MODIFIED_OUTPUT)
2549 self.create_testing_buildbot_json_file('chromium.ci.json', MODIFIED_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282550 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502551 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282552
John Budorick5bc387fe2019-05-09 20:02:532553 def test_test_with_explicit_none(self):
Garrett Beaty1afaccc2020-06-25 19:58:152554 fbb = FakeBBGen(self.args,
2555 FOO_GTESTS_WATERFALL,
John Budorick5bc387fe2019-05-09 20:02:532556 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412557 LUCI_MILO_CFG,
2558 exceptions=FOO_TEST_EXPLICIT_NONE_EXCEPTIONS,
2559 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:152560 self.create_testing_buildbot_json_file('chromium.test.json',
2561 EXPLICIT_NONE_OUTPUT)
2562 self.create_testing_buildbot_json_file('chromium.ci.json',
2563 EXPLICIT_NONE_OUTPUT)
John Budorick5bc387fe2019-05-09 20:02:532564 fbb.check_output_file_consistency(verbose=True)
2565 self.assertFalse(fbb.printed_lines)
2566
Kenneth Russelleb60cbd22017-12-05 07:54:282567 def test_isolated_script_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152568 fbb = FakeBBGen(self.args,
2569 FOO_ISOLATED_SCRIPTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282570 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412571 LUCI_MILO_CFG,
2572 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152573 self.create_testing_buildbot_json_file('chromium.test.json',
2574 ISOLATED_SCRIPT_OUTPUT)
2575 self.create_testing_buildbot_json_file('chromium.ci.json',
2576 ISOLATED_SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282577 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502578 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282579
Dirk Pranke0e879b22020-07-16 23:53:562580 def test_isolated_script_tests(self):
2581 fbb = FakeBBGen(self.args,
2582 FOO_ISOLATED_SCRIPTS_WATERFALL_ANDROID,
2583 GOOD_COMPOSITION_TEST_SUITES,
2584 LUCI_MILO_CFG,
2585 exceptions=NO_BAR_TEST_EXCEPTIONS)
2586 self.create_testing_buildbot_json_file('chromium.test.json',
2587 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2588 self.create_testing_buildbot_json_file('chromium.ci.json',
2589 ISOLATED_SCRIPT_OUTPUT_ANDROID)
2590 fbb.check_output_file_consistency(verbose=True)
2591 self.assertFalse(fbb.printed_lines)
2592
Dirk Pranke1b767092017-12-07 04:44:232593 def test_script_with_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152594 fbb = FakeBBGen(self.args,
2595 FOO_SCRIPT_WATERFALL,
Dirk Pranke1b767092017-12-07 04:44:232596 SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412597 LUCI_MILO_CFG,
2598 exceptions=SCRIPT_WITH_ARGS_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152599 self.create_testing_buildbot_json_file('chromium.test.json',
2600 SCRIPT_WITH_ARGS_OUTPUT)
2601 self.create_testing_buildbot_json_file('chromium.ci.json',
2602 SCRIPT_WITH_ARGS_OUTPUT)
Dirk Pranke1b767092017-12-07 04:44:232603 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502604 self.assertFalse(fbb.printed_lines)
Dirk Pranke1b767092017-12-07 04:44:232605
2606 def test_script(self):
Garrett Beaty1afaccc2020-06-25 19:58:152607 fbb = FakeBBGen(self.args,
2608 FOO_SCRIPT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282609 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412610 LUCI_MILO_CFG,
2611 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152612 self.create_testing_buildbot_json_file('chromium.test.json', SCRIPT_OUTPUT)
2613 self.create_testing_buildbot_json_file('chromium.ci.json', SCRIPT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282614 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502615 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282616
Brian Sheedy158cd0f2019-04-26 01:12:442617 def test_script_machine_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152618 fbb = FakeBBGen(self.args,
2619 FOO_SCRIPT_WATERFALL_MACHINE_FORBIDS_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442620 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412621 LUCI_MILO_CFG,
2622 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232623 with self.assertRaisesRegex(
2624 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442625 'Attempted to generate a script test on tester.*'):
2626 fbb.check_output_file_consistency(verbose=True)
2627
2628 def test_script_waterfall_forbids_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:152629 fbb = FakeBBGen(self.args,
2630 FOO_SCRIPT_WATERFALL_FORBID_SCRIPT_TESTS,
Brian Sheedy158cd0f2019-04-26 01:12:442631 FOO_SCRIPT_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412632 LUCI_MILO_CFG,
2633 exceptions=NO_BAR_TEST_EXCEPTIONS)
Jamie Madillcf4f8c72021-05-20 19:24:232634 with self.assertRaisesRegex(
2635 generate_buildbot_json.BBGenErr,
Brian Sheedy158cd0f2019-04-26 01:12:442636 'Attempted to generate a script test on tester.*'):
2637 fbb.check_output_file_consistency(verbose=True)
2638
Kenneth Russelleb60cbd22017-12-05 07:54:282639 def test_junit_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152640 fbb = FakeBBGen(self.args,
2641 FOO_JUNIT_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282642 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412643 LUCI_MILO_CFG,
2644 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152645 self.create_testing_buildbot_json_file('chromium.test.json', JUNIT_OUTPUT)
2646 self.create_testing_buildbot_json_file('chromium.ci.json', JUNIT_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282647 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502648 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282649
Kenneth Russell8a386d42018-06-02 09:48:012650 def test_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152651 fbb = FakeBBGen(self.args,
2652 FOO_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell8a386d42018-06-02 09:48:012653 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
Nodir Turakulovfce34292019-12-18 17:05:412654 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192655 exceptions=NO_BAR_TEST_EXCEPTIONS,
2656 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152657 self.create_testing_buildbot_json_file('chromium.test.json',
2658 GPU_TELEMETRY_TEST_OUTPUT)
2659 self.create_testing_buildbot_json_file('chromium.ci.json',
2660 GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell8a386d42018-06-02 09:48:012661 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502662 self.assertFalse(fbb.printed_lines)
Kenneth Russell8a386d42018-06-02 09:48:012663
Brian Sheedyd8c0c73d2021-07-05 02:11:302664 def test_gpu_telemetry_tests_pixel_with_filter(self):
2665 fbb = FakeBBGen(self.args,
2666 FOO_GPU_TELEMETRY_TEST_WATERFALL,
2667 COMPOSITION_SUITE_WITH_PIXEL_AND_FILTER,
2668 LUCI_MILO_CFG,
2669 exceptions=NO_BAR_TEST_EXCEPTIONS,
2670 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
2671 self.create_testing_buildbot_json_file('chromium.test.json',
2672 GPU_TELEMETRY_TEST_OUTPUT)
2673 self.create_testing_buildbot_json_file('chromium.ci.json',
2674 GPU_TELEMETRY_TEST_OUTPUT)
2675 with self.assertRaises(RuntimeError):
2676 fbb.check_output_file_consistency(verbose=True)
2677
Brian Sheedyf74819b2021-06-04 01:38:382678 def test_gpu_telemetry_tests_android(self):
2679 fbb = FakeBBGen(self.args,
2680 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID,
2681 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2682 LUCI_MILO_CFG,
2683 exceptions=NO_BAR_TEST_EXCEPTIONS,
2684 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID)
2685 self.create_testing_buildbot_json_file('chromium.test.json',
2686 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2687 self.create_testing_buildbot_json_file('chromium.ci.json',
2688 GPU_TELEMETRY_TEST_OUTPUT_ANDROID)
2689 fbb.check_output_file_consistency(verbose=True)
2690 self.assertFalse(fbb.printed_lines)
2691
2692 def test_gpu_telemetry_tests_android_webview(self):
2693 fbb = FakeBBGen(self.args,
2694 FOO_GPU_TELEMETRY_TEST_WATERFALL_ANDROID_WEBVIEW,
2695 COMPOSITION_SUITE_WITH_NAME_NOT_ENDING_IN_TEST,
2696 LUCI_MILO_CFG,
2697 exceptions=NO_BAR_TEST_EXCEPTIONS,
2698 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP_ANDROID_WEBVIEW)
2699 self.create_testing_buildbot_json_file(
2700 'chromium.test.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2701 self.create_testing_buildbot_json_file(
2702 'chromium.ci.json', GPU_TELEMETRY_TEST_OUTPUT_ANDROID_WEBVIEW)
2703 fbb.check_output_file_consistency(verbose=True)
2704 self.assertFalse(fbb.printed_lines)
2705
Kenneth Russell384a1732019-03-16 02:36:022706 def test_nvidia_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152707 fbb = FakeBBGen(self.args,
2708 NVIDIA_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022709 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412710 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192711 exceptions=NO_BAR_TEST_EXCEPTIONS,
2712 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152713 self.create_testing_buildbot_json_file('chromium.test.json',
2714 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
2715 self.create_testing_buildbot_json_file('chromium.ci.json',
2716 NVIDIA_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022717 fbb.check_output_file_consistency(verbose=True)
2718 self.assertFalse(fbb.printed_lines)
2719
2720 def test_intel_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152721 fbb = FakeBBGen(self.args,
2722 INTEL_GPU_TELEMETRY_TEST_WATERFALL,
Kenneth Russell384a1732019-03-16 02:36:022723 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412724 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192725 exceptions=NO_BAR_TEST_EXCEPTIONS,
2726 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152727 self.create_testing_buildbot_json_file('chromium.test.json',
2728 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
2729 self.create_testing_buildbot_json_file('chromium.ci.json',
2730 INTEL_GPU_TELEMETRY_TEST_OUTPUT)
Kenneth Russell384a1732019-03-16 02:36:022731 fbb.check_output_file_consistency(verbose=True)
2732 self.assertFalse(fbb.printed_lines)
2733
Brian Sheedyf9387db7b2019-08-05 19:26:102734 def test_intel_uhd_gpu_telemetry_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:152735 fbb = FakeBBGen(self.args,
2736 INTEL_UHD_GPU_TELEMETRY_TEST_WATERFALL,
Brian Sheedyf9387db7b2019-08-05 19:26:102737 COMPOSITION_SUITE_WITH_GPU_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:412738 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:192739 exceptions=NO_BAR_TEST_EXCEPTIONS,
2740 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:152741 self.create_testing_buildbot_json_file('chromium.test.json',
2742 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
2743 self.create_testing_buildbot_json_file('chromium.ci.json',
2744 INTEL_UHD_GPU_TELEMETRY_TEST_OUTPUT)
Brian Sheedyf9387db7b2019-08-05 19:26:102745 fbb.check_output_file_consistency(verbose=True)
2746 self.assertFalse(fbb.printed_lines)
2747
Jamie Madilla8be0d72020-10-02 05:24:042748 def test_gtest_as_isolated_Script(self):
2749 fbb = FakeBBGen(self.args,
2750 FOO_GTESTS_WATERFALL,
2751 GTEST_AS_ISOLATED_SCRIPT_SUITE,
2752 LUCI_MILO_CFG,
2753 gn_isolate_map=GN_ISOLATE_MAP)
2754 self.create_testing_buildbot_json_file(
2755 'chromium.test.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
2756 self.create_testing_buildbot_json_file(
2757 'chromium.ci.json', FOO_WATERFALL_GTEST_ISOLATED_SCRIPT_OUTPUT)
2758 fbb.check_output_file_consistency(verbose=True)
2759 self.assertFalse(fbb.printed_lines)
2760
Kenneth Russelleb60cbd22017-12-05 07:54:282761 def test_ungenerated_output_files_are_caught(self):
Garrett Beaty1afaccc2020-06-25 19:58:152762 fbb = FakeBBGen(self.args,
2763 COMPOSITION_GTEST_SUITE_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282764 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:412765 LUCI_MILO_CFG,
2766 exceptions=NO_BAR_TEST_EXCEPTIONS)
Garrett Beaty1afaccc2020-06-25 19:58:152767 self.create_testing_buildbot_json_file(
2768 'chromium.test.json', '\n' + COMPOSITION_WATERFALL_FILTERED_OUTPUT)
Stephen Martinis7eb8b612018-09-21 00:17:502769 with self.assertRaises(generate_buildbot_json.BBGenErr):
Kenneth Russell73c3bd8b2018-10-19 22:30:192770 fbb.check_output_file_consistency(verbose=True, dump=False)
Stephen Martinis7eb8b612018-09-21 00:17:502771 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232772 self.assertRegex(
Dirk Pranke6269d302020-10-01 00:14:392773 joined_lines, 'File chromium.test.json did not have the following'
Stephen Martinis7eb8b612018-09-21 00:17:502774 ' expected contents:.*')
Jamie Madillcf4f8c72021-05-20 19:24:232775 self.assertRegex(joined_lines, '.*--- expected.*')
2776 self.assertRegex(joined_lines, '.*\+\+\+ current.*')
Stephen Martinis7eb8b612018-09-21 00:17:502777 fbb.printed_lines = []
2778 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282779
2780 def test_android_output_options(self):
Garrett Beaty1afaccc2020-06-25 19:58:152781 fbb = FakeBBGen(self.args, ANDROID_WATERFALL, FOO_TEST_SUITE, LUCI_MILO_CFG)
2782 self.create_testing_buildbot_json_file('chromium.test.json',
2783 ANDROID_WATERFALL_OUTPUT)
2784 self.create_testing_buildbot_json_file('chromium.ci.json',
2785 ANDROID_WATERFALL_OUTPUT)
Kenneth Russelleb60cbd22017-12-05 07:54:282786 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502787 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282788
2789 def test_nonexistent_removal_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152790 fbb = FakeBBGen(self.args,
2791 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282792 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412793 LUCI_MILO_CFG,
2794 exceptions=NONEXISTENT_REMOVAL)
Jamie Madillcf4f8c72021-05-20 19:24:232795 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2796 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502797 fbb.check_input_file_consistency(verbose=True)
2798 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282799
2800 def test_nonexistent_modification_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152801 fbb = FakeBBGen(self.args,
2802 FOO_GTESTS_WATERFALL,
Kenneth Russelleb60cbd22017-12-05 07:54:282803 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:412804 LUCI_MILO_CFG,
2805 exceptions=NONEXISTENT_MODIFICATION)
Jamie Madillcf4f8c72021-05-20 19:24:232806 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
2807 'The following nonexistent machines.*'):
Stephen Martinis7eb8b612018-09-21 00:17:502808 fbb.check_input_file_consistency(verbose=True)
2809 self.assertFalse(fbb.printed_lines)
Kenneth Russelleb60cbd22017-12-05 07:54:282810
John Budorickedfe7f872018-01-23 15:27:222811 def test_waterfall_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:152812 fbb = FakeBBGen(self.args, COMPOSITION_GTEST_SUITE_WITH_ARGS_WATERFALL,
2813 GOOD_COMPOSITION_TEST_SUITES, LUCI_MILO_CFG)
2814 self.create_testing_buildbot_json_file(
2815 'chromium.test.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
2816 self.create_testing_buildbot_json_file(
2817 'chromium.ci.json', COMPOSITION_WATERFALL_WITH_ARGS_OUTPUT)
John Budorickedfe7f872018-01-23 15:27:222818 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502819 self.assertFalse(fbb.printed_lines)
John Budorickedfe7f872018-01-23 15:27:222820
Ben Pastenea9e583b2019-01-16 02:57:262821 def test_chromeos_trigger_script_output(self):
Garrett Beaty1afaccc2020-06-25 19:58:152822 fbb = FakeBBGen(self.args, FOO_CHROMEOS_TRIGGER_SCRIPT_WATERFALL,
2823 FOO_TEST_SUITE, LUCI_MILO_CFG)
2824 self.create_testing_buildbot_json_file('chromium.test.json',
2825 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
2826 self.create_testing_buildbot_json_file('chromium.ci.json',
2827 CHROMEOS_TRIGGER_SCRIPT_OUTPUT)
Ben Pastenea9e583b2019-01-16 02:57:262828 fbb.check_output_file_consistency(verbose=True)
2829 self.assertFalse(fbb.printed_lines)
2830
Zhiling Huangbe008172018-03-08 19:13:112831 def test_relative_pyl_file_dir(self):
Garrett Beaty1afaccc2020-06-25 19:58:152832 self.override_args(pyl_files_dir='relative/path/', waterfall_filters=[])
2833 fbb = FakeBBGen(self.args,
2834 FOO_GTESTS_WATERFALL,
Zhiling Huangbe008172018-03-08 19:13:112835 REUSING_TEST_WITH_DIFFERENT_NAME,
Nodir Turakulovfce34292019-12-18 17:05:412836 LUCI_MILO_CFG,
2837 gn_isolate_map=GN_ISOLATE_MAP)
Stephen Martinis7eb8b612018-09-21 00:17:502838 fbb.check_input_file_consistency(verbose=True)
Garrett Beaty1afaccc2020-06-25 19:58:152839 self.create_testing_buildbot_json_file('relative/path/chromium.test.json',
2840 VARIATION_GTEST_OUTPUT)
2841 self.create_testing_buildbot_json_file('relative/path/chromium.ci.json',
2842 VARIATION_GTEST_OUTPUT)
Zhiling Huangbe008172018-03-08 19:13:112843 fbb.check_output_file_consistency(verbose=True)
Stephen Martinis7eb8b612018-09-21 00:17:502844 self.assertFalse(fbb.printed_lines)
Zhiling Huangbe008172018-03-08 19:13:112845
Nico Weberd18b8962018-05-16 19:39:382846 def test_nonexistent_bot_raises(self):
Garrett Beaty1afaccc2020-06-25 19:58:152847 fbb = FakeBBGen(self.args, UNKNOWN_BOT_GTESTS_WATERFALL, FOO_TEST_SUITE,
Kenneth Russell78fd8702018-05-17 01:15:522848 LUCI_MILO_CFG)
Nico Weberd18b8962018-05-16 19:39:382849 with self.assertRaises(generate_buildbot_json.BBGenErr):
Stephen Martinis7eb8b612018-09-21 00:17:502850 fbb.check_input_file_consistency(verbose=True)
2851 self.assertFalse(fbb.printed_lines)
Nico Weberd18b8962018-05-16 19:39:382852
Garrett Beaty4f3e9212020-06-25 20:21:492853 def test_nonexistent_bot_raises_when_no_project_pyl_exists(self):
Garrett Beaty1afaccc2020-06-25 19:58:152854 fbb = FakeBBGen(self.args,
2855 UNKNOWN_BOT_GTESTS_WATERFALL,
Garrett Beaty2a02de3c2020-05-15 13:57:352856 FOO_TEST_SUITE,
2857 LUCI_MILO_CFG,
Garrett Beaty4f3e9212020-06-25 20:21:492858 project_pyl=None)
2859 with self.assertRaises(generate_buildbot_json.BBGenErr):
2860 fbb.check_input_file_consistency(verbose=True)
2861 self.assertFalse(fbb.printed_lines)
2862
2863 def test_nonexistent_bot_does_not_raise_when_validation_disabled(self):
2864 fbb = FakeBBGen(
2865 self.args,
2866 UNKNOWN_BOT_GTESTS_WATERFALL,
2867 FOO_TEST_SUITE,
2868 LUCI_MILO_CFG,
2869 project_pyl='{"validate_source_side_specs_have_builder": False}')
Garrett Beaty2a02de3c2020-05-15 13:57:352870 fbb.check_input_file_consistency(verbose=True)
2871
Stephen Martinis54d64ad2018-09-21 22:16:202872 def test_waterfalls_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152873 fbb = FakeBBGen(self.args, TEST_SUITE_SORTED_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:202874 LUCI_MILO_CFG_WATERFALL_SORTING)
2875 fbb.check_input_file_consistency(verbose=True)
2876 self.assertFalse(fbb.printed_lines)
2877
Garrett Beaty1afaccc2020-06-25 19:58:152878 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_1,
2879 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:232880 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:202881 generate_buildbot_json.BBGenErr,
2882 'The following files have invalid keys: waterfalls.pyl'):
2883 fbb.check_input_file_consistency(verbose=True)
2884 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232885 self.assertRegex(joined_lines, '.*\+ chromium\..*test.*')
2886 self.assertRegex(joined_lines, '.*\- chromium\..*test.*')
Stephen Martinis54d64ad2018-09-21 22:16:202887 fbb.printed_lines = []
2888 self.assertFalse(fbb.printed_lines)
2889
Garrett Beaty1afaccc2020-06-25 19:58:152890 fbb = FakeBBGen(self.args, TEST_SUITE_UNSORTED_WATERFALL_2,
2891 TEST_SUITE_SORTED, LUCI_MILO_CFG_WATERFALL_SORTING)
Jamie Madillcf4f8c72021-05-20 19:24:232892 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:202893 generate_buildbot_json.BBGenErr,
2894 'The following files have invalid keys: waterfalls.pyl'):
2895 fbb.check_input_file_consistency(verbose=True)
2896 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232897 self.assertRegex(joined_lines, '.*\+.*Fake Tester.*')
2898 self.assertRegex(joined_lines, '.*\-.*Fake Tester.*')
Stephen Martinis54d64ad2018-09-21 22:16:202899 fbb.printed_lines = []
2900 self.assertFalse(fbb.printed_lines)
2901
2902 def test_test_suite_exceptions_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152903 fbb = FakeBBGen(self.args,
2904 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:202905 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:412906 LUCI_MILO_CFG,
2907 exceptions=EXCEPTIONS_SORTED)
Stephen Martinis7eb8b612018-09-21 00:17:502908 fbb.check_input_file_consistency(verbose=True)
2909 self.assertFalse(fbb.printed_lines)
Stephen Martinisf83893722018-09-19 00:02:182910
Garrett Beaty1afaccc2020-06-25 19:58:152911 fbb = FakeBBGen(self.args,
2912 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:202913 TEST_SUITE_SORTED,
Nodir Turakulovfce34292019-12-18 17:05:412914 LUCI_MILO_CFG,
Stephen Martinis5bef0fc2020-01-06 22:47:532915 exceptions=EXCEPTIONS_DUPS_REMOVE_FROM)
2916 with self.assertRaises(generate_buildbot_json.BBGenErr):
2917 fbb.check_input_file_consistency(verbose=True)
2918 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232919 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:532920 fbb.printed_lines = []
2921 self.assertFalse(fbb.printed_lines)
2922
2923 def test_test_suite_exceptions_no_dups_remove_from(self):
Garrett Beaty1afaccc2020-06-25 19:58:152924 fbb = FakeBBGen(self.args,
2925 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532926 TEST_SUITE_SORTED,
2927 LUCI_MILO_CFG,
2928 exceptions=EXCEPTIONS_SORTED)
2929 fbb.check_input_file_consistency(verbose=True)
2930 self.assertFalse(fbb.printed_lines)
2931
Garrett Beaty1afaccc2020-06-25 19:58:152932 fbb = FakeBBGen(self.args,
2933 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532934 TEST_SUITE_SORTED,
2935 LUCI_MILO_CFG,
2936 exceptions=EXCEPTIONS_PER_TEST_UNSORTED)
Stephen Martinis5bef0fc2020-01-06 22:47:532937 with self.assertRaises(generate_buildbot_json.BBGenErr):
2938 fbb.check_input_file_consistency(verbose=True)
2939 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232940 self.assertRegex(joined_lines, '.*\+ Fake Tester.*')
2941 self.assertRegex(joined_lines, '.*\- Fake Tester.*')
Stephen Martinis5bef0fc2020-01-06 22:47:532942 fbb.printed_lines = []
2943 self.assertFalse(fbb.printed_lines)
2944
2945 def test_test_suite_exceptions_per_test_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152946 fbb = FakeBBGen(self.args,
2947 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532948 TEST_SUITE_SORTED,
2949 LUCI_MILO_CFG,
2950 exceptions=EXCEPTIONS_SORTED)
2951 fbb.check_input_file_consistency(verbose=True)
2952 self.assertFalse(fbb.printed_lines)
2953
Garrett Beaty1afaccc2020-06-25 19:58:152954 fbb = FakeBBGen(self.args,
2955 TEST_SUITE_SORTING_WATERFALL,
Stephen Martinis5bef0fc2020-01-06 22:47:532956 TEST_SUITE_SORTED,
2957 LUCI_MILO_CFG,
Nodir Turakulovfce34292019-12-18 17:05:412958 exceptions=EXCEPTIONS_UNSORTED)
Stephen Martinis54d64ad2018-09-21 22:16:202959 with self.assertRaises(generate_buildbot_json.BBGenErr):
2960 fbb.check_input_file_consistency(verbose=True)
2961 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232962 self.assertRegex(joined_lines, '.*\+ suite_.*')
2963 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202964 fbb.printed_lines = []
2965 self.assertFalse(fbb.printed_lines)
2966
2967 def test_test_suites_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:152968 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, TEST_SUITE_SORTED,
Stephen Martinis54d64ad2018-09-21 22:16:202969 LUCI_MILO_CFG)
2970 fbb.check_input_file_consistency(verbose=True)
2971 self.assertFalse(fbb.printed_lines)
2972
2973 for unsorted in (
2974 TEST_SUITE_UNSORTED_1,
2975 TEST_SUITE_UNSORTED_2,
2976 TEST_SUITE_UNSORTED_3,
2977 ):
Garrett Beaty1afaccc2020-06-25 19:58:152978 fbb = FakeBBGen(self.args, TEST_SUITE_SORTING_WATERFALL, unsorted,
Stephen Martinis54d64ad2018-09-21 22:16:202979 LUCI_MILO_CFG)
2980 with self.assertRaises(generate_buildbot_json.BBGenErr):
2981 fbb.check_input_file_consistency(verbose=True)
2982 joined_lines = ' '.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:232983 self.assertRegex(joined_lines, '.*\+ suite_.*')
2984 self.assertRegex(joined_lines, '.*\- suite_.*')
Stephen Martinis54d64ad2018-09-21 22:16:202985 fbb.printed_lines = []
2986 self.assertFalse(fbb.printed_lines)
2987
Stephen Martinis11672542018-10-29 18:17:212988
2989FOO_GTESTS_WATERFALL_MIXIN_WATERFALL = """\
2990[
2991 {
2992 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:012993 'project': 'chromium',
2994 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:212995 'name': 'chromium.test',
2996 'machines': {
2997 'Fake Tester': {
2998 'swarming': {},
2999 'test_suites': {
3000 'gtest_tests': 'foo_tests',
3001 },
3002 },
3003 },
3004 },
3005]
3006"""
3007
3008FOO_GTESTS_BUILDER_MIXIN_WATERFALL = """\
3009[
3010 {
Greg Gutermanf60eb052020-03-12 17:40:013011 'project': 'chromium',
3012 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213013 'name': 'chromium.test',
3014 'machines': {
3015 'Fake Tester': {
3016 'mixins': ['builder_mixin'],
3017 'swarming': {},
3018 'test_suites': {
3019 'gtest_tests': 'foo_tests',
3020 },
3021 },
3022 },
3023 },
3024]
3025"""
3026
Brian Sheedycae63b22020-06-10 22:52:113027FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL = """\
3028[
3029 {
3030 'project': 'chromium',
3031 'bucket': 'ci',
3032 'name': 'chromium.test',
3033 'machines': {
3034 'Fake Tester': {
3035 'mixins': [
3036 'dimension_set_mixin_1',
3037 'dimension_set_mixin_2',
3038 'duplicate_dimension_set_mixin_1',
3039 'dimension_mixin',
3040 ],
3041 'swarming': {},
3042 'test_suites': {
3043 'gtest_tests': 'foo_tests',
3044 },
3045 },
3046 },
3047 },
3048]
3049"""
3050
Brian Sheedy7658c982020-01-08 02:27:583051FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL = """\
3052[
3053 {
3054 'mixins': ['waterfall_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013055 'project': 'chromium',
3056 'bucket': 'ci',
Brian Sheedy7658c982020-01-08 02:27:583057 'name': 'chromium.test',
3058 'machines': {
3059 'Fake Tester': {
3060 'remove_mixins': ['waterfall_mixin'],
3061 'swarming': {},
3062 'test_suites': {
3063 'gtest_tests': 'foo_tests',
3064 },
3065 },
3066 },
3067 },
3068]
3069"""
3070
Stephen Martinis11672542018-10-29 18:17:213071FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL = """\
3072[
3073 {
Greg Gutermanf60eb052020-03-12 17:40:013074 'project': 'chromium',
3075 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213076 'name': 'chromium.test',
3077 'machines': {
3078 'Fake Tester': {
3079 'mixins': ['random_mixin'],
3080 'swarming': {},
3081 'test_suites': {
3082 'gtest_tests': 'foo_tests',
3083 },
3084 },
3085 },
3086 },
3087]
3088"""
3089
3090FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL = """\
3091[
3092 {
Greg Gutermanf60eb052020-03-12 17:40:013093 'project': 'chromium',
3094 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213095 'name': 'chromium.test',
3096 'machines': {
3097 'Fake Tester': {
3098 'mixins': ['dimension_mixin'],
3099 'swarming': {},
3100 'test_suites': {
3101 'gtest_tests': 'foo_tests',
3102 },
3103 },
3104 },
3105 },
3106]
3107"""
3108
3109FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL = """\
3110[
3111 {
Greg Gutermanf60eb052020-03-12 17:40:013112 'project': 'chromium',
3113 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213114 'name': 'chromium.test',
3115 'machines': {
3116 'Fake Tester': {
3117 'mixins': ['dimension_mixin'],
3118 'os_type': 'win',
3119 'browser_config': 'release',
3120 'test_suites': {
3121 'gpu_telemetry_tests': 'foo_tests',
3122 },
3123 },
3124 },
3125 },
3126]
3127"""
3128
3129# Swarming mixins must be a list, a single string is not allowed.
3130FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL = """\
3131[
3132 {
Greg Gutermanf60eb052020-03-12 17:40:013133 'project': 'chromium',
3134 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213135 'name': 'chromium.test',
3136 'machines': {
3137 'Fake Tester': {
3138 'mixins': 'dimension_mixin',
3139 'swarming': {},
3140 'test_suites': {
3141 'gtest_tests': 'foo_tests',
3142 },
3143 },
3144 },
3145 },
3146]
3147"""
3148FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL = """\
3149[
3150 {
Greg Gutermanf60eb052020-03-12 17:40:013151 'project': 'chromium',
3152 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213153 'name': 'chromium.test',
3154 'machines': {
3155 'Fake Tester': {
3156 'mixins': ['nonexistant'],
3157 'swarming': {},
3158 'test_suites': {
3159 'gtest_tests': 'foo_tests',
3160 },
3161 },
3162 },
3163 },
3164]
3165"""
3166
3167FOO_GTESTS_TEST_MIXIN_WATERFALL = """\
3168[
3169 {
Greg Gutermanf60eb052020-03-12 17:40:013170 'project': 'chromium',
3171 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213172 'name': 'chromium.test',
Greg Gutermanf60eb052020-03-12 17:40:013173 'mixins': ['waterfall_mixin'],
Stephen Martinis11672542018-10-29 18:17:213174 'machines': {
3175 'Fake Tester': {
3176 'swarming': {},
3177 'test_suites': {
3178 'gtest_tests': 'foo_tests',
3179 },
3180 },
3181 },
3182 },
3183]
3184"""
3185
3186FOO_GTESTS_SORTING_MIXINS_WATERFALL = """\
3187[
3188 {
3189 'mixins': ['a_mixin', 'b_mixin', 'c_mixin'],
Greg Gutermanf60eb052020-03-12 17:40:013190 'project': 'chromium',
3191 'bucket': 'ci',
Stephen Martinis11672542018-10-29 18:17:213192 'name': 'chromium.test',
3193 'machines': {
3194 'Fake Tester': {
3195 'swarming': {
3196 'dimension_sets': [
3197 {
3198 'kvm': '1',
3199 },
3200 ],
3201 },
3202 'test_suites': {
3203 'gtest_tests': 'foo_tests',
3204 },
3205 },
3206 },
3207 },
3208]
3209"""
3210
3211FOO_TEST_SUITE_WITH_MIXIN = """\
3212{
3213 'basic_suites': {
3214 'foo_tests': {
3215 'foo_test': {
3216 'swarming': {
3217 'dimension_sets': [
3218 {
3219 'integrity': 'high',
3220 }
3221 ],
3222 'expiration': 120,
3223 },
3224 'mixins': ['test_mixin'],
3225 },
3226 },
3227 },
3228}
3229"""
3230
3231# These mixins are invalid; if passed to check_input_file_consistency, they will
3232# fail. These are used for output file consistency checks.
3233SWARMING_MIXINS = """\
3234{
3235 'builder_mixin': {
3236 'swarming': {
3237 'value': 'builder',
3238 },
3239 },
3240 'dimension_mixin': {
3241 'swarming': {
3242 'dimensions': {
3243 'iama': 'mixin',
3244 },
3245 },
3246 },
3247 'random_mixin': {
3248 'value': 'random',
3249 },
3250 'test_mixin': {
3251 'swarming': {
3252 'value': 'test',
3253 },
3254 },
3255 'waterfall_mixin': {
3256 'swarming': {
3257 'value': 'waterfall',
3258 },
3259 },
3260}
3261"""
3262
Wezc0e835b702018-10-30 00:38:413263SWARMING_MIXINS_APPEND = """\
3264{
3265 'builder_mixin': {
3266 '$mixin_append': {
3267 'args': [ '--mixin-argument' ],
3268 },
3269 },
3270}
3271"""
3272
3273SWARMING_MIXINS_APPEND_NOT_LIST = """\
3274{
3275 'builder_mixin': {
3276 '$mixin_append': {
3277 'args': 'I am not a list',
3278 },
3279 },
3280}
3281"""
3282
3283SWARMING_MIXINS_APPEND_TO_SWARMING = """\
3284{
3285 'builder_mixin': {
3286 '$mixin_append': {
3287 'swarming': [ 'swarming!' ],
3288 },
3289 },
3290}
3291"""
3292
Zhaoyang Li473dd0ae2021-05-10 18:28:283293SWARMING_MIXINS_APPEND_NAMED_CACHES = """\
3294{
3295 'builder_mixin': {
3296 '$mixin_append': {
3297 'swarming': {
3298 'named_caches': [
3299 {
3300 'name': 'cache',
3301 'file': 'cache_file',
3302 },
3303 ]
3304 },
3305 },
3306 },
3307}
3308"""
3309
3310SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES = """\
3311{
3312 'builder_mixin': {
3313 '$mixin_append': {
3314 'swarming': {
3315 'named_caches': [
3316 {
3317 'name': 'cache',
3318 'file': 'cache_file',
3319 },
3320 ],
3321 'other_key': 'some value',
3322 },
3323 },
3324 },
3325}
3326"""
3327
Brian Sheedycae63b22020-06-10 22:52:113328SWARMING_MIXINS_DIMENSION_SETS = """\
3329{
3330 'dimension_set_mixin_1': {
3331 'swarming': {
3332 'dimension_sets': [
3333 {
3334 'value': 'ds1',
3335 },
3336 ],
3337 },
3338 },
3339 'dimension_set_mixin_2': {
3340 'swarming': {
3341 'dimension_sets': [
3342 {
3343 'value': 'ds2',
3344 },
3345 ],
3346 },
3347 },
3348 'duplicate_dimension_set_mixin_1': {
3349 'swarming': {
3350 'dimension_sets': [
3351 {
3352 'value': 'ds1',
3353 },
3354 ],
3355 },
3356 },
3357 'dimension_mixin': {
3358 'swarming': {
3359 'dimensions': {
3360 'other_value': 'dimension_mixin',
3361 },
3362 },
3363 },
3364}
3365"""
3366
Stephen Martinis11672542018-10-29 18:17:213367SWARMING_MIXINS_DUPLICATED = """\
3368{
3369 'builder_mixin': {
3370 'value': 'builder',
3371 },
3372 'builder_mixin': {
3373 'value': 'builder',
3374 },
3375}
3376"""
3377
3378SWARMING_MIXINS_UNSORTED = """\
3379{
3380 'b_mixin': {
3381 'b': 'b',
3382 },
3383 'a_mixin': {
3384 'a': 'a',
3385 },
3386 'c_mixin': {
3387 'c': 'c',
3388 },
3389}
3390"""
3391
3392SWARMING_MIXINS_SORTED = """\
3393{
3394 'a_mixin': {
3395 'a': 'a',
3396 },
3397 'b_mixin': {
3398 'b': 'b',
3399 },
3400 'c_mixin': {
3401 'c': 'c',
3402 },
3403}
3404"""
3405
Brian Sheedycae63b22020-06-10 22:52:113406WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT = """\
3407{
3408 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3409 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3410 "Fake Tester": {
3411 "gtest_tests": [
3412 {
3413 "merge": {
3414 "args": [],
3415 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3416 },
3417 "swarming": {
3418 "can_use_on_swarming_builders": true,
3419 "dimension_sets": [
3420 {
3421 "other_value": "dimension_mixin",
3422 "value": "ds1"
3423 },
3424 {
3425 "other_value": "dimension_mixin",
3426 "value": "ds2"
3427 }
3428 ]
3429 },
3430 "test": "foo_test"
3431 }
3432 ]
3433 }
3434}
3435"""
3436
Stephen Martinis11672542018-10-29 18:17:213437WATERFALL_MIXIN_WATERFALL_OUTPUT = """\
3438{
3439 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3440 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3441 "Fake Tester": {
3442 "gtest_tests": [
3443 {
Stephen Martinisbc7b7772019-05-01 22:01:433444 "merge": {
3445 "args": [],
3446 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3447 },
Stephen Martinis11672542018-10-29 18:17:213448 "swarming": {
3449 "can_use_on_swarming_builders": true,
3450 "dimension_sets": [
3451 {
3452 "integrity": "high"
3453 }
3454 ],
3455 "expiration": 120,
3456 "value": "waterfall"
3457 },
3458 "test": "foo_test"
3459 }
3460 ]
3461 }
3462}
3463"""
3464
Brian Sheedy7658c982020-01-08 02:27:583465WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT = """\
3466{
3467 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3468 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3469 "Fake Tester": {
3470 "gtest_tests": [
3471 {
3472 "merge": {
3473 "args": [],
3474 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3475 },
3476 "swarming": {
3477 "can_use_on_swarming_builders": true,
3478 "dimension_sets": [
3479 {
3480 "integrity": "high"
3481 }
3482 ],
3483 "expiration": 120
3484 },
3485 "test": "foo_test"
3486 }
3487 ]
3488 }
3489}
3490"""
3491
Stephen Martinis11672542018-10-29 18:17:213492WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT = """\
3493{
3494 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3495 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3496 "Fake Tester": {
3497 "gtest_tests": [
3498 {
Stephen Martinisbc7b7772019-05-01 22:01:433499 "merge": {
3500 "args": [],
3501 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3502 },
Stephen Martinis11672542018-10-29 18:17:213503 "swarming": {
3504 "can_use_on_swarming_builders": true,
3505 "dimension_sets": [
3506 {
3507 "integrity": "high"
3508 }
3509 ],
3510 "expiration": 120,
3511 "value": "exception"
3512 },
3513 "test": "foo_test"
3514 }
3515 ]
3516 }
3517}
3518"""
3519
3520BUILDER_MIXIN_WATERFALL_OUTPUT = """\
3521{
3522 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3523 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3524 "Fake Tester": {
3525 "gtest_tests": [
3526 {
Stephen Martinisbc7b7772019-05-01 22:01:433527 "merge": {
3528 "args": [],
3529 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3530 },
Stephen Martinis11672542018-10-29 18:17:213531 "swarming": {
3532 "can_use_on_swarming_builders": true,
3533 "dimension_sets": [
3534 {
3535 "integrity": "high"
3536 }
3537 ],
3538 "expiration": 120,
3539 "value": "builder"
3540 },
3541 "test": "foo_test"
3542 }
3543 ]
3544 }
3545}
3546"""
3547
3548BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT = """\
3549{
3550 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3551 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3552 "Fake Tester": {
3553 "gtest_tests": [
3554 {
Stephen Martinisbc7b7772019-05-01 22:01:433555 "merge": {
3556 "args": [],
3557 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3558 },
Stephen Martinis11672542018-10-29 18:17:213559 "swarming": {
3560 "can_use_on_swarming_builders": true,
3561 "dimension_sets": [
3562 {
3563 "integrity": "high"
3564 }
3565 ],
3566 "expiration": 120
3567 },
3568 "test": "foo_test",
3569 "value": "random"
3570 }
3571 ]
3572 }
3573}
3574"""
3575
Wezc0e835b702018-10-30 00:38:413576BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT = """\
3577{
3578 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3579 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3580 "Fake Tester": {
3581 "gtest_tests": [
3582 {
3583 "args": [
3584 "--c_arg",
3585 "--mixin-argument"
3586 ],
Stephen Martinisbc7b7772019-05-01 22:01:433587 "merge": {
3588 "args": [],
3589 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3590 },
Wezc0e835b702018-10-30 00:38:413591 "swarming": {
3592 "can_use_on_swarming_builders": true
3593 },
3594 "test": "foo_test"
3595 }
3596 ]
3597 }
3598}
3599"""
3600
Zhaoyang Li473dd0ae2021-05-10 18:28:283601BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT = """\
3602{
3603 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3604 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3605 "Fake Tester": {
3606 "gtest_tests": [
3607 {
3608 "merge": {
3609 "args": [],
3610 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3611 },
3612 "swarming": {
3613 "can_use_on_swarming_builders": true,
3614 "named_caches": [
3615 {
3616 "file": "cache_in_test_file",
3617 "name": "cache_in_test"
3618 },
3619 {
3620 "file": "cache_file",
3621 "name": "cache"
3622 }
3623 ]
3624 },
3625 "test": "foo_test"
3626 }
3627 ]
3628 }
3629}
3630"""
3631
Stephen Martinis11672542018-10-29 18:17:213632TEST_MIXIN_WATERFALL_OUTPUT = """\
3633{
3634 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3635 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3636 "Fake Tester": {
3637 "gtest_tests": [
3638 {
Stephen Martinisbc7b7772019-05-01 22:01:433639 "merge": {
3640 "args": [],
3641 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3642 },
Stephen Martinis11672542018-10-29 18:17:213643 "swarming": {
3644 "can_use_on_swarming_builders": true,
3645 "dimension_sets": [
3646 {
3647 "integrity": "high",
3648 "kvm": "1"
3649 }
3650 ],
3651 "expiration": 120,
3652 "value": "test"
3653 },
3654 "test": "foo_test"
3655 }
3656 ]
3657 }
3658}
3659"""
3660
3661DIMENSIONS_MIXIN_WATERFALL_OUTPUT = """\
3662{
3663 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
3664 "AAAAA2 See generate_buildbot_json.py to make changes": {},
3665 "Fake Tester": {
3666 "gtest_tests": [
3667 {
Stephen Martinisbc7b7772019-05-01 22:01:433668 "merge": {
3669 "args": [],
3670 "script": "//testing/merge_scripts/standard_gtest_merge.py"
3671 },
Stephen Martinis11672542018-10-29 18:17:213672 "swarming": {
3673 "can_use_on_swarming_builders": true,
3674 "dimension_sets": [
3675 {
3676 "iama": "mixin",
3677 "integrity": "high"
3678 }
3679 ],
3680 "expiration": 120,
3681 "value": "test"
3682 },
3683 "test": "foo_test"
3684 }
3685 ]
3686 }
3687}
3688"""
3689
Garrett Beaty1afaccc2020-06-25 19:58:153690
3691class MixinTests(TestCase):
Stephen Martinis11672542018-10-29 18:17:213692 """Tests for the mixins feature."""
3693 def test_mixins_must_be_sorted(self):
Garrett Beaty1afaccc2020-06-25 19:58:153694 fbb = FakeBBGen(self.args,
3695 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213696 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413697 LUCI_MILO_CFG,
3698 mixins=SWARMING_MIXINS_SORTED)
Stephen Martinis11672542018-10-29 18:17:213699 fbb.check_input_file_consistency(verbose=True)
3700 self.assertFalse(fbb.printed_lines)
3701
Garrett Beaty1afaccc2020-06-25 19:58:153702 fbb = FakeBBGen(self.args,
3703 FOO_GTESTS_SORTING_MIXINS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213704 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413705 LUCI_MILO_CFG,
3706 mixins=SWARMING_MIXINS_UNSORTED)
Stephen Martinis11672542018-10-29 18:17:213707 with self.assertRaises(generate_buildbot_json.BBGenErr):
3708 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533709 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233710 self.assertRegex(joined_lines, '.*\+ ._mixin.*')
3711 self.assertRegex(joined_lines, '.*\- ._mixin.*')
Stephen Martinis11672542018-10-29 18:17:213712 fbb.printed_lines = []
3713 self.assertFalse(fbb.printed_lines)
3714
3715 def test_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153716 fbb = FakeBBGen(self.args,
3717 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213718 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413719 LUCI_MILO_CFG,
3720 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153721 self.create_testing_buildbot_json_file('chromium.test.json',
3722 WATERFALL_MIXIN_WATERFALL_OUTPUT)
3723 self.create_testing_buildbot_json_file('chromium.ci.json',
3724 WATERFALL_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213725 fbb.check_output_file_consistency(verbose=True)
3726 self.assertFalse(fbb.printed_lines)
3727
3728 def test_waterfall_exception_overrides(self):
Garrett Beaty1afaccc2020-06-25 19:58:153729 fbb = FakeBBGen(self.args,
3730 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213731 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413732 LUCI_MILO_CFG,
3733 exceptions=SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS,
3734 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153735 self.create_testing_buildbot_json_file(
3736 'chromium.test.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
3737 self.create_testing_buildbot_json_file(
3738 'chromium.ci.json', WATERFALL_MIXIN_WATERFALL_EXCEPTION_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213739 fbb.check_output_file_consistency(verbose=True)
3740 self.assertFalse(fbb.printed_lines)
3741
3742 def test_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:153743 fbb = FakeBBGen(self.args,
3744 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213745 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413746 LUCI_MILO_CFG,
3747 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153748 self.create_testing_buildbot_json_file('chromium.test.json',
3749 BUILDER_MIXIN_WATERFALL_OUTPUT)
3750 self.create_testing_buildbot_json_file('chromium.ci.json',
3751 BUILDER_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213752 fbb.check_output_file_consistency(verbose=True)
3753 self.assertFalse(fbb.printed_lines)
3754
3755 def test_builder_non_swarming(self):
Garrett Beaty1afaccc2020-06-25 19:58:153756 fbb = FakeBBGen(self.args,
3757 FOO_GTESTS_BUILDER_MIXIN_NON_SWARMING_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213758 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413759 LUCI_MILO_CFG,
3760 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153761 self.create_testing_buildbot_json_file(
3762 'chromium.test.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
3763 self.create_testing_buildbot_json_file(
3764 'chromium.ci.json', BUILDER_MIXIN_NON_SWARMING_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213765 fbb.check_output_file_consistency(verbose=True)
3766 self.assertFalse(fbb.printed_lines)
3767
3768 def test_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153769 fbb = FakeBBGen(self.args,
3770 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213771 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413772 LUCI_MILO_CFG,
3773 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153774 self.create_testing_buildbot_json_file('chromium.test.json',
3775 TEST_MIXIN_WATERFALL_OUTPUT)
3776 self.create_testing_buildbot_json_file('chromium.ci.json',
3777 TEST_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213778 fbb.check_output_file_consistency(verbose=True)
3779 self.assertFalse(fbb.printed_lines)
3780
3781 def test_dimension(self):
Garrett Beaty1afaccc2020-06-25 19:58:153782 fbb = FakeBBGen(self.args,
3783 FOO_GTESTS_DIMENSIONS_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213784 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413785 LUCI_MILO_CFG,
3786 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153787 self.create_testing_buildbot_json_file('chromium.test.json',
3788 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3789 self.create_testing_buildbot_json_file('chromium.ci.json',
3790 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213791 fbb.check_output_file_consistency(verbose=True)
3792 self.assertFalse(fbb.printed_lines)
3793
3794 def test_dimension_gpu(self):
Garrett Beaty1afaccc2020-06-25 19:58:153795 fbb = FakeBBGen(self.args,
3796 FOO_GPU_TELEMETRY_TEST_DIMENSIONS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213797 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413798 LUCI_MILO_CFG,
Chan Liab7d8dd82020-04-24 23:42:193799 mixins=SWARMING_MIXINS,
3800 gn_isolate_map=GPU_TELEMETRY_GN_ISOLATE_MAP)
Garrett Beaty1afaccc2020-06-25 19:58:153801 self.create_testing_buildbot_json_file('chromium.test.json',
3802 GPU_DIMENSIONS_WATERFALL_OUTPUT)
3803 self.create_testing_buildbot_json_file('chromium.ci.json',
3804 GPU_DIMENSIONS_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213805 fbb.check_output_file_consistency(verbose=True)
3806 self.assertFalse(fbb.printed_lines)
3807
3808 def test_unreferenced(self):
Garrett Beaty1afaccc2020-06-25 19:58:153809 fbb = FakeBBGen(self.args,
3810 FOO_GTESTS_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213811 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413812 LUCI_MILO_CFG,
3813 mixins=SWARMING_MIXINS)
Jamie Madillcf4f8c72021-05-20 19:24:233814 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3815 '.*mixins are unreferenced.*'):
Stephen Martinis11672542018-10-29 18:17:213816 fbb.check_input_file_consistency(verbose=True)
3817 self.assertFalse(fbb.printed_lines)
3818
Stephen Martinis11672542018-10-29 18:17:213819 def test_unused(self):
Garrett Beaty1afaccc2020-06-25 19:58:153820 fbb = FakeBBGen(self.args,
3821 FOO_GTESTS_INVALID_NOTFOUND_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213822 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413823 LUCI_MILO_CFG,
3824 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153825 self.create_testing_buildbot_json_file('chromium.test.json',
3826 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3827 self.create_testing_buildbot_json_file('chromium.ci.json',
3828 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213829 with self.assertRaises(generate_buildbot_json.BBGenErr):
3830 fbb.check_output_file_consistency(verbose=True)
3831 self.assertFalse(fbb.printed_lines)
3832
3833 def test_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153834 fbb = FakeBBGen(self.args,
3835 FOO_GTESTS_INVALID_LIST_MIXIN_WATERFALL,
Stephen Martinis11672542018-10-29 18:17:213836 FOO_TEST_SUITE_WITH_MIXIN,
Nodir Turakulovfce34292019-12-18 17:05:413837 LUCI_MILO_CFG,
3838 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153839 self.create_testing_buildbot_json_file('chromium.test.json',
3840 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
3841 self.create_testing_buildbot_json_file('chromium.ci.json',
3842 DIMENSIONS_MIXIN_WATERFALL_OUTPUT)
Stephen Martinis11672542018-10-29 18:17:213843 with self.assertRaises(generate_buildbot_json.BBGenErr):
3844 fbb.check_output_file_consistency(verbose=True)
3845 self.assertFalse(fbb.printed_lines)
3846
3847
3848 def test_no_duplicate_keys(self):
Garrett Beaty1afaccc2020-06-25 19:58:153849 fbb = FakeBBGen(self.args,
3850 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Stephen Martinis54d64ad2018-09-21 22:16:203851 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413852 LUCI_MILO_CFG,
3853 mixins=SWARMING_MIXINS_DUPLICATED)
Jamie Madillcf4f8c72021-05-20 19:24:233854 with self.assertRaisesRegex(
Stephen Martinis54d64ad2018-09-21 22:16:203855 generate_buildbot_json.BBGenErr,
Stephen Martinisb72f6d22018-10-04 23:29:013856 'The following files have invalid keys: mixins.pyl'):
Stephen Martinis54d64ad2018-09-21 22:16:203857 fbb.check_input_file_consistency(verbose=True)
Stephen Martinis5bef0fc2020-01-06 22:47:533858 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233859 self.assertRegex(joined_lines, '.*\- builder_mixin')
Stephen Martinis5bef0fc2020-01-06 22:47:533860 fbb.printed_lines = []
3861 self.assertFalse(fbb.printed_lines)
3862
3863 def test_no_duplicate_keys_basic_test_suite(self):
Garrett Beaty1afaccc2020-06-25 19:58:153864 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, FOO_TEST_SUITE_NOT_SORTED,
Stephen Martinis5bef0fc2020-01-06 22:47:533865 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:233866 with self.assertRaisesRegex(
Stephen Martinis5bef0fc2020-01-06 22:47:533867 generate_buildbot_json.BBGenErr,
3868 'The following files have invalid keys: test_suites.pyl'):
3869 fbb.check_input_file_consistency(verbose=True)
3870 joined_lines = '\n'.join(fbb.printed_lines)
Jamie Madillcf4f8c72021-05-20 19:24:233871 self.assertRegex(joined_lines, '.*\- a_test')
3872 self.assertRegex(joined_lines, '.*\+ a_test')
Stephen Martinis54d64ad2018-09-21 22:16:203873 fbb.printed_lines = []
3874 self.assertFalse(fbb.printed_lines)
3875
3876 def test_type_assert_printing_help(self):
Garrett Beaty1afaccc2020-06-25 19:58:153877 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL, TEST_SUITES_SYNTAX_ERROR,
Stephen Martinis54d64ad2018-09-21 22:16:203878 LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:233879 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3880 'Invalid \.pyl file \'test_suites.pyl\'.*'):
Stephen Martinis54d64ad2018-09-21 22:16:203881 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:233882 self.assertEqual(fbb.printed_lines, [
3883 '== test_suites.pyl ==',
3884 '<snip>',
3885 '1 {',
3886 "2 'basic_suites': {",
3887 '--------------------------------------------------------------------'
3888 '------------',
3889 '3 3: {',
3890 '-------^------------------------------------------------------------'
3891 '------------',
3892 "4 'suite_c': {},",
3893 '5 },',
3894 '<snip>',
3895 ])
Stephen Martinis54d64ad2018-09-21 22:16:203896
Wezc0e835b702018-10-30 00:38:413897 def test_mixin_append_args(self):
Garrett Beaty1afaccc2020-06-25 19:58:153898 fbb = FakeBBGen(self.args,
3899 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413900 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413901 LUCI_MILO_CFG,
3902 mixins=SWARMING_MIXINS_APPEND)
Garrett Beaty1afaccc2020-06-25 19:58:153903 self.create_testing_buildbot_json_file(
3904 'chromium.test.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
3905 self.create_testing_buildbot_json_file(
3906 'chromium.ci.json', BUILDER_MIXIN_APPEND_ARGS_WATERFALL_OUTPUT)
Wezc0e835b702018-10-30 00:38:413907 fbb.check_output_file_consistency(verbose=True)
3908 self.assertFalse(fbb.printed_lines)
3909
Zhaoyang Li473dd0ae2021-05-10 18:28:283910 def test_mixin_append_swarming_named_caches(self):
3911 fbb = FakeBBGen(self.args,
3912 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
3913 FOO_TEST_SUITE_WITH_SWARMING_NAMED_CACHES,
3914 LUCI_MILO_CFG,
3915 mixins=SWARMING_MIXINS_APPEND_NAMED_CACHES)
3916 self.create_testing_buildbot_json_file(
3917 'chromium.test.json',
3918 BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
3919 self.create_testing_buildbot_json_file(
3920 'chromium.ci.json', BUILDER_MIXIN_APPEND_NAMED_CACHES_WATERFALL_OUTPUT)
3921 fbb.check_output_file_consistency(verbose=True)
3922 self.assertFalse(fbb.printed_lines)
3923
3924 def test_mixin_append_swarming_error(self):
3925 fbb = FakeBBGen(self.args,
3926 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
3927 FOO_TEST_SUITE_WITH_ARGS,
3928 LUCI_MILO_CFG,
3929 mixins=SWARMING_MIXINS_APPEND_OTHER_KEYS_WITH_NAMED_CACHES)
Jamie Madillcf4f8c72021-05-20 19:24:233930 with self.assertRaisesRegex(
Zhaoyang Li473dd0ae2021-05-10 18:28:283931 generate_buildbot_json.BBGenErr,
3932 'Only named_caches is supported under swarming key in '
3933 '\$mixin_append, but there are: \[\'named_caches\', \'other_key\'\]'):
3934 fbb.check_output_file_consistency(verbose=True)
3935 self.assertFalse(fbb.printed_lines)
3936
Wezc0e835b702018-10-30 00:38:413937 def test_mixin_append_mixin_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153938 fbb = FakeBBGen(self.args,
3939 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413940 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:413941 LUCI_MILO_CFG,
3942 mixins=SWARMING_MIXINS_APPEND_NOT_LIST)
Jamie Madillcf4f8c72021-05-20 19:24:233943 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
3944 'Key "args" in \$mixin_append must be a list.'):
Wezc0e835b702018-10-30 00:38:413945 fbb.check_output_file_consistency(verbose=True)
3946 self.assertFalse(fbb.printed_lines)
3947
3948 def test_mixin_append_test_field_not_list(self):
Garrett Beaty1afaccc2020-06-25 19:58:153949 fbb = FakeBBGen(self.args,
3950 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Wezc0e835b702018-10-30 00:38:413951 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:413952 LUCI_MILO_CFG,
3953 mixins=SWARMING_MIXINS_APPEND_TO_SWARMING)
Jamie Madillcf4f8c72021-05-20 19:24:233954 with self.assertRaisesRegex(
Wezc0e835b702018-10-30 00:38:413955 generate_buildbot_json.BBGenErr,
3956 'Cannot apply \$mixin_append to non-list "swarming".'):
3957 fbb.check_output_file_consistency(verbose=True)
3958 self.assertFalse(fbb.printed_lines)
Stephen Martinis54d64ad2018-09-21 22:16:203959
Brian Sheedy7658c982020-01-08 02:27:583960 def test_remove_mixin_builder_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153961 fbb = FakeBBGen(self.args,
3962 FOO_GTESTS_WATERFALL_MIXIN_BUILDER_REMOVE_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583963 FOO_TEST_SUITE,
3964 LUCI_MILO_CFG,
3965 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153966 self.create_testing_buildbot_json_file(
3967 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3968 self.create_testing_buildbot_json_file(
3969 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583970 fbb.check_output_file_consistency(verbose=True)
3971 self.assertFalse(fbb.printed_lines)
3972
3973 def test_remove_mixin_test_remove_waterfall(self):
Garrett Beaty1afaccc2020-06-25 19:58:153974 fbb = FakeBBGen(self.args,
3975 FOO_GTESTS_WATERFALL_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583976 FOO_TEST_SUITE_WITH_REMOVE_WATERFALL_MIXIN,
3977 LUCI_MILO_CFG,
3978 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153979 self.create_testing_buildbot_json_file(
3980 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3981 self.create_testing_buildbot_json_file(
3982 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583983 fbb.check_output_file_consistency(verbose=True)
3984 self.assertFalse(fbb.printed_lines)
3985
3986 def test_remove_mixin_test_remove_builder(self):
Garrett Beaty1afaccc2020-06-25 19:58:153987 fbb = FakeBBGen(self.args,
3988 FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
Brian Sheedy7658c982020-01-08 02:27:583989 FOO_TEST_SUITE_WITH_REMOVE_BUILDER_MIXIN,
3990 LUCI_MILO_CFG,
3991 mixins=SWARMING_MIXINS)
Garrett Beaty1afaccc2020-06-25 19:58:153992 self.create_testing_buildbot_json_file(
3993 'chromium.test.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
3994 self.create_testing_buildbot_json_file(
3995 'chromium.ci.json', WATERFALL_MIXIN_REMOVE_WATERFALL_OUTPUT)
Brian Sheedy7658c982020-01-08 02:27:583996 fbb.check_output_file_consistency(verbose=True)
3997 self.assertFalse(fbb.printed_lines)
3998
Brian Sheedycae63b22020-06-10 22:52:113999 def test_dimension_sets_application(self):
Garrett Beaty1afaccc2020-06-25 19:58:154000 fbb = FakeBBGen(self.args,
4001 FOO_GTESTS_DIMENSION_SETS_MIXIN_WATERFALL,
Brian Sheedycae63b22020-06-10 22:52:114002 FOO_TEST_SUITE_NO_DIMENSIONS,
4003 LUCI_MILO_CFG,
4004 mixins=SWARMING_MIXINS_DIMENSION_SETS)
Garrett Beaty1afaccc2020-06-25 19:58:154005 self.create_testing_buildbot_json_file(
4006 'chromium.test.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
4007 self.create_testing_buildbot_json_file(
4008 'chromium.ci.json', WATERFALL_DIMENSION_SETS_WATERFALL_OUTPUT)
Brian Sheedycae63b22020-06-10 22:52:114009 fbb.check_output_file_consistency(verbose=True)
4010 self.assertFalse(fbb.printed_lines)
4011
Karen Qiane24b7ee2019-02-12 23:37:064012TEST_SUITE_WITH_PARAMS = """\
4013{
4014 'basic_suites': {
4015 'bar_tests': {
4016 'bar_test': {
4017 'args': ['--no-xvfb'],
4018 'swarming': {
4019 'dimension_sets': [
4020 {
4021 'device_os': 'NMF26U'
4022 }
4023 ],
4024 },
4025 'should_retry_with_patch': False,
4026 'name': 'bar_test'
4027 },
4028 'bar_test_test': {
4029 'swarming': {
4030 'dimension_sets': [
4031 {
4032 'kvm': '1'
4033 }
4034 ],
4035 'hard_timeout': 1000
4036 },
4037 'should_retry_with_patch': True
4038 }
4039 },
4040 'foo_tests': {
4041 'foo_test_empty': {},
4042 'foo_test': {
4043 'args': [
4044 '--jobs=1',
4045 '--verbose'
4046 ],
4047 'swarming': {
4048 'dimension_sets': [
4049 {
4050 'device_os': 'MMB29Q'
4051 }
4052 ],
4053 'hard_timeout': 1800
4054 }
4055 },
4056 'foo_test_test': {
4057 'swarming': {
4058 },
4059 'name': 'pls'
4060 },
4061 },
4062 },
4063 'compound_suites': {
4064 'composition_tests': [
4065 'foo_tests',
4066 'bar_tests',
4067 ],
4068 },
4069}
4070"""
4071TEST_QUERY_BOTS_OUTPUT = {
4072 "Fake Android M Tester": {
4073 "gtest_tests": [
4074 {
4075 "test": "foo_test",
Stephen Martinisbc7b7772019-05-01 22:01:434076 "merge": {
4077 "args": [],
4078 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4079 },
Karen Qiane24b7ee2019-02-12 23:37:064080 "swarming": {
4081 "can_use_on_swarming_builders": False
4082 }
4083 }
4084 ]
4085 },
4086 "Fake Android L Tester": {
4087 "gtest_tests": [
4088 {
4089 "test": "foo_test",
4090 "args": [
4091 "--gs-results-bucket=chromium-result-details",
4092 "--recover-devices"
4093 ],
Stephen Martinisbc7b7772019-05-01 22:01:434094 "merge": {
4095 "args": [],
4096 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4097 },
Karen Qiane24b7ee2019-02-12 23:37:064098 "swarming": {
4099 "cipd_packages": [
4100 {
4101 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4102 "location": "bin",
4103 "revision":
4104 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4105 }
4106 ],
4107 "dimension_sets":[
4108 {
Ben Pastenee012aea42019-05-14 22:32:284109 "device_os": "LMY41U",
4110 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224111 "device_type": "hammerhead",
4112 'os': 'Android'
Karen Qiane24b7ee2019-02-12 23:37:064113 }
4114 ],
4115 "can_use_on_swarming_builders": True
4116 }
4117 }
4118 ]
4119 },
4120 "Fake Android K Tester": {
4121 "additional_compile_targets": ["bar_test"],
4122 "gtest_tests": [
4123 {
4124 "test": "foo_test",
4125 "args": [
4126 "--gs-results-bucket=chromium-result-details",
4127 "--recover-devices"
4128 ],
Stephen Martinisbc7b7772019-05-01 22:01:434129 "merge": {
4130 "args": [],
4131 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4132 },
Karen Qiane24b7ee2019-02-12 23:37:064133 "swarming": {
4134 "cipd_packages": [
4135 {
4136 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4137 "location": "bin",
4138 "revision":
4139 "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4140 }
4141 ],
4142 "dimension_sets": [
4143 {
4144 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284145 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224146 "device_type": "hammerhead",
4147 "os": "Android",
Karen Qiane24b7ee2019-02-12 23:37:064148 }
4149 ],
4150 "can_use_on_swarming_builders": True,
4151 "output_links": [
4152 {
4153 "link": ["https://luci-logdog.appspot.com/v/?s",
4154 "=android%2Fswarming%2Flogcats%2F",
4155 "${TASK_ID}%2F%2B%2Funified_logcats"],
4156 "name": "shard #${SHARD_INDEX} logcats"
4157 }
4158 ]
4159 }
4160 }
4161 ]
4162 },
4163 "Android Builder": {
4164 "additional_compile_targets": ["bar_test"]
4165 }
4166}
4167TEST_QUERY_BOTS_TESTS_OUTPUT = {
4168 "Fake Android M Tester": [
4169 {
Stephen Martinisbc7b7772019-05-01 22:01:434170 "merge": {
4171 "args": [],
4172 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4173 },
Karen Qiane24b7ee2019-02-12 23:37:064174 "test": "foo_test",
4175 "swarming": {
4176 "can_use_on_swarming_builders": False
4177 }
4178 }
4179 ],
4180 "Fake Android L Tester": [
4181 {
4182 "test": "foo_test",
4183 "args": [
4184 "--gs-results-bucket=chromium-result-details",
4185 "--recover-devices"
4186 ],
Stephen Martinisbc7b7772019-05-01 22:01:434187 "merge": {
4188 "args": [],
4189 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4190 },
Karen Qiane24b7ee2019-02-12 23:37:064191 "swarming": {
4192 "cipd_packages": [
4193 {
4194 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4195 "location": "bin",
4196 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4197 }
4198 ],
4199 "dimension_sets": [
4200 {
Ben Pastenee012aea42019-05-14 22:32:284201 "device_os": "LMY41U",
4202 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224203 "device_type": "hammerhead",
4204 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064205 }
4206 ],
4207 "can_use_on_swarming_builders": True
4208 }
4209 }
4210 ],
4211 "Android Builder": [],
4212 "Fake Android K Tester": [
4213 {
4214 "test": "foo_test",
4215 "args": [
4216 "--gs-results-bucket=chromium-result-details",
4217 "--recover-devices"
4218 ],
Stephen Martinisbc7b7772019-05-01 22:01:434219 "merge": {
4220 "args": [],
4221 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4222 },
Karen Qiane24b7ee2019-02-12 23:37:064223 "swarming": {
4224 "cipd_packages": [
4225 {
4226 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4227 "location": "bin",
4228 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4229 }
4230 ],
4231 "dimension_sets": [
4232 {
4233 "device_os": "KTU84P",
Ben Pastenee012aea42019-05-14 22:32:284234 "device_os_type": "userdebug",
Ben Pastened15aa8a2019-05-16 16:59:224235 "device_type": "hammerhead",
4236 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064237 }
4238 ],
4239 "can_use_on_swarming_builders": True,
4240 "output_links": [
4241 {
4242 "link": [
4243 "https://luci-logdog.appspot.com/v/?s",
4244 "=android%2Fswarming%2Flogcats%2F",
4245 "${TASK_ID}%2F%2B%2Funified_logcats"
4246 ],
4247 "name": "shard #${SHARD_INDEX} logcats"
4248 }
4249 ]
4250 }
4251 }
4252 ]
4253}
4254
4255TEST_QUERY_BOT_OUTPUT = {
4256 "additional_compile_targets": ["bar_test"],
4257 "gtest_tests": [
4258 {
Stephen Martinisbc7b7772019-05-01 22:01:434259 "test": "foo_test",
4260 "args": [
Karen Qiane24b7ee2019-02-12 23:37:064261 "--gs-results-bucket=chromium-result-details",
4262 "--recover-devices"
Stephen Martinisbc7b7772019-05-01 22:01:434263 ],
4264 "merge": {
4265 "args": [],
4266 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4267 },
4268 "swarming": {
Karen Qiane24b7ee2019-02-12 23:37:064269 "cipd_packages": [
4270 {
4271 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4272 "location": "bin",
4273 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4274 }
4275 ],
4276 "dimension_sets": [
4277 {
4278 "device_os": "KTU84P",
Ben Pastened15aa8a2019-05-16 16:59:224279 "device_os_type": "userdebug",
4280 "device_type": "hammerhead",
4281 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064282 }
4283 ],
4284 "can_use_on_swarming_builders": True,
4285 "output_links": [
4286 {
4287 "link": ["https://luci-logdog.appspot.com/v/?s",
4288 "=android%2Fswarming%2Flogcats%2F",
4289 "${TASK_ID}%2F%2B%2Funified_logcats"
4290 ],
4291 "name": "shard #${SHARD_INDEX} logcats"
4292 }
4293 ]
4294 }
4295 }
4296 ]
4297}
4298TEST_QUERY_BOT_TESTS_OUTPUT = [
4299 {
4300 "test": "foo_test",
4301 "args": [
4302 "--gs-results-bucket=chromium-result-details",
4303 "--recover-devices"
4304 ],
Stephen Martinisbc7b7772019-05-01 22:01:434305 "merge": {
4306 "args": [],
4307 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4308 },
Karen Qiane24b7ee2019-02-12 23:37:064309 "swarming": {
4310 "cipd_packages": [
4311 {
4312 "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
4313 "location": "bin",
4314 "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
4315 }
4316 ],
4317 "dimension_sets": [
4318 {
Ben Pastenee012aea42019-05-14 22:32:284319 "device_os": "LMY41U",
4320 "device_os_type": "user",
Ben Pastened15aa8a2019-05-16 16:59:224321 "device_type": "hammerhead",
4322 "os": "Android"
Karen Qiane24b7ee2019-02-12 23:37:064323 }
4324 ],
4325 "can_use_on_swarming_builders": True
4326 }
4327 }
4328]
4329
4330TEST_QUERY_TESTS_OUTPUT = {
4331 "bar_test": {},
4332 "foo_test": {}
4333}
4334
4335TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT = ["foo_test"]
4336
4337TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT = ["bar_test"]
4338
4339TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT = ["bar_test_test"]
4340
4341TEST_QUERY_TESTS_PARAMS_OUTPUT = ['bar_test_test']
4342
4343TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT = ['bar_test']
4344
4345TEST_QUERY_TEST_OUTPUT = {}
4346
4347TEST_QUERY_TEST_BOTS_OUTPUT = [
Jamie Madillcf4f8c72021-05-20 19:24:234348 "Fake Android K Tester",
4349 "Fake Android L Tester",
4350 "Fake Android M Tester",
Karen Qiane24b7ee2019-02-12 23:37:064351]
4352
4353TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT = ['Fake Tester']
4354
4355TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT = []
4356
Garrett Beaty1afaccc2020-06-25 19:58:154357
4358class QueryTests(TestCase):
Karen Qiane24b7ee2019-02-12 23:37:064359 """Tests for the query feature."""
4360 def test_query_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154361 self.override_args(query='bots',
4362 check=False,
4363 pyl_files_dir=None,
4364 json=None,
4365 waterfall_filters=[])
4366 fbb = FakeBBGen(self.args,
4367 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064368 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414369 LUCI_MILO_CFG,
4370 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064371 fbb.query(fbb.args)
4372 query_json = json.loads("".join(fbb.printed_lines))
4373 self.assertEqual(query_json, TEST_QUERY_BOTS_OUTPUT)
4374
4375 def test_query_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154376 self.override_args(query='bots/blah/blah',
4377 check=False,
4378 pyl_files_dir=None,
4379 json=None,
4380 waterfall_filters=[])
4381 fbb = FakeBBGen(self.args,
4382 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064383 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414384 LUCI_MILO_CFG,
4385 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064386 with self.assertRaises(SystemExit) as cm:
4387 fbb.query(fbb.args)
4388 self.assertEqual(cm.exception.code, 1)
4389 self.assertTrue(fbb.printed_lines)
4390
4391 def test_query_bots_json(self):
Garrett Beaty1afaccc2020-06-25 19:58:154392 self.override_args(query='bots',
4393 check=False,
4394 pyl_files_dir=None,
4395 json='result.json',
4396 waterfall_filters=[])
4397 fbb = FakeBBGen(self.args,
4398 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064399 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414400 LUCI_MILO_CFG,
4401 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064402 fbb.query(fbb.args)
4403 self.assertFalse(fbb.printed_lines)
4404
4405 def test_query_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154406 self.override_args(query='bots/tests',
4407 check=False,
4408 pyl_files_dir=None,
4409 json=None,
4410 waterfall_filters=[])
4411 fbb = FakeBBGen(self.args,
4412 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064413 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414414 LUCI_MILO_CFG,
4415 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064416 fbb.query(fbb.args)
4417 query_json = json.loads("".join(fbb.printed_lines))
4418 self.assertEqual(query_json, TEST_QUERY_BOTS_TESTS_OUTPUT)
4419
4420 def test_query_invalid_bots_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154421 self.override_args(query='bots/tdfjdk',
4422 check=False,
4423 pyl_files_dir=None,
4424 json=None,
4425 waterfall_filters=[])
4426 fbb = FakeBBGen(self.args,
4427 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064428 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414429 LUCI_MILO_CFG,
4430 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064431 with self.assertRaises(SystemExit) as cm:
4432 fbb.query(fbb.args)
4433 self.assertEqual(cm.exception.code, 1)
4434 self.assertTrue(fbb.printed_lines)
4435
4436 def test_query_bot(self):
Garrett Beaty1afaccc2020-06-25 19:58:154437 self.override_args(query='bot/Fake Android K Tester',
4438 check=False,
4439 pyl_files_dir=None,
4440 json=None,
4441 waterfall_filters=[])
4442 fbb = FakeBBGen(self.args,
4443 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064444 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414445 LUCI_MILO_CFG,
4446 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064447 fbb.query(fbb.args)
4448 query_json = json.loads("".join(fbb.printed_lines))
Garrett Beaty1afaccc2020-06-25 19:58:154449 self.maxDiff = None # pragma pylint: disable=attribute-defined-outside-init
Karen Qiane24b7ee2019-02-12 23:37:064450 self.assertEqual(query_json, TEST_QUERY_BOT_OUTPUT)
4451
4452 def test_query_bot_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154453 self.override_args(query='bot/bot1',
4454 check=False,
4455 pyl_files_dir=None,
4456 json=None,
4457 waterfall_filters=[])
4458 fbb = FakeBBGen(self.args,
4459 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064460 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414461 LUCI_MILO_CFG,
4462 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064463 with self.assertRaises(SystemExit) as cm:
4464 fbb.query(fbb.args)
4465 self.assertEqual(cm.exception.code, 1)
4466 self.assertTrue(fbb.printed_lines)
4467
4468 def test_query_bot_invalid_query_too_many(self):
Garrett Beaty1afaccc2020-06-25 19:58:154469 self.override_args(query='bot/Fake Android K Tester/blah/blah',
4470 check=False,
4471 pyl_files_dir=None,
4472 json=None,
4473 waterfall_filters=[])
4474 fbb = FakeBBGen(self.args,
4475 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064476 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414477 LUCI_MILO_CFG,
4478 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064479 with self.assertRaises(SystemExit) as cm:
4480 fbb.query(fbb.args)
4481 self.assertEqual(cm.exception.code, 1)
4482 self.assertTrue(fbb.printed_lines)
4483
4484 def test_query_bot_invalid_query_no_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154485 self.override_args(query='bot/Fake Android K Tester/blahs',
4486 check=False,
4487 pyl_files_dir=None,
4488 json=None,
4489 waterfall_filters=[])
4490 fbb = FakeBBGen(self.args,
4491 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064492 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414493 LUCI_MILO_CFG,
4494 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064495 with self.assertRaises(SystemExit) as cm:
4496 fbb.query(fbb.args)
4497 self.assertEqual(cm.exception.code, 1)
4498 self.assertTrue(fbb.printed_lines)
4499
4500 def test_query_bot_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154501 self.override_args(query='bot/Fake Android L Tester/tests',
4502 check=False,
4503 pyl_files_dir=None,
4504 json=None,
4505 waterfall_filters=[])
4506 fbb = FakeBBGen(self.args,
4507 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064508 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414509 LUCI_MILO_CFG,
4510 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064511 fbb.query(fbb.args)
4512 query_json = json.loads("".join(fbb.printed_lines))
4513 self.assertEqual(query_json, TEST_QUERY_BOT_TESTS_OUTPUT)
4514
4515 def test_query_tests(self):
Garrett Beaty1afaccc2020-06-25 19:58:154516 self.override_args(query='tests',
4517 check=False,
4518 pyl_files_dir=None,
4519 json=None,
4520 waterfall_filters=[])
4521 fbb = FakeBBGen(self.args,
4522 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064523 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414524 LUCI_MILO_CFG,
4525 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064526 fbb.query(fbb.args)
4527 query_json = json.loads("".join(fbb.printed_lines))
4528 self.assertEqual(query_json, TEST_QUERY_TESTS_OUTPUT)
4529
4530 def test_query_tests_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154531 self.override_args(query='tests/blah/blah',
4532 check=False,
4533 pyl_files_dir=None,
4534 json=None,
4535 waterfall_filters=[])
4536 fbb = FakeBBGen(self.args,
4537 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064538 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414539 LUCI_MILO_CFG,
4540 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064541 with self.assertRaises(SystemExit) as cm:
4542 fbb.query(fbb.args)
4543 self.assertEqual(cm.exception.code, 1)
4544 self.assertTrue(fbb.printed_lines)
4545
4546 def test_query_tests_multiple_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154547 self.override_args(query='tests/--jobs=1&--verbose',
4548 check=False,
4549 pyl_files_dir=None,
4550 json=None,
4551 waterfall_filters=[])
4552 fbb = FakeBBGen(self.args,
4553 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064554 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414555 LUCI_MILO_CFG,
4556 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064557 fbb.query(fbb.args)
4558 query_json = json.loads("".join(fbb.printed_lines))
4559 self.assertEqual(query_json, TEST_QUERY_TESTS_MULTIPLE_PARAMS_OUTPUT)
4560
4561 def test_query_tests_invalid_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154562 self.override_args(query='tests/device_os?',
4563 check=False,
4564 pyl_files_dir=None,
4565 json=None,
4566 waterfall_filters=[])
4567 fbb = FakeBBGen(self.args,
4568 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064569 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414570 LUCI_MILO_CFG,
4571 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064572 with self.assertRaises(SystemExit) as cm:
4573 fbb.query(fbb.args)
4574 self.assertEqual(cm.exception.code, 1)
4575 self.assertTrue(fbb.printed_lines)
4576
4577 def test_query_tests_dimension_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154578 self.override_args(query='tests/device_os:NMF26U',
4579 check=False,
4580 pyl_files_dir=None,
4581 json=None,
4582 waterfall_filters=[])
4583 fbb = FakeBBGen(self.args,
4584 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064585 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414586 LUCI_MILO_CFG,
4587 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064588 fbb.query(fbb.args)
4589 query_json = json.loads("".join(fbb.printed_lines))
4590 self.assertEqual(query_json, TEST_QUERY_TESTS_DIMENSION_PARAMS_OUTPUT)
4591
4592 def test_query_tests_swarming_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154593 self.override_args(query='tests/hard_timeout:1000',
4594 check=False,
4595 pyl_files_dir=None,
4596 json=None,
4597 waterfall_filters=[])
4598 fbb = FakeBBGen(self.args,
4599 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064600 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414601 LUCI_MILO_CFG,
4602 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064603 fbb.query(fbb.args)
4604 query_json = json.loads("".join(fbb.printed_lines))
4605 self.assertEqual(query_json, TEST_QUERY_TESTS_SWARMING_PARAMS_OUTPUT)
4606
4607 def test_query_tests_params(self):
Garrett Beaty1afaccc2020-06-25 19:58:154608 self.override_args(query='tests/should_retry_with_patch:true',
4609 check=False,
4610 pyl_files_dir=None,
4611 json=None,
4612 waterfall_filters=[])
4613 fbb = FakeBBGen(self.args,
4614 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064615 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414616 LUCI_MILO_CFG,
4617 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064618 fbb.query(fbb.args)
4619 query_json = json.loads("".join(fbb.printed_lines))
4620 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_OUTPUT)
4621
4622 def test_query_tests_params_false(self):
Garrett Beaty1afaccc2020-06-25 19:58:154623 self.override_args(query='tests/should_retry_with_patch:false',
4624 check=False,
4625 pyl_files_dir=None,
4626 json=None,
4627 waterfall_filters=[])
4628 fbb = FakeBBGen(self.args,
4629 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064630 TEST_SUITE_WITH_PARAMS,
Nodir Turakulovfce34292019-12-18 17:05:414631 LUCI_MILO_CFG,
4632 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064633 fbb.query(fbb.args)
4634 query_json = json.loads("".join(fbb.printed_lines))
4635 self.assertEqual(query_json, TEST_QUERY_TESTS_PARAMS_FALSE_OUTPUT)
4636
4637 def test_query_test(self):
Garrett Beaty1afaccc2020-06-25 19:58:154638 self.override_args(query='test/foo_test',
4639 check=False,
4640 pyl_files_dir=None,
4641 json=None,
4642 waterfall_filters=[])
4643 fbb = FakeBBGen(self.args,
4644 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064645 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414646 LUCI_MILO_CFG,
4647 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064648 fbb.query(fbb.args)
4649 query_json = json.loads("".join(fbb.printed_lines))
4650 self.assertEqual(query_json, TEST_QUERY_TEST_OUTPUT)
4651
4652 def test_query_test_invalid_id(self):
Garrett Beaty1afaccc2020-06-25 19:58:154653 self.override_args(query='test/foo_foo',
4654 check=False,
4655 pyl_files_dir=None,
4656 json=None,
4657 waterfall_filters=[])
4658 fbb = FakeBBGen(self.args,
4659 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064660 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414661 LUCI_MILO_CFG,
4662 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064663 with self.assertRaises(SystemExit) as cm:
4664 fbb.query(fbb.args)
4665 self.assertEqual(cm.exception.code, 1)
4666 self.assertTrue(fbb.printed_lines)
4667
4668 def test_query_test_invalid_length(self):
Garrett Beaty1afaccc2020-06-25 19:58:154669 self.override_args(query='test/foo_tests/foo/foo',
4670 check=False,
4671 pyl_files_dir=None,
4672 json=None,
4673 waterfall_filters=[])
4674 fbb = FakeBBGen(self.args,
4675 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064676 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414677 LUCI_MILO_CFG,
4678 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064679 with self.assertRaises(SystemExit) as cm:
4680 fbb.query(fbb.args)
4681 self.assertEqual(cm.exception.code, 1)
4682 self.assertTrue(fbb.printed_lines)
4683
4684 def test_query_test_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154685 self.override_args(query='test/foo_test/bots',
4686 check=False,
4687 pyl_files_dir=None,
4688 json=None,
4689 waterfall_filters=[])
4690 fbb = FakeBBGen(self.args,
4691 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064692 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414693 LUCI_MILO_CFG,
4694 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064695 fbb.query(fbb.args)
4696 query_json = json.loads("".join(fbb.printed_lines))
4697 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_OUTPUT)
4698
4699 def test_query_test_bots_isolated_scripts(self):
Garrett Beaty1afaccc2020-06-25 19:58:154700 self.override_args(query='test/foo_test/bots',
4701 check=False,
4702 pyl_files_dir=None,
4703 json=None,
4704 waterfall_filters=[])
4705 fbb = FakeBBGen(self.args,
4706 FOO_ISOLATED_SCRIPTS_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064707 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414708 LUCI_MILO_CFG,
4709 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064710 fbb.query(fbb.args)
4711 query_json = json.loads("".join(fbb.printed_lines))
4712 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_ISOLATED_SCRIPTS_OUTPUT)
4713
4714 def test_query_test_bots_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154715 self.override_args(query='test/foo_tests/foo',
4716 check=False,
4717 pyl_files_dir=None,
4718 json=None,
4719 waterfall_filters=[])
4720 fbb = FakeBBGen(self.args,
4721 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064722 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414723 LUCI_MILO_CFG,
4724 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064725 with self.assertRaises(SystemExit) as cm:
4726 fbb.query(fbb.args)
4727 self.assertEqual(cm.exception.code, 1)
4728 self.assertTrue(fbb.printed_lines)
4729
4730 def test_query_test_bots_no_bots(self):
Garrett Beaty1afaccc2020-06-25 19:58:154731 self.override_args(query='test/bar_tests/bots',
4732 check=False,
4733 pyl_files_dir=None,
4734 json=None,
4735 waterfall_filters=[])
4736 fbb = FakeBBGen(self.args,
4737 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064738 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414739 LUCI_MILO_CFG,
4740 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064741 fbb.query(fbb.args)
4742 query_json = json.loads("".join(fbb.printed_lines))
4743 self.assertEqual(query_json, TEST_QUERY_TEST_BOTS_NO_BOTS_OUTPUT)
4744
4745 def test_query_invalid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154746 self.override_args(query='foo',
4747 check=False,
4748 pyl_files_dir=None,
4749 json=None,
4750 waterfall_filters=[])
4751 fbb = FakeBBGen(self.args,
4752 ANDROID_WATERFALL,
Karen Qiane24b7ee2019-02-12 23:37:064753 GOOD_COMPOSITION_TEST_SUITES,
Nodir Turakulovfce34292019-12-18 17:05:414754 LUCI_MILO_CFG,
4755 mixins=SWARMING_MIXINS_SORTED)
Karen Qiane24b7ee2019-02-12 23:37:064756 with self.assertRaises(SystemExit) as cm:
4757 fbb.query(fbb.args)
4758 self.assertEqual(cm.exception.code, 1)
4759 self.assertTrue(fbb.printed_lines)
4760
Brian Sheedye6ea0ee2019-07-11 02:54:374761
4762FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES = """\
4763{
4764 'basic_suites': {
4765 'foo_tests': {
4766 'foo_test': {
4767 'args': [
4768 '--enable-features',
4769 'Foo,Bar',
4770 ],
4771 },
4772 },
4773 },
4774}
4775"""
4776
4777
4778FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE = """\
4779{
4780 'foo_test': {
4781 'replacements': {
4782 'Fake Tester': {
4783 'args': {
4784 '--c_arg': None,
4785 },
4786 },
4787 },
4788 },
4789}
4790"""
4791
4792
4793FOO_TEST_REPLACEMENTS_REMOVE_VALUE = """\
4794{
4795 'foo_test': {
4796 'replacements': {
4797 'Fake Tester': {
4798 'args': {
4799 '--enable-features': None,
4800 },
4801 },
4802 },
4803 },
4804}
4805"""
4806
4807
4808FOO_TEST_REPLACEMENTS_REPLACE_VALUE = """\
4809{
4810 'foo_test': {
4811 'replacements': {
4812 'Fake Tester': {
4813 'args': {
4814 '--enable-features': 'Bar,Baz',
4815 },
4816 },
4817 },
4818 },
4819}
4820"""
4821
4822
4823FOO_TEST_REPLACEMENTS_INVALID_KEY = """\
4824{
4825 'foo_test': {
4826 'replacements': {
4827 'Fake Tester': {
4828 'invalid': {
4829 '--enable-features': 'Bar,Baz',
4830 },
4831 },
4832 },
4833 },
4834}
4835"""
4836
4837
4838REPLACEMENTS_REMOVE_OUTPUT = """\
4839{
4840 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4841 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4842 "Fake Tester": {
4843 "gtest_tests": [
4844 {
4845 "args": [],
4846 "merge": {
4847 "args": [],
4848 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4849 },
4850 "swarming": {
4851 "can_use_on_swarming_builders": true,
4852 "dimension_sets": [
4853 {
4854 "kvm": "1"
4855 }
4856 ]
4857 },
4858 "test": "foo_test"
4859 }
4860 ]
4861 }
4862}
4863"""
4864
4865REPLACEMENTS_VALUE_OUTPUT = """\
4866{
4867 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4868 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4869 "Fake Tester": {
4870 "gtest_tests": [
4871 {
4872 "args": [
4873 "--enable-features=Bar,Baz"
4874 ],
4875 "merge": {
4876 "args": [],
4877 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4878 },
4879 "swarming": {
4880 "can_use_on_swarming_builders": true,
4881 "dimension_sets": [
4882 {
4883 "kvm": "1"
4884 }
4885 ]
4886 },
4887 "test": "foo_test"
4888 }
4889 ]
4890 }
4891}
4892"""
4893
4894REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT = """\
4895{
4896 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
4897 "AAAAA2 See generate_buildbot_json.py to make changes": {},
4898 "Fake Tester": {
4899 "gtest_tests": [
4900 {
4901 "args": [
4902 "--enable-features",
4903 "Bar,Baz"
4904 ],
4905 "merge": {
4906 "args": [],
4907 "script": "//testing/merge_scripts/standard_gtest_merge.py"
4908 },
4909 "swarming": {
4910 "can_use_on_swarming_builders": true,
4911 "dimension_sets": [
4912 {
4913 "kvm": "1"
4914 }
4915 ]
4916 },
4917 "test": "foo_test"
4918 }
4919 ]
4920 }
4921}
4922"""
4923
4924
Garrett Beaty1afaccc2020-06-25 19:58:154925class ReplacementTests(TestCase):
Brian Sheedye6ea0ee2019-07-11 02:54:374926 """Tests for the arg replacement feature."""
4927 def test_replacement_valid_remove_no_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154928 fbb = FakeBBGen(self.args,
4929 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374930 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414931 LUCI_MILO_CFG,
4932 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_NO_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154933 self.create_testing_buildbot_json_file('chromium.test.json',
4934 REPLACEMENTS_REMOVE_OUTPUT)
4935 self.create_testing_buildbot_json_file('chromium.ci.json',
4936 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374937 fbb.check_output_file_consistency(verbose=True)
4938 self.assertFalse(fbb.printed_lines)
4939
4940 def test_replacement_valid_remove_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154941 fbb = FakeBBGen(self.args,
4942 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374943 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:414944 LUCI_MILO_CFG,
4945 exceptions=FOO_TEST_REPLACEMENTS_REMOVE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154946 self.create_testing_buildbot_json_file('chromium.test.json',
4947 REPLACEMENTS_REMOVE_OUTPUT)
4948 self.create_testing_buildbot_json_file('chromium.ci.json',
4949 REPLACEMENTS_REMOVE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374950 fbb.check_output_file_consistency(verbose=True)
4951 self.assertFalse(fbb.printed_lines)
4952
4953 def test_replacement_valid_replace_value(self):
Garrett Beaty1afaccc2020-06-25 19:58:154954 fbb = FakeBBGen(self.args,
4955 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374956 FOO_TEST_SUITE_WITH_ENABLE_FEATURES,
Nodir Turakulovfce34292019-12-18 17:05:414957 LUCI_MILO_CFG,
4958 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154959 self.create_testing_buildbot_json_file('chromium.test.json',
4960 REPLACEMENTS_VALUE_OUTPUT)
4961 self.create_testing_buildbot_json_file('chromium.ci.json',
4962 REPLACEMENTS_VALUE_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374963 fbb.check_output_file_consistency(verbose=True)
4964 self.assertFalse(fbb.printed_lines)
4965
4966 def test_replacement_valid_replace_value_separate_entries(self):
Garrett Beaty1afaccc2020-06-25 19:58:154967 fbb = FakeBBGen(self.args,
4968 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374969 FOO_TEST_SUITE_WITH_ENABLE_FEATURES_SEPARATE_ENTRIES,
Nodir Turakulovfce34292019-12-18 17:05:414970 LUCI_MILO_CFG,
4971 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Garrett Beaty1afaccc2020-06-25 19:58:154972 self.create_testing_buildbot_json_file(
4973 'chromium.test.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
4974 self.create_testing_buildbot_json_file(
4975 'chromium.ci.json', REPLACEMENTS_VALUE_SEPARATE_ENTRIES_OUTPUT)
Brian Sheedye6ea0ee2019-07-11 02:54:374976 fbb.check_output_file_consistency(verbose=True)
4977 self.assertFalse(fbb.printed_lines)
4978
4979 def test_replacement_invalid_key_not_valid(self):
Garrett Beaty1afaccc2020-06-25 19:58:154980 fbb = FakeBBGen(self.args,
4981 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374982 FOO_TEST_SUITE,
Nodir Turakulovfce34292019-12-18 17:05:414983 LUCI_MILO_CFG,
4984 exceptions=FOO_TEST_REPLACEMENTS_INVALID_KEY)
Jamie Madillcf4f8c72021-05-20 19:24:234985 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4986 'Given replacement key *'):
Brian Sheedye6ea0ee2019-07-11 02:54:374987 fbb.check_output_file_consistency(verbose=True)
4988
4989 def test_replacement_invalid_key_not_found(self):
Garrett Beaty1afaccc2020-06-25 19:58:154990 fbb = FakeBBGen(self.args,
4991 FOO_GTESTS_WATERFALL,
Brian Sheedye6ea0ee2019-07-11 02:54:374992 FOO_TEST_SUITE_WITH_ARGS,
Nodir Turakulovfce34292019-12-18 17:05:414993 LUCI_MILO_CFG,
4994 exceptions=FOO_TEST_REPLACEMENTS_REPLACE_VALUE)
Jamie Madillcf4f8c72021-05-20 19:24:234995 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
4996 'Could not find *'):
Brian Sheedye6ea0ee2019-07-11 02:54:374997 fbb.check_output_file_consistency(verbose=True)
4998
Jeff Yoon8154e582019-12-03 23:30:014999
Brian Sheedya31578e2020-05-18 20:24:365000FOO_TEST_SUITE_WITH_MAGIC_ARGS = """\
5001{
5002 'basic_suites': {
5003 'foo_tests': {
5004 'foo_test': {
5005 'args': [
5006 '$$MAGIC_SUBSTITUTION_TestOnlySubstitution',
5007 ],
5008 },
5009 },
5010 },
5011}
5012"""
5013
5014
5015FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS = """\
5016{
5017 'basic_suites': {
5018 'foo_tests': {
5019 'foo_test': {
5020 'args': [
5021 '$$MAGIC_SUBSTITUTION_NotARealSubstitution',
5022 ],
5023 },
5024 },
5025 },
5026}
5027"""
5028
5029
5030MAGIC_SUBSTITUTIONS_OUTPUT = """\
5031{
5032 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5033 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5034 "Fake Tester": {
5035 "gtest_tests": [
5036 {
5037 "args": [
5038 "--magic-substitution-success"
5039 ],
5040 "merge": {
5041 "args": [],
5042 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5043 },
5044 "swarming": {
5045 "can_use_on_swarming_builders": true,
5046 "dimension_sets": [
5047 {
5048 "kvm": "1"
5049 }
5050 ]
5051 },
5052 "test": "foo_test"
5053 }
5054 ]
5055 }
5056}
5057"""
5058
5059
Garrett Beaty1afaccc2020-06-25 19:58:155060class MagicSubstitutionTests(TestCase):
Brian Sheedya31578e2020-05-18 20:24:365061 """Tests for the magic substitution feature."""
5062 def test_valid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155063 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5064 FOO_TEST_SUITE_WITH_MAGIC_ARGS, LUCI_MILO_CFG)
5065 self.create_testing_buildbot_json_file('chromium.test.json',
5066 MAGIC_SUBSTITUTIONS_OUTPUT)
5067 self.create_testing_buildbot_json_file('chromium.ci.json',
5068 MAGIC_SUBSTITUTIONS_OUTPUT)
Brian Sheedya31578e2020-05-18 20:24:365069 fbb.check_output_file_consistency(verbose=True)
5070 self.assertFalse(fbb.printed_lines)
5071
5072 def test_invalid_function(self):
Garrett Beaty1afaccc2020-06-25 19:58:155073 fbb = FakeBBGen(self.args, FOO_GTESTS_WATERFALL,
5074 FOO_TEST_SUITE_WITH_INVALID_MAGIC_ARGS, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:235075 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
5076 'Magic substitution function *'):
Brian Sheedya31578e2020-05-18 20:24:365077 fbb.check_output_file_consistency(verbose=True)
5078
5079
Jeff Yoon8154e582019-12-03 23:30:015080# Matrix compound composition test suites
5081
5082MATRIX_COMPOUND_EMPTY = """\
5083{
5084 'basic_suites': {
5085 'bar_tests': {
5086 'bar_test': {},
5087 },
5088 'foo_tests': {
5089 'foo_test': {},
5090 },
5091 },
5092 'matrix_compound_suites': {
5093 'matrix_tests': {
5094 'foo_tests': {},
5095 'bar_tests': {},
5096 },
5097 },
5098}
5099"""
5100
Jeff Yoon67c3e832020-02-08 07:39:385101MATRIX_COMPOUND_MISSING_IDENTIFIER = """\
Jeff Yoon8154e582019-12-03 23:30:015102{
5103 'basic_suites': {
5104 'foo_tests': {
5105 'foo_test': {},
5106 },
5107 },
5108 'matrix_compound_suites': {
5109 'matrix_tests': {
5110 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385111 'variants': [
5112 {
5113 'swarming': {
5114 'dimension_sets': [
5115 {
5116 'foo': 'bar',
5117 },
5118 ],
Jeff Yoon8154e582019-12-03 23:30:015119 },
Jeff Yoon67c3e832020-02-08 07:39:385120 },
5121 ],
Jeff Yoon8154e582019-12-03 23:30:015122 },
5123 },
5124 },
5125}
5126"""
5127
5128MATRIX_MISMATCHED_SWARMING_LENGTH = """\
5129{
5130 'basic_suites': {
5131 'foo_tests': {
5132 'foo_test': {
5133 'swarming': {
5134 'dimension_sets': [
5135 {
5136 'hello': 'world',
5137 }
5138 ],
5139 },
5140 },
5141 },
5142 },
5143 'matrix_compound_suites': {
5144 'matrix_tests': {
5145 'foo_tests': {
Jeff Yoon67c3e832020-02-08 07:39:385146 'variants': [
5147 {
5148 'identifier': 'test',
5149 'swarming': {
5150 'dimension_sets': [
5151 {
5152 'foo': 'bar',
5153 },
5154 {
5155 'bar': 'foo',
5156 }
5157 ],
Jeff Yoon8154e582019-12-03 23:30:015158 },
Jeff Yoon67c3e832020-02-08 07:39:385159 },
5160 ],
Jeff Yoon8154e582019-12-03 23:30:015161 },
5162 },
5163 },
5164}
5165"""
5166
5167MATRIX_REF_NONEXISTENT = """\
5168{
5169 'basic_suites': {
5170 'foo_tests': {
5171 'foo_test': {},
5172 },
5173 },
5174 'matrix_compound_suites': {
5175 'matrix_tests': {
5176 'bar_test': {},
5177 },
5178 },
5179}
5180"""
5181
Jeff Yoon67c3e832020-02-08 07:39:385182MATRIX_COMPOUND_REF_COMPOSITION = """\
Jeff Yoon8154e582019-12-03 23:30:015183{
5184 'basic_suites': {
5185 'foo_tests': {
5186 'foo_test': {},
5187 },
5188 },
5189 'compound_suites': {
5190 'sample_composition': {
5191 'foo_tests': {},
5192 },
5193 },
5194 'matrix_compound_suites': {
5195 'matrix_tests': {
5196 'sample_composition': {},
5197 },
5198 },
5199}
5200"""
5201
5202MATRIX_COMPOSITION_REF_MATRIX = """\
5203{
5204 'basic_suites': {
5205 'foo_tests': {
5206 'foo_test': {},
5207 },
5208 },
5209 'matrix_compound_suites': {
5210 'a_test': {
5211 'foo_tests': {},
5212 },
5213 'matrix_tests': {
5214 'a_test': {},
5215 },
5216 },
5217}
5218"""
5219
Jeff Yoon67c3e832020-02-08 07:39:385220MATRIX_COMPOUND_VARIANTS_MIXINS_MERGE = """\
5221{
5222 'basic_suites': {
5223 'foo_tests': {
5224 'set': {
5225 'mixins': [ 'test_mixin' ],
5226 },
5227 },
5228 },
5229 'matrix_compound_suites': {
5230 'matrix_tests': {
5231 'foo_tests': {
5232 'variants': [
5233 {
5234 'mixins': [ 'dimension_mixin' ],
5235 },
5236 ],
5237 },
5238 },
5239 },
5240}
5241"""
5242
5243MATRIX_COMPOUND_VARIANTS_MIXINS = """\
5244{
5245 'basic_suites': {
5246 'foo_tests': {
5247 'set': {
5248 'mixins': [ 'test_mixin' ],
5249 },
5250 },
5251 },
5252 'matrix_compound_suites': {
5253 'matrix_tests': {
5254 'foo_tests': {
5255 'variants': [
5256 {
5257 'mixins': [
5258 'dimension_mixin',
5259 'waterfall_mixin',
5260 'builder_mixin',
5261 'random_mixin'
5262 ],
5263 },
5264 ],
5265 },
5266 },
5267 },
5268}
5269"""
5270
5271MATRIX_COMPOUND_VARIANTS_MIXINS_REMOVE = """\
5272{
5273 'basic_suites': {
5274 'foo_tests': {
5275 'set': {
5276 'remove_mixins': ['builder_mixin'],
5277 },
5278 },
5279 },
5280 'matrix_compound_suites': {
5281 'matrix_tests': {
5282 'foo_tests': {
5283 'variants': [
5284 {
5285 'mixins': [ 'builder_mixin' ],
5286 }
5287 ],
5288 },
5289 },
5290 },
5291}
5292"""
5293
5294MATRIX_COMPOUND_CONFLICTING_TEST_SUITES = """\
5295{
5296 'basic_suites': {
5297 'bar_tests': {
5298 'baz_tests': {
5299 'args': [
5300 '--bar',
5301 ],
5302 }
5303 },
5304 'foo_tests': {
5305 'baz_tests': {
5306 'args': [
5307 '--foo',
5308 ],
5309 }
5310 },
5311 },
5312 'matrix_compound_suites': {
5313 'matrix_tests': {
5314 'bar_tests': {
5315 'variants': [
5316 {
5317 'identifier': 'bar',
5318 }
5319 ],
5320 },
5321 'foo_tests': {
5322 'variants': [
5323 {
5324 'identifier': 'foo'
5325 }
5326 ]
5327 }
5328 },
5329 },
5330}
5331"""
5332
5333MATRIX_COMPOUND_TARGETS_ARGS = """\
5334{
5335 'basic_suites': {
5336 'foo_tests': {
5337 'args_test': {
5338 'args': [
5339 '--iam'
5340 ],
5341 },
5342 }
5343 },
5344 'matrix_compound_suites': {
5345 'matrix_tests': {
5346 'foo_tests': {
5347 'variants': [
5348 {
5349 'identifier': 'args',
5350 'args': [
5351 '--anarg',
5352 ],
5353 },
5354 {
5355 'identifier': 'swarming',
5356 'swarming': {
5357 'a': 'b',
5358 'dimension_sets': [
5359 {
5360 'hello': 'world',
5361 }
5362 ]
5363 }
5364 },
5365 {
5366 'identifier': 'mixins',
5367 'mixins': [ 'dimension_mixin' ],
5368 }
5369 ],
5370 },
5371 },
5372 },
5373}
5374"""
5375
5376MATRIX_COMPOUND_TARGETS_MIXINS = """\
5377{
5378 'basic_suites': {
5379 'foo_tests': {
5380 'mixins_test': {
5381 'mixins': [ 'test_mixin' ],
5382 },
5383 }
5384 },
5385 'matrix_compound_suites': {
5386 'matrix_tests': {
5387 'foo_tests': {
Jeff Yoon85fb8df2020-08-20 16:47:435388 'mixins': [ 'random_mixin' ],
Jeff Yoon67c3e832020-02-08 07:39:385389 'variants': [
5390 {
5391 'identifier': 'args',
5392 'args': [
5393 '--anarg',
5394 ],
5395 },
5396 {
5397 'identifier': 'swarming',
5398 'swarming': {
5399 'a': 'b',
5400 'dimension_sets': [
5401 {
5402 'hello': 'world',
5403 }
5404 ]
5405 }
5406 },
5407 {
5408 'identifier': 'mixins',
5409 'mixins': [ 'dimension_mixin' ],
5410 }
5411 ],
5412 },
5413 },
5414 },
5415}
5416"""
5417
5418MATRIX_COMPOUND_TARGETS_SWARMING = """\
5419{
5420 'basic_suites': {
5421 'foo_tests': {
5422 'swarming_test': {
5423 'swarming': {
5424 'foo': 'bar',
5425 'dimension_sets': [
5426 {
5427 'foo': 'bar',
5428 },
5429 ],
5430 },
5431 },
5432 }
5433 },
5434 'matrix_compound_suites': {
5435 'matrix_tests': {
5436 'foo_tests': {
5437 'variants': [
5438 {
5439 'identifier': 'args',
5440 'args': [
5441 '--anarg',
5442 ],
5443 },
5444 {
5445 'identifier': 'swarming',
5446 'swarming': {
5447 'a': 'b',
5448 'dimension_sets': [
5449 {
5450 'hello': 'world',
5451 }
5452 ]
5453 }
5454 },
5455 {
5456 'identifier': 'mixins',
5457 'mixins': [ 'dimension_mixin' ],
5458 }
5459 ],
5460 },
5461 },
5462 },
5463}
5464"""
Jeff Yoon8154e582019-12-03 23:30:015465
Jeff Yoonda581c32020-03-06 03:56:055466MATRIX_COMPOUND_VARIANTS_REF = """\
5467{
5468 'basic_suites': {
5469 'foo_tests': {
5470 'swarming_test': {},
5471 }
5472 },
5473 'matrix_compound_suites': {
5474 'matrix_tests': {
5475 'foo_tests': {
5476 'variants': [
5477 'a_variant'
5478 ],
5479 },
5480 },
5481 },
5482}
5483"""
5484
Rakib M. Hasanc9e01c62020-07-27 22:48:125485MATRIX_COMPOUND_TEST_WITH_TEST_KEY = """\
5486{
5487 'basic_suites': {
5488 'foo_tests': {
5489 'swarming_test': {
5490 'test': 'foo_test_apk'
5491 },
5492 }
5493 },
5494 'matrix_compound_suites': {
5495 'matrix_tests': {
5496 'foo_tests': {
5497 'variants': [
5498 'a_variant',
5499 ],
5500 },
5501 },
5502 },
5503}
5504"""
5505
Jeff Yoonda581c32020-03-06 03:56:055506MATRIX_COMPOUND_MIXED_VARIANTS_REF = """\
5507{
5508 'basic_suites': {
5509 'foo_tests': {
5510 'swarming_test': {},
5511 }
5512 },
5513 'matrix_compound_suites': {
5514 'matrix_tests': {
5515 'foo_tests': {
5516 'variants': [
5517 'a_variant',
5518 {
5519 'args': [
5520 'a',
5521 'b'
5522 ],
5523 'identifier': 'ab',
5524 }
5525 ],
5526 },
5527 },
5528 },
5529}
5530"""
5531
5532VARIANTS_FILE = """\
5533{
5534 'a_variant': {
5535 'args': [
5536 '--platform',
5537 'device',
5538 '--version',
5539 '1'
5540 ],
5541 'identifier': 'a_variant'
5542 }
5543}
5544"""
5545
5546MULTI_VARIANTS_FILE = """\
5547{
5548 'a_variant': {
5549 'args': [
5550 '--platform',
5551 'device',
5552 '--version',
5553 '1'
5554 ],
5555 'identifier': 'a_variant'
5556 },
5557 'b_variant': {
5558 'args': [
5559 '--platform',
5560 'sim',
5561 '--version',
5562 '2'
5563 ],
5564 'identifier': 'b_variant'
5565 }
5566}
5567"""
5568
Jeff Yoon8154e582019-12-03 23:30:015569# # Dictionary composition test suite outputs
5570
Sven Zheng2fe6dd6f2021-08-06 21:12:275571MATRIX_COMPOUND_OUTPUT = """\
Jeff Yoon8154e582019-12-03 23:30:015572{
5573 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5574 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5575 "Fake Tester": {
Sven Zheng2fe6dd6f2021-08-06 21:12:275576 "gtest_tests": [
5577 {
5578 "merge": {
5579 "args": [],
5580 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5581 },
5582 "swarming": {
5583 "can_use_on_swarming_builders": true
5584 },
5585 "test": "bar_test"
5586 },
5587 {
5588 "merge": {
5589 "args": [],
5590 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5591 },
5592 "swarming": {
5593 "can_use_on_swarming_builders": true
5594 },
5595 "test": "foo_test"
5596 }
5597 ]
Jeff Yoon8154e582019-12-03 23:30:015598 }
5599}
5600"""
5601
Rakib M. Hasanc9e01c62020-07-27 22:48:125602MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT = """\
5603{
5604 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5605 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5606 "Fake Tester": {
5607 "gtest_tests": [
5608 {
5609 "args": [
5610 "--platform",
5611 "device",
5612 "--version",
5613 "1"
5614 ],
5615 "merge": {
5616 "args": [],
5617 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5618 },
5619 "name": "swarming_test_a_variant",
5620 "swarming": {
5621 "can_use_on_swarming_builders": true
5622 },
5623 "test": "foo_test_apk"
5624 }
5625 ]
5626 }
5627}
5628"""
5629
Jeff Yoon67c3e832020-02-08 07:39:385630MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS = """\
Jeff Yoon8154e582019-12-03 23:30:015631{
5632 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5633 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5634 "Fake Tester": {
5635 "gtest_tests": [
5636 {
Jeff Yoon67c3e832020-02-08 07:39:385637 "args": [
5638 "--iam",
5639 "--anarg"
5640 ],
Jeff Yoon8154e582019-12-03 23:30:015641 "merge": {
5642 "args": [],
5643 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5644 },
Jeff Yoon67c3e832020-02-08 07:39:385645 "name": "args_test_args",
5646 "swarming": {
5647 "can_use_on_swarming_builders": true
5648 },
5649 "test": "args_test"
5650 },
5651 {
5652 "args": [
5653 "--iam"
5654 ],
5655 "merge": {
5656 "args": [],
5657 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5658 },
5659 "name": "args_test_mixins",
5660 "swarming": {
5661 "can_use_on_swarming_builders": true,
5662 "dimension_sets": [
5663 {
5664 "iama": "mixin"
5665 }
5666 ]
5667 },
5668 "test": "args_test"
5669 },
5670 {
5671 "args": [
5672 "--iam"
5673 ],
5674 "merge": {
5675 "args": [],
5676 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5677 },
5678 "name": "args_test_swarming",
5679 "swarming": {
5680 "a": "b",
5681 "can_use_on_swarming_builders": true,
5682 "dimension_sets": [
5683 {
5684 "hello": "world"
5685 }
5686 ]
5687 },
5688 "test": "args_test"
5689 }
5690 ]
5691 }
5692}
5693"""
5694
5695MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS = """\
5696{
5697 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5698 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5699 "Fake Tester": {
5700 "gtest_tests": [
5701 {
5702 "args": [
5703 "--anarg"
5704 ],
5705 "merge": {
5706 "args": [],
5707 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5708 },
5709 "name": "mixins_test_args",
5710 "swarming": {
5711 "can_use_on_swarming_builders": true,
5712 "value": "test"
5713 },
Jeff Yoon85fb8df2020-08-20 16:47:435714 "test": "mixins_test",
5715 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385716 },
5717 {
5718 "args": [],
5719 "merge": {
5720 "args": [],
5721 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5722 },
5723 "name": "mixins_test_mixins",
5724 "swarming": {
5725 "can_use_on_swarming_builders": true,
5726 "dimension_sets": [
5727 {
5728 "iama": "mixin"
5729 }
5730 ],
5731 "value": "test"
5732 },
Jeff Yoon85fb8df2020-08-20 16:47:435733 "test": "mixins_test",
5734 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385735 },
5736 {
5737 "args": [],
5738 "merge": {
5739 "args": [],
5740 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5741 },
5742 "name": "mixins_test_swarming",
5743 "swarming": {
5744 "a": "b",
5745 "can_use_on_swarming_builders": true,
5746 "dimension_sets": [
5747 {
5748 "hello": "world"
5749 }
5750 ],
5751 "value": "test"
5752 },
Jeff Yoon85fb8df2020-08-20 16:47:435753 "test": "mixins_test",
5754 "value": "random"
Jeff Yoon67c3e832020-02-08 07:39:385755 }
5756 ]
5757 }
5758}
5759"""
5760
5761MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING = """\
5762{
5763 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5764 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5765 "Fake Tester": {
5766 "gtest_tests": [
5767 {
5768 "args": [
5769 "--anarg"
5770 ],
5771 "merge": {
5772 "args": [],
5773 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5774 },
5775 "name": "swarming_test_args",
Jeff Yoon8154e582019-12-03 23:30:015776 "swarming": {
5777 "can_use_on_swarming_builders": true,
5778 "dimension_sets": [
5779 {
5780 "foo": "bar"
5781 }
Jeff Yoon67c3e832020-02-08 07:39:385782 ],
5783 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015784 },
Jeff Yoon67c3e832020-02-08 07:39:385785 "test": "swarming_test"
5786 },
Jeff Yoon8154e582019-12-03 23:30:015787 {
Jeff Yoon67c3e832020-02-08 07:39:385788 "args": [],
Jeff Yoon8154e582019-12-03 23:30:015789 "merge": {
5790 "args": [],
5791 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5792 },
Jeff Yoon67c3e832020-02-08 07:39:385793 "name": "swarming_test_mixins",
Jeff Yoon8154e582019-12-03 23:30:015794 "swarming": {
5795 "can_use_on_swarming_builders": true,
5796 "dimension_sets": [
5797 {
5798 "foo": "bar",
Jeff Yoon67c3e832020-02-08 07:39:385799 "iama": "mixin"
5800 }
5801 ],
5802 "foo": "bar"
5803 },
5804 "test": "swarming_test"
5805 },
5806 {
5807 "args": [],
5808 "merge": {
5809 "args": [],
5810 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5811 },
5812 "name": "swarming_test_swarming",
5813 "swarming": {
5814 "a": "b",
5815 "can_use_on_swarming_builders": true,
5816 "dimension_sets": [
5817 {
5818 "foo": "bar",
Jeff Yoon8154e582019-12-03 23:30:015819 "hello": "world"
5820 }
Jeff Yoon67c3e832020-02-08 07:39:385821 ],
5822 "foo": "bar"
Jeff Yoon8154e582019-12-03 23:30:015823 },
Jeff Yoon67c3e832020-02-08 07:39:385824 "test": "swarming_test"
Jeff Yoon8154e582019-12-03 23:30:015825 }
5826 ]
5827 }
5828}
5829"""
5830
Jeff Yoonda581c32020-03-06 03:56:055831MATRIX_COMPOUND_VARIANTS_REF_OUTPUT = """\
5832{
5833 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5834 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5835 "Fake Tester": {
5836 "gtest_tests": [
5837 {
5838 "args": [
5839 "--platform",
5840 "device",
5841 "--version",
5842 "1"
5843 ],
5844 "merge": {
5845 "args": [],
5846 "script": "//testing/merge_scripts/standard_gtest_merge.py"
5847 },
5848 "name": "swarming_test_a_variant",
5849 "swarming": {
5850 "can_use_on_swarming_builders": true
5851 },
5852 "test": "swarming_test"
5853 }
5854 ]
5855 }
5856}
5857"""
5858
Xinan Lin05fb9c1752020-12-17 00:15:525859EMPTY_SKYLAB_TEST_EXCEPTIONS = """\
5860{
5861 'tast.foo_OCTOPUS_TOT': {
5862 'remove_from': [
5863 'Fake Tester',
5864 ]
5865 },
5866 'tast.foo_OCTOPUS_TOT-1': {
5867 'remove_from': [
5868 'Fake Tester',
5869 ]
5870 }
5871}
5872"""
5873
5874MATRIX_SKYLAB_WATERFALL = """\
5875[
5876 {
5877 'project': 'chromium',
5878 'bucket': 'ci',
5879 'name': 'chromium.test',
5880 'machines': {
5881 'Fake Tester': {
5882 'test_suites': {
5883 'skylab_tests': 'cros_skylab_basic_x86',
5884 },
5885 },
5886 },
5887 },
5888]
5889"""
5890
5891MATRIX_COMPOUND_SKYLAB_REF = """\
5892{
5893 'basic_suites': {
5894 'cros_skylab_basic': {
5895 'tast.basic': {
5896 'suite': 'tast.basic',
5897 'timeout': 3600,
5898 },
5899 'tast.foo': {
5900 'suite': 'tast.foo',
5901 'timeout': 3600,
5902 },
5903 },
5904 },
5905 'compound_suites': {},
5906 'matrix_compound_suites': {
5907 'cros_skylab_basic_x86': {
5908 'cros_skylab_basic': {
5909 'variants': [
5910 {
5911 'skylab': {
5912 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:485913 'cros_chrome_version': '89.0.3234.0',
Xinan Lin05fb9c1752020-12-17 00:15:525914 'cros_img': 'octopus-release/R89-13655.0.0',
5915 },
Jieting Yangef6b1042021-11-30 21:33:485916 'enabled': True,
Xinan Lin05fb9c1752020-12-17 00:15:525917 'identifier': 'OCTOPUS_TOT',
5918 },
5919 {
5920 'skylab': {
5921 'cros_board': 'octopus',
Jieting Yangef6b1042021-11-30 21:33:485922 'cros_chrome_version': '88.0.2324.0',
Xinan Lin05fb9c1752020-12-17 00:15:525923 'cros_img': 'octopus-release/R88-13597.23.0',
5924 },
Jieting Yangef6b1042021-11-30 21:33:485925 'enabled': True,
5926 'identifier': 'OCTOPUS_TOT-1',
5927 },
5928 ]
5929 },
5930 },
5931 },
5932}
5933"""
5934
5935ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF = """\
5936{
5937 'basic_suites': {
5938 'cros_skylab_basic': {
5939 'tast.basic': {
5940 'suite': 'tast.basic',
5941 'timeout': 3600,
5942 },
5943 'tast.foo': {
5944 'suite': 'tast.foo',
5945 'timeout': 3600,
5946 },
5947 },
5948 },
5949 'compound_suites': {},
5950 'matrix_compound_suites': {
5951 'cros_skylab_basic_x86': {
5952 'cros_skylab_basic': {
5953 'variants': [
5954 {
5955 'skylab': {
5956 'cros_board': 'octopus',
5957 'cros_chrome_version': '89.0.3234.0',
5958 'cros_img': 'octopus-release/R89-13655.0.0',
5959 },
5960 'enabled': True,
5961 'identifier': 'OCTOPUS_TOT',
5962 },
5963 {
5964 'skylab': {
5965 'cros_board': 'octopus',
5966 'cros_chrome_version': '88.0.2324.0',
5967 'cros_img': 'octopus-release/R88-13597.23.0',
5968 },
5969 'enabled': False,
Xinan Lin05fb9c1752020-12-17 00:15:525970 'identifier': 'OCTOPUS_TOT-1',
5971 },
5972 ]
5973 },
5974 },
5975 },
5976}
5977"""
5978
5979VARIATION_SKYLAB_OUTPUT = """\
5980{
5981 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
5982 "AAAAA2 See generate_buildbot_json.py to make changes": {},
5983 "Fake Tester": {
5984 "skylab_tests": [
5985 {
5986 "args": [],
5987 "cros_board": "octopus",
5988 "cros_img": "octopus-release/R89-13655.0.0",
5989 "name": "tast.basic_OCTOPUS_TOT",
5990 "suite": "tast.basic",
5991 "swarming": {},
5992 "test": "tast.basic",
5993 "timeout": 3600
5994 },
5995 {
5996 "args": [],
5997 "cros_board": "octopus",
5998 "cros_img": "octopus-release/R88-13597.23.0",
5999 "name": "tast.basic_OCTOPUS_TOT-1",
6000 "suite": "tast.basic",
6001 "swarming": {},
6002 "test": "tast.basic",
6003 "timeout": 3600
6004 }
6005 ]
6006 }
6007}
6008"""
6009
Jieting Yangef6b1042021-11-30 21:33:486010ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT = """\
6011{
6012 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6013 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6014 "Fake Tester": {
6015 "skylab_tests": [
6016 {
6017 "args": [],
6018 "cros_board": "octopus",
6019 "cros_img": "octopus-release/R89-13655.0.0",
6020 "name": "tast.basic_OCTOPUS_TOT",
6021 "suite": "tast.basic",
6022 "swarming": {},
6023 "test": "tast.basic",
6024 "timeout": 3600
6025 }
6026 ]
6027 }
6028}
6029"""
6030
Garrett Beaty1afaccc2020-06-25 19:58:156031
6032class MatrixCompositionTests(TestCase):
Jeff Yoon8154e582019-12-03 23:30:016033
6034 def test_good_structure_no_configs(self):
6035 """
6036 Tests matrix compound test suite structure with no configs,
6037 no conflicts and no bad references
6038 """
Garrett Beaty1afaccc2020-06-25 19:58:156039 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6040 MATRIX_COMPOUND_EMPTY, LUCI_MILO_CFG)
6041 self.create_testing_buildbot_json_file('chromium.test.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276042 MATRIX_COMPOUND_OUTPUT)
Garrett Beaty1afaccc2020-06-25 19:58:156043 self.create_testing_buildbot_json_file('chromium.ci.json',
Sven Zheng2fe6dd6f2021-08-06 21:12:276044 MATRIX_COMPOUND_OUTPUT)
Jeff Yoon8154e582019-12-03 23:30:016045 fbb.check_output_file_consistency(verbose=True)
6046 self.assertFalse(fbb.printed_lines)
6047
Jeff Yoon67c3e832020-02-08 07:39:386048 def test_missing_identifier(self):
Jeff Yoon8154e582019-12-03 23:30:016049 """
Jeff Yoon67c3e832020-02-08 07:39:386050 Variant is missing an identifier
Jeff Yoon8154e582019-12-03 23:30:016051 """
Garrett Beaty1afaccc2020-06-25 19:58:156052 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6053 MATRIX_COMPOUND_MISSING_IDENTIFIER, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236054 with self.assertRaisesRegex(
6055 generate_buildbot_json.BBGenErr,
Jeff Yoon67c3e832020-02-08 07:39:386056 'Missing required identifier field in matrix compound suite*'):
6057 fbb.check_output_file_consistency(verbose=True)
Jeff Yoon8154e582019-12-03 23:30:016058
6059 def test_mismatched_swarming_length(self):
6060 """
6061 Swarming dimension set length mismatch test. Composition set > basic set
6062 """
Garrett Beaty1afaccc2020-06-25 19:58:156063 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6064 MATRIX_MISMATCHED_SWARMING_LENGTH, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236065 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6066 'Error merging lists by key *'):
Jeff Yoon8154e582019-12-03 23:30:016067 fbb.check_output_file_consistency(verbose=True)
6068
Jeff Yoon8154e582019-12-03 23:30:016069 def test_noexistent_ref(self):
6070 """
6071 Test referencing a non-existent basic test suite
6072 """
Garrett Beaty1afaccc2020-06-25 19:58:156073 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6074 MATRIX_REF_NONEXISTENT, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236075 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6076 'Unable to find reference to *'):
Jeff Yoon8154e582019-12-03 23:30:016077 fbb.check_output_file_consistency(verbose=True)
6078
6079 def test_ref_to_composition(self):
6080 """
6081 Test referencing another composition test suite
6082 """
Garrett Beaty1afaccc2020-06-25 19:58:156083 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6084 MATRIX_COMPOUND_REF_COMPOSITION, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236085 with self.assertRaisesRegex(
6086 generate_buildbot_json.BBGenErr,
6087 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016088 fbb.check_output_file_consistency(verbose=True)
6089
6090 def test_ref_to_matrix(self):
6091 """
6092 Test referencing another matrix test suite
6093 """
Garrett Beaty1afaccc2020-06-25 19:58:156094 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6095 MATRIX_COMPOSITION_REF_MATRIX, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236096 with self.assertRaisesRegex(
6097 generate_buildbot_json.BBGenErr,
6098 'matrix_compound_suites may not refer to other *'):
Jeff Yoon8154e582019-12-03 23:30:016099 fbb.check_output_file_consistency(verbose=True)
6100
Jeff Yoon67c3e832020-02-08 07:39:386101 def test_conflicting_names(self):
Garrett Beaty1afaccc2020-06-25 19:58:156102 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6103 MATRIX_COMPOUND_CONFLICTING_TEST_SUITES, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236104 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6105 'Conflicting test definitions.*'):
Jeff Yoon67c3e832020-02-08 07:39:386106 fbb.check_input_file_consistency(verbose=True)
6107 self.assertFalse(fbb.printed_lines)
6108
6109 def test_variants_swarming_dict_merge_args(self):
6110 """
6111 Test targets with swarming dictionary defined by both basic and matrix
6112 """
Garrett Beaty1afaccc2020-06-25 19:58:156113 fbb = FakeBBGen(self.args,
6114 MATRIX_GTEST_SUITE_WATERFALL,
6115 MATRIX_COMPOUND_TARGETS_ARGS,
6116 LUCI_MILO_CFG,
6117 mixins=SWARMING_MIXINS)
6118 self.create_testing_buildbot_json_file(
6119 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
6120 self.create_testing_buildbot_json_file(
6121 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_ARGS)
Jeff Yoon67c3e832020-02-08 07:39:386122 fbb.check_output_file_consistency(verbose=True)
6123 self.assertFalse(fbb.printed_lines)
6124
6125 def test_variants_swarming_dict_merge_mixins(self):
6126 """
6127 Test targets with swarming dictionary defined by both basic and matrix
6128 """
Garrett Beaty1afaccc2020-06-25 19:58:156129 fbb = FakeBBGen(self.args,
6130 MATRIX_GTEST_SUITE_WATERFALL,
6131 MATRIX_COMPOUND_TARGETS_MIXINS,
6132 LUCI_MILO_CFG,
6133 mixins=SWARMING_MIXINS)
6134 self.create_testing_buildbot_json_file(
6135 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
6136 self.create_testing_buildbot_json_file(
6137 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_MIXINS)
Jeff Yoon67c3e832020-02-08 07:39:386138 fbb.check_output_file_consistency(verbose=True)
6139 self.assertFalse(fbb.printed_lines)
6140
6141 def test_variants_swarming_dict_swarming(self):
6142 """
6143 Test targets with swarming dictionary defined by both basic and matrix
6144 """
Garrett Beaty1afaccc2020-06-25 19:58:156145 fbb = FakeBBGen(self.args,
6146 MATRIX_GTEST_SUITE_WATERFALL,
6147 MATRIX_COMPOUND_TARGETS_SWARMING,
6148 LUCI_MILO_CFG,
6149 mixins=SWARMING_MIXINS)
6150 self.create_testing_buildbot_json_file(
6151 'chromium.test.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
6152 self.create_testing_buildbot_json_file(
6153 'chromium.ci.json', MATRIX_TARGET_DICT_MERGE_OUTPUT_SWARMING)
Jeff Yoon67c3e832020-02-08 07:39:386154 fbb.check_output_file_consistency(verbose=True)
6155 self.assertFalse(fbb.printed_lines)
6156
Rakib M. Hasanc9e01c62020-07-27 22:48:126157 def test_variant_test_suite_with_test_key(self):
6158 """
6159 Test targets in matrix compound test suites with variants
6160 """
6161 fbb = FakeBBGen(self.args,
6162 MATRIX_GTEST_SUITE_WATERFALL,
6163 MATRIX_COMPOUND_TEST_WITH_TEST_KEY,
6164 LUCI_MILO_CFG,
6165 variants=VARIANTS_FILE)
6166 self.create_testing_buildbot_json_file(
6167 'chromium.test.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6168 self.create_testing_buildbot_json_file(
6169 'chromium.ci.json', MATRIX_COMPOUND_TEST_SUITE_WITH_TEST_KEY_DICT)
6170 fbb.check_output_file_consistency(verbose=True)
6171 self.assertFalse(fbb.printed_lines)
6172
Jeff Yoonda581c32020-03-06 03:56:056173 def test_variants_pyl_ref(self):
6174 """Test targets with variants string ref"""
Garrett Beaty1afaccc2020-06-25 19:58:156175 fbb = FakeBBGen(self.args,
6176 MATRIX_GTEST_SUITE_WATERFALL,
6177 MATRIX_COMPOUND_VARIANTS_REF,
6178 LUCI_MILO_CFG,
6179 variants=VARIANTS_FILE)
6180 self.create_testing_buildbot_json_file('chromium.test.json',
6181 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
6182 self.create_testing_buildbot_json_file('chromium.ci.json',
6183 MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jeff Yoonda581c32020-03-06 03:56:056184 fbb.check_output_file_consistency(verbose=True)
6185 self.assertFalse(fbb.printed_lines)
6186
6187 def test_variants_pyl_no_ref(self):
6188 """Test targets with variants string ref, not defined in variants.pyl"""
Garrett Beaty1afaccc2020-06-25 19:58:156189 fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL,
6190 MATRIX_COMPOUND_VARIANTS_REF, LUCI_MILO_CFG)
Jamie Madillcf4f8c72021-05-20 19:24:236191 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6192 'Missing variant definition for *'):
Jeff Yoonda581c32020-03-06 03:56:056193 fbb.check_output_file_consistency(verbose=True)
6194
6195 def test_variants_pyl_all_unreferenced(self):
6196 """Test targets with variants in variants.pyl, unreferenced in tests"""
Garrett Beaty1afaccc2020-06-25 19:58:156197 fbb = FakeBBGen(self.args,
6198 MATRIX_GTEST_SUITE_WATERFALL,
6199 MATRIX_COMPOUND_MIXED_VARIANTS_REF,
6200 LUCI_MILO_CFG,
6201 variants=MULTI_VARIANTS_FILE)
6202 # self.create_testing_buildbot_json_file(
6203 # 'chromium.test.json', MATRIX_COMPOUND_VARIANTS_REF_OUTPUT)
Jamie Madillcf4f8c72021-05-20 19:24:236204 with self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6205 'The following variants were unreferenced *'):
Jeff Yoonda581c32020-03-06 03:56:056206 fbb.check_input_file_consistency(verbose=True)
6207
Xinan Lin05fb9c1752020-12-17 00:15:526208 def test_good_skylab_matrix_with_variants(self):
6209 fbb = FakeBBGen(self.args,
6210 MATRIX_SKYLAB_WATERFALL,
6211 MATRIX_COMPOUND_SKYLAB_REF,
6212 LUCI_MILO_CFG,
6213 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6214 self.create_testing_buildbot_json_file('chromium.test.json',
6215 VARIATION_SKYLAB_OUTPUT)
6216 fbb.check_input_file_consistency(verbose=True)
6217 fbb.check_output_file_consistency(verbose=True)
6218 self.assertFalse(fbb.printed_lines)
6219
Jieting Yangef6b1042021-11-30 21:33:486220 def test_enabled_and_disabled_skylab_matrix_with_variants(self):
6221 """Test with disabled variants"""
6222 fbb = FakeBBGen(self.args,
6223 MATRIX_SKYLAB_WATERFALL,
6224 ENABLED_AND_DISABLED_MATRIX_COMPOUND_SKYLAB_REF,
6225 LUCI_MILO_CFG,
6226 exceptions=EMPTY_SKYLAB_TEST_EXCEPTIONS)
6227 # some skylab test variant is disabled; the corresponding skylab tests
6228 # is not generated.
6229 self.create_testing_buildbot_json_file(
6230 'chromium.test.json', ENABLED_AND_DISABLED_VARIATION_SKYLAB_OUTPUT)
6231 fbb.check_input_file_consistency(verbose=True)
6232 fbb.check_output_file_consistency(verbose=True)
6233 self.assertFalse(fbb.printed_lines)
6234
Jeff Yoon8154e582019-12-03 23:30:016235
Dirk Pranke772f55f2021-04-28 04:51:166236MAC_TEST_SUITE = """\
6237{
6238 'basic_suites': {
6239 'foo_tests': {
6240 'foo_test': {
6241 },
6242 },
6243 },
6244}
6245"""
6246
6247MAC_GTESTS_WATERFALL = """\
6248[
6249 {
6250 'project': 'chromium',
6251 'bucket': 'ci',
6252 'name': 'chromium.test',
6253 'machines': {
6254 'Mac': {
6255 'swarming': {
6256 'can_use_on_swarming_builders': True,
6257 },
6258 'test_suites': {
6259 'gtest_tests': 'foo_tests',
6260 },
6261 },
6262 },
6263 },
6264]
6265"""
6266
6267MAC_GTEST_WATERFALL_OUTPUT = """\
6268{
6269 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6270 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6271 "Mac": {
6272 "gtest_tests": [
6273 {
6274 "merge": {
6275 "args": [],
6276 "script": "//testing/merge_scripts/standard_gtest_merge.py"
6277 },
6278 "swarming": {
6279 "can_use_on_swarming_builders": true
6280 },
6281 "test": "foo_test"
6282 }
6283 ]
6284 }
6285}
6286"""
6287
6288MAC_ISOLATED_SCRIPTS_WATERFALL = """\
6289[
6290 {
6291 'project': 'chromium',
6292 'bucket': 'ci',
6293 'name': 'chromium.test',
6294 'machines': {
6295 'Mac': {
6296 'swarming': {
6297 'dimension_sets': [
6298 {
6299 'os': 'Mac',
6300 },
6301 ],
6302 },
6303 'test_suites': {
6304 'isolated_scripts': 'foo_tests',
6305 },
6306 },
6307 },
6308 },
6309]
6310"""
6311
6312MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT = """\
6313{
6314 "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
6315 "AAAAA2 See generate_buildbot_json.py to make changes": {},
6316 "Mac": {
6317 "isolated_scripts": [
6318 {
6319 "isolate_name": "foo_test",
6320 "merge": {
6321 "args": [],
6322 "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
6323 },
6324 "name": "foo_test",
6325 "swarming": {
6326 "can_use_on_swarming_builders": true,
6327 "dimension_sets": [
6328 {
6329 "os": "Mac"
6330 }
6331 ]
6332 }
6333 }
6334 ]
6335 }
6336}
6337"""
6338
6339MAC_LUCI_MILO_CFG = """\
6340consoles {
6341 builders {
6342 name: "buildbucket/luci.chromium.ci/Mac"
6343 }
6344}
6345"""
6346
6347
6348class SwarmingTests(TestCase):
6349 def test_mac_builder_with_no_cpu_dimension_in_gtest_fails(self):
6350 fbb = FakeBBGen(self.args, MAC_GTESTS_WATERFALL, MAC_TEST_SUITE,
6351 MAC_LUCI_MILO_CFG)
6352 self.create_testing_buildbot_json_file('chromium.test.json',
6353 MAC_GTEST_WATERFALL_OUTPUT)
6354 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236355 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6356 'os and cpu',
6357 fbb.check_output_file_consistency,
6358 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166359 self.assertFalse(fbb.printed_lines)
6360
6361 def test_mac_builder_with_no_cpu_dimension_in_isolated_script_fails(self):
6362 fbb = FakeBBGen(self.args, MAC_ISOLATED_SCRIPTS_WATERFALL, MAC_TEST_SUITE,
6363 MAC_LUCI_MILO_CFG)
6364 self.create_testing_buildbot_json_file(
6365 'chromium.test.json', MAC_ISOLATED_SCRIPTS_WATERFALL_OUTPUT)
6366 fbb.check_input_file_consistency(verbose=True)
Jamie Madillcf4f8c72021-05-20 19:24:236367 self.assertRaisesRegex(generate_buildbot_json.BBGenErr,
6368 'os and cpu',
6369 fbb.check_output_file_consistency,
6370 verbose=True)
Dirk Pranke772f55f2021-04-28 04:51:166371 self.assertFalse(fbb.printed_lines)
6372
6373
Kenneth Russelleb60cbd22017-12-05 07:54:286374if __name__ == '__main__':
6375 unittest.main()