[autotest] Create a new bvt-arc suite.

This creates a new, public bvt-arc suite.  The suite provides BVT
test coverage for ARC features for all release builders, plus the
Chrome and Android PFQs, and selected paladins.

This suite replaces the arc-bvt-cq suite, which is private, and not
available to non-cheets boards.  Its content is otherwise identical.

BUG=chromium:647494
TEST=use suite_enumerator to see that arc-bvt-cq and bvt-arc are equivalent

Change-Id: I3026c0bf328d07d828865cc5237911e7dfa38ad7
Reviewed-on: https://chromium-review.googlesource.com/514432
Commit-Ready: Richard Barnette <jrbarnette@chromium.org>
Tested-by: Richard Barnette <jrbarnette@chromium.org>
Reviewed-by: Ilja H. Friedel <ihf@chromium.org>
diff --git a/client/site_tests/cheets_StartAndroid/control.stress.0 b/client/site_tests/cheets_StartAndroid/control.stress.0
index 32e0158..9b13e6c 100644
--- a/client/site_tests/cheets_StartAndroid/control.stress.0
+++ b/client/site_tests/cheets_StartAndroid/control.stress.0
@@ -6,7 +6,7 @@
 AUTHOR = "ARC Team"
 # Do not remove any of these suites without wider discussion as it will cause
 # instability in the testing lab.
-ATTRIBUTES = "suite:arc-bvt-cq, suite:bvt-cq, suite:bvt-inline"
+ATTRIBUTES = "suite:bvt-arc, suite:arc-bvt-cq, suite:bvt-cq, suite:bvt-inline"
 NAME = "cheets_StartAndroid.stress.0"
 TIME = "LONG"
 TEST_CATEGORY = "Stress"
diff --git a/client/site_tests/desktopui_ExitOnSupervisedUserCrash/control.arc b/client/site_tests/desktopui_ExitOnSupervisedUserCrash/control.arc
index 6a7d989..3b19407 100644
--- a/client/site_tests/desktopui_ExitOnSupervisedUserCrash/control.arc
+++ b/client/site_tests/desktopui_ExitOnSupervisedUserCrash/control.arc
@@ -4,7 +4,7 @@
 
 AUTHOR = "cmasone, antrim"
 NAME = "desktopui_ExitOnSupervisedUserCrash.arc"
-ATTRIBUTES = "suite:arc-bvt-cq, suite:bvt-cq"
+ATTRIBUTES = "suite:bvt-arc, suite:arc-bvt-cq, suite:bvt-cq"
 TIME = "SHORT"
 TEST_CATEGORY = "General"
 TEST_CLASS = "desktopui"
diff --git a/client/site_tests/graphics_Idle/control.arc b/client/site_tests/graphics_Idle/control.arc
index b002de2..10f9814 100644
--- a/client/site_tests/graphics_Idle/control.arc
+++ b/client/site_tests/graphics_Idle/control.arc
@@ -4,7 +4,7 @@
 
 AUTHOR = 'chromeos-gfx'
 NAME = "graphics_Idle.arc"
-ATTRIBUTES = "suite:arc-bvt-cq, suite:bvt-cq"
+ATTRIBUTES = "suite:bvt-arc, suite:arc-bvt-cq, suite:bvt-cq"
 PURPOSE = "Verify that graphics behaves as expected on idle."
 CRITERIA = """
 This test will fail if we don't see the appropriate GPU idle states.
diff --git a/client/site_tests/security_NetworkListeners/control b/client/site_tests/security_NetworkListeners/control
index d9ac0ea..03cf4c1 100644
--- a/client/site_tests/security_NetworkListeners/control
+++ b/client/site_tests/security_NetworkListeners/control
@@ -13,7 +13,7 @@
 Fail if the list of processes listening on the network doesn't match the
 baseline
 """
-ATTRIBUTES = "suite:bvt-cq, suite:smoke, suite:arc-bvt-cq"
+ATTRIBUTES = "suite:bvt-cq, suite:smoke, suite:bvt-arc, suite:arc-bvt-cq"
 TEST_CLASS = "security"
 TEST_CATEGORY = "Functional"
 TEST_TYPE = "client"
