github.com/nya3jp/tast@v0.0.0-20230601000426-85c8e4d83a9b/src/go.chromium.org/tast/core/internal/testing/attr.go (about) 1 // Copyright 2019 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package testing 6 7 import ( 8 "fmt" 9 "strings" 10 ) 11 12 // group defines a group of tests having the same purpose. For example, the mainline 13 // group contains functional tests to be used for build verification. 14 // 15 // A group definition should be agnostic to how it is scheduled in infrastructure. 16 // If needed, extra attributes can be defined to give hints for scheduling. 17 type group struct { 18 // Name is the name of the group. A test can declare to belong to a group by 19 // adding an attribute "group:<name>". 20 Name string 21 22 // Contacts is a list of email addresses of persons and groups responsible for 23 // maintaining the test group. 24 Contacts []string 25 26 // Desc is a description of the group. 27 Desc string 28 29 // Subattrs defines extra attributes that can be used to annotate the tests 30 // in the group. 31 Subattrs []*attr 32 } 33 34 // attr defines an extra attribute to annotate tests. 35 // 36 // Attributes can give hint for scheduling. 37 type attr struct { 38 // Name is the name of the attribute. 39 Name string 40 41 // Desc is a description of the attribute. 42 Desc string 43 } 44 45 // validGroups is the list of all valid groups. 46 var validGroups = []*group{ 47 { 48 Name: "mainline", 49 Contacts: []string{"tast-owners@google.com"}, 50 Desc: `The default group of functional tests. 51 52 Mainline tests are run for build verification. Among others, pre-submit and 53 post-submit testing in ChromeOS CI and Chromium CI are important places where 54 mainlines tests are run. 55 `, 56 Subattrs: []*attr{ 57 { 58 Name: "informational", 59 Desc: `Indicates that failures can be ignored. 60 61 Mainline tests lacking this attribute are called critical tests. Failures in 62 critical tests justify rejecting or reverting the responsible change, while 63 failures in informational tests do not. 64 65 All mainline tests should be initially marked informational, and should be 66 promoted to critical tests after stabilization. 67 `, 68 }, 69 }, 70 }, 71 { 72 Name: "cbx", 73 Contacts: []string{"tast-core@google.com"}, 74 Desc: `A group of tests related to cbx testing`, 75 Subattrs: []*attr{ 76 { 77 Name: "cbx_feature_enabled", 78 Desc: "Indicates that these tests should run on devices that have cbx features", 79 }, 80 { 81 Name: "cbx_feature_disabled", 82 Desc: "Indicates that these tests should run on devices that have no cbx features", 83 }, 84 { 85 Name: "cbx_stable", 86 Desc: `Indicates that this test has been verified as stable.`, 87 }, 88 { 89 Name: "cbx_unstable", 90 Desc: `Indicates that this test is yet to be verified as stable.`, 91 }, 92 }, 93 }, 94 { 95 Name: "criticalstaging", 96 Contacts: []string{"tast-owners@google.com"}, 97 Desc: `Inidcates intent to run in critcial CQ & Release. 98 99 This group will be used to indicate a test is intended on going into "mainline" 100 critical testing. This group will be run on all boards/models; on ToT only. 101 Tests can only remain in this group long enough to gather signal (10 days), 102 after which the owner must promote them into mainline only, or back into 103 informational. If no owner action is taken after a 4 day grace period, they 104 will be moved into informational. 105 `, 106 }, 107 { 108 Name: "crosbolt", 109 Contacts: []string{"crosbolt-eng@google.com"}, 110 Desc: `The group of performance tests to be run regularly by the crosbolt team. 111 112 Tests in this group are not used for build verification. 113 `, 114 Subattrs: []*attr{ 115 { 116 Name: "crosbolt_perbuild", 117 Desc: `Indicates that this test should run for every ChromeOS build.`, 118 }, 119 { 120 Name: "crosbolt_nightly", 121 Desc: `Indicates that this test should run nightly.`, 122 }, 123 { 124 Name: "crosbolt_weekly", 125 Desc: `Indicates that this test should run weekly.`, 126 }, 127 { 128 Name: "crosbolt_memory_nightly", 129 Desc: `Indicates that this test is a memory test and should run nightly.`, 130 }, 131 { 132 Name: "crosbolt_arc_perf_qual", 133 Desc: `Indicates that this test is used for ARC performance qualification.`, 134 }, 135 }, 136 }, 137 { 138 Name: "graphics", 139 Contacts: []string{"chromeos-gfx@google.com", "chromeos-gfx-video@google.com"}, 140 Desc: `The group of graphics tests to be run regularly by the graphics team. 141 142 Tests in this group are not used for build verification. 143 `, 144 Subattrs: []*attr{ 145 { 146 Name: "graphics_trace", 147 Desc: `Indicate this test is replaying a trace to reproduce graphics command.`, 148 }, 149 { 150 Name: "graphics_video", 151 Desc: `Indicate this test is focus on video encode/decode.`, 152 }, 153 { 154 Name: "graphics_perbuild", 155 Desc: `Indicates that this test should run for every ChromeOS build.`, 156 }, 157 { 158 Name: "graphics_nightly", 159 Desc: `Indicates that this test should run nightly.`, 160 }, 161 { 162 Name: "graphics_weekly", 163 Desc: `Indicates that this test should run weekly.`, 164 }, 165 { 166 Name: "graphics_av_analysis", 167 Desc: `Indicates that this test should run on audio/video analysis pool.`, 168 }, 169 { 170 Name: "graphics_drm", 171 Desc: `Indicates that this test is part of DRM testing.`, 172 }, 173 { 174 Name: "graphics_igt", 175 Desc: `Indicates that this test is running KMS igt-gpu-tools.`, 176 }, 177 { 178 Name: "graphics_chameleon_igt", 179 Desc: `Indicates that this is a Chameleon test running igt-gpu-tools.`, 180 }, 181 { 182 Name: "graphics_opencl", 183 Desc: `Indicates that this test is part of OpenCL testing.`, 184 }, 185 { 186 Name: "graphics_satlab_redrix_stress_b246324780", 187 Desc: `Indicates that this test is running to support redrix b/246324780.`, 188 }, 189 { 190 Name: "graphics_video_platformdecoding", 191 Desc: `Indicates that this test is exercising platform video decoding abilities.`, 192 }, 193 { 194 Name: "graphics_video_av1", 195 Desc: `Indicates that this test is exercising av1 codec.`, 196 }, 197 { 198 Name: "graphics_video_chromestackdecoding", 199 Desc: `Indicates that this test is part of Chrome Stack Decoding video.`, 200 }, 201 { 202 Name: "graphics_video_decodeaccel", 203 Desc: `Indicates that this test is part of decode accel video.`, 204 }, 205 { 206 Name: "graphics_video_h264", 207 Desc: `Indicates that this test is exercising h264 codec.`, 208 }, 209 { 210 Name: "graphics_video_hevc", 211 Desc: `Indicates that this test is exercising hevc codec.`, 212 }, 213 { 214 Name: "graphics_video_vp8", 215 Desc: `Indicates that this test is exercising vp8 codec.`, 216 }, 217 { 218 Name: "graphics_video_vp9", 219 Desc: `Indicates that this test is exercising vp9 codec.`, 220 }, 221 }, 222 }, 223 { 224 Name: "pvs", 225 Contacts: []string{"chromeos-pvs-eng@google.com"}, 226 Desc: `The group of pvs tests to be run regularly by the pvs team.`, 227 Subattrs: []*attr{ 228 { 229 Name: "pvs_perbuild", 230 Desc: `Indicates that this test should run for every ChromeOS build.`, 231 }, 232 }, 233 }, 234 { 235 Name: "stress", 236 Contacts: []string{"chromeos-engprod@google.com"}, 237 Desc: `A group of stress tests.`, 238 }, 239 { 240 Name: "arc-data-collector", 241 Contacts: []string{"chromeos-engprod@google.com"}, 242 Desc: `A group of ARC tests to be run in Android PFQ and collect data for specific Android build.`, 243 }, 244 { 245 Name: "arc-functional", 246 Contacts: []string{"chromeos-sw-engprod@google.com"}, 247 Desc: `A group of ARC Functional tests.`, 248 }, 249 { 250 Name: "arc-video", 251 Contacts: []string{"chromeos-arc-video-eng@google.com"}, 252 Desc: `A group of ARC Video tests.`, 253 }, 254 { 255 Name: "mtp", 256 Contacts: []string{"arc-engprod@google.com"}, 257 Desc: `A group of tests that run on DUTs with Android phones connected and verify MTP(Media Transfer Protocol).`, 258 }, 259 { 260 Name: "arc", 261 Contacts: []string{"arc-engprod@google.com"}, 262 Desc: `A group of tests that run ARC++ Functional Tests.`, 263 Subattrs: []*attr{ 264 { 265 Name: "arc_playstore", 266 Desc: `A group of tests which tests playstore functionality on its nightly build.`, 267 }, 268 { 269 Name: "arc_core", 270 Desc: `A group of tests which tests ARC Core functionality on its nightly build.`, 271 }, 272 { 273 Name: "arc_chromeos_vm", 274 Desc: `A group of tests which run ARC functionality on ChromeOS VM nightly build.`, 275 }, 276 }, 277 }, 278 { 279 Name: "appcompat", 280 Contacts: []string{"arc-engprod@google.com", "cros-appcompat-test-team@google.com"}, 281 Desc: `A group of ARC app compatibility tests.`, 282 Subattrs: []*attr{ 283 { 284 Name: "appcompat_release", 285 Desc: `A group of ARC app compatibility tests for release testing.`, 286 }, 287 { 288 Name: "appcompat_smoke", 289 Desc: `A group of ARC app compatibility tests for smoke testing.`, 290 }, 291 { 292 Name: "appcompat_top_apps", 293 Desc: `A group of ARC app compatibility tests for top apps testing.`, 294 }, 295 { 296 Name: "appcompat_default", 297 Desc: `A group of ARC app compatibility tests for appcompat testing.`, 298 }, 299 }, 300 }, 301 { 302 Name: "arcappgameperf", 303 Contacts: []string{"arc-engprod@google.com"}, 304 Desc: `A group of tests that run ARC++ Game performance tests.`, 305 }, 306 { 307 Name: "arcappmediaperf", 308 Contacts: []string{"arc-engprod@google.com"}, 309 Desc: `A group of tests that run ARC++ Media performance tests.`, 310 }, 311 { 312 Name: "arc-data-snapshot", 313 Contacts: []string{"pbond@google.com", "arc-commercial@google.com"}, 314 Desc: `A group of ARC data snapshot tests that run on DUTs.`, 315 }, 316 { 317 Name: "camerabox", 318 Contacts: []string{"chromeos-camera-eng@google.com"}, 319 Desc: `The group of camera tests to be run with Camerabox fixture.`, 320 Subattrs: []*attr{ 321 { 322 Name: "camerabox_facing_front", 323 Desc: `Tests front camera functionalities using Camerabox front facing fixture.`, 324 }, 325 { 326 Name: "camerabox_facing_back", 327 Desc: `Tests back camera functionalities using Camerabox back facing fixture.`, 328 }, 329 }, 330 }, 331 { 332 Name: "camera-libcamera", 333 Contacts: []string{"chromeos-camera-eng@google.com"}, 334 Desc: `A group of camera tests for libcamera build.`, 335 }, 336 { 337 Name: "camera-postsubmit", 338 Contacts: []string{"chromeos-camera-eng@google.com"}, 339 Desc: `A group of camera tests for postsubmit runs.`, 340 }, 341 { 342 Name: "camera-usb-qual", 343 Contacts: []string{"chromeos-camera-eng@google.com"}, 344 Desc: `A group of camera tests for USB camera qualification.`, 345 }, 346 { 347 Name: "cq-minimal", 348 Contacts: []string{"bhthompson@google.com", "tast-owners@google.com"}, 349 Desc: `A group of tests that verify minimum bisection/debug functionality`, 350 }, 351 { 352 Name: "cq-medium", 353 Contacts: []string{"dhaddock@google.com", "bhthompson@google.com", "tast-owners@google.com"}, 354 Desc: `A group of tests providing medium level CQ coverage`, 355 }, 356 { 357 Name: "cuj", 358 Contacts: []string{"chromeos-perfmetrics-eng@google.com"}, 359 Desc: `A group of CUJ tests that run regularly for the Performance Metrics team.`, 360 Subattrs: []*attr{ 361 { 362 Name: "cuj_experimental", 363 Desc: `Experimental CUJ tests that only run on a selected subset of models.`, 364 }, 365 }, 366 }, 367 { 368 Name: "drivefs-cq", 369 Contacts: []string{"chromeos-files-syd@google.com"}, 370 Desc: `The group of tests to be run in CQ for DriveFS functionality.`, 371 }, 372 { 373 Name: "enrollment", 374 Contacts: []string{"vsavu@google.com", "chromeos-commercial-remote-management@google.com"}, 375 Desc: `A group of tests performing enrollment and will clobber the stateful partition.`, 376 }, 377 { 378 Name: "dmserver-enrollment-daily", 379 Contacts: []string{"rzakarian@google.com", "chromeos-ent-test@google.com"}, 380 Desc: `A group of tests for the DMServer enrollment.`, 381 }, 382 { 383 Name: "dmserver-enrollment-live", 384 Contacts: []string{"rzakarian@google.com", "chromeos-ent-test@google.com"}, 385 Desc: `A group of tests for the DMServer live enrollment.`, 386 }, 387 { 388 Name: "dmserver-zteenrollment-daily", 389 Contacts: []string{"rzakarian@google.com", "chromeos-ent-test@google.com"}, 390 Desc: `A group of tests for the DMServer ZTE enrollment.`, 391 }, 392 { 393 Name: "dpanel-end2end", 394 Contacts: []string{"rzakarian@google.com", "chromeos-ent-test@google.com"}, 395 Desc: `A group of tests for the DPanel/DMServer team.`, 396 }, 397 { 398 Name: "enterprise-reporting", 399 Contacts: []string{"albertojuarez@google.com", "cros-reporting-eng@google.com"}, 400 Desc: `A group of tests for the commercial reporting/I&I team.`, 401 }, 402 { 403 Name: "external-dependency", 404 Contacts: []string{"chromeos-software-engprod@google.com", "shengjun@google.com"}, 405 Desc: `A group of tests that rely on external websites/apps/services. 406 Due to the dependencies to external resources, these test cases are more likely to break. 407 Therefore, it is highly disrecommended to promote them into mainline CQ. 408 Please refer to go/cros-automation-1p3p for more details.`, 409 Subattrs: []*attr{ 410 { 411 Name: "external-dependency_exemption", 412 Desc: `A group of tests with external dependencies that can run in mainline CQ.`, 413 }, 414 }, 415 }, 416 { 417 Name: "input-tools", 418 Contacts: []string{"essential-inputs-team@google.com"}, 419 Desc: `A group of essential inputs IME and Virtual Keyboard tests.`, 420 }, 421 { 422 Name: "input-tools-upstream", 423 Contacts: []string{"essential-inputs-team@google.com"}, 424 Desc: `A group of essential inputs IME and Virtual Keyboard tests running in google3.`, 425 }, 426 { 427 Name: "firmware", 428 Contacts: []string{"chromeos-faft@google.com", "jbettis@chromium.org"}, 429 Desc: `A group of tests for firmware (AP, EC, GSC)`, 430 Subattrs: []*attr{ 431 { 432 Name: "firmware_bios", 433 Desc: `A group of tests that test the AP firmware. Equivalent to autotest suite:faft_bios & suite:faft_bios_ro_qual & suite:faft_bios_rw_qual.`, 434 }, 435 { 436 Name: "firmware_ccd", 437 Desc: `Indicates a test which requires a servo with CCD. I.e. A servo_v4 or equivalent.`, 438 }, 439 { 440 Name: "firmware_cr50", 441 Desc: `Indicates that this is a test of the Google Security Chip firmware (Cr50).`, 442 }, 443 { 444 Name: "firmware_ec", 445 Desc: `A group of tests that test the EC firmware. Equivalent to autotest suite:faft_ec & suite:faft_ec_fw_qual.`, 446 }, 447 { 448 Name: "firmware_experimental", 449 Desc: `Firmware tests that might break the DUTs in the lab.`, 450 }, 451 { 452 Name: "firmware_pd", 453 Desc: `A group of tests that test USB-C Power Delivery. Equivalent to autotest suite:faft_pd.`, 454 }, 455 { 456 Name: "firmware_slow", 457 Desc: `A group of tests that takes a very long time to run.`, 458 }, 459 { 460 Name: "firmware_smoke", 461 Desc: `A group of tests that exercise the basic firmware testing libraries. Equivalent to autotest suite:faft_smoke.`, 462 }, 463 { 464 Name: "firmware_unstable", 465 Desc: `Firmware tests that are not yet stabilized, but won't break DUTs.`, 466 }, 467 { 468 Name: "firmware_usb", 469 Desc: `Indicates a test which requires a working USB stick attached to the servo.`, 470 }, 471 { 472 Name: "firmware_bringup", 473 Desc: `Indicates a test is safe to run on a board that doesn't boot to AP. Pass --var noSSH=true also.`, 474 }, 475 { 476 Name: "firmware_level1", 477 Desc: `A subset of firmware_bios that is expected to pass before the AP firmware is finished.`, 478 }, 479 { 480 Name: "firmware_level2", 481 Desc: `A subset of firmware_bios that is expected to pass after firmware_level1.`, 482 }, 483 { 484 Name: "firmware_level3", 485 Desc: `A subset of firmware_bios that is expected to pass after firmware_level2.`, 486 }, 487 { 488 Name: "firmware_level4", 489 Desc: `A subset of firmware_bios that is expected to pass after firmware_level3.`, 490 }, 491 { 492 Name: "firmware_level5", 493 Desc: `A subset of firmware_bios that is expected to pass after firmware_level4.`, 494 }, 495 { 496 Name: "firmware_detachable", 497 Desc: `A set of non-destructive tests indented to run on detachables.`, 498 }, 499 { 500 Name: "firmware_trial", 501 Desc: `Firmware tests that might leave the DUT in a state that will require flashing the AP/EC.`, 502 }, 503 { 504 Name: "firmware_stress", 505 Desc: `Firmware tests which repeat the same scenario many times.`, 506 }, 507 }, 508 }, 509 { 510 Name: "flashrom", 511 Contacts: []string{"cros-flashrom-team@google.com"}, 512 Desc: `A group of Flashrom destructive tests.`, 513 }, 514 { 515 Name: "gsc", 516 Contacts: []string{"jettrink@google.com", "chromeos-faft@google.com"}, 517 Desc: `A group of Google Security Chip tests -- typical performed on bare board.`, 518 Subattrs: []*attr{ 519 { 520 Name: "gsc_dt_ab", 521 Desc: `A set of tests that run on a Dauntless Andreiboard with Hyperdebug connected.`, 522 }, 523 { 524 Name: "gsc_dt_shield", 525 Desc: `A set of tests that run on a Dauntless Shield with Hyperdebug connected.`, 526 }, 527 { 528 Name: "gsc_ot_fpga_cw310", 529 Desc: `A set of tests that run on an OpenTitan FPGACW310 with Hyperdebug connected.`, 530 }, 531 { 532 Name: "gsc_ot_shield", 533 Desc: `A set of tests that run on an OpenTitan Shield with Hyperdebug connected.`, 534 }, 535 { 536 Name: "gsc_h1_shield", 537 Desc: `A set of tests that run on a Haven Shield with Hyperdebug connected.`, 538 }, 539 { 540 Name: "gsc_he", 541 Desc: `A set of tests that run on a emulated hardware via host process.`, 542 }, 543 { 544 Name: "gsc_image_ti50", 545 Desc: `A set of tests that run on the normal ti50 FW image`, 546 }, 547 { 548 Name: "gsc_image_sta", 549 Desc: `A set of tests that run on the system_test_auto FW image`, 550 }, 551 }, 552 }, 553 { 554 Name: "hwsec_destructive_crosbolt", 555 Contacts: []string{"cros-hwsec@google.com"}, 556 Desc: `A group of HWSec destructive performance tests that wipe and recreate encstateful in the tests, 557 and run regularly in the crosbolt_perf_* suites. 558 559 Tests in this group are not used for build verification.`, 560 Subattrs: []*attr{ 561 { 562 Name: "hwsec_destructive_crosbolt_perbuild", 563 Desc: `Indicates that this test should run for every ChromeOS build.`, 564 }, 565 }, 566 }, 567 { 568 Name: "hwsec_destructive_func", 569 Contacts: []string{"cros-hwsec@google.com"}, 570 Desc: `A group of HWSec destructive tests that wipe and recreate encstateful in the tests.`, 571 }, 572 { 573 Name: "labqual", 574 Contacts: []string{"stagenut@google.com", "teravest@google.com"}, 575 Desc: `A group of tests that must pass reliably prior to lab deployments.`, 576 }, 577 { 578 Name: "omaha", 579 Contacts: []string{"vsavu@google.com", "chromeos-commercial-remote-management@google.com"}, 580 Desc: `A group of tests verifying the current state of Omaha.`, 581 }, 582 { 583 Name: "racc", 584 Contacts: []string{"chromeos-runtime-probe@google.com"}, 585 Desc: `A group of tests that validate the RACC-related functionality.`, 586 Subattrs: []*attr{ 587 { 588 Name: "racc_general", 589 Desc: `Tests RACC functionality with RACC binaries installed.`, 590 }, 591 { 592 Name: "racc_config_installed", 593 Desc: `Tests RACC functionality with probe payload installed. 594 595 The group of tests compare results probed by Runtime Probe and corresponding information 596 in cros-labels decoded from HWID string. These tests mainly check if Runtime Probe works 597 as expected (in terms of D-Bus connection, probe function, and probe result). For 598 short-term plan, only autotest can invoke these tests with host_info information. That's 599 why we add this attribute and run tests of this attribute in a control file at 600 third_party/autotest/files/server/site_tests/tast/control.racc-config-installed. 601 `, 602 }, 603 }, 604 }, 605 { 606 Name: "rapid-ime-decoder", 607 Contacts: []string{"essential-inputs-team@google.com"}, 608 Desc: `A group of tests to validate libIMEdecoder.so releases.`, 609 }, 610 { 611 Name: "wificell", 612 Contacts: []string{"chromeos-kernel-wifi@google.com"}, 613 Desc: `The group of WiFi tests to be run with Wificell fixture.`, 614 Subattrs: []*attr{ 615 { 616 Name: "wificell_func", 617 Desc: `Tests basic WiFi functionalities using Wificell fixture nightly.`, 618 }, 619 { 620 Name: "wificell_func_ax", 621 Desc: `Tests basic WiFi AX functionalities using Wificell fixture nightly.`, 622 }, 623 { 624 Name: "wificell_suspend", 625 Desc: `Tests basic WiFi behavior related to suspend/resume.`, 626 }, 627 { 628 Name: "wificell_cq", 629 Desc: `Similar to wificell_func, but triggered by CLs that touch specific code paths.`, 630 }, 631 { 632 Name: "wificell_perf", 633 Desc: `Measures WiFi performance using Wificell fixture nightly.`, 634 }, 635 { 636 Name: "wificell_stress", 637 Desc: `Stress tests WiFi functionalities using Wificell fixture.`, 638 }, 639 { 640 Name: "wificell_mtbf", 641 Desc: `Measure Mean Time Between Failures (MTBF) using Wificell fixture.`, 642 }, 643 { 644 Name: "wificell_unstable", 645 Desc: `Indicates that this test is yet to be verified as stable.`, 646 }, 647 { 648 Name: "wificell_dut_validation", 649 Desc: `Group of tests to be run by lab team to validate AP, PCAP, BT-Peers & DUT during deployment.`, 650 }, 651 { 652 Name: "wificell_e2e", 653 Desc: `Identifies wifi_chrome ui/e2e tests.`, 654 }, 655 { 656 Name: "wificell_e2e_unstable", 657 Desc: `Identifies wifi_chrome ui/e2e tests that are unstable. Used to skip tests running on stable suites and/or the CQ.`, 658 }, 659 }, 660 }, 661 { 662 Name: "wificell_cross_device", 663 Contacts: []string{"chromeos-kernel-wifi@google.com"}, 664 Desc: `The group of WiFi tests using nearbyshare fixture.`, 665 Subattrs: []*attr{ 666 { 667 Name: "wificell_cross_device_p2p", 668 Desc: `Tests basic WiFi P2P functionalities using nearbyshare fixture.`, 669 }, 670 { 671 Name: "wificell_cross_device_tdls", 672 Desc: `Tests basic WiFi TDLS functionalities using nearbyshare fixture.`, 673 }, 674 { 675 Name: "wificell_cross_device_sap", 676 Desc: `Tests basic WiFi Soft AP functionalities using nearbyshare fixture.`, 677 }, 678 { 679 Name: "wificell_cross_device_unstable", 680 Desc: `Indicates that this test is yet to be verified as stable.`, 681 }, 682 }, 683 }, 684 { 685 Name: "wificell_roam", 686 Contacts: []string{"chromeos-kernel-wifi@google.com"}, 687 Desc: `The group of WiFi roaming tests to be run with Grover fixture.`, 688 Subattrs: []*attr{ 689 { 690 Name: "wificell_roam_func", 691 Desc: `Tests basic WiFi roaming functionalities using Grover fixture.`, 692 }, 693 { 694 Name: "wificell_roam_perf", 695 Desc: `Measures WiFi performance using Grover fixture.`, 696 }, 697 }, 698 }, 699 { 700 Name: "cellular", 701 Contacts: []string{"chromeos-cellular-team@google.com"}, 702 Desc: `The group of Cellular tests to be run on hardware with a builtin Cellular modem and SIM card.`, 703 Subattrs: []*attr{ 704 { 705 Name: "cellular_unstable", 706 Desc: `Identifies Cellular tests that are unstable. Used to skip tests running on stable suites and/or the CQ.`, 707 }, 708 { 709 Name: "cellular_cq", 710 Desc: `Identifies Cellular tests for the cellular commit queue suite.`, 711 }, 712 { 713 Name: "cellular_ota_avl", 714 Desc: `Identifies Cellular ota tests for the cellular avl qual.`, 715 }, 716 { 717 Name: "cellular_sim_active", 718 Desc: `Identifies Cellular tests that need an active sim.`, 719 }, 720 { 721 Name: "cellular_sim_dual_active", 722 Desc: `Identifies Cellular tests that need active sim's on two slots.`, 723 }, 724 { 725 Name: "cellular_sim_pinlock", 726 Desc: `Identifies Cellular tests that need sim with puk and pin codes.`, 727 }, 728 { 729 Name: "cellular_sim_roaming", 730 Desc: `Identifies Cellular tests that need a roaming sim.`, 731 }, 732 { 733 Name: "cellular_sim_prod_esim", 734 Desc: `Identifies Cellular tests that need an esim with a prod CI.`, 735 }, 736 { 737 Name: "cellular_sim_test_esim", 738 Desc: `Identifies Cellular tests that need an esim with a test CI.`, 739 }, 740 { 741 Name: "cellular_modem_fw", 742 Desc: `Identifies modem firmware tests that are run with less frequency.`, 743 }, 744 { 745 Name: "cellular_amari_callbox", 746 Desc: `Identifies tests that run on DUTs connected to an Amari callbox.`, 747 }, 748 { 749 Name: "cellular_cmw_callbox", 750 Desc: `Identifies tests that run on DUTs connected to a CMW500 callbox.`, 751 }, 752 { 753 Name: "cellular_cmx_callbox", 754 Desc: `Identifies tests that run on DUTs connected to a CMX500 callbox.`, 755 }, 756 { 757 Name: "cellular_callbox", 758 Desc: `Identifies tests that run on DUTs connected to a callbox.`, 759 }, 760 { 761 Name: "cellular_e2e", 762 Desc: `Identifies Cellular ui/e2e tests.`, 763 }, 764 { 765 Name: "cellular_sms", 766 Desc: `Identifies SMS tests that can run on North America carriers AT&T, Verizon, T-Mobile.`, 767 }, 768 { 769 Name: "cellular_run_isolated", 770 Desc: `Identifies tests which are scheduled seperately from other tests. These tests are called out by name in control files. Used to isolate stress tests or high priority tests`, 771 }, 772 { 773 Name: "cellular_carrier_att", 774 Desc: `Identifies Cellular tests that need an AT&T active sim.`, 775 }, 776 { 777 Name: "cellular_carrier_verizon", 778 Desc: `Identifies Cellular tests that need an Verizon active sim.`, 779 }, 780 { 781 Name: "cellular_carrier_tmobile", 782 Desc: `Identifies Cellular tests that need an T-Mobile active sim.`, 783 }, 784 { 785 Name: "cellular_carrier_amarisoft", 786 Desc: `Identifies Cellular tests that need an Amarisoft active sim.`, 787 }, 788 { 789 Name: "cellular_carrier_vodafone", 790 Desc: `Identifies Cellular tests that need an Vodafone active sim.`, 791 }, 792 { 793 Name: "cellular_carrier_rakuten", 794 Desc: `Identifies Cellular tests that need an Rakuten active sim.`, 795 }, 796 { 797 Name: "cellular_carrier_ee", 798 Desc: `Identifies Cellular tests that need an EE active sim.`, 799 }, 800 { 801 Name: "cellular_carrier_kddi", 802 Desc: `Identifies Cellular tests that need an KDDI active sim.`, 803 }, 804 { 805 Name: "cellular_carrier_docomo", 806 Desc: `Identifies Cellular tests that need an Docomo active sim.`, 807 }, 808 { 809 Name: "cellular_carrier_softbank", 810 Desc: `Identifies Cellular tests that need an Softbank active sim.`, 811 }, 812 { 813 Name: "cellular_carrier_fi", 814 Desc: `Identifies Cellular tests that need an Google Fi active sim.`, 815 }, 816 { 817 Name: "cellular_carrier_local", 818 Desc: `Identifies Cellular tests that need an active sim.`, 819 }, 820 }, 821 }, 822 { 823 Name: "cellular_crosbolt", 824 Contacts: []string{"chromeos-cellular-team@google.com"}, 825 Desc: `The group of Cellular Performance tests to be run on hardware with a builtin Cellular modem and SIM card.`, 826 Subattrs: []*attr{ 827 { 828 Name: "cellular_crosbolt_perf_nightly", 829 Desc: `Indicates that this test should run nightly.`, 830 }, 831 { 832 Name: "cellular_crosbolt_unstable", 833 Desc: `Identifies Cellular tests that are unstable. Used to skip tests running on stable suites and/or the CQ.`, 834 }, 835 { 836 Name: "cellular_crosbolt_sim_active", 837 Desc: `Identifies Cellular tests that need an active sim.`, 838 }, 839 { 840 Name: "cellular_crosbolt_carrier_att", 841 Desc: `Identifies Cellular tests that need a AT&T active sim.`, 842 }, 843 { 844 Name: "cellular_crosbolt_carrier_verizon", 845 Desc: `Identifies Cellular tests that need a Verizon active sim.`, 846 }, 847 { 848 Name: "cellular_crosbolt_carrier_tmobile", 849 Desc: `Identifies Cellular tests that need a T-Mobile active sim.`, 850 }, 851 { 852 Name: "cellular_crosbolt_carrier_local", 853 Desc: `Identifies Cellular tests that need a local active sim.`, 854 }, 855 }, 856 }, 857 { 858 Name: "bluetooth", 859 Contacts: []string{"cros-connectivity@google.com"}, 860 Desc: "Identifies bluetooth tests.", 861 Subattrs: []*attr{ 862 { 863 Name: "bluetooth_sa", 864 Desc: "Identifies stable bluetooth tests that only requires the DUT (not peer devices) to run except for stress, performance and MTBF tests. Previously known as bluetooth_standalone.", 865 }, 866 { 867 Name: "bluetooth_core", 868 Desc: "Identifies stable bluetooth tests for bluetooth platform that requires a peer device.", 869 }, 870 { 871 Name: "bluetooth_floss", 872 Desc: "Identifies stable bluetooth tests that are ported to run with the new floss stack. Eventually all tests in bluetooth_core and bluetooth_sa tests will be added to this pool and will be stabilised.", 873 }, 874 { 875 Name: "bluetooth_cross_device_fastpair", 876 Desc: "Identifies stable Cross Device Fast Pair tests that require a peer device.", 877 }, 878 { 879 Name: "bluetooth_cross_device_fastpair_multidut", 880 Desc: "Identifies stable Cross Device Fast Pair tests that require a peer device and 2 DUTs.", 881 }, 882 { 883 Name: "bluetooth_flaky", 884 Desc: "Identifies bluetooth tests (bluetooth_sa and bluetooth_core) which are not stable yet. This is used to run new tests in the lab to detect any failures. Once the tests are stable (>95% pass rate), these tests are moved to bluetooth_sa or bluetooth_core suites", 885 }, 886 { 887 Name: "bluetooth_stress", 888 Desc: "Identifies bluetooth stress tests.", 889 }, 890 { 891 Name: "bluetooth_sa_cq", 892 Desc: "Identifies tests the same way as bluetooth_sa, but these tests are also ran as part of CQ for all changes.", 893 }, 894 { 895 Name: "bluetooth_core_cq", 896 Desc: "Identifies tests the same way as bluetooth_core_cq, but these tests are also ran as part of the custom CQ for Bluetooth and WiFi changes.", 897 }, 898 { 899 Name: "bluetooth_floss_cq", 900 Desc: "Identifies tests the same way as bluetooth_floss, but these tests are also ran as part of the custom CQ for Floss", 901 }, 902 { 903 Name: "bluetooth_cross_device_cq", 904 Desc: "Identifies Cross Device Bluetooth tests that are also ran as part of the custom CQ for Cross Device.", 905 }, 906 { 907 Name: "bluetooth_wifi_coex", 908 Desc: "Identifies bluetooth and wifi coexistence tests.", 909 }, 910 { 911 Name: "bluetooth_fw", 912 Desc: "Identifies tests that can only break when a hardware/firmware change occurs. These tests test a feature/requirement that is implemented in hardware/firmware.", 913 }, 914 { 915 Name: "bluetooth_dep_feature", 916 Desc: "Identifies tests for features that use Bluetooth. Example Nearby Share, Phone Hub etc.", 917 }, 918 { 919 Name: "bluetooth_perf", 920 Desc: "Identifies performance tests for bluetooth.", 921 }, 922 { 923 Name: "bluetooth_longrun", 924 Desc: "Identifies tests that take more than 5 minutes to run. This does not contain stress tests or MTBF tests. This allows for separate scheduling.", 925 }, 926 { 927 Name: "bluetooth_cuj", 928 Desc: "Identifies tests for bluetooth that tests layers above the platform such as UI and any tests that implement a CUJ above platform layer.", 929 }, 930 { 931 Name: "bluetooth_manual", 932 Desc: "Identifies semi-manual tests for bluetooth. Used as a logical grouping for these tests and are not scheduled in the lab.", 933 }, 934 { 935 Name: "bluetooth_avl", 936 Desc: "Identifies AVL tests meant to be run by partners and are not scheduled in the lab.", 937 }, 938 { 939 Name: "bluetooth_mtbf", 940 Desc: "Identifies MTBP tests for bluetooth. These are scheduled in a separate pool as to not use up all DUT capacity in the lab.", 941 }, 942 { 943 Name: "bluetooth_btpeers_1", 944 Desc: "Identifies bluetooth tests that require at most 1 btpeer.", 945 }, 946 { 947 Name: "bluetooth_btpeers_2", 948 Desc: "Identifies bluetooth tests that require at most 2 btpeers.", 949 }, 950 { 951 Name: "bluetooth_btpeers_3", 952 Desc: "Identifies bluetooth tests that require at most 3 btpeers.", 953 }, 954 { 955 Name: "bluetooth_btpeers_4", 956 Desc: "Identifies bluetooth tests that require at most 4 btpeers.", 957 }, 958 }, 959 }, 960 { 961 Name: "meta", 962 Contacts: []string{"tast-owners@google.com"}, 963 Desc: `A group of functional tests of the Tast framework itself. 964 965 Meta tests should be a subset of mainline critical tests. 966 `, 967 }, 968 { 969 Name: "fingerprint-cq", 970 Contacts: []string{"chromeos-fingerprint@google.com"}, 971 Desc: `The group of tests to be run in CQ for integrated fingerprint functionality.`, 972 }, 973 { 974 Name: "fingerprint-mcu", 975 Contacts: []string{"chromeos-fingerprint@google.com"}, 976 Desc: `The group of tests to be run on a standalone Fingerprint MCU board.`, 977 Subattrs: []*attr{ 978 { 979 Name: "fingerprint-mcu_dragonclaw", 980 Desc: `Tests to be run on Dragonclaw board (a standalone MCU board, not a ChromeOS board).`, 981 }, 982 { 983 Name: "fingerprint-mcu_icetower", 984 Desc: `Tests to be run on Icetower board (a standalone MCU board, not a ChromeOS board).`, 985 }, 986 }, 987 }, 988 { 989 Name: "storage-qual", 990 Contacts: []string{"chromeos-engprod-platform-syd@google.com"}, 991 Desc: `A group of tests for internal and external storage qualification and testing.`, 992 }, 993 { 994 Name: "syzcorpus", 995 Contacts: []string{"zsm@google.com", "chromeos-kernel@google.com"}, 996 Desc: `Regression tests comprising of Syzkaller reproducers to test the kernel.`, 997 }, 998 { 999 Name: "syzkaller", 1000 Contacts: []string{"zsm@google.com", "chromeos-kernel@google.com"}, 1001 Desc: `A group of tests that utilize Syzkaller to fuzz the kernel.`, 1002 }, 1003 { 1004 Name: "nearby-share-arc", 1005 Contacts: []string{"chromeos-sw-engprod@google.com", "arc-app-dev@google.com", "alanding@chromium.org"}, 1006 Desc: `A group of tests that test Nearby Share functionality from ARC++.`, 1007 Subattrs: []*attr{ 1008 { 1009 Name: "nearby-share-arc_fusebox", 1010 Desc: `A group of tests that test Nearby Share functionality with FuseBox from ARC++.`, 1011 }, 1012 }, 1013 }, 1014 { 1015 Name: "paper-io", 1016 Contacts: []string{"project-bolton@google.com"}, 1017 Desc: `A group of tests that test printing and scanning functionality.`, 1018 Subattrs: []*attr{ 1019 { 1020 Name: "paper-io_printing", 1021 Desc: `Printing tests.`, 1022 }, 1023 { 1024 Name: "paper-io_scanning", 1025 Desc: `Scanning tests.`, 1026 }, 1027 { 1028 Name: "paper-io_mfp_printscan", 1029 Desc: `Scanning and printing tests on real MFPs.`, 1030 }, 1031 }, 1032 }, 1033 { 1034 Name: "parallels_mainline", 1035 Contacts: []string{"parallels-cros@google.com"}, 1036 Desc: `Functional tests that must be run on devices licensed for Parallels 1037 boot-up testing. Otherwise the same as group:mainline.`, 1038 Subattrs: []*attr{ 1039 { 1040 Name: "informational", 1041 Desc: `Indicates that failures can be ignored.`, 1042 }, 1043 }, 1044 }, 1045 { 1046 Name: "parallels_crosbolt", 1047 Contacts: []string{"crosbolt-eng@google.com"}, 1048 Desc: `Performance tests that must be run on devices licensed for 1049 Parallels boot-up testing. Otherwise the same as group:crosbolt.`, 1050 Subattrs: []*attr{ 1051 { 1052 Name: "parallels_crosbolt_perbuild", 1053 Desc: `Indicates that this test should run for every ChromeOS build.`, 1054 }, 1055 { 1056 Name: "parallels_crosbolt_nightly", 1057 Desc: `Indicates that this test should run nightly.`, 1058 }, 1059 { 1060 Name: "parallels_crosbolt_weekly", 1061 Desc: `Indicates that this test should run weekly.`, 1062 }, 1063 }, 1064 }, 1065 { 1066 Name: "typec", 1067 Contacts: []string{"chromeos-power@google.com"}, 1068 Desc: `USB Type C functional tests.`, 1069 Subattrs: []*attr{ 1070 { 1071 Name: "typec_lab", 1072 Desc: `Indicates that this test should be run in a dedicated Type C lab setup.`, 1073 }, 1074 { 1075 Name: "typec_informational", 1076 Desc: `Indicates that failures can be ignored.`, 1077 }, 1078 }, 1079 }, 1080 { 1081 Name: "wwcb", 1082 Contacts: []string{"cros-wwcb-automation@google.com"}, 1083 Desc: `WWCB end-to-end functional tests.`, 1084 Subattrs: []*attr{ 1085 { 1086 Name: "wwcb_satlab", 1087 Desc: `Indicates that this test should be run in a dedicated wwcb setup.`, 1088 }, 1089 { 1090 Name: "wwcb_informational", 1091 Desc: `Indicates that failures can be ignored.`, 1092 }, 1093 }, 1094 }, 1095 { 1096 Name: "borealis", 1097 Contacts: []string{"chromeos-gaming@google.com"}, 1098 Desc: `Borealis related tests.`, 1099 Subattrs: []*attr{ 1100 { 1101 Name: "borealis_cq", 1102 Desc: `Indicate this test should be scheduled on cq.`, 1103 }, 1104 { 1105 Name: "borealis_perbuild", 1106 Desc: `Indicate this test should be scheduled per build.`, 1107 }, 1108 { 1109 Name: "borealis_nightly", 1110 Desc: `Indicate this test should be scheduled per day.`, 1111 }, 1112 { 1113 Name: "borealis_weekly", 1114 Desc: `Indicate this test should be scheduled per week.`, 1115 }, 1116 { 1117 Name: "informational", 1118 Desc: `Indicates that failures can be ignored.`, 1119 }, 1120 }, 1121 }, 1122 { 1123 Name: "cross-device", 1124 Contacts: []string{"chromeos-sw-engprod@google.com"}, 1125 Desc: `A group of tests that test Cross Device functionality between CrOS and Android devices.`, 1126 Subattrs: []*attr{ 1127 { 1128 Name: "cross-device_crossdevice", 1129 Desc: `Temporary smoke test to mitigate cross device onboarding fixture failure.`, 1130 }, 1131 { 1132 Name: "cross-device_cellular", 1133 Desc: `Cross Device tests that use a cellular connection on the Android phone.`, 1134 }, 1135 { 1136 Name: "cross-device_cq", 1137 Desc: `Indicate this test should be scheduled on one of the Cross Device Commit Queues.`, 1138 }, 1139 { 1140 Name: "cross-device_instanttether", 1141 Desc: `Instant Tether tests.`, 1142 }, 1143 { 1144 Name: "cross-device_lacros", 1145 Desc: `Cross Device tests that use Lacros.`, 1146 }, 1147 { 1148 Name: "cross-device_floss", 1149 Desc: `Cross Device tests with Floss enabled.`, 1150 }, 1151 { 1152 Name: "cross-device_nearbyshare", 1153 Desc: `Nearby Share tests.`, 1154 }, 1155 { 1156 Name: "cross-device_nearbyshare-dev", 1157 Desc: `A group of tests that test Nearby Share functionality with the dev version of Android Nearby.`, 1158 }, 1159 { 1160 Name: "cross-device_nearbyshare-prod", 1161 Desc: `A group of tests that test Nearby Share functionality with the production version of Android Nearby.`, 1162 }, 1163 { 1164 Name: "cross-device_phonehub", 1165 Desc: `Phone Hub tests.`, 1166 }, 1167 { 1168 Name: "cross-device_smartlock", 1169 Desc: `Smart Lock tests.`, 1170 }, 1171 }, 1172 }, 1173 { 1174 Name: "cross-device-remote", 1175 Contacts: []string{"chromeos-sw-engprod@google.com"}, 1176 Desc: `A group of remote tests that test Cross Device functionality between two ChromeOS devices.`, 1177 Subattrs: []*attr{ 1178 { 1179 Name: "cross-device-remote_cq", 1180 Desc: `Indicate this test should be scheduled on one of the Cross Device Commit Queues.`, 1181 }, 1182 { 1183 Name: "cross-device-remote_nearbyshare", 1184 Desc: `Nearby Share tests.`, 1185 }, 1186 { 1187 Name: "cross-device-remote_floss", 1188 Desc: `Cross Device remote tests with Floss enabled.`, 1189 }, 1190 }, 1191 }, 1192 { 1193 Name: "hps", 1194 Contacts: []string{"chromeos-hps-swe@google.com"}, 1195 Desc: `HPS related tests.`, 1196 Subattrs: []*attr{ 1197 { 1198 Name: "hps_perbuild", 1199 Desc: `Indicate this test should be scheduled per build.`, 1200 }, 1201 { 1202 Name: "hps_devboard_p2_sweetberry", 1203 Desc: `Indicate this test depends on the HPS Devboard and Sweetberry to be connected.`, 1204 }, 1205 }, 1206 }, 1207 { 1208 Name: "wilco_bve", 1209 Contacts: []string{"lamzin@google.com", "cros-oem-services-team@google.com"}, 1210 Desc: `A group of Wilco tests that require servo type-A connected to a USB-A port that has a lightning bolt or a battery icon engraved into it.`, 1211 }, 1212 { 1213 Name: "wilco_bve_dock", 1214 Contacts: []string{"lamzin@google.com", "cros-oem-services-team@google.com"}, 1215 Desc: `A group of Wilco tests that require a solomon dock connected to the DUT.`, 1216 }, 1217 { 1218 Name: "autoupdate", 1219 Contacts: []string{"gabormagda@google.com", "cros-engprod-muc@google.com"}, 1220 Desc: `A group of tests that require the installation of a new OS image version.`, 1221 }, 1222 { 1223 Name: "asan", 1224 Contacts: []string{"cjdb@google.com", "chromeos-toolchain@google.com"}, 1225 Desc: `A group of tests for AddressSanitizer builds.`, 1226 }, 1227 { 1228 Name: "distributed_lab_qual", 1229 Contacts: []string{"chromeos-distributed-fleet-platform@google.com"}, 1230 Desc: `A group of test to qualify distributed lab components.`, 1231 Subattrs: []*attr{ 1232 { 1233 Name: "distributed_lab_qual_faft", 1234 Desc: `Indicate firmware test for distributed lab.`, 1235 }, 1236 }, 1237 }, 1238 { 1239 Name: "shimless_rma", 1240 Contacts: []string{"chromeos-engprod-platform-syd@google.com"}, 1241 Desc: `shimless rma related tests.`, 1242 Subattrs: []*attr{ 1243 { 1244 Name: "shimless_rma_experimental", 1245 Desc: `Shimless RMA tests that might break the DUTs in the lab.`, 1246 }, 1247 { 1248 Name: "shimless_rma_normal", 1249 Desc: `Shimless RMA tests that can be executed in Skylab.`, 1250 }, 1251 { 1252 Name: "shimless_rma_nodelocked", 1253 Desc: `Shimless RMA tests that require node-locked image.`, 1254 }, 1255 { 1256 Name: "shimless_rma_calibration", 1257 Desc: `Shimless RMA tests for calibration.`, 1258 }, 1259 }, 1260 }, 1261 { 1262 Name: "ml_benchmark", 1263 Contacts: []string{"chromeos-platform-ml-accelerators@google.com"}, 1264 Desc: `MLBenchmark performance tests.`, 1265 Subattrs: []*attr{ 1266 { 1267 Name: "ml_benchmark_nightly", 1268 Desc: `Indicates that this test should run nightly.`, 1269 }, 1270 }, 1271 }, 1272 { 1273 Name: "assistant_audiobox", 1274 Contacts: []string{"chromeos-sw-engprod@google.com", "assistive-eng@google.com"}, 1275 Desc: `A group of Assistant tests that have to be run in audiobox.`, 1276 }, 1277 { 1278 Name: "commercial_limited", 1279 Contacts: []string{"gabormagda@google.com", "chromeos-ent-test@google.com"}, 1280 Desc: `A group of commercial tests that should use limited resources.`, 1281 }, 1282 { 1283 Name: "experimental", 1284 Contacts: []string{"chromeos-velocity@google.com"}, 1285 Desc: `This is for housing Informational tests that are not going to be promoted to CQ any time soon (i.e. < 3months). 1286 Default is to run the tests M/W/F only. Runs on same set of boards as group:mainline. 1287 Motivation is to lower DUT usage for tests that don't need to run that frequently.`, 1288 Subattrs: []*attr{ 1289 { 1290 Name: "experimental_nightly", 1291 Desc: `Runs once every evening.`, 1292 }, 1293 { 1294 Name: "experimental_m_w_f", 1295 Desc: `Runs once on Monday, Wednesday, and Friday only.`, 1296 }, 1297 { 1298 Name: "experimental_weekly", 1299 Desc: `Runs once a week only.`, 1300 }, 1301 }, 1302 }, 1303 { 1304 Name: "telemetry_extension_hw", 1305 Contacts: []string{"cros-oem-services-team@google.com"}, 1306 Desc: `A group of Telemetry Extension hardware dependant tests.`, 1307 }, 1308 { 1309 Name: "hwsec", 1310 Contacts: []string{"cros-hwsec@google.com"}, 1311 Desc: `A group of tests related to hardware-backed security. (ie. TPM)`, 1312 Subattrs: []*attr{ 1313 { 1314 Name: "hwsec_weekly", 1315 Desc: "Indicates that these tests should run weekly. Tests that aren't stable enough to be critical or is too expensive gets placed here", 1316 }, 1317 { 1318 Name: "hwsec_nightly", 1319 Desc: "Indicates that these tests should run nightly. Tests that are too expensive for mainline, but still important enough to be checked more often than weekly, get placed here", 1320 }, 1321 }, 1322 }, 1323 { 1324 Name: "attestation", 1325 Contacts: []string{"cros-hwsec@google.com"}, 1326 Desc: `A group of tests related to the attestationd system daemon.`, 1327 }, 1328 { 1329 Name: "bootlockbox", 1330 Contacts: []string{"cros-hwsec@google.com"}, 1331 Desc: `A group of tests related to the bootlockboxd system daemon.`, 1332 }, 1333 { 1334 Name: "chaps", 1335 Contacts: []string{"cros-hwsec@google.com"}, 1336 Desc: `A group of tests related to the chapsd system daemon.`, 1337 }, 1338 { 1339 Name: "cryptohome", 1340 Contacts: []string{"cryptohome-core@google.com"}, 1341 Desc: `A group of tests related to the cryptohomed system daemon.`, 1342 }, 1343 { 1344 Name: "hwsec_infra", 1345 Contacts: []string{"cros-hwsec@google.com"}, 1346 Desc: `A group of tests related to the hwsec related low-level libraries & daemons.`, 1347 }, 1348 { 1349 Name: "tpm_manager", 1350 Contacts: []string{"cros-hwsec@google.com"}, 1351 Desc: `A group of tests related to the tpm_managerd system daemon.`, 1352 }, 1353 { 1354 Name: "u2fd", 1355 Contacts: []string{"cros-hwsec@google.com"}, 1356 Desc: `A group of tests related to the u2fd system daemon.`, 1357 }, 1358 { 1359 Name: "vtpm", 1360 Contacts: []string{"cros-hwsec@google.com"}, 1361 Desc: `A group of tests related to the vtpmd system daemon.`, 1362 }, 1363 { 1364 Name: "cros-tcp-grpc", 1365 Contacts: []string{"jonfan@google.com", "chromeos-sw-engprod@google.com"}, 1366 Desc: `A group of tests that test Tast TCP based gRPC services.`, 1367 }, 1368 { 1369 Name: "sensors", 1370 Contacts: []string{"gwendal@google.com", "chromeos-sensors@google.com"}, 1371 Desc: `A group of tests that test sensor and sensor services.`, 1372 }, 1373 { 1374 Name: "network", 1375 Contacts: []string{"cros-networking@google.com"}, 1376 Desc: `A group of tests that test general network functions.`, 1377 Subattrs: []*attr{ 1378 { 1379 Name: "network_e2e", 1380 Desc: `Identifies network ui/e2e tests.`, 1381 }, 1382 { 1383 Name: "network_e2e_unstable", 1384 Desc: `Identifies network ui/e2e tests that are unstable. Used to skip tests running on stable suites and/or the CQ.`, 1385 }, 1386 { 1387 Name: "network_platform", 1388 Desc: `Identifies stable platform network tests.`, 1389 }, 1390 { 1391 Name: "network_platform_unstable", 1392 Desc: `Identifies unstable platform network tests.`, 1393 }, 1394 }, 1395 }, 1396 { 1397 Name: "intel-gating", 1398 Contacts: []string{"ambalavanan.m.m@intel.com", "intel-chrome-system-automation-team@intel.com"}, 1399 Desc: `A group of tests related to Intel that are gating for build validation.`, 1400 }, 1401 { 1402 Name: "hw_agnostic", 1403 Contacts: []string{"tast-owners@google.com"}, 1404 Desc: `Specifies tests that are capable of being run on VMs. 1405 1406 This does not imply tests can only run on VMs, but can be used by systems to find and schedule tests on VMs 1407 from other existing groups (or use this group standalone). 1408 `, 1409 }, 1410 { 1411 Name: "vdi_limited", 1412 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1413 Desc: `A group of VDI tests that should use run on selected devices to limit load on the infrastructure.`, 1414 }, 1415 1416 { 1417 Name: "golden_tier", 1418 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1419 Desc: `Suite will run assigned tests on devices that provide the most reliable results. More info go/cros-duop:proposal`, 1420 }, 1421 { 1422 Name: "medium_low_tier", 1423 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1424 Desc: `Suite will run assigned tests on medium and low tier devices. More info go/cros-duop:proposal`, 1425 }, 1426 { 1427 Name: "hardware", 1428 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1429 Desc: `Suite will run assigned tests on various hardware configurations. More info go/cros-duop:proposal`, 1430 }, 1431 { 1432 Name: "complementary", 1433 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1434 Desc: `Suite will run assigned tests on devices that are not in golden_tier, medium_low_tier not hardware. More info go/cros-duop:proposal`, 1435 }, 1436 { 1437 Name: "crostini_slow", 1438 Contacts: []string{"clumptini@google.com"}, 1439 Desc: `A group of slow crostini tests that should run on dedicated shards only when relevant code is changed.`, 1440 }, 1441 { 1442 Name: "audio", 1443 Contacts: []string{"chromeos-audio-bugs@google.com", "chromeos-sw-engprod@google.com"}, 1444 Desc: `A group of audio tests that are out of audio.* but tracked with audio_cq.`, 1445 }, 1446 { 1447 Name: "audio_audiobox", 1448 Contacts: []string{"chromeos-audio-bugs@google.com", "chromeos-sw-engprod@google.com"}, 1449 Desc: `A group of audio tests that have to be run in audiobox.`, 1450 }, 1451 { 1452 Name: "unowned", 1453 Contacts: []string{"kamilszarek@google.com", "chromeos-ent-test@google.com"}, 1454 Desc: `Suite will run unowned tests at a minimul infra load.`, 1455 }, 1456 { 1457 Name: "video_conference", 1458 Contacts: []string{"cros-videoconferencing@google.com"}, 1459 Desc: `video conference related tests.`, 1460 Subattrs: []*attr{ 1461 { 1462 Name: "video_conference_cq_critical", 1463 Desc: `Indicate this test should be scheduled in cq as critial test.`, 1464 }, 1465 { 1466 Name: "video_conference_per_build", 1467 Desc: `Indicate this test should be scheduled per build.`, 1468 }, 1469 }, 1470 }, 1471 { 1472 Name: "camera_dependent", 1473 Contacts: []string{"chromeos-camera-eng@google.com", "chromeos-sw-engprod@google.com"}, 1474 Desc: `A group of tests depending on camera but out of camera.*.`, 1475 }, 1476 { 1477 Name: "power", 1478 Contacts: []string{"chromeos-platform-power@google.com", "chromeos-pvs-eng@google.com"}, 1479 Desc: `Tests measuring power.`, 1480 Subattrs: []*attr{ 1481 { 1482 Name: "power_cpd", 1483 Desc: `Tests relying on CPD to measure power at the battery.`, 1484 }, 1485 }, 1486 }, 1487 { 1488 Name: "healthd", 1489 Contacts: []string{"cros-tdm-tpe-eng@google.com"}, 1490 Desc: `A group of tests that validate the functionality of cros_healthd.`, 1491 Subattrs: []*attr{ 1492 { 1493 Name: "healthd_perbuild", 1494 Desc: `Indicates that this test should run for every ChromeOS build.`, 1495 }, 1496 }, 1497 }, 1498 { 1499 Name: "launcher_search_quality_daily", 1500 Contacts: []string{"launcher-search-notify@google.com"}, 1501 Desc: "A group of tests for checking the pass ratio in different builds for launcher search.", 1502 }, 1503 } 1504 1505 // validGroupMap is the name-keyed map of validGroups. 1506 var validGroupMap = map[string]*group{} 1507 1508 func init() { 1509 // Initialize validGroupMap. 1510 for _, g := range validGroups { 1511 if _, ok := validGroupMap[g.Name]; ok { 1512 panic(fmt.Sprintf("Duplicated group definition %q found", g.Name)) 1513 } 1514 validGroupMap[g.Name] = g 1515 } 1516 } 1517 1518 const groupPrefix = "group:" 1519 1520 // checkKnownAttrs validate attrs against valid groups. 1521 func checkKnownAttrs(attrs []string) error { 1522 const defPath = "go.chromium.org/tast/core/internal/testing/attr.go" 1523 1524 var groups []*group 1525 for _, attr := range attrs { 1526 if isAutoAttr(attr) || !strings.HasPrefix(attr, groupPrefix) { 1527 continue 1528 } 1529 name := strings.TrimPrefix(attr, groupPrefix) 1530 g, ok := validGroupMap[name] 1531 if !ok { 1532 return fmt.Errorf("group %q is invalid; see %s for the full list of valid groups", name, defPath) 1533 } 1534 groups = append(groups, g) 1535 } 1536 1537 for _, attr := range attrs { 1538 if isAutoAttr(attr) || strings.HasPrefix(attr, groupPrefix) { 1539 continue 1540 } 1541 // Allow the "disabled" attribute. 1542 // Note that manually-specified "disabled" attributes are checked on test instantiation 1543 // and prohibited. If we see the "disabled" attribute here, it is one internally added on 1544 // test instantiation for compatibility. 1545 // TODO(crbug.com/1005041): Remove this transitional handling. 1546 if attr == "disabled" { 1547 continue 1548 } 1549 found := false 1550 grouploop: 1551 for _, group := range groups { 1552 for _, subattr := range group.Subattrs { 1553 if attr == subattr.Name { 1554 found = true 1555 break grouploop 1556 } 1557 } 1558 } 1559 if !found { 1560 return fmt.Errorf("attribute %q is invalid in current groups; see %s for the full list of valid attributes", attr, defPath) 1561 } 1562 } 1563 1564 return nil 1565 } 1566 1567 // modifyAttrsForCompat modifies an attribute list for compatibility. 1568 func modifyAttrsForCompat(attrs []string) []string { 1569 // If no "group:*" attribute is set, append the "disabled" attribute. 1570 // TODO(crbug.com/1005041): Remove this workaround once infra is updated to 1571 // not rely on the "disabled" attribute. 1572 hasGroup := false 1573 for _, a := range attrs { 1574 if strings.HasPrefix(a, groupPrefix) { 1575 hasGroup = true 1576 break 1577 } 1578 } 1579 1580 if hasGroup { 1581 return attrs 1582 } 1583 return append(attrs, "disabled") 1584 }