cheets_VTS: Initial commit

This makes cheets_VTS included in the autotest bundle.
There is no triggering or scheduling as of now, so will not break anything.

BUG=b:124404053
TEST=./generate_controlfiles.py

Change-Id: Ib148321cce0c729c826bcc8a030fd5d00ac6a90f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2016422
Tested-by: Jiyoun Ha <jiyounha@google.com>
Commit-Queue: Jiyoun Ha <jiyounha@google.com>
Reviewed-by: Kazuhiro Inaba <kinaba@chromium.org>
Reviewed-by: Rohit Makasana <rohitbm@chromium.org>
Auto-Submit: Jiyoun Ha <jiyounha@google.com>
diff --git a/server/cros/tradefed/generate_controlfiles_VTS.py b/server/cros/tradefed/generate_controlfiles_VTS.py
new file mode 100755
index 0000000..044f73d
--- /dev/null
+++ b/server/cros/tradefed/generate_controlfiles_VTS.py
@@ -0,0 +1,131 @@
+#!/usr/bin/env python2
+# Copyright 2020 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.
+
+import collections
+
+from generate_controlfiles_common import main
+
+
+_ALL = 'all'
+
+CONFIG = {}
+
+CONFIG['TEST_NAME'] = 'cheets_VTS'
+CONFIG['DOC_TITLE'] = \
+    'Vendor Test Suite (VTS)'
+CONFIG['MOBLAB_SUITE_NAME'] = 'suite:android-vts'
+CONFIG['COPYRIGHT_YEAR'] = 2020
+CONFIG['AUTHKEY'] = ''
+
+CONFIG['LARGE_MAX_RESULT_SIZE'] = 1000 * 1024
+CONFIG['NORMAL_MAX_RESULT_SIZE'] = 500 * 1024
+
+CONFIG['TRADEFED_CTS_COMMAND'] = 'vts'
+CONFIG['TRADEFED_RETRY_COMMAND'] = 'retry'
+CONFIG['TRADEFED_DISABLE_REBOOT'] = False
+CONFIG['TRADEFED_DISABLE_REBOOT_ON_COLLECTION'] = True
+CONFIG['TRADEFED_MAY_SKIP_DEVICE_INFO'] = False
+CONFIG['TRADEFED_EXECUTABLE_PATH'] = 'android-vts/tools/vts-tradefed'
+
+CONFIG['TRADEFED_IGNORE_BUSINESS_LOGIC_FAILURE'] = False
+
+CONFIG['INTERNAL_SUITE_NAMES'] = ['suite:arc-vts']
+
+CONFIG['CONTROLFILE_TEST_FUNCTION_NAME'] = 'run_TS'
+CONFIG['CONTROLFILE_WRITE_SIMPLE_QUAL_AND_REGRESS'] = False # True
+CONFIG['CONTROLFILE_WRITE_CAMERA'] = False
+CONFIG['CONTROLFILE_WRITE_EXTRA'] = False
+
+# Do not change the name/tag without adjusting the dashboard.
+_COLLECT = 'tradefed-run-collect-tests-only-internal'
+_PUBLIC_COLLECT = 'tradefed-run-collect-tests-only'
+
+CONFIG['LAB_DEPENDENCY'] = {}
+
+CONFIG['CTS_JOB_RETRIES_IN_PUBLIC'] = 1
+CONFIG['CTS_QUAL_RETRIES'] = 9
+CONFIG['CTS_MAX_RETRIES'] = {}
+
+# Timeout in hours.
+CONFIG['CTS_TIMEOUT_DEFAULT'] = 1.0
+CONFIG['CTS_TIMEOUT'] = {
+    _ALL: 5.0,
+    _COLLECT: 2.0,
+    _PUBLIC_COLLECT: 2.0,
+}
+
+# Any test that runs as part as blocking BVT needs to be stable and fast. For
+# this reason we enforce a tight timeout on these modules/jobs.
+# Timeout in hours. (0.1h = 6 minutes)
+CONFIG['BVT_TIMEOUT'] = 0.1
+
+CONFIG['QUAL_TIMEOUT'] = 5
+
+CONFIG['QUAL_BOOKMARKS'] = []
+
+CONFIG['SMOKE'] = []
+
+CONFIG['BVT_ARC'] = []
+
+CONFIG['BVT_PERBUILD'] = []
+
+CONFIG['NEEDS_POWER_CYCLE'] = []
+
+CONFIG['HARDWARE_DEPENDENT_MODULES'] = []
+
+# The suite is divided based on the run-time hint in the *.config file.
+CONFIG['VMTEST_INFO_SUITES'] = collections.OrderedDict()
+
+# Modules that are known to download and/or push media file assets.
+CONFIG['MEDIA_MODULES'] = []
+CONFIG['NEEDS_PUSH_MEDIA'] = []
+
+CONFIG['ENABLE_DEFAULT_APPS'] = []
+
+# Preconditions applicable to public and internal tests.
+CONFIG['PRECONDITION'] = {}
+CONFIG['LOGIN_PRECONDITION'] = {}
+
+# Preconditions applicable to public tests.
+CONFIG['PUBLIC_PRECONDITION'] = {}
+
+CONFIG['PUBLIC_DEPENDENCIES'] = {}
+
+# This information is changed based on regular analysis of the failure rate on
+# partner moblabs.
+CONFIG['PUBLIC_MODULE_RETRY_COUNT'] = {
+    _PUBLIC_COLLECT: 0,
+}
+
+CONFIG['PUBLIC_OVERRIDE_TEST_PRIORITY'] = {
+    _PUBLIC_COLLECT: 70,
+}
+
+# This information is changed based on regular analysis of the job run time on
+# partner moblabs.
+
+CONFIG['OVERRIDE_TEST_LENGTH'] = {
+    # Even though collect tests doesn't run very long, it must be the very first
+    # job executed inside of the suite. Hence it is the only 'LENGTHY' test.
+    _COLLECT: 5,  # LENGTHY
+}
+
+CONFIG['DISABLE_LOGCAT_ON_FAILURE'] = set()
+CONFIG['EXTRA_MODULES'] = {}
+CONFIG['PUBLIC_EXTRA_MODULES'] = {}
+CONFIG['EXTRA_SUBMODULE_OVERRIDE'] = {}
+
+CONFIG['EXTRA_COMMANDLINE'] = {}
+
+CONFIG['EXTRA_ATTRIBUTES'] = {
+    'tradefed-run-collect-tests-only-internal': ['suite:arc-vts'],
+}
+
+CONFIG['EXTRA_ARTIFACTS'] = {}
+
+
+if __name__ == '__main__':
+        main(CONFIG)
+
diff --git a/server/cros/tradefed/generate_controlfiles_common.py b/server/cros/tradefed/generate_controlfiles_common.py
index 7446817..94993ea 100755
--- a/server/cros/tradefed/generate_controlfiles_common.py
+++ b/server/cros/tradefed/generate_controlfiles_common.py
@@ -190,9 +190,9 @@
     In this case we chose to guess by filename, but we could also parse the
     xml files in the module. (Maybe this needs to be done in the future.)
     """
-    if filename.endswith('_x86-arm.zip'):
+    if filename.endswith('arm.zip'):
         return 'arm'
-    if filename.endswith('_x86-x86.zip'):
+    if filename.endswith('x86.zip'):
         return 'x86'
 
     assert(CONFIG['TRADEFED_CTS_COMMAND'] =='gts'), 'Only GTS has empty ABI'
@@ -397,7 +397,8 @@
         retry = 3
     # During qualification we want at least 9 retries, possibly more.
     # TODO(kinaba&yoshiki): do not abuse suite names
-    if set(CONFIG['QUAL_SUITE_NAMES']) & set(suites):
+    if CONFIG.get('QUAL_SUITE_NAMES') and \
+            set(CONFIG['QUAL_SUITE_NAMES']) & set(suites):
         retry = max(retry, CONFIG['CTS_QUAL_RETRIES'])
     # Collection should never have a retry. This needs to be last.
     if modules.intersection(get_collect_modules(is_public)):
@@ -654,7 +655,8 @@
     """
     if 'suite:bvt-arc' in suites:
         return int(3600 * CONFIG['BVT_TIMEOUT'])