diff --git a/client/site_tests/telemetry_LoginTest/control.arc b/client/site_tests/telemetry_LoginTest/control.arc
index 2e5a527..4d81921 100644
--- a/client/site_tests/telemetry_LoginTest/control.arc
+++ b/client/site_tests/telemetry_LoginTest/control.arc
@@ -10,7 +10,7 @@
 the autotest extension doesn't load/is inaccessible, or if
 chrome.autotestPrivate.loginStatus doesn't work.
 """
-ATTRIBUTES = "suite:arc-bvt-cq, suite:bvt-cq"
+ATTRIBUTES = "suite:bvt-arc, suite:arc-bvt-cq, suite:bvt-cq"
 TIME = "SHORT"
 TEST_CATEGORY = "Functional"
 TEST_CLASS = "login"
diff --git a/server/site_tests/cheets_CTS/generate_controlfiles.py b/server/site_tests/cheets_CTS/generate_controlfiles.py
index 443f020..4d4b94a 100755
--- a/server/site_tests/cheets_CTS/generate_controlfiles.py
+++ b/server/site_tests/cheets_CTS/generate_controlfiles.py
@@ -65,11 +65,11 @@
 ]
 
 # Any test in SMOKE (VMTest) should also be in CQ (HWTest).
-_SUITE_BVT_CQ = _SUITE_SMOKE + [
+_SUITE_BVT_ARC = _SUITE_SMOKE + [
     'com.android.cts.dram'
 ]
 
-_SUITE_ARC_BVT_CQ = _SUITE_BVT_CQ
+_SUITE_BVT_CQ = _SUITE_BVT_ARC
 
 _SUITE_BVT_PERBUILD = [
     'android.signature',
@@ -175,8 +175,8 @@
         attributes += ', suite:smoke'
     if package in _SUITE_BVT_CQ:
         attributes += ', suite:bvt-cq'
-    if package in _SUITE_ARC_BVT_CQ:
-        attributes += ', suite:arc-bvt-cq'
+    if package in _SUITE_BVT_ARC:
+        attributes += ', suite:bvt-arc, suite:arc-bvt-cq'
     if package in _SUITE_BVT_PERBUILD and abi == 'arm':
         attributes += ', suite:bvt-perbuild'
     # Adding arc-cts-stable runs all packages twice on stable.
@@ -226,7 +226,7 @@
                                            name)
     # cheets_CTS internal retries limited due to time constraints on cq.
     retry = ''
-    if (package in (_SUITE_SMOKE + _SUITE_BVT_CQ + _SUITE_ARC_BVT_CQ) or
+    if (package in (_SUITE_SMOKE + _SUITE_BVT_CQ + _SUITE_BVT_ARC) or
         package in _SUITE_BVT_PERBUILD and abi == 'arm'):
         retry = '\n        max_retry=3,'
     return _CONTROLFILE_TEMPLATE.format(
diff --git a/site_utils/attribute_whitelist.txt b/site_utils/attribute_whitelist.txt
index 0e2ca34..300de21 100644
--- a/site_utils/attribute_whitelist.txt
+++ b/site_utils/attribute_whitelist.txt
@@ -1,3 +1,6 @@
+subsystem:default
+subsystem:network
+subsystem:wifi
 suite:AFDO_page_replay
 suite:AFDO_record
 suite:android_bluetooth
@@ -31,14 +34,6 @@
 suite:arc-bvt-cq
 suite:arc-bvt-perbuild
 suite:arc-cts
-suite:arc-cts-dev
-suite:arc-cts-dev-fri
-suite:arc-cts-dev-mon
-suite:arc-cts-dev-sat
-suite:arc-cts-dev-sun
-suite:arc-cts-dev-thu
-suite:arc-cts-dev-tue
-suite:arc-cts-dev-wed
 suite:arc-cts-beta
 suite:arc-cts-beta-fri
 suite:arc-cts-beta-mon
@@ -47,11 +42,18 @@
 suite:arc-cts-beta-thu
 suite:arc-cts-beta-tue
 suite:arc-cts-beta-wed
+suite:arc-cts-dev
+suite:arc-cts-dev-fri
+suite:arc-cts-dev-mon
+suite:arc-cts-dev-sat
+suite:arc-cts-dev-sun
+suite:arc-cts-dev-thu
+suite:arc-cts-dev-tue
+suite:arc-cts-dev-wed
 suite:arc-cts-perbuild
 suite:arc-cts-qual
 suite:arc-cts-stable
 suite:arc-cts-terra
-suite:gts
 suite:arc-gts
 suite:arc-gts-perbuild
 suite:arc-gts-tot
@@ -67,6 +69,7 @@
 suite:brillo-presubmit
 suite:brillo-pts
 suite:brillo-smoke
+suite:bvt-arc
 suite:bvt-cq
 suite:bvt-inline
 suite:bvt-perbuild
@@ -88,8 +91,8 @@
 suite:chameleon_hdmi_stress
 suite:chameleon_vga
 suite:cr50_stress_experimental
-suite:crosbolt_arc_perf_perbuild
 suite:crosbolt_arc_perf_nightly
+suite:crosbolt_arc_perf_perbuild
 suite:crosbolt_perf_nightly
 suite:crosbolt_perf_perbuild
 suite:dummy
@@ -108,13 +111,13 @@
 suite:faft_dev
 suite:faft_dev_ryu
 suite:faft_ec
+suite:faft_ec3po
 suite:faft_ec_au_1
 suite:faft_ec_au_2
 suite:faft_ec_au_3
 suite:faft_ec_ryu
 suite:faft_ec_tot
 suite:faft_ec_wp
-suite:faft_ec3po
 suite:faft_lab
 suite:faft_lv1
 suite:faft_lv2
@@ -131,6 +134,7 @@
 suite:graphics_browser
 suite:graphics_per-day
 suite:graphics_system
+suite:gts
 suite:hotrod
 suite:hwqual
 suite:jailed_build
@@ -164,10 +168,10 @@
 suite:paygen_au_stable
 suite:perf_v2
 suite:perfalerts
-suite:powerplay
 suite:power_build
 suite:power_daily
 suite:power_requirements
+suite:powerplay
 suite:push_to_prod
 suite:regression
 suite:sanity
@@ -217,6 +221,3 @@
 suite:wimax
 suite:youtube_mse_eme
 suite:youtube_page
-subsystem:default
-subsystem:network
-subsystem:wifi
diff --git a/site_utils/presubmit_hooks/check_control_files.py b/site_utils/presubmit_hooks/check_control_files.py
index f32a679..fd14d11 100755
--- a/site_utils/presubmit_hooks/check_control_files.py
+++ b/site_utils/presubmit_hooks/check_control_files.py
@@ -23,7 +23,7 @@
 
 
 DEPENDENCY_ARC = 'arc'
-SUITES_NEED_RETRY = set(['bvt-cq', 'bvt-inline', 'arc-bvt-cq'])
+SUITES_NEED_RETRY = set(['bvt-arc', 'bvt-cq', 'bvt-inline', 'arc-bvt-cq'])
 TESTS_NEED_ARC = 'cheets_'
 
 
diff --git a/test_suites/control.bvt-arc b/test_suites/control.bvt-arc
new file mode 100644
index 0000000..9a4fc78
--- /dev/null
+++ b/test_suites/control.bvt-arc
@@ -0,0 +1,65 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "Chrome OS Team"
+NAME = "bvt-arc"
+PURPOSE = "Test basic functionality of ARC."
+
+TIME = "SHORT"
+TEST_CATEGORY = "General"
+TEST_CLASS = "suite"
+TEST_TYPE = "Server"
+
+DOC = """
+This is the portion of the Build Verification Test suite required
+for devices supporting ARC.  Tests in this suite must pass in the
+CQ, and in the Chrome and Android PFQs.  Test failures prevent code
+from being included in the tree or in canary builds:
+  * Failures in the canary turn the tree red, block lower priority
+    tests for the build, and generally mean that QA cannot further
+    evaluate the build's fitness for release.
+  * Chrome OS CLs must pass these tests in the Commit Queue prior to
+    being accepted into the tree.
+  * A new Chrome or Android build must pass these tests prior to the
+    build being included in a Chrome OS canary build.
+
+Requirements for a test to be in this suite:
+ 1. The test should be SHORT or MEDIUM, and should not require any
+    specialized lab resources.
+ 2. A test failure should indicate one or more of the following
+    impacts is possible:
+     * The failure may prevent discovery of other ARC bugs.
+     * The failure may block ordinary development tasks for ARC.
+ 3. A test failure must reliably indicate a bug in the product, and
+    not a bug in the test.
+
+@param build: The name of the image to test.
+              Ex: veyron_minnie-release/R60-9575.0.0
+@param board: The board to test on. Ex: veyron_minnie
+@param pool: The pool of machines to utilize for scheduling.
+"""
+
+import common
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import dynamic_suite
+
+
+# Values specified in this bug template will override default values when
+# filing bugs on tests that are a part of this suite. If left unspecified
+# the bug filer will fallback to its defaults.
+_BUG_TEMPLATE = {
+    'labels': ['bvt'],
+    'owner': '',
+    'status': None,
+    'summary': None,
+    'title': None,
+}
+
+args_dict['max_runtime_mins'] = 60
+args_dict['name'] = 'bvt-arc'
+args_dict['job'] = job
+args_dict['version_prefix'] = provision.CROS_VERSION_PREFIX
+args_dict['bug_template'] = _BUG_TEMPLATE
+
+dynamic_suite.reimage_and_run(**args_dict)