-    if ((set(CONFIG['QUAL_SUITE_NAMES']) & set(suites)) and
+    if CONFIG.get('QUAL_SUITE_NAMES') and \
+            ((set(CONFIG['QUAL_SUITE_NAMES']) & set(suites)) and \
             not (_COLLECT in modules or _PUBLIC_COLLECT in modules)):
         return int(3600 * CONFIG['QUAL_TIMEOUT'])
 
@@ -805,6 +807,8 @@
         elif line.startswith('Gts'):
             # Older GTS plainly lists the module names
             modules.add(line)
+        elif line.startswith('Vts'):
+            modules.add(line)
         elif line.startswith('cts-'):
             modules.add(line)
         elif line.startswith('signed-Cts'):
@@ -1026,7 +1030,7 @@
     combined = combine_modules_by_bookmark(set(modules))
     for key in combined:
         write_controlfile('all.' + key, combined[key], abi, revision, build,
-                          uri, CONFIG['QUAL_SUITE_NAMES'], is_public)
+                          uri, CONFIG.get('QUAL_SUITE_NAMES'), is_public)
 
 
 def write_qualification_and_regression_controlfile(abi, revision, build, uri,
@@ -1048,7 +1052,8 @@
     if is_public:
         suites = [CONFIG['MOBLAB_SUITE_NAME']]
     else:
-        suites = CONFIG['INTERNAL_SUITE_NAMES'] + CONFIG['QUAL_SUITE_NAMES']
+        suites = CONFIG['INTERNAL_SUITE_NAMES'] \
+               + CONFIG.get('QUAL_SUITE_NAMES', [])
     for module in get_collect_modules(is_public):
         write_controlfile(module, set([module]), abi, revision, build, uri,
                           suites, is_public)
diff --git a/server/site_tests/cheets_VTS/cheets_VTS.py b/server/site_tests/cheets_VTS/cheets_VTS.py
new file mode 100644
index 0000000..caef53d
--- /dev/null
+++ b/server/site_tests/cheets_VTS/cheets_VTS.py
@@ -0,0 +1,118 @@
+# Copyright 2020 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.
+
+# repohooks/pre-upload.py currently does not run pylint. But for developers who
+# want to check their code manually we disable several harmless pylint warnings
+# which just distract from more serious remaining issues.
+#
+# The instance variable _android_vts is not defined in __init__().
+# pylint: disable=attribute-defined-outside-init
+#
+# Many short variable names don't follow the naming convention.
+# pylint: disable=invalid-name
+
+import logging
+import os
+
+from autotest_lib.server import utils
+from autotest_lib.server.cros.tradefed import tradefed_test
+
+# Maximum default time allowed for each individual CTS module.
+_CTS_TIMEOUT_SECONDS = 3600
+
+# Internal download locations for android vtas bundles.
+_INTERNAL_VTS = 'gs://chromeos-arc-images/vts'
+_VTS_URI = {
+    'arm': _INTERNAL_VTS + 'VTS-9_r11_arm.zip',
+    'x86': _INTERNAL_VTS + 'VTS-9_r11_x86.zip',
+}
+
+
+class cheets_VTS(tradefed_test.TradefedTest):
+    """Sets up tradefed to run VTS tests."""
+    version = 1
+
+    _SHARD_CMD = '--shard-count'
+
+    def _tradefed_retry_command(self, template, session_id):
+        """Build tradefed 'retry' command from template."""
+        cmd = []
+        for arg in template:
+            cmd.append(arg.format(session_id=session_id))
+        return cmd
+
+    def _tradefed_run_command(self, template):
+        """Build tradefed 'run' command from template."""
+        cmd = template[:]
+        # If we are running outside of the lab we can collect more data.
+        if not utils.is_in_container():
+            logging.info('Running outside of lab, adding extra debug options.')
+            cmd.append('--log-level-display=DEBUG')
+        return cmd
+
+    def _get_default_bundle_url(self, bundle):
+        return _VTS_URI[bundle]
+
+    def _get_tradefed_base_dir(self):
+        return 'android-vts'
+
+    def _tradefed_cmd_path(self):
+        return os.path.join(self._repository, 'tools', 'vts-tradefed')
+
+    def _should_skip_test(self, bundle):
+        """Some tests are expected to fail and are skipped."""
+        # novato* are x86 VMs without binary translation. Skip the ARM tests.
+        no_ARM_ABI_test_boards = ('novato', 'novato-arc64', 'novato-arcnext')
+        if self._get_board_name() in no_ARM_ABI_test_boards and bundle == 'arm':
+            return True
+        return False
+
+    def run_once(self,
+                 test_name,
+                 run_template,
+                 retry_template=None,
+                 target_module=None,
+                 target_plan=None,
+                 target_class=None,
+                 target_method=None,
+                 needs_push_media=False,
+                 bundle=None,
+                 precondition_commands=[],
+                 login_precondition_commands=[],
+                 timeout=_CTS_TIMEOUT_SECONDS):
+        """Runs the specified CTS once, but with several retries.
+
+        Run an arbitrary tradefed command.
+
+        @param test_name: the name of test. Used for logging.
+        @param run_template: the template to construct the run command.
+                             Example: ['run', 'commandAndExit', 'cts',
+                                       '--skip-media-download']
+        @param retry_template: the template to construct the retry command.
+                               Example: ['run', 'commandAndExit', 'retry',
+                                         '--skip-media-download', '--retry',
+                                         '{session_id}']
+        @param target_module: the name of test module to run.
+        @param target_plan: the name of the test plan to run.
+        @param target_class: the name of the class to be tested.
+        @param target_method: the name of the method to be tested.
+        @param needs_push_media: need to push test media streams.
+        @param bundle: the type of the CTS bundle: 'arm' or 'x86'
+        @param precondition_commands: a list of scripts to be run on the
+        dut before the test is run, the scripts must already be installed.
+        @param login_precondition_commands: a list of scripts to be run on the
+        dut before the log-in for the test is performed.
+        @param timeout: time after which tradefed can be interrupted.
+        """
+        self._run_tradefed_with_retries(
+            test_name=test_name,
+            run_template=run_template,
+            retry_template=retry_template,
+            timeout=timeout,
+            target_module=target_module,
+            target_plan=target_plan,
+            bundle=bundle,
+            cts_uri=_VTS_URI,
+            login_precondition_commands=login_precondition_commands,
+            precondition_commands=precondition_commands)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsAppWifiNativeTest b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsAppWifiNativeTest
new file mode 100644
index 0000000..e67509c
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsAppWifiNativeTest
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsAppWifiNativeTest'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsAppWifiNativeTest of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsAppWifiNativeTest',
+        test_name='cheets_VTS.9_r11.arm.VtsAppWifiNativeTest',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsAppWifiNativeTest', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsAppWifiNativeTest',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsCodelab b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsCodelab
new file mode 100644
index 0000000..de603e3
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsCodelab
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsCodelab'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsCodelabHelloWorldMultiDeviceTest, VtsCodelabHelloWorldSl4aTest, VtsCodelabHelloWorldStagingTest, VtsCodelabHelloWorldTest, VtsCodelabHostDrivenMultiHalTest, VtsCodelabTargetBinary of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsCodelab',
+        test_name='cheets_VTS.9_r11.arm.VtsCodelab',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsCodelabHelloWorldMultiDeviceTest', '--include-filter', 'VtsCodelabHelloWorldSl4aTest', '--include-filter', 'VtsCodelabHelloWorldStagingTest', '--include-filter', 'VtsCodelabHelloWorldTest', '--include-filter', 'VtsCodelabHostDrivenMultiHalTest', '--include-filter', 'VtsCodelabTargetBinary', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsCodelab',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=12600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsDeviceHealth b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsDeviceHealth
new file mode 100644
index 0000000..bf73066
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsDeviceHealth
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsDeviceHealth'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsDeviceHealth of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsDeviceHealth',
+        test_name='cheets_VTS.9_r11.arm.VtsDeviceHealth',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsDeviceHealth', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsDeviceHealth',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFirmware b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFirmware
new file mode 100644
index 0000000..c57b8df
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFirmware
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsFirmware'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsFirmwareBootHeaderVerification, VtsFirmwareDtboVerification of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsFirmware',
+        test_name='cheets_VTS.9_r11.arm.VtsFirmware',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsFirmwareBootHeaderVerification', '--include-filter', 'VtsFirmwareDtboVerification', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsFirmware',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=5400)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFmqUnitTests b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFmqUnitTests
new file mode 100644
index 0000000..c7a2157
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsFmqUnitTests
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsFmqUnitTests'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsFmqUnitTests of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsFmqUnitTests',
+        test_name='cheets_VTS.9_r11.arm.VtsFmqUnitTests',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsFmqUnitTests', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsFmqUnitTests',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHal b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHal
new file mode 100644
index 0000000..c5198ad
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHal
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsHal'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsHalAudioCommonV2_0IfaceFuzzer, VtsHalAudioCommonV4_0IfaceFuzzer, VtsHalAudioEffectV2_0IfaceFuzzer, VtsHalAudioEffectV2_0Target, VtsHalAudioEffectV2_0TargetProfiling, VtsHalAudioEffectV2_0TargetReplay, VtsHalAudioEffectV4_0IfaceFuzzer, VtsHalAudioEffectV4_0Target, VtsHalAudioEffectV4_0TargetProfiling, VtsHalAudioV2_0IfaceFuzzer, VtsHalAudioV2_0Target, VtsHalAudioV2_0TargetProfiling, VtsHalAudioV4_0IfaceFuzzer, VtsHalAudioV4_0Target, VtsHalAudioV4_0TargetProfiling, VtsHalAuthSecretV1_0Target, VtsHalAuthsecretV1_0IfaceFuzzer, VtsHalAutomotiveAudiocontrolV1_0IfaceFuzzer, VtsHalAutomotiveEvsV1_0IfaceFuzzer, VtsHalAutomotiveVehicleV2_0Host, VtsHalAutomotiveVehicleV2_0HostProfiling, VtsHalAutomotiveVehicleV2_0IfaceFuzzer, VtsHalBaseV1_0TargetTest, VtsHalBiometricsFingerprintV2_1IfaceFuzzer, VtsHalBiometricsFingerprintV2_1Target, VtsHalBiometricsFingerprintV2_1TargetProfiling, VtsHalBiometricsFingerprintV2_1TargetReplay, VtsHalBluetoothA2DpV1_0IfaceFuzzer, VtsHalBluetoothV1_0IfaceFuzzer, VtsHalBluetoothV1_0Target, VtsHalBluetoothV1_0TargetProfiling, VtsHalBluetoothV1_0TargetReplay, VtsHalBootV1_0IfaceFuzzer, VtsHalBootV1_0Target, VtsHalBootV1_0TargetProfiling, VtsHalBroadcastradioV1_0IfaceFuzzer, VtsHalBroadcastradioV1_0Target, VtsHalBroadcastradioV1_0TargetProfiling, VtsHalBroadcastradioV1_1Adapter, VtsHalBroadcastradioV1_1IfaceFuzzer, VtsHalBroadcastradioV1_1Target, VtsHalBroadcastradioV1_1TargetProfiling, VtsHalBroadcastradioV2_0IfaceFuzzer, VtsHalBroadcastradioV2_0Target, VtsHalBroadcastradioV2_0TargetProfiling, VtsHalCameraCommonV1_0IfaceFuzzer, VtsHalCameraDeviceV1_0IfaceFuzzer, VtsHalCameraDeviceV3_2IfaceFuzzer, VtsHalCameraDeviceV3_3Adapter, VtsHalCameraDeviceV3_3IfaceFuzzer, VtsHalCameraDeviceV3_4Adapter, VtsHalCameraDeviceV3_4IfaceFuzzer, VtsHalCameraMetadataV3_2IfaceFuzzer, VtsHalCameraMetadataV3_3Adapter, VtsHalCameraMetadataV3_3IfaceFuzzer, VtsHalCameraProviderV2_4IfaceFuzzer, VtsHalCameraProviderV2_4Target, VtsHalCameraProviderV2_4TargetProfiling, VtsHalCasNativeV1_0IfaceFuzzer, VtsHalCasV1_0IfaceFuzzer, VtsHalCasV1_0Target, VtsHalConfigstoreV1_0IfaceFuzzer, VtsHalConfigstoreV1_0Target, VtsHalConfigstoreV1_0TargetProfiling, VtsHalConfigstoreV1_0TargetReplay, VtsHalConfigstoreV1_1IfaceFuzzer, VtsHalConfirmationuiV1_0IfaceFuzzer, VtsHalContexthubV1_0Host, VtsHalContexthubV1_0IfaceFuzzer, VtsHalContexthubV1_0Target, VtsHalContexthubV1_0TargetProfiling, VtsHalContexthubV1_0TargetReplay, VtsHalCoverageMeasurement, VtsHalDrmV1_0IfaceFuzzer, VtsHalDrmV1_0Target, VtsHalDrmV1_0TargetProfiling, VtsHalDrmV1_1Adapter, VtsHalDrmV1_1IfaceFuzzer, VtsHalDrmV1_1Target, VtsHalDrmV1_1TargetProfiling, VtsHalDumpstateV1_0IfaceFuzzer, VtsHalDumpstateV1_0Target, VtsHalEvsV1_0Target, VtsHalEvsV1_0TargetProfiling, VtsHalGatekeeperV1_0IfaceFuzzer, VtsHalGatekeeperV1_0Target, VtsHalGatekeeperV1_0TargetProfiling, VtsHalGatekeeperV1_0TargetReplay, VtsHalGnssV1_0HostBinderize, VtsHalGnssV1_0IfaceFuzzer, VtsHalGnssV1_0Target, VtsHalGnssV1_0TargetProfiling, VtsHalGnssV1_1Adapter, VtsHalGnssV1_1IfaceFuzzer, VtsHalGnssV1_1Target, VtsHalGraphicsAllocatorV2_0IfaceFuzzer, VtsHalGraphicsBufferqueueV1_0IfaceFuzzer, VtsHalGraphicsCommonV1_0IfaceFuzzer, VtsHalGraphicsCommonV1_1Adapter, VtsHalGraphicsCommonV1_1IfaceFuzzer, VtsHalGraphicsComposerV2_1IfaceFuzzer, VtsHalGraphicsComposerV2_1Target, VtsHalGraphicsComposerV2_1TargetProfiling, VtsHalGraphicsComposerV2_2Adapter, VtsHalGraphicsComposerV2_2IfaceFuzzer, VtsHalGraphicsComposerV2_2Target, VtsHalGraphicsMapperV2_0IfaceFuzzer, VtsHalGraphicsMapperV2_0Target, VtsHalGraphicsMapperV2_0TargetProfiling, VtsHalGraphicsMapperV2_1Adapter, VtsHalGraphicsMapperV2_1IfaceFuzzer, VtsHalGraphicsMapperV2_1Target, VtsHalGraphicsMapperV2_1TargetProfiling, VtsHalHealthV1_0IfaceFuzzer, VtsHalHealthV1_0Target, VtsHalHealthV1_0TargetProfiling, VtsHalHealthV2_0IfaceFuzzer, VtsHalHealthV2_0Target, VtsHalIrV1_0IfaceFuzzer, VtsHalIrV1_0Target, VtsHalIrV1_0TargetProfiling, VtsHalKeymasterV3_0IfaceFuzzer, VtsHalKeymasterV3_0Target, VtsHalKeymasterV3_0TargetProfiling, VtsHalKeymasterV3_0TargetReplay, VtsHalKeymasterV4_0IfaceFuzzer, VtsHalKeymasterV4_0Target, VtsHalKeymasterV4_0TargetProfiling, VtsHalLightV2_0IfaceFuzzer, VtsHalLightV2_0Target, VtsHalLightV2_0TargetProfiling, VtsHalLightV2_0TargetReplay, VtsHalLightsTestCases, VtsHalMediaBufferpoolV1_0IfaceFuzzer, VtsHalMediaOmxStoreV1_0Host, VtsHalMediaOmxV1_0Host, VtsHalMediaOmxV1_0IfaceFuzzer, VtsHalMediaV1_0IfaceFuzzer, VtsHalMemtrackV1_0IfaceFuzzer, VtsHalMemtrackV1_0Target, VtsHalMemtrackV1_0TargetProfiling, VtsHalMemtrackV1_0TargetReplay, VtsHalNetNetdV1_0Target, VtsHalNetNetdV1_0TargetProfiling, VtsHalNetNetdV1_1Target, VtsHalNetNetdV1_1TargetProfiling, VtsHalNeuralnetworksV1_0IfaceFuzzer, VtsHalNeuralnetworksV1_0Target, VtsHalNeuralnetworksV1_0TargetProfiling, VtsHalNeuralnetworksV1_1Adapter, VtsHalNeuralnetworksV1_1IfaceFuzzer, VtsHalNeuralnetworksV1_1Target, VtsHalNeuralnetworksV1_1TargetProfiling, VtsHalNfcV1_0HostBinderize, VtsHalNfcV1_0HostPassthrough, VtsHalNfcV1_0HostProfiling, VtsHalNfcV1_0IfaceFuzzer, VtsHalNfcV1_0Target, VtsHalNfcV1_0TargetProfiling, VtsHalNfcV1_0TargetReplay, VtsHalNfcV1_1Adapter, VtsHalNfcV1_1IfaceFuzzer, VtsHalNfcV1_1Target, VtsHalNfcV1_1TargetProfiling, VtsHalOemLockV1_0Target, VtsHalOemLockV1_0TargetProfiling, VtsHalOemlockV1_0IfaceFuzzer, VtsHalPowerTestCases, VtsHalPowerV1_0IfaceFuzzer, VtsHalPowerV1_0Target, VtsHalPowerV1_0TargetProfiling, VtsHalPowerV1_0TargetReplay, VtsHalPowerV1_1Adapter, VtsHalPowerV1_1IfaceFuzzer, VtsHalPowerV1_1Target, VtsHalPowerV1_1TargetProfiling, VtsHalPowerV1_2Adapter, VtsHalPowerV1_2IfaceFuzzer, VtsHalPowerV1_2Target, VtsHalPowerV1_3Target, VtsHalRadioConfigV1_0IfaceFuzzer, VtsHalRadioDeprecatedV1_0IfaceFuzzer, VtsHalRadioV1_0Host, VtsHalRadioV1_0IfaceFuzzer, VtsHalRadioV1_0Target, VtsHalRadioV1_0TargetProfiling, VtsHalRadioV1_1Adapter, VtsHalRadioV1_1IfaceFuzzer, VtsHalRadioV1_1Target, VtsHalRadioV1_2Adapter, VtsHalRadioV1_2IfaceFuzzer, VtsHalRadioV1_2Target, VtsHalRenderscriptV1_0IfaceFuzzer, VtsHalRenderscriptV1_0Target, VtsHalRenderscriptV1_0TargetProfiling, VtsHalSapV1_0Target, VtsHalSapV1_0TargetProfiling, VtsHalSecureElementV1_0Target, VtsHalSecureElementV1_0TargetProfiling, VtsHalSecure_ElementV1_0IfaceFuzzer, VtsHalSensorsV1_0Host, VtsHalSensorsV1_0HostProfiling, VtsHalSensorsV1_0IfaceFuzzer, VtsHalSensorsV1_0Target, VtsHalSensorsV1_0TargetProfiling, VtsHalSoundtriggerV2_0IfaceFuzzer, VtsHalSoundtriggerV2_0Target, VtsHalSoundtriggerV2_0TargetProfiling, VtsHalSoundtriggerV2_1Adapter, VtsHalSoundtriggerV2_1IfaceFuzzer, VtsHalSoundtriggerV2_1Target, VtsHalSoundtriggerV2_1TargetProfiling, VtsHalTetherOffloadConfigV1_0Target, VtsHalTetherOffloadConfigV1_0TargetProfiling, VtsHalTetherOffloadControlV1_0Target, VtsHalTetherOffloadControlV1_0TargetProfiling, VtsHalTetheroffloadConfigV1_0IfaceFuzzer, VtsHalTetheroffloadControlV1_0IfaceFuzzer, VtsHalThermalV1_0IfaceFuzzer, VtsHalThermalV1_0Target, VtsHalThermalV1_0TargetProfiling, VtsHalThermalV1_0TargetReplay, VtsHalThermalV1_1Adapter, VtsHalThermalV1_1IfaceFuzzer, VtsHalThermalV1_1Target, VtsHalThermalV1_1TargetProfiling, VtsHalTvCecV1_0Host, VtsHalTvCecV1_0HostProfiling, VtsHalTvCecV1_0IfaceFuzzer, VtsHalTvInputV1_0Host, VtsHalTvInputV1_0HostProfiling, VtsHalTvInputV1_0IfaceFuzzer, VtsHalTvInputV1_0Target, VtsHalTvInputV1_0TargetProfiling, VtsHalUsbGadgetV1_0Host, VtsHalUsbGadgetV1_0IfaceFuzzer, VtsHalUsbV1_0IfaceFuzzer, VtsHalUsbV1_0Target, VtsHalUsbV1_0TargetProfiling, VtsHalUsbV1_0TargetReplay, VtsHalUsbV1_1Adapter, VtsHalUsbV1_1IfaceFuzzer, VtsHalUsbV1_1Target, VtsHalVibratorV1_0Host, VtsHalVibratorV1_0HostProfiling, VtsHalVibratorV1_0IfaceFuzzer, VtsHalVibratorV1_0Target, VtsHalVibratorV1_0TargetProfiling, VtsHalVibratorV1_0TargetReplay, VtsHalVibratorV1_1Adapter, VtsHalVibratorV1_1IfaceFuzzer, VtsHalVibratorV1_1Target, VtsHalVibratorV1_2Adapter, VtsHalVibratorV1_2IfaceFuzzer, VtsHalVibratorV1_2Target, VtsHalVrV1_0Host, VtsHalVrV1_0IfaceFuzzer, VtsHalVrV1_0Target, VtsHalVrV1_0TargetProfiling, VtsHalVrV1_0TargetReplay, VtsHalWeaverV1_0IfaceFuzzer, VtsHalWeaverV1_0Target, VtsHalWeaverV1_0TargetProfiling, VtsHalWifiHostapdV1_0IfaceFuzzer, VtsHalWifiNanV1_0Target, VtsHalWifiNanV1_0TargetProfiling, VtsHalWifiOffloadV1_0IfaceFuzzer, VtsHalWifiOffloadV1_0Target, VtsHalWifiSupplicantV1_0IfaceFuzzer, VtsHalWifiSupplicantV1_0Target, VtsHalWifiSupplicantV1_0TargetProfiling, VtsHalWifiSupplicantV1_1Adapter, VtsHalWifiSupplicantV1_1IfaceFuzzer, VtsHalWifiSupplicantV1_1Target, VtsHalWifiSupplicantV1_1TargetProfiling, VtsHalWifiV1_0Host, VtsHalWifiV1_0IfaceFuzzer, VtsHalWifiV1_0TargetProfiling, VtsHalWifiV1_1Adapter, VtsHalWifiV1_1IfaceFuzzer, VtsHalWifiV1_1Target, VtsHalWifiV1_1TargetProfiling, VtsHalWifiV1_2Adapter, VtsHalWifiV1_2IfaceFuzzer, VtsHalWifiV1_2Target, VtsHalWifiV1_2TargetProfiling of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsHal',
+        test_name='cheets_VTS.9_r11.arm.VtsHal',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsHalAudioCommonV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioCommonV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV2_0Target', '--include-filter', 'VtsHalAudioEffectV2_0TargetProfiling', '--include-filter', 'VtsHalAudioEffectV2_0TargetReplay', '--include-filter', 'VtsHalAudioEffectV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV4_0Target', '--include-filter', 'VtsHalAudioEffectV4_0TargetProfiling', '--include-filter', 'VtsHalAudioV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioV2_0Target', '--include-filter', 'VtsHalAudioV2_0TargetProfiling', '--include-filter', 'VtsHalAudioV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioV4_0Target', '--include-filter', 'VtsHalAudioV4_0TargetProfiling', '--include-filter', 'VtsHalAuthSecretV1_0Target', '--include-filter', 'VtsHalAuthsecretV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveAudiocontrolV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveEvsV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveVehicleV2_0Host', '--include-filter', 'VtsHalAutomotiveVehicleV2_0HostProfiling', '--include-filter', 'VtsHalAutomotiveVehicleV2_0IfaceFuzzer', '--include-filter', 'VtsHalBaseV1_0TargetTest', '--include-filter', 'VtsHalBiometricsFingerprintV2_1IfaceFuzzer', '--include-filter', 'VtsHalBiometricsFingerprintV2_1Target', '--include-filter', 'VtsHalBiometricsFingerprintV2_1TargetProfiling', '--include-filter', 'VtsHalBiometricsFingerprintV2_1TargetReplay', '--include-filter', 'VtsHalBluetoothA2DpV1_0IfaceFuzzer', '--include-filter', 'VtsHalBluetoothV1_0IfaceFuzzer', '--include-filter', 'VtsHalBluetoothV1_0Target', '--include-filter', 'VtsHalBluetoothV1_0TargetProfiling', '--include-filter', 'VtsHalBluetoothV1_0TargetReplay', '--include-filter', 'VtsHalBootV1_0IfaceFuzzer', '--include-filter', 'VtsHalBootV1_0Target', '--include-filter', 'VtsHalBootV1_0TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV1_0IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV1_0Target', '--include-filter', 'VtsHalBroadcastradioV1_0TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV1_1Adapter', '--include-filter', 'VtsHalBroadcastradioV1_1IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV1_1Target', '--include-filter', 'VtsHalBroadcastradioV1_1TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV2_0IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV2_0Target', '--include-filter', 'VtsHalBroadcastradioV2_0TargetProfiling', '--include-filter', 'VtsHalCameraCommonV1_0IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV1_0IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_2IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_3Adapter', '--include-filter', 'VtsHalCameraDeviceV3_3IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_4Adapter', '--include-filter', 'VtsHalCameraDeviceV3_4IfaceFuzzer', '--include-filter', 'VtsHalCameraMetadataV3_2IfaceFuzzer', '--include-filter', 'VtsHalCameraMetadataV3_3Adapter', '--include-filter', 'VtsHalCameraMetadataV3_3IfaceFuzzer', '--include-filter', 'VtsHalCameraProviderV2_4IfaceFuzzer', '--include-filter', 'VtsHalCameraProviderV2_4Target', '--include-filter', 'VtsHalCameraProviderV2_4TargetProfiling', '--include-filter', 'VtsHalCasNativeV1_0IfaceFuzzer', '--include-filter', 'VtsHalCasV1_0IfaceFuzzer', '--include-filter', 'VtsHalCasV1_0Target', '--include-filter', 'VtsHalConfigstoreV1_0IfaceFuzzer', '--include-filter', 'VtsHalConfigstoreV1_0Target', '--include-filter', 'VtsHalConfigstoreV1_0TargetProfiling', '--include-filter', 'VtsHalConfigstoreV1_0TargetReplay', '--include-filter', 'VtsHalConfigstoreV1_1IfaceFuzzer', '--include-filter', 'VtsHalConfirmationuiV1_0IfaceFuzzer', '--include-filter', 'VtsHalContexthubV1_0Host', '--include-filter', 'VtsHalContexthubV1_0IfaceFuzzer', '--include-filter', 'VtsHalContexthubV1_0Target', '--include-filter', 'VtsHalContexthubV1_0TargetProfiling', '--include-filter', 'VtsHalContexthubV1_0TargetReplay', '--include-filter', 'VtsHalCoverageMeasurement', '--include-filter', 'VtsHalDrmV1_0IfaceFuzzer', '--include-filter', 'VtsHalDrmV1_0Target', '--include-filter', 'VtsHalDrmV1_0TargetProfiling', '--include-filter', 'VtsHalDrmV1_1Adapter', '--include-filter', 'VtsHalDrmV1_1IfaceFuzzer', '--include-filter', 'VtsHalDrmV1_1Target', '--include-filter', 'VtsHalDrmV1_1TargetProfiling', '--include-filter', 'VtsHalDumpstateV1_0IfaceFuzzer', '--include-filter', 'VtsHalDumpstateV1_0Target', '--include-filter', 'VtsHalEvsV1_0Target', '--include-filter', 'VtsHalEvsV1_0TargetProfiling', '--include-filter', 'VtsHalGatekeeperV1_0IfaceFuzzer', '--include-filter', 'VtsHalGatekeeperV1_0Target', '--include-filter', 'VtsHalGatekeeperV1_0TargetProfiling', '--include-filter', 'VtsHalGatekeeperV1_0TargetReplay', '--include-filter', 'VtsHalGnssV1_0HostBinderize', '--include-filter', 'VtsHalGnssV1_0IfaceFuzzer', '--include-filter', 'VtsHalGnssV1_0Target', '--include-filter', 'VtsHalGnssV1_0TargetProfiling', '--include-filter', 'VtsHalGnssV1_1Adapter', '--include-filter', 'VtsHalGnssV1_1IfaceFuzzer', '--include-filter', 'VtsHalGnssV1_1Target', '--include-filter', 'VtsHalGraphicsAllocatorV2_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsBufferqueueV1_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsCommonV1_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsCommonV1_1Adapter', '--include-filter', 'VtsHalGraphicsCommonV1_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_1Target', '--include-filter', 'VtsHalGraphicsComposerV2_1TargetProfiling', '--include-filter', 'VtsHalGraphicsComposerV2_2Adapter', '--include-filter', 'VtsHalGraphicsComposerV2_2IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_2Target', '--include-filter', 'VtsHalGraphicsMapperV2_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsMapperV2_0Target', '--include-filter', 'VtsHalGraphicsMapperV2_0TargetProfiling', '--include-filter', 'VtsHalGraphicsMapperV2_1Adapter', '--include-filter', 'VtsHalGraphicsMapperV2_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsMapperV2_1Target', '--include-filter', 'VtsHalGraphicsMapperV2_1TargetProfiling', '--include-filter', 'VtsHalHealthV1_0IfaceFuzzer', '--include-filter', 'VtsHalHealthV1_0Target', '--include-filter', 'VtsHalHealthV1_0TargetProfiling', '--include-filter', 'VtsHalHealthV2_0IfaceFuzzer', '--include-filter', 'VtsHalHealthV2_0Target', '--include-filter', 'VtsHalIrV1_0IfaceFuzzer', '--include-filter', 'VtsHalIrV1_0Target', '--include-filter', 'VtsHalIrV1_0TargetProfiling', '--include-filter', 'VtsHalKeymasterV3_0IfaceFuzzer', '--include-filter', 'VtsHalKeymasterV3_0Target', '--include-filter', 'VtsHalKeymasterV3_0TargetProfiling', '--include-filter', 'VtsHalKeymasterV3_0TargetReplay', '--include-filter', 'VtsHalKeymasterV4_0IfaceFuzzer', '--include-filter', 'VtsHalKeymasterV4_0Target', '--include-filter', 'VtsHalKeymasterV4_0TargetProfiling', '--include-filter', 'VtsHalLightV2_0IfaceFuzzer', '--include-filter', 'VtsHalLightV2_0Target', '--include-filter', 'VtsHalLightV2_0TargetProfiling', '--include-filter', 'VtsHalLightV2_0TargetReplay', '--include-filter', 'VtsHalLightsTestCases', '--include-filter', 'VtsHalMediaBufferpoolV1_0IfaceFuzzer', '--include-filter', 'VtsHalMediaOmxStoreV1_0Host', '--include-filter', 'VtsHalMediaOmxV1_0Host', '--include-filter', 'VtsHalMediaOmxV1_0IfaceFuzzer', '--include-filter', 'VtsHalMediaV1_0IfaceFuzzer', '--include-filter', 'VtsHalMemtrackV1_0IfaceFuzzer', '--include-filter', 'VtsHalMemtrackV1_0Target', '--include-filter', 'VtsHalMemtrackV1_0TargetProfiling', '--include-filter', 'VtsHalMemtrackV1_0TargetReplay', '--include-filter', 'VtsHalNetNetdV1_0Target', '--include-filter', 'VtsHalNetNetdV1_0TargetProfiling', '--include-filter', 'VtsHalNetNetdV1_1Target', '--include-filter', 'VtsHalNetNetdV1_1TargetProfiling', '--include-filter', 'VtsHalNeuralnetworksV1_0IfaceFuzzer', '--include-filter', 'VtsHalNeuralnetworksV1_0Target', '--include-filter', 'VtsHalNeuralnetworksV1_0TargetProfiling', '--include-filter', 'VtsHalNeuralnetworksV1_1Adapter', '--include-filter', 'VtsHalNeuralnetworksV1_1IfaceFuzzer', '--include-filter', 'VtsHalNeuralnetworksV1_1Target', '--include-filter', 'VtsHalNeuralnetworksV1_1TargetProfiling', '--include-filter', 'VtsHalNfcV1_0HostBinderize', '--include-filter', 'VtsHalNfcV1_0HostPassthrough', '--include-filter', 'VtsHalNfcV1_0HostProfiling', '--include-filter', 'VtsHalNfcV1_0IfaceFuzzer', '--include-filter', 'VtsHalNfcV1_0Target', '--include-filter', 'VtsHalNfcV1_0TargetProfiling', '--include-filter', 'VtsHalNfcV1_0TargetReplay', '--include-filter', 'VtsHalNfcV1_1Adapter', '--include-filter', 'VtsHalNfcV1_1IfaceFuzzer', '--include-filter', 'VtsHalNfcV1_1Target', '--include-filter', 'VtsHalNfcV1_1TargetProfiling', '--include-filter', 'VtsHalOemLockV1_0Target', '--include-filter', 'VtsHalOemLockV1_0TargetProfiling', '--include-filter', 'VtsHalOemlockV1_0IfaceFuzzer', '--include-filter', 'VtsHalPowerTestCases', '--include-filter', 'VtsHalPowerV1_0IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_0Target', '--include-filter', 'VtsHalPowerV1_0TargetProfiling', '--include-filter', 'VtsHalPowerV1_0TargetReplay', '--include-filter', 'VtsHalPowerV1_1Adapter', '--include-filter', 'VtsHalPowerV1_1IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_1Target', '--include-filter', 'VtsHalPowerV1_1TargetProfiling', '--include-filter', 'VtsHalPowerV1_2Adapter', '--include-filter', 'VtsHalPowerV1_2IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_2Target', '--include-filter', 'VtsHalPowerV1_3Target', '--include-filter', 'VtsHalRadioConfigV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioDeprecatedV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_0Host', '--include-filter', 'VtsHalRadioV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_0Target', '--include-filter', 'VtsHalRadioV1_0TargetProfiling', '--include-filter', 'VtsHalRadioV1_1Adapter', '--include-filter', 'VtsHalRadioV1_1IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_1Target', '--include-filter', 'VtsHalRadioV1_2Adapter', '--include-filter', 'VtsHalRadioV1_2IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_2Target', '--include-filter', 'VtsHalRenderscriptV1_0IfaceFuzzer', '--include-filter', 'VtsHalRenderscriptV1_0Target', '--include-filter', 'VtsHalRenderscriptV1_0TargetProfiling', '--include-filter', 'VtsHalSapV1_0Target', '--include-filter', 'VtsHalSapV1_0TargetProfiling', '--include-filter', 'VtsHalSecureElementV1_0Target', '--include-filter', 'VtsHalSecureElementV1_0TargetProfiling', '--include-filter', 'VtsHalSecure_ElementV1_0IfaceFuzzer', '--include-filter', 'VtsHalSensorsV1_0Host', '--include-filter', 'VtsHalSensorsV1_0HostProfiling', '--include-filter', 'VtsHalSensorsV1_0IfaceFuzzer', '--include-filter', 'VtsHalSensorsV1_0Target', '--include-filter', 'VtsHalSensorsV1_0TargetProfiling', '--include-filter', 'VtsHalSoundtriggerV2_0IfaceFuzzer', '--include-filter', 'VtsHalSoundtriggerV2_0Target', '--include-filter', 'VtsHalSoundtriggerV2_0TargetProfiling', '--include-filter', 'VtsHalSoundtriggerV2_1Adapter', '--include-filter', 'VtsHalSoundtriggerV2_1IfaceFuzzer', '--include-filter', 'VtsHalSoundtriggerV2_1Target', '--include-filter', 'VtsHalSoundtriggerV2_1TargetProfiling', '--include-filter', 'VtsHalTetherOffloadConfigV1_0Target', '--include-filter', 'VtsHalTetherOffloadConfigV1_0TargetProfiling', '--include-filter', 'VtsHalTetherOffloadControlV1_0Target', '--include-filter', 'VtsHalTetherOffloadControlV1_0TargetProfiling', '--include-filter', 'VtsHalTetheroffloadConfigV1_0IfaceFuzzer', '--include-filter', 'VtsHalTetheroffloadControlV1_0IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_0IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_0Target', '--include-filter', 'VtsHalThermalV1_0TargetProfiling', '--include-filter', 'VtsHalThermalV1_0TargetReplay', '--include-filter', 'VtsHalThermalV1_1Adapter', '--include-filter', 'VtsHalThermalV1_1IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_1Target', '--include-filter', 'VtsHalThermalV1_1TargetProfiling', '--include-filter', 'VtsHalTvCecV1_0Host', '--include-filter', 'VtsHalTvCecV1_0HostProfiling', '--include-filter', 'VtsHalTvCecV1_0IfaceFuzzer', '--include-filter', 'VtsHalTvInputV1_0Host', '--include-filter', 'VtsHalTvInputV1_0HostProfiling', '--include-filter', 'VtsHalTvInputV1_0IfaceFuzzer', '--include-filter', 'VtsHalTvInputV1_0Target', '--include-filter', 'VtsHalTvInputV1_0TargetProfiling', '--include-filter', 'VtsHalUsbGadgetV1_0Host', '--include-filter', 'VtsHalUsbGadgetV1_0IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_0IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_0Target', '--include-filter', 'VtsHalUsbV1_0TargetProfiling', '--include-filter', 'VtsHalUsbV1_0TargetReplay', '--include-filter', 'VtsHalUsbV1_1Adapter', '--include-filter', 'VtsHalUsbV1_1IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_1Target', '--include-filter', 'VtsHalVibratorV1_0Host', '--include-filter', 'VtsHalVibratorV1_0HostProfiling', '--include-filter', 'VtsHalVibratorV1_0IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_0Target', '--include-filter', 'VtsHalVibratorV1_0TargetProfiling', '--include-filter', 'VtsHalVibratorV1_0TargetReplay', '--include-filter', 'VtsHalVibratorV1_1Adapter', '--include-filter', 'VtsHalVibratorV1_1IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_1Target', '--include-filter', 'VtsHalVibratorV1_2Adapter', '--include-filter', 'VtsHalVibratorV1_2IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_2Target', '--include-filter', 'VtsHalVrV1_0Host', '--include-filter', 'VtsHalVrV1_0IfaceFuzzer', '--include-filter', 'VtsHalVrV1_0Target', '--include-filter', 'VtsHalVrV1_0TargetProfiling', '--include-filter', 'VtsHalVrV1_0TargetReplay', '--include-filter', 'VtsHalWeaverV1_0IfaceFuzzer', '--include-filter', 'VtsHalWeaverV1_0Target', '--include-filter', 'VtsHalWeaverV1_0TargetProfiling', '--include-filter', 'VtsHalWifiHostapdV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiNanV1_0Target', '--include-filter', 'VtsHalWifiNanV1_0TargetProfiling', '--include-filter', 'VtsHalWifiOffloadV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiOffloadV1_0Target', '--include-filter', 'VtsHalWifiSupplicantV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiSupplicantV1_0Target', '--include-filter', 'VtsHalWifiSupplicantV1_0TargetProfiling', '--include-filter', 'VtsHalWifiSupplicantV1_1Adapter', '--include-filter', 'VtsHalWifiSupplicantV1_1IfaceFuzzer', '--include-filter', 'VtsHalWifiSupplicantV1_1Target', '--include-filter', 'VtsHalWifiSupplicantV1_1TargetProfiling', '--include-filter', 'VtsHalWifiV1_0Host', '--include-filter', 'VtsHalWifiV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_0TargetProfiling', '--include-filter', 'VtsHalWifiV1_1Adapter', '--include-filter', 'VtsHalWifiV1_1IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_1Target', '--include-filter', 'VtsHalWifiV1_1TargetProfiling', '--include-filter', 'VtsHalWifiV1_2Adapter', '--include-filter', 'VtsHalWifiV1_2IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_2Target', '--include-filter', 'VtsHalWifiV1_2TargetProfiling', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsHal',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=516600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHidlUnitTests b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHidlUnitTests
new file mode 100644
index 0000000..652afeb
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsHidlUnitTests
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsHidlUnitTests'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsHidlUnitTests of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsHidlUnitTests',
+        test_name='cheets_VTS.9_r11.arm.VtsHidlUnitTests',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsHidlUnitTests', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsHidlUnitTests',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsKernel b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsKernel
new file mode 100644
index 0000000..cc29a20
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsKernel
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsKernel'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsKernelApiSysfsTest, VtsKernelBinderTest, VtsKernelConfig, VtsKernelDeviceTreeEarlyMount, VtsKernelFuzzTest, VtsKernelHwBinder, VtsKernelLibcutilsTest, VtsKernelLinuxKselftest, VtsKernelLinuxKselftestPresubmit, VtsKernelLinuxKselftestStaging, VtsKernelLtp, VtsKernelLtpStaging, VtsKernelNetBpfTest, VtsKernelNetTest, VtsKernelNetdTest, VtsKernelProcFileApi, VtsKernelQtaguidTest, VtsKernelRootDir, VtsKernelSelinuxFileApi, VtsKernelSyscallExistence, VtsKernelSystemAsRoot, VtsKernelTunTest, VtsKernelVersion of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsKernel',
+        test_name='cheets_VTS.9_r11.arm.VtsKernel',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsKernelApiSysfsTest', '--include-filter', 'VtsKernelBinderTest', '--include-filter', 'VtsKernelConfig', '--include-filter', 'VtsKernelDeviceTreeEarlyMount', '--include-filter', 'VtsKernelFuzzTest', '--include-filter', 'VtsKernelHwBinder', '--include-filter', 'VtsKernelLibcutilsTest', '--include-filter', 'VtsKernelLinuxKselftest', '--include-filter', 'VtsKernelLinuxKselftestPresubmit', '--include-filter', 'VtsKernelLinuxKselftestStaging', '--include-filter', 'VtsKernelLtp', '--include-filter', 'VtsKernelLtpStaging', '--include-filter', 'VtsKernelNetBpfTest', '--include-filter', 'VtsKernelNetTest', '--include-filter', 'VtsKernelNetdTest', '--include-filter', 'VtsKernelProcFileApi', '--include-filter', 'VtsKernelQtaguidTest', '--include-filter', 'VtsKernelRootDir', '--include-filter', 'VtsKernelSelinuxFileApi', '--include-filter', 'VtsKernelSyscallExistence', '--include-filter', 'VtsKernelSystemAsRoot', '--include-filter', 'VtsKernelTunTest', '--include-filter', 'VtsKernelVersion', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsKernel',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=43200)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsNbu b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsNbu
new file mode 100644
index 0000000..0fb9b80
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsNbu
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsNbu'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsNbu of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsNbu',
+        test_name='cheets_VTS.9_r11.arm.VtsNbu',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsNbu', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsNbu',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsSelfTest b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsSelfTest
new file mode 100644
index 0000000..87d8e42
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsSelfTest
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsSelfTest'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsSelfTestBaseTest, VtsSelfTestFlakyHidlTest, VtsSelfTestFlakyTest, VtsSelfTestPythonVirtualenvPreparerTestPart1, VtsSelfTestPythonVirtualenvPreparerTestPart2, VtsSelfTestShellPerformance, VtsSelfTestZeroTestCaseBinaryTest of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsSelfTest',
+        test_name='cheets_VTS.9_r11.arm.VtsSelfTest',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsSelfTestBaseTest', '--include-filter', 'VtsSelfTestFlakyHidlTest', '--include-filter', 'VtsSelfTestFlakyTest', '--include-filter', 'VtsSelfTestPythonVirtualenvPreparerTestPart1', '--include-filter', 'VtsSelfTestPythonVirtualenvPreparerTestPart2', '--include-filter', 'VtsSelfTestShellPerformance', '--include-filter', 'VtsSelfTestZeroTestCaseBinaryTest', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsSelfTest',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=14400)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsTreble b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsTreble
new file mode 100644
index 0000000..f9f7211
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsTreble
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsTreble'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsTrebleFrameworkVintfTest, VtsTreblePlatformVersionTest, VtsTrebleSysProp, VtsTrebleVendorVintfTest, VtsTrebleVintfTestOMr1 of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsTreble',
+        test_name='cheets_VTS.9_r11.arm.VtsTreble',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsTrebleFrameworkVintfTest', '--include-filter', 'VtsTreblePlatformVersionTest', '--include-filter', 'VtsTrebleSysProp', '--include-filter', 'VtsTrebleVendorVintfTest', '--include-filter', 'VtsTrebleVintfTestOMr1', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsTreble',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=10800)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.VtsVndk b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsVndk
new file mode 100644
index 0000000..55bbc9e
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.VtsVndk
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.VtsVndk'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsVndkAbi, VtsVndkDependency, VtsVndkFiles, VtsVndkHidlBufferpoolV1_0Target, VtsVndkOpenLibraries of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.VtsVndk',
+        test_name='cheets_VTS.9_r11.arm.VtsVndk',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsVndkAbi', '--include-filter', 'VtsVndkDependency', '--include-filter', 'VtsVndkFiles', '--include-filter', 'VtsVndkHidlBufferpoolV1_0Target', '--include-filter', 'VtsVndkOpenLibraries', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsVndk',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=10800)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.tradefed-run-collect-tests-only-internal b/server/site_tests/cheets_VTS/control.9_r11.arm.tradefed-run-collect-tests-only-internal
new file mode 100644
index 0000000..2d2e482
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.tradefed-run-collect-tests-only-internal
@@ -0,0 +1,34 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.tradefed-run-collect-tests-only-internal'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 0
+TEST_TYPE = 'server'
+TIME = 'LENGTHY'
+MAX_RESULT_SIZE_KB = 1024000
+DOC = 'Run all of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        max_retry=0,
+        tag='9_r11.arm.tradefed-run-collect-tests-only-internal',
+        test_name='cheets_VTS.9_r11.arm.tradefed-run-collect-tests-only-internal',
+        run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot'],
+        retry_template=None,
+        target_module=None,
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=7200)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.arm.vm-tests-tf b/server/site_tests/cheets_VTS/control.9_r11.arm.vm-tests-tf
new file mode 100644
index 0000000..4de6248
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.arm.vm-tests-tf
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.arm.vm-tests-tf'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module vm-tests-tf of the Vendor Test Suite (VTS) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.arm.vm-tests-tf',
+        test_name='cheets_VTS.9_r11.arm.vm-tests-tf',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'vm-tests-tf', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='vm-tests-tf',
+        target_plan=None,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsAppWifiNativeTest b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsAppWifiNativeTest
new file mode 100644
index 0000000..2f6607b
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsAppWifiNativeTest
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsAppWifiNativeTest'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsAppWifiNativeTest of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsAppWifiNativeTest',
+        test_name='cheets_VTS.9_r11.x86.VtsAppWifiNativeTest',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsAppWifiNativeTest', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsAppWifiNativeTest',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsCodelab b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsCodelab
new file mode 100644
index 0000000..6f408c5
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsCodelab
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsCodelab'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsCodelabHelloWorldMultiDeviceTest, VtsCodelabHelloWorldSl4aTest, VtsCodelabHelloWorldStagingTest, VtsCodelabHelloWorldTest, VtsCodelabHostDrivenMultiHalTest, VtsCodelabTargetBinary of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsCodelab',
+        test_name='cheets_VTS.9_r11.x86.VtsCodelab',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsCodelabHelloWorldMultiDeviceTest', '--include-filter', 'VtsCodelabHelloWorldSl4aTest', '--include-filter', 'VtsCodelabHelloWorldStagingTest', '--include-filter', 'VtsCodelabHelloWorldTest', '--include-filter', 'VtsCodelabHostDrivenMultiHalTest', '--include-filter', 'VtsCodelabTargetBinary', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsCodelab',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=12600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsDeviceHealth b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsDeviceHealth
new file mode 100644
index 0000000..8a26064
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsDeviceHealth
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsDeviceHealth'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsDeviceHealth of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsDeviceHealth',
+        test_name='cheets_VTS.9_r11.x86.VtsDeviceHealth',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsDeviceHealth', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsDeviceHealth',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFirmware b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFirmware
new file mode 100644
index 0000000..d00a775
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFirmware
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsFirmware'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsFirmwareBootHeaderVerification, VtsFirmwareDtboVerification of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsFirmware',
+        test_name='cheets_VTS.9_r11.x86.VtsFirmware',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsFirmwareBootHeaderVerification', '--include-filter', 'VtsFirmwareDtboVerification', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsFirmware',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=5400)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFmqUnitTests b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFmqUnitTests
new file mode 100644
index 0000000..c58d352
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsFmqUnitTests
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsFmqUnitTests'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsFmqUnitTests of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsFmqUnitTests',
+        test_name='cheets_VTS.9_r11.x86.VtsFmqUnitTests',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsFmqUnitTests', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsFmqUnitTests',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHal b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHal
new file mode 100644
index 0000000..84a66f1
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHal
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsHal'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsHalAudioCommonV2_0IfaceFuzzer, VtsHalAudioCommonV4_0IfaceFuzzer, VtsHalAudioEffectV2_0IfaceFuzzer, VtsHalAudioEffectV2_0Target, VtsHalAudioEffectV2_0TargetProfiling, VtsHalAudioEffectV2_0TargetReplay, VtsHalAudioEffectV4_0IfaceFuzzer, VtsHalAudioEffectV4_0Target, VtsHalAudioEffectV4_0TargetProfiling, VtsHalAudioV2_0IfaceFuzzer, VtsHalAudioV2_0Target, VtsHalAudioV2_0TargetProfiling, VtsHalAudioV4_0IfaceFuzzer, VtsHalAudioV4_0Target, VtsHalAudioV4_0TargetProfiling, VtsHalAuthSecretV1_0Target, VtsHalAuthsecretV1_0IfaceFuzzer, VtsHalAutomotiveAudiocontrolV1_0IfaceFuzzer, VtsHalAutomotiveEvsV1_0IfaceFuzzer, VtsHalAutomotiveVehicleV2_0Host, VtsHalAutomotiveVehicleV2_0HostProfiling, VtsHalAutomotiveVehicleV2_0IfaceFuzzer, VtsHalBaseV1_0TargetTest, VtsHalBiometricsFingerprintV2_1IfaceFuzzer, VtsHalBiometricsFingerprintV2_1Target, VtsHalBiometricsFingerprintV2_1TargetProfiling, VtsHalBiometricsFingerprintV2_1TargetReplay, VtsHalBluetoothA2DpV1_0IfaceFuzzer, VtsHalBluetoothV1_0IfaceFuzzer, VtsHalBluetoothV1_0Target, VtsHalBluetoothV1_0TargetProfiling, VtsHalBluetoothV1_0TargetReplay, VtsHalBootV1_0IfaceFuzzer, VtsHalBootV1_0Target, VtsHalBootV1_0TargetProfiling, VtsHalBroadcastradioV1_0IfaceFuzzer, VtsHalBroadcastradioV1_0Target, VtsHalBroadcastradioV1_0TargetProfiling, VtsHalBroadcastradioV1_1Adapter, VtsHalBroadcastradioV1_1IfaceFuzzer, VtsHalBroadcastradioV1_1Target, VtsHalBroadcastradioV1_1TargetProfiling, VtsHalBroadcastradioV2_0IfaceFuzzer, VtsHalBroadcastradioV2_0Target, VtsHalBroadcastradioV2_0TargetProfiling, VtsHalCameraCommonV1_0IfaceFuzzer, VtsHalCameraDeviceV1_0IfaceFuzzer, VtsHalCameraDeviceV3_2IfaceFuzzer, VtsHalCameraDeviceV3_3Adapter, VtsHalCameraDeviceV3_3IfaceFuzzer, VtsHalCameraDeviceV3_4Adapter, VtsHalCameraDeviceV3_4IfaceFuzzer, VtsHalCameraMetadataV3_2IfaceFuzzer, VtsHalCameraMetadataV3_3Adapter, VtsHalCameraMetadataV3_3IfaceFuzzer, VtsHalCameraProviderV2_4IfaceFuzzer, VtsHalCameraProviderV2_4Target, VtsHalCameraProviderV2_4TargetProfiling, VtsHalCasNativeV1_0IfaceFuzzer, VtsHalCasV1_0IfaceFuzzer, VtsHalCasV1_0Target, VtsHalConfigstoreV1_0IfaceFuzzer, VtsHalConfigstoreV1_0Target, VtsHalConfigstoreV1_0TargetProfiling, VtsHalConfigstoreV1_0TargetReplay, VtsHalConfigstoreV1_1IfaceFuzzer, VtsHalConfirmationuiV1_0IfaceFuzzer, VtsHalContexthubV1_0Host, VtsHalContexthubV1_0IfaceFuzzer, VtsHalContexthubV1_0Target, VtsHalContexthubV1_0TargetProfiling, VtsHalContexthubV1_0TargetReplay, VtsHalCoverageMeasurement, VtsHalDrmV1_0IfaceFuzzer, VtsHalDrmV1_0Target, VtsHalDrmV1_0TargetProfiling, VtsHalDrmV1_1Adapter, VtsHalDrmV1_1IfaceFuzzer, VtsHalDrmV1_1Target, VtsHalDrmV1_1TargetProfiling, VtsHalDumpstateV1_0IfaceFuzzer, VtsHalDumpstateV1_0Target, VtsHalEvsV1_0Target, VtsHalEvsV1_0TargetProfiling, VtsHalGatekeeperV1_0IfaceFuzzer, VtsHalGatekeeperV1_0Target, VtsHalGatekeeperV1_0TargetProfiling, VtsHalGatekeeperV1_0TargetReplay, VtsHalGnssV1_0HostBinderize, VtsHalGnssV1_0IfaceFuzzer, VtsHalGnssV1_0Target, VtsHalGnssV1_0TargetProfiling, VtsHalGnssV1_1Adapter, VtsHalGnssV1_1IfaceFuzzer, VtsHalGnssV1_1Target, VtsHalGraphicsAllocatorV2_0IfaceFuzzer, VtsHalGraphicsBufferqueueV1_0IfaceFuzzer, VtsHalGraphicsCommonV1_0IfaceFuzzer, VtsHalGraphicsCommonV1_1Adapter, VtsHalGraphicsCommonV1_1IfaceFuzzer, VtsHalGraphicsComposerV2_1IfaceFuzzer, VtsHalGraphicsComposerV2_1Target, VtsHalGraphicsComposerV2_1TargetProfiling, VtsHalGraphicsComposerV2_2Adapter, VtsHalGraphicsComposerV2_2IfaceFuzzer, VtsHalGraphicsComposerV2_2Target, VtsHalGraphicsMapperV2_0IfaceFuzzer, VtsHalGraphicsMapperV2_0Target, VtsHalGraphicsMapperV2_0TargetProfiling, VtsHalGraphicsMapperV2_1Adapter, VtsHalGraphicsMapperV2_1IfaceFuzzer, VtsHalGraphicsMapperV2_1Target, VtsHalGraphicsMapperV2_1TargetProfiling, VtsHalHealthV1_0IfaceFuzzer, VtsHalHealthV1_0Target, VtsHalHealthV1_0TargetProfiling, VtsHalHealthV2_0IfaceFuzzer, VtsHalHealthV2_0Target, VtsHalIrV1_0IfaceFuzzer, VtsHalIrV1_0Target, VtsHalIrV1_0TargetProfiling, VtsHalKeymasterV3_0IfaceFuzzer, VtsHalKeymasterV3_0Target, VtsHalKeymasterV3_0TargetProfiling, VtsHalKeymasterV3_0TargetReplay, VtsHalKeymasterV4_0IfaceFuzzer, VtsHalKeymasterV4_0Target, VtsHalKeymasterV4_0TargetProfiling, VtsHalLightV2_0IfaceFuzzer, VtsHalLightV2_0Target, VtsHalLightV2_0TargetProfiling, VtsHalLightV2_0TargetReplay, VtsHalLightsTestCases, VtsHalMediaBufferpoolV1_0IfaceFuzzer, VtsHalMediaOmxStoreV1_0Host, VtsHalMediaOmxV1_0Host, VtsHalMediaOmxV1_0IfaceFuzzer, VtsHalMediaV1_0IfaceFuzzer, VtsHalMemtrackV1_0IfaceFuzzer, VtsHalMemtrackV1_0Target, VtsHalMemtrackV1_0TargetProfiling, VtsHalMemtrackV1_0TargetReplay, VtsHalNetNetdV1_0Target, VtsHalNetNetdV1_0TargetProfiling, VtsHalNetNetdV1_1Target, VtsHalNetNetdV1_1TargetProfiling, VtsHalNeuralnetworksV1_0IfaceFuzzer, VtsHalNeuralnetworksV1_0Target, VtsHalNeuralnetworksV1_0TargetProfiling, VtsHalNeuralnetworksV1_1Adapter, VtsHalNeuralnetworksV1_1IfaceFuzzer, VtsHalNeuralnetworksV1_1Target, VtsHalNeuralnetworksV1_1TargetProfiling, VtsHalNfcV1_0HostBinderize, VtsHalNfcV1_0HostPassthrough, VtsHalNfcV1_0HostProfiling, VtsHalNfcV1_0IfaceFuzzer, VtsHalNfcV1_0Target, VtsHalNfcV1_0TargetProfiling, VtsHalNfcV1_0TargetReplay, VtsHalNfcV1_1Adapter, VtsHalNfcV1_1IfaceFuzzer, VtsHalNfcV1_1Target, VtsHalNfcV1_1TargetProfiling, VtsHalOemLockV1_0Target, VtsHalOemLockV1_0TargetProfiling, VtsHalOemlockV1_0IfaceFuzzer, VtsHalPowerTestCases, VtsHalPowerV1_0IfaceFuzzer, VtsHalPowerV1_0Target, VtsHalPowerV1_0TargetProfiling, VtsHalPowerV1_0TargetReplay, VtsHalPowerV1_1Adapter, VtsHalPowerV1_1IfaceFuzzer, VtsHalPowerV1_1Target, VtsHalPowerV1_1TargetProfiling, VtsHalPowerV1_2Adapter, VtsHalPowerV1_2IfaceFuzzer, VtsHalPowerV1_2Target, VtsHalPowerV1_3Target, VtsHalRadioConfigV1_0IfaceFuzzer, VtsHalRadioDeprecatedV1_0IfaceFuzzer, VtsHalRadioV1_0Host, VtsHalRadioV1_0IfaceFuzzer, VtsHalRadioV1_0Target, VtsHalRadioV1_0TargetProfiling, VtsHalRadioV1_1Adapter, VtsHalRadioV1_1IfaceFuzzer, VtsHalRadioV1_1Target, VtsHalRadioV1_2Adapter, VtsHalRadioV1_2IfaceFuzzer, VtsHalRadioV1_2Target, VtsHalRenderscriptV1_0IfaceFuzzer, VtsHalRenderscriptV1_0Target, VtsHalRenderscriptV1_0TargetProfiling, VtsHalSapV1_0Target, VtsHalSapV1_0TargetProfiling, VtsHalSecureElementV1_0Target, VtsHalSecureElementV1_0TargetProfiling, VtsHalSecure_ElementV1_0IfaceFuzzer, VtsHalSensorsV1_0Host, VtsHalSensorsV1_0HostProfiling, VtsHalSensorsV1_0IfaceFuzzer, VtsHalSensorsV1_0Target, VtsHalSensorsV1_0TargetProfiling, VtsHalSoundtriggerV2_0IfaceFuzzer, VtsHalSoundtriggerV2_0Target, VtsHalSoundtriggerV2_0TargetProfiling, VtsHalSoundtriggerV2_1Adapter, VtsHalSoundtriggerV2_1IfaceFuzzer, VtsHalSoundtriggerV2_1Target, VtsHalSoundtriggerV2_1TargetProfiling, VtsHalTetherOffloadConfigV1_0Target, VtsHalTetherOffloadConfigV1_0TargetProfiling, VtsHalTetherOffloadControlV1_0Target, VtsHalTetherOffloadControlV1_0TargetProfiling, VtsHalTetheroffloadConfigV1_0IfaceFuzzer, VtsHalTetheroffloadControlV1_0IfaceFuzzer, VtsHalThermalV1_0IfaceFuzzer, VtsHalThermalV1_0Target, VtsHalThermalV1_0TargetProfiling, VtsHalThermalV1_0TargetReplay, VtsHalThermalV1_1Adapter, VtsHalThermalV1_1IfaceFuzzer, VtsHalThermalV1_1Target, VtsHalThermalV1_1TargetProfiling, VtsHalTvCecV1_0Host, VtsHalTvCecV1_0HostProfiling, VtsHalTvCecV1_0IfaceFuzzer, VtsHalTvInputV1_0Host, VtsHalTvInputV1_0HostProfiling, VtsHalTvInputV1_0IfaceFuzzer, VtsHalTvInputV1_0Target, VtsHalTvInputV1_0TargetProfiling, VtsHalUsbGadgetV1_0Host, VtsHalUsbGadgetV1_0IfaceFuzzer, VtsHalUsbV1_0IfaceFuzzer, VtsHalUsbV1_0Target, VtsHalUsbV1_0TargetProfiling, VtsHalUsbV1_0TargetReplay, VtsHalUsbV1_1Adapter, VtsHalUsbV1_1IfaceFuzzer, VtsHalUsbV1_1Target, VtsHalVibratorV1_0Host, VtsHalVibratorV1_0HostProfiling, VtsHalVibratorV1_0IfaceFuzzer, VtsHalVibratorV1_0Target, VtsHalVibratorV1_0TargetProfiling, VtsHalVibratorV1_0TargetReplay, VtsHalVibratorV1_1Adapter, VtsHalVibratorV1_1IfaceFuzzer, VtsHalVibratorV1_1Target, VtsHalVibratorV1_2Adapter, VtsHalVibratorV1_2IfaceFuzzer, VtsHalVibratorV1_2Target, VtsHalVrV1_0Host, VtsHalVrV1_0IfaceFuzzer, VtsHalVrV1_0Target, VtsHalVrV1_0TargetProfiling, VtsHalVrV1_0TargetReplay, VtsHalWeaverV1_0IfaceFuzzer, VtsHalWeaverV1_0Target, VtsHalWeaverV1_0TargetProfiling, VtsHalWifiHostapdV1_0IfaceFuzzer, VtsHalWifiNanV1_0Target, VtsHalWifiNanV1_0TargetProfiling, VtsHalWifiOffloadV1_0IfaceFuzzer, VtsHalWifiOffloadV1_0Target, VtsHalWifiSupplicantV1_0IfaceFuzzer, VtsHalWifiSupplicantV1_0Target, VtsHalWifiSupplicantV1_0TargetProfiling, VtsHalWifiSupplicantV1_1Adapter, VtsHalWifiSupplicantV1_1IfaceFuzzer, VtsHalWifiSupplicantV1_1Target, VtsHalWifiSupplicantV1_1TargetProfiling, VtsHalWifiV1_0Host, VtsHalWifiV1_0IfaceFuzzer, VtsHalWifiV1_0TargetProfiling, VtsHalWifiV1_1Adapter, VtsHalWifiV1_1IfaceFuzzer, VtsHalWifiV1_1Target, VtsHalWifiV1_1TargetProfiling, VtsHalWifiV1_2Adapter, VtsHalWifiV1_2IfaceFuzzer, VtsHalWifiV1_2Target, VtsHalWifiV1_2TargetProfiling of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsHal',
+        test_name='cheets_VTS.9_r11.x86.VtsHal',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsHalAudioCommonV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioCommonV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV2_0Target', '--include-filter', 'VtsHalAudioEffectV2_0TargetProfiling', '--include-filter', 'VtsHalAudioEffectV2_0TargetReplay', '--include-filter', 'VtsHalAudioEffectV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioEffectV4_0Target', '--include-filter', 'VtsHalAudioEffectV4_0TargetProfiling', '--include-filter', 'VtsHalAudioV2_0IfaceFuzzer', '--include-filter', 'VtsHalAudioV2_0Target', '--include-filter', 'VtsHalAudioV2_0TargetProfiling', '--include-filter', 'VtsHalAudioV4_0IfaceFuzzer', '--include-filter', 'VtsHalAudioV4_0Target', '--include-filter', 'VtsHalAudioV4_0TargetProfiling', '--include-filter', 'VtsHalAuthSecretV1_0Target', '--include-filter', 'VtsHalAuthsecretV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveAudiocontrolV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveEvsV1_0IfaceFuzzer', '--include-filter', 'VtsHalAutomotiveVehicleV2_0Host', '--include-filter', 'VtsHalAutomotiveVehicleV2_0HostProfiling', '--include-filter', 'VtsHalAutomotiveVehicleV2_0IfaceFuzzer', '--include-filter', 'VtsHalBaseV1_0TargetTest', '--include-filter', 'VtsHalBiometricsFingerprintV2_1IfaceFuzzer', '--include-filter', 'VtsHalBiometricsFingerprintV2_1Target', '--include-filter', 'VtsHalBiometricsFingerprintV2_1TargetProfiling', '--include-filter', 'VtsHalBiometricsFingerprintV2_1TargetReplay', '--include-filter', 'VtsHalBluetoothA2DpV1_0IfaceFuzzer', '--include-filter', 'VtsHalBluetoothV1_0IfaceFuzzer', '--include-filter', 'VtsHalBluetoothV1_0Target', '--include-filter', 'VtsHalBluetoothV1_0TargetProfiling', '--include-filter', 'VtsHalBluetoothV1_0TargetReplay', '--include-filter', 'VtsHalBootV1_0IfaceFuzzer', '--include-filter', 'VtsHalBootV1_0Target', '--include-filter', 'VtsHalBootV1_0TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV1_0IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV1_0Target', '--include-filter', 'VtsHalBroadcastradioV1_0TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV1_1Adapter', '--include-filter', 'VtsHalBroadcastradioV1_1IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV1_1Target', '--include-filter', 'VtsHalBroadcastradioV1_1TargetProfiling', '--include-filter', 'VtsHalBroadcastradioV2_0IfaceFuzzer', '--include-filter', 'VtsHalBroadcastradioV2_0Target', '--include-filter', 'VtsHalBroadcastradioV2_0TargetProfiling', '--include-filter', 'VtsHalCameraCommonV1_0IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV1_0IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_2IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_3Adapter', '--include-filter', 'VtsHalCameraDeviceV3_3IfaceFuzzer', '--include-filter', 'VtsHalCameraDeviceV3_4Adapter', '--include-filter', 'VtsHalCameraDeviceV3_4IfaceFuzzer', '--include-filter', 'VtsHalCameraMetadataV3_2IfaceFuzzer', '--include-filter', 'VtsHalCameraMetadataV3_3Adapter', '--include-filter', 'VtsHalCameraMetadataV3_3IfaceFuzzer', '--include-filter', 'VtsHalCameraProviderV2_4IfaceFuzzer', '--include-filter', 'VtsHalCameraProviderV2_4Target', '--include-filter', 'VtsHalCameraProviderV2_4TargetProfiling', '--include-filter', 'VtsHalCasNativeV1_0IfaceFuzzer', '--include-filter', 'VtsHalCasV1_0IfaceFuzzer', '--include-filter', 'VtsHalCasV1_0Target', '--include-filter', 'VtsHalConfigstoreV1_0IfaceFuzzer', '--include-filter', 'VtsHalConfigstoreV1_0Target', '--include-filter', 'VtsHalConfigstoreV1_0TargetProfiling', '--include-filter', 'VtsHalConfigstoreV1_0TargetReplay', '--include-filter', 'VtsHalConfigstoreV1_1IfaceFuzzer', '--include-filter', 'VtsHalConfirmationuiV1_0IfaceFuzzer', '--include-filter', 'VtsHalContexthubV1_0Host', '--include-filter', 'VtsHalContexthubV1_0IfaceFuzzer', '--include-filter', 'VtsHalContexthubV1_0Target', '--include-filter', 'VtsHalContexthubV1_0TargetProfiling', '--include-filter', 'VtsHalContexthubV1_0TargetReplay', '--include-filter', 'VtsHalCoverageMeasurement', '--include-filter', 'VtsHalDrmV1_0IfaceFuzzer', '--include-filter', 'VtsHalDrmV1_0Target', '--include-filter', 'VtsHalDrmV1_0TargetProfiling', '--include-filter', 'VtsHalDrmV1_1Adapter', '--include-filter', 'VtsHalDrmV1_1IfaceFuzzer', '--include-filter', 'VtsHalDrmV1_1Target', '--include-filter', 'VtsHalDrmV1_1TargetProfiling', '--include-filter', 'VtsHalDumpstateV1_0IfaceFuzzer', '--include-filter', 'VtsHalDumpstateV1_0Target', '--include-filter', 'VtsHalEvsV1_0Target', '--include-filter', 'VtsHalEvsV1_0TargetProfiling', '--include-filter', 'VtsHalGatekeeperV1_0IfaceFuzzer', '--include-filter', 'VtsHalGatekeeperV1_0Target', '--include-filter', 'VtsHalGatekeeperV1_0TargetProfiling', '--include-filter', 'VtsHalGatekeeperV1_0TargetReplay', '--include-filter', 'VtsHalGnssV1_0HostBinderize', '--include-filter', 'VtsHalGnssV1_0IfaceFuzzer', '--include-filter', 'VtsHalGnssV1_0Target', '--include-filter', 'VtsHalGnssV1_0TargetProfiling', '--include-filter', 'VtsHalGnssV1_1Adapter', '--include-filter', 'VtsHalGnssV1_1IfaceFuzzer', '--include-filter', 'VtsHalGnssV1_1Target', '--include-filter', 'VtsHalGraphicsAllocatorV2_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsBufferqueueV1_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsCommonV1_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsCommonV1_1Adapter', '--include-filter', 'VtsHalGraphicsCommonV1_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_1Target', '--include-filter', 'VtsHalGraphicsComposerV2_1TargetProfiling', '--include-filter', 'VtsHalGraphicsComposerV2_2Adapter', '--include-filter', 'VtsHalGraphicsComposerV2_2IfaceFuzzer', '--include-filter', 'VtsHalGraphicsComposerV2_2Target', '--include-filter', 'VtsHalGraphicsMapperV2_0IfaceFuzzer', '--include-filter', 'VtsHalGraphicsMapperV2_0Target', '--include-filter', 'VtsHalGraphicsMapperV2_0TargetProfiling', '--include-filter', 'VtsHalGraphicsMapperV2_1Adapter', '--include-filter', 'VtsHalGraphicsMapperV2_1IfaceFuzzer', '--include-filter', 'VtsHalGraphicsMapperV2_1Target', '--include-filter', 'VtsHalGraphicsMapperV2_1TargetProfiling', '--include-filter', 'VtsHalHealthV1_0IfaceFuzzer', '--include-filter', 'VtsHalHealthV1_0Target', '--include-filter', 'VtsHalHealthV1_0TargetProfiling', '--include-filter', 'VtsHalHealthV2_0IfaceFuzzer', '--include-filter', 'VtsHalHealthV2_0Target', '--include-filter', 'VtsHalIrV1_0IfaceFuzzer', '--include-filter', 'VtsHalIrV1_0Target', '--include-filter', 'VtsHalIrV1_0TargetProfiling', '--include-filter', 'VtsHalKeymasterV3_0IfaceFuzzer', '--include-filter', 'VtsHalKeymasterV3_0Target', '--include-filter', 'VtsHalKeymasterV3_0TargetProfiling', '--include-filter', 'VtsHalKeymasterV3_0TargetReplay', '--include-filter', 'VtsHalKeymasterV4_0IfaceFuzzer', '--include-filter', 'VtsHalKeymasterV4_0Target', '--include-filter', 'VtsHalKeymasterV4_0TargetProfiling', '--include-filter', 'VtsHalLightV2_0IfaceFuzzer', '--include-filter', 'VtsHalLightV2_0Target', '--include-filter', 'VtsHalLightV2_0TargetProfiling', '--include-filter', 'VtsHalLightV2_0TargetReplay', '--include-filter', 'VtsHalLightsTestCases', '--include-filter', 'VtsHalMediaBufferpoolV1_0IfaceFuzzer', '--include-filter', 'VtsHalMediaOmxStoreV1_0Host', '--include-filter', 'VtsHalMediaOmxV1_0Host', '--include-filter', 'VtsHalMediaOmxV1_0IfaceFuzzer', '--include-filter', 'VtsHalMediaV1_0IfaceFuzzer', '--include-filter', 'VtsHalMemtrackV1_0IfaceFuzzer', '--include-filter', 'VtsHalMemtrackV1_0Target', '--include-filter', 'VtsHalMemtrackV1_0TargetProfiling', '--include-filter', 'VtsHalMemtrackV1_0TargetReplay', '--include-filter', 'VtsHalNetNetdV1_0Target', '--include-filter', 'VtsHalNetNetdV1_0TargetProfiling', '--include-filter', 'VtsHalNetNetdV1_1Target', '--include-filter', 'VtsHalNetNetdV1_1TargetProfiling', '--include-filter', 'VtsHalNeuralnetworksV1_0IfaceFuzzer', '--include-filter', 'VtsHalNeuralnetworksV1_0Target', '--include-filter', 'VtsHalNeuralnetworksV1_0TargetProfiling', '--include-filter', 'VtsHalNeuralnetworksV1_1Adapter', '--include-filter', 'VtsHalNeuralnetworksV1_1IfaceFuzzer', '--include-filter', 'VtsHalNeuralnetworksV1_1Target', '--include-filter', 'VtsHalNeuralnetworksV1_1TargetProfiling', '--include-filter', 'VtsHalNfcV1_0HostBinderize', '--include-filter', 'VtsHalNfcV1_0HostPassthrough', '--include-filter', 'VtsHalNfcV1_0HostProfiling', '--include-filter', 'VtsHalNfcV1_0IfaceFuzzer', '--include-filter', 'VtsHalNfcV1_0Target', '--include-filter', 'VtsHalNfcV1_0TargetProfiling', '--include-filter', 'VtsHalNfcV1_0TargetReplay', '--include-filter', 'VtsHalNfcV1_1Adapter', '--include-filter', 'VtsHalNfcV1_1IfaceFuzzer', '--include-filter', 'VtsHalNfcV1_1Target', '--include-filter', 'VtsHalNfcV1_1TargetProfiling', '--include-filter', 'VtsHalOemLockV1_0Target', '--include-filter', 'VtsHalOemLockV1_0TargetProfiling', '--include-filter', 'VtsHalOemlockV1_0IfaceFuzzer', '--include-filter', 'VtsHalPowerTestCases', '--include-filter', 'VtsHalPowerV1_0IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_0Target', '--include-filter', 'VtsHalPowerV1_0TargetProfiling', '--include-filter', 'VtsHalPowerV1_0TargetReplay', '--include-filter', 'VtsHalPowerV1_1Adapter', '--include-filter', 'VtsHalPowerV1_1IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_1Target', '--include-filter', 'VtsHalPowerV1_1TargetProfiling', '--include-filter', 'VtsHalPowerV1_2Adapter', '--include-filter', 'VtsHalPowerV1_2IfaceFuzzer', '--include-filter', 'VtsHalPowerV1_2Target', '--include-filter', 'VtsHalPowerV1_3Target', '--include-filter', 'VtsHalRadioConfigV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioDeprecatedV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_0Host', '--include-filter', 'VtsHalRadioV1_0IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_0Target', '--include-filter', 'VtsHalRadioV1_0TargetProfiling', '--include-filter', 'VtsHalRadioV1_1Adapter', '--include-filter', 'VtsHalRadioV1_1IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_1Target', '--include-filter', 'VtsHalRadioV1_2Adapter', '--include-filter', 'VtsHalRadioV1_2IfaceFuzzer', '--include-filter', 'VtsHalRadioV1_2Target', '--include-filter', 'VtsHalRenderscriptV1_0IfaceFuzzer', '--include-filter', 'VtsHalRenderscriptV1_0Target', '--include-filter', 'VtsHalRenderscriptV1_0TargetProfiling', '--include-filter', 'VtsHalSapV1_0Target', '--include-filter', 'VtsHalSapV1_0TargetProfiling', '--include-filter', 'VtsHalSecureElementV1_0Target', '--include-filter', 'VtsHalSecureElementV1_0TargetProfiling', '--include-filter', 'VtsHalSecure_ElementV1_0IfaceFuzzer', '--include-filter', 'VtsHalSensorsV1_0Host', '--include-filter', 'VtsHalSensorsV1_0HostProfiling', '--include-filter', 'VtsHalSensorsV1_0IfaceFuzzer', '--include-filter', 'VtsHalSensorsV1_0Target', '--include-filter', 'VtsHalSensorsV1_0TargetProfiling', '--include-filter', 'VtsHalSoundtriggerV2_0IfaceFuzzer', '--include-filter', 'VtsHalSoundtriggerV2_0Target', '--include-filter', 'VtsHalSoundtriggerV2_0TargetProfiling', '--include-filter', 'VtsHalSoundtriggerV2_1Adapter', '--include-filter', 'VtsHalSoundtriggerV2_1IfaceFuzzer', '--include-filter', 'VtsHalSoundtriggerV2_1Target', '--include-filter', 'VtsHalSoundtriggerV2_1TargetProfiling', '--include-filter', 'VtsHalTetherOffloadConfigV1_0Target', '--include-filter', 'VtsHalTetherOffloadConfigV1_0TargetProfiling', '--include-filter', 'VtsHalTetherOffloadControlV1_0Target', '--include-filter', 'VtsHalTetherOffloadControlV1_0TargetProfiling', '--include-filter', 'VtsHalTetheroffloadConfigV1_0IfaceFuzzer', '--include-filter', 'VtsHalTetheroffloadControlV1_0IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_0IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_0Target', '--include-filter', 'VtsHalThermalV1_0TargetProfiling', '--include-filter', 'VtsHalThermalV1_0TargetReplay', '--include-filter', 'VtsHalThermalV1_1Adapter', '--include-filter', 'VtsHalThermalV1_1IfaceFuzzer', '--include-filter', 'VtsHalThermalV1_1Target', '--include-filter', 'VtsHalThermalV1_1TargetProfiling', '--include-filter', 'VtsHalTvCecV1_0Host', '--include-filter', 'VtsHalTvCecV1_0HostProfiling', '--include-filter', 'VtsHalTvCecV1_0IfaceFuzzer', '--include-filter', 'VtsHalTvInputV1_0Host', '--include-filter', 'VtsHalTvInputV1_0HostProfiling', '--include-filter', 'VtsHalTvInputV1_0IfaceFuzzer', '--include-filter', 'VtsHalTvInputV1_0Target', '--include-filter', 'VtsHalTvInputV1_0TargetProfiling', '--include-filter', 'VtsHalUsbGadgetV1_0Host', '--include-filter', 'VtsHalUsbGadgetV1_0IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_0IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_0Target', '--include-filter', 'VtsHalUsbV1_0TargetProfiling', '--include-filter', 'VtsHalUsbV1_0TargetReplay', '--include-filter', 'VtsHalUsbV1_1Adapter', '--include-filter', 'VtsHalUsbV1_1IfaceFuzzer', '--include-filter', 'VtsHalUsbV1_1Target', '--include-filter', 'VtsHalVibratorV1_0Host', '--include-filter', 'VtsHalVibratorV1_0HostProfiling', '--include-filter', 'VtsHalVibratorV1_0IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_0Target', '--include-filter', 'VtsHalVibratorV1_0TargetProfiling', '--include-filter', 'VtsHalVibratorV1_0TargetReplay', '--include-filter', 'VtsHalVibratorV1_1Adapter', '--include-filter', 'VtsHalVibratorV1_1IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_1Target', '--include-filter', 'VtsHalVibratorV1_2Adapter', '--include-filter', 'VtsHalVibratorV1_2IfaceFuzzer', '--include-filter', 'VtsHalVibratorV1_2Target', '--include-filter', 'VtsHalVrV1_0Host', '--include-filter', 'VtsHalVrV1_0IfaceFuzzer', '--include-filter', 'VtsHalVrV1_0Target', '--include-filter', 'VtsHalVrV1_0TargetProfiling', '--include-filter', 'VtsHalVrV1_0TargetReplay', '--include-filter', 'VtsHalWeaverV1_0IfaceFuzzer', '--include-filter', 'VtsHalWeaverV1_0Target', '--include-filter', 'VtsHalWeaverV1_0TargetProfiling', '--include-filter', 'VtsHalWifiHostapdV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiNanV1_0Target', '--include-filter', 'VtsHalWifiNanV1_0TargetProfiling', '--include-filter', 'VtsHalWifiOffloadV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiOffloadV1_0Target', '--include-filter', 'VtsHalWifiSupplicantV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiSupplicantV1_0Target', '--include-filter', 'VtsHalWifiSupplicantV1_0TargetProfiling', '--include-filter', 'VtsHalWifiSupplicantV1_1Adapter', '--include-filter', 'VtsHalWifiSupplicantV1_1IfaceFuzzer', '--include-filter', 'VtsHalWifiSupplicantV1_1Target', '--include-filter', 'VtsHalWifiSupplicantV1_1TargetProfiling', '--include-filter', 'VtsHalWifiV1_0Host', '--include-filter', 'VtsHalWifiV1_0IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_0TargetProfiling', '--include-filter', 'VtsHalWifiV1_1Adapter', '--include-filter', 'VtsHalWifiV1_1IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_1Target', '--include-filter', 'VtsHalWifiV1_1TargetProfiling', '--include-filter', 'VtsHalWifiV1_2Adapter', '--include-filter', 'VtsHalWifiV1_2IfaceFuzzer', '--include-filter', 'VtsHalWifiV1_2Target', '--include-filter', 'VtsHalWifiV1_2TargetProfiling', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsHal',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=516600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHidlUnitTests b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHidlUnitTests
new file mode 100644
index 0000000..ef0b9f0
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsHidlUnitTests
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsHidlUnitTests'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsHidlUnitTests of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsHidlUnitTests',
+        test_name='cheets_VTS.9_r11.x86.VtsHidlUnitTests',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsHidlUnitTests', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsHidlUnitTests',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsKernel b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsKernel
new file mode 100644
index 0000000..a300e1c
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsKernel
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsKernel'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsKernelApiSysfsTest, VtsKernelBinderTest, VtsKernelConfig, VtsKernelDeviceTreeEarlyMount, VtsKernelFuzzTest, VtsKernelHwBinder, VtsKernelLibcutilsTest, VtsKernelLinuxKselftest, VtsKernelLinuxKselftestPresubmit, VtsKernelLinuxKselftestStaging, VtsKernelLtp, VtsKernelLtpStaging, VtsKernelNetBpfTest, VtsKernelNetTest, VtsKernelNetdTest, VtsKernelProcFileApi, VtsKernelQtaguidTest, VtsKernelRootDir, VtsKernelSelinuxFileApi, VtsKernelSyscallExistence, VtsKernelSystemAsRoot, VtsKernelTunTest, VtsKernelVersion of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsKernel',
+        test_name='cheets_VTS.9_r11.x86.VtsKernel',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsKernelApiSysfsTest', '--include-filter', 'VtsKernelBinderTest', '--include-filter', 'VtsKernelConfig', '--include-filter', 'VtsKernelDeviceTreeEarlyMount', '--include-filter', 'VtsKernelFuzzTest', '--include-filter', 'VtsKernelHwBinder', '--include-filter', 'VtsKernelLibcutilsTest', '--include-filter', 'VtsKernelLinuxKselftest', '--include-filter', 'VtsKernelLinuxKselftestPresubmit', '--include-filter', 'VtsKernelLinuxKselftestStaging', '--include-filter', 'VtsKernelLtp', '--include-filter', 'VtsKernelLtpStaging', '--include-filter', 'VtsKernelNetBpfTest', '--include-filter', 'VtsKernelNetTest', '--include-filter', 'VtsKernelNetdTest', '--include-filter', 'VtsKernelProcFileApi', '--include-filter', 'VtsKernelQtaguidTest', '--include-filter', 'VtsKernelRootDir', '--include-filter', 'VtsKernelSelinuxFileApi', '--include-filter', 'VtsKernelSyscallExistence', '--include-filter', 'VtsKernelSystemAsRoot', '--include-filter', 'VtsKernelTunTest', '--include-filter', 'VtsKernelVersion', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsKernel',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=43200)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsNbu b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsNbu
new file mode 100644
index 0000000..6981bed
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsNbu
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsNbu'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsNbu of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsNbu',
+        test_name='cheets_VTS.9_r11.x86.VtsNbu',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'VtsNbu', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsNbu',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsSelfTest b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsSelfTest
new file mode 100644
index 0000000..9b997b6
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsSelfTest
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsSelfTest'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsSelfTestBaseTest, VtsSelfTestFlakyHidlTest, VtsSelfTestFlakyTest, VtsSelfTestPythonVirtualenvPreparerTestPart1, VtsSelfTestPythonVirtualenvPreparerTestPart2, VtsSelfTestShellPerformance, VtsSelfTestZeroTestCaseBinaryTest of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsSelfTest',
+        test_name='cheets_VTS.9_r11.x86.VtsSelfTest',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsSelfTestBaseTest', '--include-filter', 'VtsSelfTestFlakyHidlTest', '--include-filter', 'VtsSelfTestFlakyTest', '--include-filter', 'VtsSelfTestPythonVirtualenvPreparerTestPart1', '--include-filter', 'VtsSelfTestPythonVirtualenvPreparerTestPart2', '--include-filter', 'VtsSelfTestShellPerformance', '--include-filter', 'VtsSelfTestZeroTestCaseBinaryTest', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsSelfTest',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=14400)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsTreble b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsTreble
new file mode 100644
index 0000000..6474677
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsTreble
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsTreble'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsTrebleFrameworkVintfTest, VtsTreblePlatformVersionTest, VtsTrebleSysProp, VtsTrebleVendorVintfTest, VtsTrebleVintfTestOMr1 of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsTreble',
+        test_name='cheets_VTS.9_r11.x86.VtsTreble',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsTrebleFrameworkVintfTest', '--include-filter', 'VtsTreblePlatformVersionTest', '--include-filter', 'VtsTrebleSysProp', '--include-filter', 'VtsTrebleVendorVintfTest', '--include-filter', 'VtsTrebleVintfTestOMr1', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsTreble',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=10800)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.VtsVndk b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsVndk
new file mode 100644
index 0000000..2b9422d
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.VtsVndk
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.VtsVndk'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module VtsVndkAbi, VtsVndkDependency, VtsVndkFiles, VtsVndkHidlBufferpoolV1_0Target, VtsVndkOpenLibraries of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.VtsVndk',
+        test_name='cheets_VTS.9_r11.x86.VtsVndk',
+        run_template=['run', 'commandAndExit', 'vts', '--include-filter', 'VtsVndkAbi', '--include-filter', 'VtsVndkDependency', '--include-filter', 'VtsVndkFiles', '--include-filter', 'VtsVndkHidlBufferpoolV1_0Target', '--include-filter', 'VtsVndkOpenLibraries', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='VtsVndk',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=10800)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.tradefed-run-collect-tests-only-internal b/server/site_tests/cheets_VTS/control.9_r11.x86.tradefed-run-collect-tests-only-internal
new file mode 100644
index 0000000..c2995e6
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.tradefed-run-collect-tests-only-internal
@@ -0,0 +1,34 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.tradefed-run-collect-tests-only-internal'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 0
+TEST_TYPE = 'server'
+TIME = 'LENGTHY'
+MAX_RESULT_SIZE_KB = 1024000
+DOC = 'Run all of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        max_retry=0,
+        tag='9_r11.x86.tradefed-run-collect-tests-only-internal',
+        test_name='cheets_VTS.9_r11.x86.tradefed-run-collect-tests-only-internal',
+        run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot'],
+        retry_template=None,
+        target_module=None,
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=7200)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/control.9_r11.x86.vm-tests-tf b/server/site_tests/cheets_VTS/control.9_r11.x86.vm-tests-tf
new file mode 100644
index 0000000..6a04143
--- /dev/null
+++ b/server/site_tests/cheets_VTS/control.9_r11.x86.vm-tests-tf
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_VTS.9_r11.x86.vm-tests-tf'
+ATTRIBUTES = 'suite:arc-vts'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run module vm-tests-tf of the Vendor Test Suite (VTS) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_VTS',
+        hosts=host_list,
+        iterations=1,
+        tag='9_r11.x86.vm-tests-tf',
+        test_name='cheets_VTS.9_r11.x86.vm-tests-tf',
+        run_template=['run', 'commandAndExit', 'vts', '--module', 'vm-tests-tf', '--logcat-on-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='vm-tests-tf',
+        target_plan=None,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/vts/VTS-9_r11_x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_VTS/generate_controlfiles.py b/server/site_tests/cheets_VTS/generate_controlfiles.py
new file mode 100755
index 0000000..e180f42
--- /dev/null
+++ b/server/site_tests/cheets_VTS/generate_controlfiles.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python2
+# Copyright 2019 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.
+
+# This is a trampoline script to invoke the actual generator script.
+
+import os
+import sys
+
+target_script_name = 'generate_controlfiles_VTS.py'
+target_script_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
+    '..', '..', 'cros', 'tradefed', target_script_name))
+
+os.execv(target_script_path, sys.argv)
diff --git a/site_utils/attribute_whitelist.txt b/site_utils/attribute_whitelist.txt
index 1e73574..0b025ba 100644
--- a/site_utils/attribute_whitelist.txt
+++ b/site_utils/attribute_whitelist.txt
@@ -41,6 +41,7 @@
 suite:arc-gts-tot
 suite:arc-gts-test
 suite:arc-unit-test
+suite:arc-vts
 suite:audio
 suite:audio_advanced
 suite:audio_basic