Snap for 6224475 from 33694de6cfe5f5ee7598f20533bc8fabeb1e3b38 to rvc-release

Change-Id: I5667bd317331e798e87c5fc98a5a3ae3b9c03705
diff --git a/client/cros/update_engine/update_engine_util.py b/client/cros/update_engine/update_engine_util.py
index 88d85f9..61a5e05 100644
--- a/client/cros/update_engine/update_engine_util.py
+++ b/client/cros/update_engine/update_engine_util.py
@@ -352,7 +352,7 @@
                                        files[1])).stdout
 
 
-    def _create_custom_lsb_release(self, update_url, build='0.0.0.0'):
+    def _create_custom_lsb_release(self, update_url, build='0.0.0.0', **kwargs):
         """
         Create a custom lsb-release file.
 
@@ -363,8 +363,15 @@
         @param update_url: String of url to use for update check.
         @param build: String of the build number to use. Represents the
                       Chrome OS build this device thinks it is on.
+        @param kwargs: A dictionary of key/values to be made into a query string
+                       and appended to the update_url
 
         """
+        # TODO(ahassani): This is quite fragile as the given URL can already
+        # have a search query. We need to unpack the URL and update the search
+        # query portion of it with kwargs.
+        update_url = (update_url + '?' + '&'.join('%s=%s' % (k, v)
+                                                  for k, v in kwargs.items()))
         self._run('mkdir %s' % os.path.dirname(self._CUSTOM_LSB_RELEASE),
                   ignore_status=True)
         self._run('touch %s' % self._CUSTOM_LSB_RELEASE)
diff --git a/server/cros/bluetooth/bluetooth_dbus_api_tests.py b/server/cros/bluetooth/bluetooth_dbus_api_tests.py
index b9c8a4b..bebb035 100644
--- a/server/cros/bluetooth/bluetooth_dbus_api_tests.py
+++ b/server/cros/bluetooth/bluetooth_dbus_api_tests.py
@@ -1,4 +1,4 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# 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.
 
@@ -13,12 +13,19 @@
 method_name = bluetooth_adapter_tests.method_name
 _test_retry_and_log = bluetooth_adapter_tests._test_retry_and_log
 
+DEFAULT_START_DELAY_SECS = 2
+DEFAULT_HOLD_INTERVAL = 10
+DEFAULT_HOLD_TIMEOUT = 60
+
 # String representation of DBus exceptions
-DBUS_ERRORS  ={
+DBUS_ERRORS  = {
     'InProgress' : 'org.bluez.Error.InProgress: Operation already in progress',
     'NotReady' : 'org.bluez.Error.NotReady: Resource Not Ready',
     'Failed': {
-        'discovery' : 'org.bluez.Error.Failed: No discovery started'}}
+        'discovery_start' : 'org.bluez.Error.Failed: No discovery started',
+        'discovery_unpause' : 'org.bluez.Error.Failed: Discovery not paused'
+              }
+               }
 
 
 class BluetoothDBusAPITests(bluetooth_adapter_tests.BluetoothAdapterTests):
@@ -56,6 +63,46 @@
         else:
             return True
 
+    def _compare_error(self, expected, actual):
+        """ Helper function to compare error and log. """
+        if expected == actual:
+            return True
+        else:
+            logging.debug("Expected error is %s Actual error is %s",expected,
+                          actual)
+            return False
+
+    def _get_hci_state(self, msg=''):
+        """ get state of bluetooth controller. """
+        hci_state = self.log_flags(msg, self.get_dev_info()[3])
+        logging.debug("hci_state is %s", hci_state)
+        return hci_state
+
+    def _wait_till_hci_state_inquiry(self):
+        """ Wait till adapter is in INQUIRY state.
+
+        @return: True if adapter does INQUIRY before timeout, False otherwise
+        """
+        return self._wait_for_condition(
+            lambda: 'INQUIRY' in self._get_hci_state('Expecting INQUIRY'),
+            method_name(),
+            start_delay = DEFAULT_START_DELAY_SECS)
+
+    def _wait_till_hci_state_no_inquiry_holds(self):
+        """ Wait till adapter does not enter INQUIRY for a period of time
+
+        @return : True if adapter is not in INQUIRY for a period of time before
+                  timeout. Otherwise False.
+        """
+        return self._wait_till_condition_holds(
+            lambda: 'INQUIRY' not in self._get_hci_state('Expecting NOINQUIRY'),
+            method_name(),
+            hold_interval = DEFAULT_HOLD_INTERVAL,
+            timeout = DEFAULT_HOLD_TIMEOUT,
+            start_delay = DEFAULT_START_DELAY_SECS)
+
+
+
     def _wait_till_discovery_stops(self, stop_discovery=True):
         """stop discovery if specified and wait for discovery to stop
 
@@ -141,11 +188,14 @@
         start_discovery, error =  self.bluetooth_facade.start_discovery()
 
         is_discovering = self._wait_till_discovery_starts(start_discovery=False)
+        inquiry_state = self._wait_till_hci_state_inquiry()
+
         self.results = {'reset' : reset,
                         'is_power_on' : is_power_on,
                         'is_not_discovering': is_not_discovering,
                         'start_discovery' : start_discovery,
-                        'is_discovering': is_discovering
+                        'is_discovering': is_discovering,
+                        'inquiry_state' : inquiry_state
                         }
         return all(self.results.values())
 
@@ -161,10 +211,13 @@
 
         start_discovery, error =  self.bluetooth_facade.start_discovery()
 
+
         self.results = {'reset' : reset,
                         'is_discovering' : is_discovering,
                         'start_discovery_failed' : not start_discovery,
-                        'error_matches' : error == DBUS_ERRORS['InProgress']}
+                        'error_matches' : self._compare_error(error,
+                                                    DBUS_ERRORS['InProgress'])
+        }
         return all(self.results.values())
 
     @_test_retry_and_log(False)
@@ -183,7 +236,8 @@
         self.results = {'reset' : reset,
                         'power_off' : is_power_off,
                         'start_discovery_failed' : not start_discovery,
-                        'error_matches' : error == DBUS_ERRORS['NotReady'],
+                        'error_matches' : self._compare_error(error,
+                                                    DBUS_ERRORS['NotReady']),
                         'power_on' : is_power_on}
         return all(self.results.values())
 
@@ -225,6 +279,7 @@
         stop_discovery, error =  self.bluetooth_facade.stop_discovery()
         is_not_discovering = self._wait_till_discovery_stops(
             stop_discovery=False)
+        self._wait_till_hci_state_no_inquiry_holds()
         self.results = {'reset' : reset,
                         'is_power_on' : is_power_on,
                         'is_discovering': is_discovering,
@@ -251,7 +306,8 @@
             'reset' : reset,
             'is_not_discovering' : is_not_discovering,
             'stop_discovery_failed' : not stop_discovery,
-            'error_matches' : error == DBUS_ERRORS['Failed']['discovery'],
+            'error_matches' : self._compare_error(error,
+                                DBUS_ERRORS['Failed']['discovery_start']),
             'still_not_discovering': still_not_discovering}
         return all(self.results.values())
 
@@ -271,7 +327,8 @@
         self.results = {'reset' : reset,
                         'is_power_off' : is_power_off,
                         'stop_discovery_failed' : not stop_discovery,
-                        'error_matches' : error == DBUS_ERRORS['NotReady'],
+                        'error_matches' : self._compare_error(error,
+                                                    DBUS_ERRORS['NotReady']),
                         'is_power_on' : is_power_on}
         return all(self.results.values())
 
@@ -315,13 +372,15 @@
         """ Test success case of pause_discovery call. """
         reset = self._reset_state()
         is_discovering = self._wait_till_discovery_starts()
+        self._wait_till_hci_state_inquiry()
+
         pause_discovery, error = self.bluetooth_facade.pause_discovery(False)
 
-        #TODO: Confirm discovery is paused by check the state of the adapter
-
+        no_inquiry = self._wait_till_hci_state_no_inquiry_holds()
         self.results = {'reset' : reset,
                         'is_discovering': is_discovering,
                         'pause_discovery' : pause_discovery,
+                        'no_inquiry' : no_inquiry
                         }
         return all(self.results.values())
 
@@ -334,12 +393,12 @@
 
         pause_discovery, error = self.bluetooth_facade.pause_discovery(False)
 
-        #TODO: Confirm discovery is paused by check the state of the adapter
-
+        no_inquiry = self._wait_till_hci_state_no_inquiry_holds()
         self.results = {'reset' : reset,
                         'is_power_on' : is_power_on,
                         'is_not_discovering': is_not_discovering,
                         'pause_discovery' : pause_discovery,
+                        'no_inquiry' : no_inquiry
                         }
         return all(self.results.values())
 
@@ -362,7 +421,8 @@
         self.results = {'reset' : reset,
                         'is_power_off' : is_power_off,
                         'pause_discovery_failed' : not pause_discovery,
-                        'error_matches' : error == DBUS_ERRORS['NotReady'],
+                        'error_matches' : self._compare_error(error,
+                                                    DBUS_ERRORS['NotReady']),
                         'is_power_on' : is_power_on,
                         'discovery_started' : discovery_started
                        }
@@ -381,17 +441,146 @@
         pause_discovery, _ = self.bluetooth_facade.pause_discovery()
 
         pause_discovery_again, error = self.bluetooth_facade.pause_discovery()
-        #TODO: Confirm discovery is paused by check the state of the adapter
+
+        no_inquiry = self._wait_till_hci_state_no_inquiry_holds()
 
         self.results = {'reset' : reset,
                         'is_power_on' : is_power_on,
                         'is_discovering': is_discovering,
                         'pause_discovery' : pause_discovery,
                         'pause_discovery_failed' : not pause_discovery_again,
-                        'error_matches' : error == DBUS_ERRORS['InProgress'],
+                        'error_matches' : self._compare_error(error,
+                                                    DBUS_ERRORS['InProgress']),
+                        'no_inquiry' : no_inquiry,
                         }
         return all(self.results.values())
 
+########################################################################
+# dbus call: unpause_discovery
+# arguments: boolean system_suspend_resume
+# returns : True/False
+# Notes: 1: argument system_suspend_resume is ignored in the code
+#        2: pause/unpause state is not reflected in Discovering state
+#####################################################
+# Positive cases
+# Case 1
+# preconditions: Adapter powered on AND
+#                Discovery started and Discovery currently paused
+# Argument: [True|False]
+######################################################
+# Negative cases
+#
+# result: Success
+# Case 1
+# preconditions: Adapter powered on AND
+#                Discovery currently not paused
+# Argument: [True|False]
+# result: Failed
+#
+# Case 2
+# preconditions: Adapter powered off
+# result: Failure
+# error : NotReady
+#
+# Case 3
+# precondition: Adapter powered on AND
+#               Discovery paused
+# result: Failure
+# error: Busy
+#########################################################################
+    @_test_retry_and_log(False)
+    def test_dbus_unpause_discovery_success(self):
+        """ Test success case of unpause_discovery call. """
+        reset = self._reset_state()
+        is_discovering = self._wait_till_discovery_starts()
+        pause_discovery, _ = self.bluetooth_facade.pause_discovery()
+        no_inquiry_after_pause = self._wait_till_hci_state_no_inquiry_holds()
+
+        unpause_discovery, error = self.bluetooth_facade.unpause_discovery()
+
+        inquiry_after_unpause = self._wait_till_hci_state_inquiry()
+        self.results = {'reset' : reset,
+                        'is_discovering': is_discovering,
+                        'pause_discovery' : pause_discovery,
+                        'no_inquiry_after_pause' : no_inquiry_after_pause,
+                        'unpause_discovery' : unpause_discovery,
+                        'error' : error is None,
+                        'inquiry_after_unpause' : inquiry_after_unpause
+                        }
+        return all(self.results.values())
+
+    @_test_retry_and_log(False)
+    def test_dbus_unpause_discovery_fail_without_pause(self):
+        """ Test failure case of unpause_discovery call.
+
+        Call unpause_discovery without calling pause_discovery and check it will
+        fail with  org.bluez.Error.Failed: Discovery not paused'
+        """
+        reset = self._reset_state()
+        is_discovering = self._wait_till_discovery_starts()
+
+        unpause_discovery, error = self.bluetooth_facade.unpause_discovery()
+
+        inquiry_after_unpause = self._wait_till_hci_state_inquiry()
+        self.results = {'reset' : reset,
+                        'is_discovering': is_discovering,
+                        'unpause_discovery_fails' : not unpause_discovery,
+                        'error' : self._compare_error(error,
+                                    DBUS_ERRORS['Failed']['discovery_unpause']),
+                        'inquiry_after_unpause' : inquiry_after_unpause
+                        }
+        return all(self.results.values())
+
+    @_test_retry_and_log(False)
+    def test_dbus_unpause_discovery_fail_power_off(self):
+        """ Test Failure case of unpause_discovery call.
+
+        unpause discovery when adapter is turned off and confirm it fails with
+         'org.bluez.Error.Failed: Discovery not paused'
+
+        """
+        reset = self._reset_state()
+        is_power_off = self._wait_till_power_off()
+
+        unpause_discovery, error = self.bluetooth_facade.unpause_discovery()
+
+        self.results = {'reset' : reset,
+                        'is_power_off' : is_power_off,
+                        'unpause_discovery_failed' : not unpause_discovery,
+                        'error_matches' : self._compare_error(error,
+                                    DBUS_ERRORS['Failed']['discovery_unpause']),
+
+                       }
+        return all(self.results.values())
+
+
+    @_test_retry_and_log(False)
+    def test_dbus_unpause_discovery_fail_already_unpaused(self):
+        """ Test Failure case of unpause_discovery call.
+
+        Call unpause discovery twice and make sure second call fails
+        with 'org.bluez.Error.InProgress: Operation already in progress'.
+        """
+        reset = self._reset_state()
+        is_discovering = self._wait_till_discovery_starts()
+        pause_discovery, error = self.bluetooth_facade.pause_discovery()
+        unpause_discovery, _ = self.bluetooth_facade.unpause_discovery()
+
+        unpause_again, error = self.bluetooth_facade.unpause_discovery()
+
+        inquiry_after_unpause = self._wait_till_hci_state_inquiry()
+
+        self.results = {
+            'reset' : reset,
+            'is_discovering': is_discovering,
+            'pause_discovery' : pause_discovery,
+            'unpause_discovery' : unpause_discovery,
+            'unpause_again_failed': not unpause_again,
+            'error_matches' : self._compare_error(error,
+                                    DBUS_ERRORS['Failed']['discovery_unpause']),
+            'inquiry_after_unpause':inquiry_after_unpause
+        }
+        return all(self.results.values())
 
 ########################################################################
 # dbus call: get_suppported_capabilities
diff --git a/server/cros/network/attenuator_hosts.py b/server/cros/network/attenuator_hosts.py
index cf70d54..7d1cdf5 100644
--- a/server/cros/network/attenuator_hosts.py
+++ b/server/cros/network/attenuator_hosts.py
@@ -13,6 +13,36 @@
                 1: {2437: 56, 5220: 56, 5765: 56},
                 2: {2437: 53, 5220: 59, 5765: 59},
                 3: {2437: 57, 5220: 56, 5765: 56}},
+        'chromeos1-dev-host15-attenuator': {
+                0: {2437: 52, 5220: 57, 5765: 57},
+                1: {2437: 56, 5220: 55, 5765: 59},
+                2: {2437: 52, 5220: 57, 5765: 57},
+                3: {2437: 56, 5220: 55, 5765: 60}},
+        'chromeos1-dev-host16-attenuator': {
+                0: {2437: 52, 5220: 58, 5765: 62},
+                1: {2437: 55, 5220: 55, 5765: 56},
+                2: {2437: 52, 5220: 58, 5765: 61},
+                3: {2437: 55, 5220: 55, 5765: 56}},
+        'chromeos1-dev-host17-attenuator': {
+                0: {2437: 52, 5220: 58, 5765: 57},
+                1: {2437: 56, 5220: 55, 5765: 59},
+                2: {2437: 52, 5220: 57, 5765: 58},
+                3: {2437: 56, 5220: 55, 5765: 59}},
+        'chromeos1-dev-host18-attenuator': {
+                0: {2437: 52, 5220: 57, 5765: 57},
+                1: {2437: 56, 5220: 56, 5765: 59},
+                2: {2437: 52, 5220: 57, 5765: 57},
+                3: {2437: 56, 5220: 56, 5765: 59}},
+        'chromeos1-dev-host19-attenuator': {
+                0: {2437: 52, 5220: 57, 5765: 60},
+                1: {2437: 55, 5220: 54, 5765: 56},
+                2: {2437: 52, 5220: 57, 5765: 60},
+                3: {2437: 55, 5220: 54, 5765: 55}},
+        'chromeos1-dev-host20-attenuator': {
+                0: {2437: 53, 5220: 57, 5765: 62},
+                1: {2437: 57, 5220: 55, 5765: 55},
+                2: {2437: 53, 5220: 57, 5765: 61},
+                3: {2437: 57, 5220: 55, 5765: 55}},
         'chromeos1-test-host2-attenuator': {
                 0: {2437: 53, 5220: 59, 5765: 58},
                 1: {2437: 57, 5220: 57, 5765: 59},
diff --git a/server/cros/update_engine/omaha_devserver.py b/server/cros/update_engine/omaha_devserver.py
index 48c3e41..41169c3 100644
--- a/server/cros/update_engine/omaha_devserver.py
+++ b/server/cros/update_engine/omaha_devserver.py
@@ -48,20 +48,17 @@
     _DEVSERVER_TIMELIMIT_SECONDS = 12 * 60 * 60
 
 
-    def __init__(self, omaha_host, payload_location, max_updates=1,
-                 critical_update=True, moblab=False):
+    def __init__(self, omaha_host, payload_location, critical_update=True,
+                 moblab=False):
         """Starts a private devserver instance, operating at Omaha capacity.
 
         @param omaha_host: host address where the devserver is spawned.
         @param payload_location: partial path from static dir to payload.
-        @param max_updates: int number of updates this devserver will handle.
-                            This is passed to src/platform/dev/devserver.py.
         @param critical_update: Whether to set a deadline in responses.
         @param moblab: True if we are running on moblab.
 
         """
         self._critical_update = critical_update
-        self._max_updates = max_updates
         self._omaha_host = omaha_host
         self._devserver_pid = 0
         self._devserver_port = 0  # Determined later from devserver portfile.
@@ -224,7 +221,6 @@
                 '--pidfile=%s' % self._devserver_pidfile,
                 '--portfile=%s' % self._devserver_portfile,
                 '--logfile=%s' % self._devserver_logfile,
-                '--max_updates=%s' % self._max_updates,
                 '--host_log',
                 '--static_dir=%s' % self._devserver_static_dir,
                 '--payload=%s' % os.path.join(self._devserver_static_dir,
diff --git a/server/cros/update_engine/update_engine_test.py b/server/cros/update_engine/update_engine_test.py
index 8200665..23feef9 100644
--- a/server/cros/update_engine/update_engine_test.py
+++ b/server/cros/update_engine/update_engine_test.py
@@ -651,8 +651,8 @@
 
 
     def get_update_url_for_test(self, job_repo_url, full_payload=True,
-                                critical_update=False, max_updates=1,
-                                public=False, moblab=False):
+                                critical_update=False, public=False,
+                                moblab=False):
         """
         Get the correct update URL for autoupdate tests to use.
 
@@ -672,9 +672,6 @@
         @param job_repo_url: string url containing the current build.
         @param full_payload: bool whether we want a full payload.
         @param critical_update: bool whether we need a critical update.
-        @param max_updates: int number of updates the test will perform. This
-                            is passed to src/platform/dev/devserver.py if we
-                            create our own deverver.
         @param public: url needs to be publicly accessible.
         @param moblab: True if we are running on moblab.
 
@@ -726,7 +723,7 @@
         # We need to start our own devserver instance on the lab devserver
         # for the rest of the test scenarios.
         self._omaha_devserver = omaha_devserver.OmahaDevserver(
-            lab_devserver.hostname, payload_location, max_updates=max_updates,
+            lab_devserver.hostname, payload_location,
             critical_update=critical_update, moblab=moblab)
         self._omaha_devserver.start_devserver()
 
diff --git a/server/hosts/base_label.py b/server/hosts/base_label.py
index ec4cc6f..f95c220 100644
--- a/server/hosts/base_label.py
+++ b/server/hosts/base_label.py
@@ -239,10 +239,11 @@
         """
         labels = []
         for label in self._labels:
-            logging.info('checking label update %s', label.__class__.__name__)
             try:
                 # get only the labels which need to be updated for this task.
                 if label.update_for_task(task_name):
+                    logging.info('checking label update %s',
+                                 label.__class__.__name__)
                     labels.extend(label.get(host))
             except Exception:
                 logging.exception('error getting label %s.',
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py b/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
index 43cb028..9c0013c 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
@@ -59,8 +59,7 @@
 
 
     def run_once(self, full_payload=True, cellular=False,
-                 interrupt=None, max_updates=1, job_repo_url=None,
-                 moblab=False):
+                 interrupt=None, job_repo_url=None, moblab=False):
         """
         Runs a forced autoupdate during ChromeOS OOBE.
 
@@ -68,8 +67,6 @@
         @param cellular: True to do the update over a cellualar connection.
                          Requires that the DUT have a sim card slot.
         @param interrupt: Type of interrupt to try: [reboot, network, suspend]
-        @param max_updates: Used to tell the test how many times it is
-                            expected to ping its omaha server.
         @param job_repo_url: Used for debugging locally. This is used to figure
                              out the current build and the devserver to use.
                              The test will read this from a host argument
@@ -87,7 +84,6 @@
                                                   full_payload=full_payload,
                                                   critical_update=True,
                                                   public=cellular,
-                                                  max_updates=max_updates,
                                                   moblab=moblab)
         before = self._get_chromeos_version()
         payload_info = None
@@ -125,6 +121,10 @@
                 raise error.TestFail('The update did not continue where it '
                                      'left off after interruption.')
 
+        # We create a new lsb-release file with no_update=True so there won't be
+        # any more actual updates happen.
+        self._create_custom_lsb_release(update_url, no_update=True)
+
         self._wait_for_oobe_update_to_complete()
 
         if cellular:
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full
index ecdac55..1b39c6e 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full
@@ -27,6 +27,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='network', max_updates=1, **args_dict)
+                 interrupt='network', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full.moblab b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full.moblab
index 23219c4..708ff6a 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full.moblab
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.network.full.moblab
@@ -27,6 +27,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='network', max_updates=1, moblab=True, **args_dict)
+                 interrupt='network', moblab=True, **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full
index 77eb5f5..52a56a9 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full
@@ -24,6 +24,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='reboot', max_updates=2, **args_dict)
+                 interrupt='reboot', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full.moblab b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full.moblab
index 675642b..b39e37f 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full.moblab
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.reboot.full.moblab
@@ -24,6 +24,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='reboot', max_updates=2, moblab=True, **args_dict)
+                 interrupt='reboot', moblab=True, **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full
index 4a8c750..617fbcc 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full
@@ -24,6 +24,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='suspend', max_updates=1, **args_dict)
+                 interrupt='suspend', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full.moblab b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full.moblab
index 0aa9fc6..f44fe90 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full.moblab
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/control.interrupt.suspend.full.moblab
@@ -24,6 +24,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_ForcedOOBEUpdate', host=host, full_payload=True,
-                 interrupt='suspend', max_updates=1, moblab=True, **args_dict)
+                 interrupt='suspend', moblab=True, **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_Interruptions/autoupdate_Interruptions.py b/server/site_tests/autoupdate_Interruptions/autoupdate_Interruptions.py
index 83f4b1f..3b559ed 100644
--- a/server/site_tests/autoupdate_Interruptions/autoupdate_Interruptions.py
+++ b/server/site_tests/autoupdate_Interruptions/autoupdate_Interruptions.py
@@ -19,8 +19,7 @@
         super(autoupdate_Interruptions, self).cleanup()
 
 
-    def run_once(self, full_payload=True, interrupt=None, job_repo_url=None,
-                 max_updates=2):
+    def run_once(self, full_payload=True, interrupt=None, job_repo_url=None):
         """
         Runs an update with interruptions from the user.
 
@@ -30,15 +29,12 @@
                              out the current build and the devserver to use.
                              The test will read this from a host argument
                              when run in the lab.
-        @param max_updates: The number of update attempts the devserver should
-                            accept.
 
         """
 
         update_url = self.get_update_url_for_test(job_repo_url,
                                                   full_payload=full_payload,
-                                                  critical_update=True,
-                                                  max_updates=max_updates)
+                                                  critical_update=True)
         chromeos_version = self._get_chromeos_version()
 
         # Choose a random downloaded progress to interrupt the update.
@@ -82,7 +78,10 @@
         self._host.reboot()
         utils.poll_for_condition(self._get_update_engine_status,
                                  desc='update engine to start')
-        self._check_for_update(server=server, port=parsed_url.port)
+        # We do check update with no_update=True so it doesn't start the update
+        # again.
+        self._check_for_update(server=server, port=parsed_url.port,
+                               no_update=True)
 
         # Verify that the update completed successfully by checking hostlog.
         rootfs_hostlog, reboot_hostlog = self._create_hostlog_files()
diff --git a/server/site_tests/autoupdate_Interruptions/control.network.full b/server/site_tests/autoupdate_Interruptions/control.network.full
index 65bfdf0..d488310 100644
--- a/server/site_tests/autoupdate_Interruptions/control.network.full
+++ b/server/site_tests/autoupdate_Interruptions/control.network.full
@@ -23,6 +23,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_Interruptions', host=host, full_payload=True,
-                 interrupt='network', max_updates=1, **args_dict)
+                 interrupt='network', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_Interruptions/control.reboot.full b/server/site_tests/autoupdate_Interruptions/control.reboot.full
index 50cac27..4675f34 100644
--- a/server/site_tests/autoupdate_Interruptions/control.reboot.full
+++ b/server/site_tests/autoupdate_Interruptions/control.reboot.full
@@ -23,6 +23,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_Interruptions', host=host, full_payload=True,
-                 interrupt='reboot', max_updates=2, **args_dict)
+                 interrupt='reboot', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_Interruptions/control.suspend.full b/server/site_tests/autoupdate_Interruptions/control.suspend.full
index 45df4bb..680f9f8 100644
--- a/server/site_tests/autoupdate_Interruptions/control.suspend.full
+++ b/server/site_tests/autoupdate_Interruptions/control.suspend.full
@@ -23,6 +23,6 @@
 def run(machine):
     host = hosts.create_host(machine)
     job.run_test('autoupdate_Interruptions', host=host, full_payload=True,
-                 interrupt='suspend', max_updates=1, **args_dict)
+                 interrupt='suspend', **args_dict)
 
 job.parallel_simple(run, machines)
diff --git a/server/site_tests/autoupdate_P2P/autoupdate_P2P.py b/server/site_tests/autoupdate_P2P/autoupdate_P2P.py
index 52c1a39..ab4a118 100644
--- a/server/site_tests/autoupdate_P2P/autoupdate_P2P.py
+++ b/server/site_tests/autoupdate_P2P/autoupdate_P2P.py
@@ -310,8 +310,7 @@
         # P2P updates are very slow so we will only update with a delta payload.
         update_url = self.get_update_url_for_test(job_repo_url,
                                                   full_payload=False,
-                                                  critical_update=False,
-                                                  max_updates=2)
+                                                  critical_update=False)
 
         # The first device just updates normally.
         self._update_dut(self._hosts[0], update_url)
diff --git a/server/site_tests/bluetooth_AdapterSASanity/bluetooth_AdapterSASanity.py b/server/site_tests/bluetooth_AdapterSASanity/bluetooth_AdapterSASanity.py
index 235d036..83fd880 100644
--- a/server/site_tests/bluetooth_AdapterSASanity/bluetooth_AdapterSASanity.py
+++ b/server/site_tests/bluetooth_AdapterSASanity/bluetooth_AdapterSASanity.py
@@ -195,13 +195,21 @@
         self.test_dbus_start_discovery_success()
         self.test_dbus_start_discovery_fail_discovery_in_progress()
         self.test_dbus_start_discovery_fail_power_off()
+
         self.test_dbus_stop_discovery_success()
         self.test_dbus_stop_discovery_fail_discovery_not_in_progress()
         self.test_dbus_stop_discovery_fail_power_off()
+
         self.test_dbus_pause_discovery_success()
         self.test_dbus_pause_discovery_success_no_discovery_in_progress()
         self.test_dbus_pause_discovery_fail_already_paused()
         self.test_dbus_pause_discovery_fail_power_off()
+
+        self.test_dbus_unpause_discovery_success()
+        self.test_dbus_unpause_discovery_fail_without_pause()
+        self.test_dbus_unpause_discovery_fail_power_off()
+        self.test_dbus_unpause_discovery_fail_already_unpaused()
+
         self.test_dbus_get_supported_capabilities_success()
         self.test_dbus_get_supported_capabilities_success_power_off()
 
diff --git a/server/site_tests/cheets_CTS_Instant/cheets_CTS_Instant.py b/server/site_tests/cheets_CTS_Instant/cheets_CTS_Instant.py
index 20ff043..c8b6298 100644
--- a/server/site_tests/cheets_CTS_Instant/cheets_CTS_Instant.py
+++ b/server/site_tests/cheets_CTS_Instant/cheets_CTS_Instant.py
@@ -43,6 +43,9 @@
         cmd = []
         for arg in template:
             cmd.append(arg.format(session_id=session_id))
+        # See b/149681932. Pass empty url to force using local config, instead
+        # of doing a network access (which anyway returns an empty config.)
+        cmd.append('--dynamic-config-url=')
         return cmd
 
     def _tradefed_run_command(self, template):
diff --git a/server/site_tests/cheets_CTS_P/cheets_CTS_P.py b/server/site_tests/cheets_CTS_P/cheets_CTS_P.py
index f830850..7e2c357 100644
--- a/server/site_tests/cheets_CTS_P/cheets_CTS_P.py
+++ b/server/site_tests/cheets_CTS_P/cheets_CTS_P.py
@@ -46,6 +46,7 @@
     def _tradefed_retry_command(self, template, session_id):
         """Build tradefed 'retry' command from template."""
         cmd = []
+        cmd += self.extra_command_flags
         for arg in template:
             cmd.append(arg.format(session_id=session_id))
         return cmd
@@ -53,6 +54,7 @@
     def _tradefed_run_command(self, template):
         """Build tradefed 'run' command from template."""
         cmd = template[:]
+        cmd += self.extra_command_flags
         # 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.')
@@ -134,6 +136,7 @@
             retry_manual_tests=retry_manual_tests,
             warn_on_test_retry=warn_on_test_retry,
             hard_reboot_on_failure=hard_reboot_on_failure)
+        self.extra_command_flags = []
         if camera_facing:
             self.initialize_camerabox(camera_facing, cmdline_args)
 
@@ -181,6 +184,10 @@
         @param prerequisites: a list of prerequisites that identify rogue DUTs.
         @param timeout: time after which tradefed can be interrupted.
         """
+        # See b/149889853. Non-media test basically does not require dynamic
+        # config. To reduce the flakiness, let us suppress the config.
+        if not needs_push_media:
+            self.extra_command_flags.append('--dynamic-config-url=')
         self._run_tradefed_with_retries(
             test_name=test_name,
             run_template=run_template,
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPermissionTestCases b/server/site_tests/cheets_GTS/control.7.0_r3.GtsPermissionTestCases
deleted file mode 100644
index 170a7a9..0000000
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPermissionTestCases
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2016 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_GTS.7.0_r3.GtsPermissionTestCases'
-ATTRIBUTES = 'suite:arc-gts'
-DEPENDENCIES = 'arc'
-JOB_RETRIES = 1
-TEST_TYPE = 'server'
-TIME = 'MEDIUM'
-MAX_RESULT_SIZE_KB = 307200
-DOC = 'Run module GtsPermissionTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'
-
-def run_TS(machine):
-    host_list = [hosts.create_host(machine)]
-    job.run_test(
-        'cheets_GTS',
-        hosts=host_list,
-        iterations=1,
-        tag='7.0_r3.GtsPermissionTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPermissionTestCases',
-        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
-        run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPermissionTestCases', '--ignore-business-logic-failure'],
-        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
-        target_module='GtsPermissionTestCases',
-        target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
-        timeout=720)
-
-parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases b/server/site_tests/cheets_GTS/control.7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases
deleted file mode 100644
index 489e03f..0000000
--- a/server/site_tests/cheets_GTS/control.7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2016 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_GTS.7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases'
-ATTRIBUTES = 'suite:arc-gts-qual'
-DEPENDENCIES = 'arc'
-JOB_RETRIES = 1
-TEST_TYPE = 'server'
-TIME = 'LONG'
-MAX_RESULT_SIZE_KB = 307200
-DOC = 'Run module GtsCameraTestCases, GtsCastHostTestCases, GtsContactsAppDeviceTestCases, GtsContactsTest, GtsContentTestCases, GtsDeviceConfigTestCases, GtsDexModuleRegistrationTestCases, GtsDialerDeviceTestCases, GtsDozeDeviceTestCases, GtsEdiHostTestCases, GtsExoPlayerTestCases, GtsFeaturesTestCases, GtsGameDeviceHostTestCases, GtsGmscoreHostTestCases, GtsGraphicsHostTestCases, GtsHomeHostTestCases, GtsIncidentConfirmationTestCases, GtsIncidentManagerTestCases, GtsInstallPackagesWhitelistDeviceTestCases, GtsInstantAppsHostTestCases, GtsLargeApkHostTestCases, GtsLauncherHostTestCases, GtsLocationHostTestCases, GtsLocationTestCases, GtsMediaTestCases, GtsMemoryHostTestCases, GtsMemoryTestCases, GtsModuleMetadataTestCases, GtsNetStatsHostTestCases, GtsNetTestCases, GtsNetworkStackHostTestCases, GtsNetworkWatchlistTestCases, GtsNmgiarcTestCases, GtsNoPermissionTestCases, GtsNoPermissionTestCases25, GtsNotificationTestCases, GtsOemLockServiceTestCases, GtsOsTestCases, GtsPackageInstallTestCases, GtsPackageInstallerTapjackingTestCases, GtsPackageManagerHostTestCases, GtsPackageNameCertPairsDeviceTestCases, GtsPackageUninstallTestCases, GtsPartnerBookmarksTestCases, GtsPermissionTestCases, GtsPlacementTestCases, GtsPlayAutoInstallTestCases, GtsPlayStoreHostTestCases, GtsPrintTestCases, GtsPrivacyTestCases, GtsPrivilegedUpdatePreparer, GtsPropertiesTestCases, GtsRegulationComplianceTestCases, GtsRlzTestCases, GtsSampleDeviceTestCases, GtsSampleDynamicConfigTestCases, GtsSampleHostTestCases, GtsScreenshotHostTestCases, GtsSearchHostTestCases, GtsSecurityHostTestCases, GtsSecurityTestCases, GtsSensorHostTestCases, GtsSettingsHostTestCases, GtsSettingsTestCases, GtsSetupWizardHostTestCases, GtsSetupWizardNoPermissionTestCases, GtsSimAppDialogTestCases, GtsSmartBatteryDeviceTestCases, GtsSsaidHostTestCases, GtsStagedInstallHostTestCases, GtsStatsdHostTestCases, GtsStorageTestCases, GtsSupervisionTestCases, GtsSuspendAppsPermissionTestCases, GtsSuspendAppsTestCases, GtsTelecomManagerTests, GtsTelephonyTestCases, GtsTestHarnessModeTestCases, GtsTetheringTestCases, GtsTvBugReportTestCases, GtsTvHostTestCases, GtsTvTestCases, GtsUnofficialApisUsageTestCases, GtsUsageStatsTestCases, GtsViewTestCases, GtsWebViewHostTestCases, GtsWebViewTestCases, GtsWellbeingHostTestCases, GtsWellbeingPermissionPolicyTestCases, GtsWellbeingTestCases, GtsYouTubeTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'
-
-def run_TS(machine):
-    host_list = [hosts.create_host(machine)]
-    job.run_test(
-        'cheets_GTS',
-        hosts=host_list,
-        iterations=1,
-        max_retry=9,
-        needs_push_media=True,
-        tag='7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases',
-        test_name='cheets_GTS.7.0_r3.all.GtsCameraTestCases_-_GtsYouTubeTestCases',
-        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
-        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsCameraTestCases', '--include-filter', 'GtsCastHostTestCases', '--include-filter', 'GtsContactsAppDeviceTestCases', '--include-filter', 'GtsContactsTest', '--include-filter', 'GtsContentTestCases', '--include-filter', 'GtsDeviceConfigTestCases', '--include-filter', 'GtsDexModuleRegistrationTestCases', '--include-filter', 'GtsDialerDeviceTestCases', '--include-filter', 'GtsDozeDeviceTestCases', '--include-filter', 'GtsEdiHostTestCases', '--include-filter', 'GtsExoPlayerTestCases', '--include-filter', 'GtsFeaturesTestCases', '--include-filter', 'GtsGameDeviceHostTestCases', '--include-filter', 'GtsGmscoreHostTestCases', '--include-filter', 'GtsGraphicsHostTestCases', '--include-filter', 'GtsHomeHostTestCases', '--include-filter', 'GtsIncidentConfirmationTestCases', '--include-filter', 'GtsIncidentManagerTestCases', '--include-filter', 'GtsInstallPackagesWhitelistDeviceTestCases', '--include-filter', 'GtsInstantAppsHostTestCases', '--include-filter', 'GtsLargeApkHostTestCases', '--include-filter', 'GtsLauncherHostTestCases', '--include-filter', 'GtsLocationHostTestCases', '--include-filter', 'GtsLocationTestCases', '--include-filter', 'GtsMediaTestCases', '--include-filter', 'GtsMemoryHostTestCases', '--include-filter', 'GtsMemoryTestCases', '--include-filter', 'GtsModuleMetadataTestCases', '--include-filter', 'GtsNetStatsHostTestCases', '--include-filter', 'GtsNetTestCases', '--include-filter', 'GtsNetworkStackHostTestCases', '--include-filter', 'GtsNetworkWatchlistTestCases', '--include-filter', 'GtsNmgiarcTestCases', '--include-filter', 'GtsNoPermissionTestCases', '--include-filter', 'GtsNoPermissionTestCases25', '--include-filter', 'GtsNotificationTestCases', '--include-filter', 'GtsOemLockServiceTestCases', '--include-filter', 'GtsOsTestCases', '--include-filter', 'GtsPackageInstallTestCases', '--include-filter', 'GtsPackageInstallerTapjackingTestCases', '--include-filter', 'GtsPackageManagerHostTestCases', '--include-filter', 'GtsPackageNameCertPairsDeviceTestCases', '--include-filter', 'GtsPackageUninstallTestCases', '--include-filter', 'GtsPartnerBookmarksTestCases', '--include-filter', 'GtsPermissionTestCases', '--include-filter', 'GtsPlacementTestCases', '--include-filter', 'GtsPlayAutoInstallTestCases', '--include-filter', 'GtsPlayStoreHostTestCases', '--include-filter', 'GtsPrintTestCases', '--include-filter', 'GtsPrivacyTestCases', '--include-filter', 'GtsPrivilegedUpdatePreparer', '--include-filter', 'GtsPropertiesTestCases', '--include-filter', 'GtsRegulationComplianceTestCases', '--include-filter', 'GtsRlzTestCases', '--include-filter', 'GtsSampleDeviceTestCases', '--include-filter', 'GtsSampleDynamicConfigTestCases', '--include-filter', 'GtsSampleHostTestCases', '--include-filter', 'GtsScreenshotHostTestCases', '--include-filter', 'GtsSearchHostTestCases', '--include-filter', 'GtsSecurityHostTestCases', '--include-filter', 'GtsSecurityTestCases', '--include-filter', 'GtsSensorHostTestCases', '--include-filter', 'GtsSettingsHostTestCases', '--include-filter', 'GtsSettingsTestCases', '--include-filter', 'GtsSetupWizardHostTestCases', '--include-filter', 'GtsSetupWizardNoPermissionTestCases', '--include-filter', 'GtsSimAppDialogTestCases', '--include-filter', 'GtsSmartBatteryDeviceTestCases', '--include-filter', 'GtsSsaidHostTestCases', '--include-filter', 'GtsStagedInstallHostTestCases', '--include-filter', 'GtsStatsdHostTestCases', '--include-filter', 'GtsStorageTestCases', '--include-filter', 'GtsSupervisionTestCases', '--include-filter', 'GtsSuspendAppsPermissionTestCases', '--include-filter', 'GtsSuspendAppsTestCases', '--include-filter', 'GtsTelecomManagerTests', '--include-filter', 'GtsTelephonyTestCases', '--include-filter', 'GtsTestHarnessModeTestCases', '--include-filter', 'GtsTetheringTestCases', '--include-filter', 'GtsTvBugReportTestCases', '--include-filter', 'GtsTvHostTestCases', '--include-filter', 'GtsTvTestCases', '--include-filter', 'GtsUnofficialApisUsageTestCases', '--include-filter', 'GtsUsageStatsTestCases', '--include-filter', 'GtsViewTestCases', '--include-filter', 'GtsWebViewHostTestCases', '--include-filter', 'GtsWebViewTestCases', '--include-filter', 'GtsWellbeingHostTestCases', '--include-filter', 'GtsWellbeingPermissionPolicyTestCases', '--include-filter', 'GtsWellbeingTestCases', '--include-filter', 'GtsYouTubeTestCases', '--ignore-business-logic-failure'],
-        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
-        target_module='all.GtsCameraTestCases_-_GtsYouTubeTestCases',
-        target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
-        prerequisites=['bluetooth'],
-        timeout=86400)
-
-parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.CtsCheckpointTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.CtsCheckpointTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.CtsCheckpointTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.CtsCheckpointTestCases
index 567ec28..71d7a59 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.CtsCheckpointTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.CtsCheckpointTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.CtsCheckpointTestCases'
+NAME = 'cheets_GTS.7.0_r4.CtsCheckpointTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.CtsCheckpointTestCases',
-        test_name='cheets_GTS.7.0_r3.CtsCheckpointTestCases',
+        tag='7.0_r4.CtsCheckpointTestCases',
+        test_name='cheets_GTS.7.0_r4.CtsCheckpointTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'CtsCheckpointTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='CtsCheckpointTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAccountsHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAccountsHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAccountsHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAccountsHostTestCases
index 86ed84e..d2c1e1c 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAccountsHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAccountsHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAccountsHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAccountsHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAccountsHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAccountsHostTestCases',
+        tag='7.0_r4.GtsAccountsHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAccountsHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAccountsHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAccountsHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAdminTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAdminTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAdminTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAdminTestCases
index a1c4425..7eedf19 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAdminTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAdminTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAdminTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAdminTestCases'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsAdminTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAdminTestCases',
+        tag='7.0_r4.GtsAdminTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAdminTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAdminTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAdminTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAfwTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAfwTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAfwTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAfwTestCases
index f7d87e7..1a608ed 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAfwTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAfwTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAfwTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAfwTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAfwTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAfwTestCases',
+        tag='7.0_r4.GtsAfwTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAfwTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAfwTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAfwTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAndroidAutoDeviceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAndroidAutoDeviceTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAndroidAutoDeviceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAndroidAutoDeviceTestCases
index e3b5d58..cc44bd5 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAndroidAutoDeviceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAndroidAutoDeviceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAndroidAutoDeviceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAndroidAutoDeviceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAndroidAutoDeviceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAndroidAutoDeviceTestCases',
+        tag='7.0_r4.GtsAndroidAutoDeviceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAndroidAutoDeviceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAndroidAutoDeviceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAndroidAutoDeviceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsApp b/server/site_tests/cheets_GTS/control.7.0_r4.GtsApp
similarity index 90%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsApp
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsApp
index f17dae1..9a498bd 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsApp
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsApp
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsApp'
+NAME = 'cheets_GTS.7.0_r4.GtsApp'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsApp',
-        test_name='cheets_GTS.7.0_r3.GtsApp',
+        tag='7.0_r4.GtsApp',
+        test_name='cheets_GTS.7.0_r4.GtsApp',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsAppBlacklistDeviceTestCases', '--include-filter', 'GtsAppTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsApp',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsArtManagerHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsArtManagerHostTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsArtManagerHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsArtManagerHostTestCases
index 5f4769f..4660cb7 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsArtManagerHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsArtManagerHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsArtManagerHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsArtManagerHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsArtManagerHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsArtManagerHostTestCases',
+        tag='7.0_r4.GtsArtManagerHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsArtManagerHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsArtManagerHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsArtManagerHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistIntentTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistIntentTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistIntentTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistIntentTestCases
index 7ac4e96..56495ee 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistIntentTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistIntentTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAssistIntentTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAssistIntentTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAssistIntentTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAssistIntentTestCases',
+        tag='7.0_r4.GtsAssistIntentTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAssistIntentTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAssistIntentTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAssistIntentTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistantHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistantHostTestCases
index 91ce467..f277d40 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsAssistantHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAssistantHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsAssistantHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAssistantHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAssistantHostTestCases',
+        tag='7.0_r4.GtsAssistantHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsAssistantHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAssistantHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsAssistantHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsBackup b/server/site_tests/cheets_GTS/control.7.0_r4.GtsBackup
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsBackup
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsBackup
index c5ec90f..a8e00f3 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsBackup
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsBackup
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsBackup'
+NAME = 'cheets_GTS.7.0_r4.GtsBackup'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsBackup',
-        test_name='cheets_GTS.7.0_r3.GtsBackup',
+        tag='7.0_r4.GtsBackup',
+        test_name='cheets_GTS.7.0_r4.GtsBackup',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsBackupHostTestCases', '--include-filter', 'GtsBackupTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsBackup',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsBootStatsTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsBootStatsTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsBootStatsTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsBootStatsTestCases
index ee89f1c..aa0ff27 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsBootStatsTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsBootStatsTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsBootStatsTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsBootStatsTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsBootStatsTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsBootStatsTestCases',
+        tag='7.0_r4.GtsBootStatsTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsBootStatsTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsBootStatsTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsBootStatsTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCallLogTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCallLogTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsCallLogTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsCallLogTestCases
index 2d7ce42..a55143c 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCallLogTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCallLogTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsCallLogTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsCallLogTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsCallLogTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsCallLogTestCases',
+        tag='7.0_r4.GtsCallLogTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsCallLogTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsCallLogTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsCallLogTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCameraTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCameraTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsCameraTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsCameraTestCases
index 89c1ce4..d22edbf 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCameraTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCameraTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsCameraTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsCameraTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsCameraTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsCameraTestCases',
+        tag='7.0_r4.GtsCameraTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsCameraTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsCameraTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsCameraTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCastHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCastHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsCastHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsCastHostTestCases
index 1d3f2d9..5f4325f 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsCastHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsCastHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsCastHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsCastHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsCastHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsCastHostTestCases',
+        tag='7.0_r4.GtsCastHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsCastHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsCastHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsCastHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsContacts b/server/site_tests/cheets_GTS/control.7.0_r4.GtsContacts
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsContacts
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsContacts
index 33daebc..0c99201 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsContacts
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsContacts
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsContacts'
+NAME = 'cheets_GTS.7.0_r4.GtsContacts'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsContacts',
-        test_name='cheets_GTS.7.0_r3.GtsContacts',
+        tag='7.0_r4.GtsContacts',
+        test_name='cheets_GTS.7.0_r4.GtsContacts',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsContactsAppDeviceTestCases', '--include-filter', 'GtsContactsTest', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsContacts',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=360)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsContentTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsContentTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsContentTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsContentTestCases
index f0d3503..32f685e 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsContentTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsContentTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsContentTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsContentTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsContentTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsContentTestCases',
+        tag='7.0_r4.GtsContentTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsContentTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsContentTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsContentTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDeviceConfigTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDeviceConfigTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsDeviceConfigTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsDeviceConfigTestCases
index 443d5c3..eb0f0ab 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDeviceConfigTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDeviceConfigTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsDeviceConfigTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsDeviceConfigTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsDeviceConfigTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsDeviceConfigTestCases',
+        tag='7.0_r4.GtsDeviceConfigTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsDeviceConfigTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsDeviceConfigTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsDeviceConfigTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDexModuleRegistrationTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDexModuleRegistrationTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsDexModuleRegistrationTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsDexModuleRegistrationTestCases
index 36f0588..a3a40d0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDexModuleRegistrationTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDexModuleRegistrationTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsDexModuleRegistrationTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsDexModuleRegistrationTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsDexModuleRegistrationTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsDexModuleRegistrationTestCases',
+        tag='7.0_r4.GtsDexModuleRegistrationTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsDexModuleRegistrationTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsDexModuleRegistrationTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsDexModuleRegistrationTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDialerDeviceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDialerDeviceTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsDialerDeviceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsDialerDeviceTestCases
index 2c40f0d..650aecc 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDialerDeviceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDialerDeviceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsDialerDeviceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsDialerDeviceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsDialerDeviceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsDialerDeviceTestCases',
+        tag='7.0_r4.GtsDialerDeviceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsDialerDeviceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsDialerDeviceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsDialerDeviceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDozeDeviceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDozeDeviceTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsDozeDeviceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsDozeDeviceTestCases
index a4a5732..c1d831e 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsDozeDeviceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsDozeDeviceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsDozeDeviceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsDozeDeviceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsDozeDeviceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsDozeDeviceTestCases',
+        tag='7.0_r4.GtsDozeDeviceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsDozeDeviceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsDozeDeviceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsDozeDeviceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsEdiHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsEdiHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsEdiHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsEdiHostTestCases
index c4e57db..1e371db 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsEdiHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsEdiHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsEdiHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsEdiHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsEdiHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsEdiHostTestCases',
+        tag='7.0_r4.GtsEdiHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsEdiHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsEdiHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsEdiHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsExoPlayerTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsExoPlayerTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsExoPlayerTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsExoPlayerTestCases
index 793d4d8..0d591ce 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsExoPlayerTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsExoPlayerTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsExoPlayerTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsExoPlayerTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsExoPlayerTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsExoPlayerTestCases',
+        tag='7.0_r4.GtsExoPlayerTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsExoPlayerTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsExoPlayerTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsExoPlayerTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=5400)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsFeaturesTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsFeaturesTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsFeaturesTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsFeaturesTestCases
index 3bf8b08..dc0c1d9 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsFeaturesTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsFeaturesTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsFeaturesTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsFeaturesTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsFeaturesTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsFeaturesTestCases',
+        tag='7.0_r4.GtsFeaturesTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsFeaturesTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsFeaturesTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsFeaturesTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGameDeviceHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGameDeviceHostTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsGameDeviceHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsGameDeviceHostTestCases
index 1bb0aa9..0d148a2 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGameDeviceHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGameDeviceHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsGameDeviceHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsGameDeviceHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsGameDeviceHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsGameDeviceHostTestCases',
+        tag='7.0_r4.GtsGameDeviceHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsGameDeviceHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsGameDeviceHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsGameDeviceHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGmscoreHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGmscoreHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsGmscoreHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsGmscoreHostTestCases
index c64a7a4..a652ff1 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGmscoreHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGmscoreHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsGmscoreHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsGmscoreHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsGmscoreHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsGmscoreHostTestCases',
+        tag='7.0_r4.GtsGmscoreHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsGmscoreHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsGmscoreHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsGmscoreHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         prerequisites=['bluetooth'],
         timeout=3600)
 
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGraphicsHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGraphicsHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsGraphicsHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsGraphicsHostTestCases
index 2619dba..ab279e0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsGraphicsHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsGraphicsHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsGraphicsHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsGraphicsHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsGraphicsHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsGraphicsHostTestCases',
+        tag='7.0_r4.GtsGraphicsHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsGraphicsHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsGraphicsHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsGraphicsHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsHomeHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsHomeHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsHomeHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsHomeHostTestCases
index 6aacb07..262c47d 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsHomeHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsHomeHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsHomeHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsHomeHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsHomeHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsHomeHostTestCases',
+        tag='7.0_r4.GtsHomeHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsHomeHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsHomeHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsHomeHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsIncident b/server/site_tests/cheets_GTS/control.7.0_r4.GtsIncident
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsIncident
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsIncident
index 7da0a94..4403a81 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsIncident
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsIncident
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsIncident'
+NAME = 'cheets_GTS.7.0_r4.GtsIncident'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsIncident',
-        test_name='cheets_GTS.7.0_r3.GtsIncident',
+        tag='7.0_r4.GtsIncident',
+        test_name='cheets_GTS.7.0_r4.GtsIncident',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsIncidentConfirmationTestCases', '--include-filter', 'GtsIncidentManagerTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsIncident',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases
index 5c5e3d1..da05a2f 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsInstallPackagesWhitelistDeviceTestCases',
+        tag='7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsInstallPackagesWhitelistDeviceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsInstallPackagesWhitelistDeviceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsInstallPackagesWhitelistDeviceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsInstantAppsHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsInstantAppsHostTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsInstantAppsHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsInstantAppsHostTestCases
index 4b695ad..d4ae01d 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsInstantAppsHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsInstantAppsHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsInstantAppsHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsInstantAppsHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsInstantAppsHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsInstantAppsHostTestCases',
+        tag='7.0_r4.GtsInstantAppsHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsInstantAppsHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsInstantAppsHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsInstantAppsHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLargeApkHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLargeApkHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsLargeApkHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsLargeApkHostTestCases
index 88f3c6c..c05e104 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLargeApkHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLargeApkHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsLargeApkHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsLargeApkHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsLargeApkHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsLargeApkHostTestCases',
+        tag='7.0_r4.GtsLargeApkHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsLargeApkHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsLargeApkHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsLargeApkHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLauncherHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLauncherHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsLauncherHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsLauncherHostTestCases
index 0b9fbc3..c8238d7 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLauncherHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLauncherHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsLauncherHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsLauncherHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsLauncherHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsLauncherHostTestCases',
+        tag='7.0_r4.GtsLauncherHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsLauncherHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsLauncherHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsLauncherHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLocation b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLocation
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsLocation
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsLocation
index b81bca2..2bb93a0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsLocation
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsLocation
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsLocation'
+NAME = 'cheets_GTS.7.0_r4.GtsLocation'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsLocation',
-        test_name='cheets_GTS.7.0_r3.GtsLocation',
+        tag='7.0_r4.GtsLocation',
+        test_name='cheets_GTS.7.0_r4.GtsLocation',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsLocationHostTestCases', '--include-filter', 'GtsLocationTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsLocation',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsMediaTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsMediaTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsMediaTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsMediaTestCases
index 57820fe..9439471 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsMediaTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsMediaTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsMediaTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsMediaTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsMediaTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsMediaTestCases',
+        tag='7.0_r4.GtsMediaTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsMediaTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsMediaTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsMediaTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=14400)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsMemory b/server/site_tests/cheets_GTS/control.7.0_r4.GtsMemory
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsMemory
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsMemory
index 49bad96..0fee9a0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsMemory
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsMemory
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsMemory'
+NAME = 'cheets_GTS.7.0_r4.GtsMemory'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsMemory',
-        test_name='cheets_GTS.7.0_r3.GtsMemory',
+        tag='7.0_r4.GtsMemory',
+        test_name='cheets_GTS.7.0_r4.GtsMemory',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsMemoryHostTestCases', '--include-filter', 'GtsMemoryTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsMemory',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsModuleMetadataTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsModuleMetadataTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsModuleMetadataTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsModuleMetadataTestCases
index 0624389..c939e76 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsModuleMetadataTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsModuleMetadataTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsModuleMetadataTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsModuleMetadataTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsModuleMetadataTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsModuleMetadataTestCases',
+        tag='7.0_r4.GtsModuleMetadataTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsModuleMetadataTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsModuleMetadataTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsModuleMetadataTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNet b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNet
similarity index 90%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsNet
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsNet
index 16ebd56..d48f59c 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNet
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNet
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNet'
+NAME = 'cheets_GTS.7.0_r4.GtsNet'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsNet',
-        test_name='cheets_GTS.7.0_r3.GtsNet',
+        tag='7.0_r4.GtsNet',
+        test_name='cheets_GTS.7.0_r4.GtsNet',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsNetStatsHostTestCases', '--include-filter', 'GtsNetTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsNet',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNetwork b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNetwork
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsNetwork
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsNetwork
index d125848..d612fcc 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNetwork
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNetwork
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNetwork'
+NAME = 'cheets_GTS.7.0_r4.GtsNetwork'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsNetwork',
-        test_name='cheets_GTS.7.0_r3.GtsNetwork',
+        tag='7.0_r4.GtsNetwork',
+        test_name='cheets_GTS.7.0_r4.GtsNetwork',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsNetworkStackHostTestCases', '--include-filter', 'GtsNetworkWatchlistTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsNetwork',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNmgiarcTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNmgiarcTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsNmgiarcTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsNmgiarcTestCases
index 38403c7..e1af15a 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNmgiarcTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNmgiarcTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNmgiarcTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsNmgiarcTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsNmgiarcTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsNmgiarcTestCases',
+        tag='7.0_r4.GtsNmgiarcTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsNmgiarcTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsNmgiarcTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsNmgiarcTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNoPermission
similarity index 88%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsNoPermission
index 61fa455..45d523c 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNoPermission
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNoPermission'
+NAME = 'cheets_GTS.7.0_r4.GtsNoPermission'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsNoPermission',
-        test_name='cheets_GTS.7.0_r3.GtsNoPermission',
+        tag='7.0_r4.GtsNoPermission',
+        test_name='cheets_GTS.7.0_r4.GtsNoPermission',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsNoPermissionTestCases', '--include-filter', 'GtsNoPermissionTestCases25', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsNoPermission',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNotificationTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNotificationTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsNotificationTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsNotificationTestCases
index f4542d7..68ef2a5 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNotificationTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsNotificationTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNotificationTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsNotificationTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsNotificationTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsNotificationTestCases',
+        tag='7.0_r4.GtsNotificationTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsNotificationTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsNotificationTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsNotificationTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsOemLockServiceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsOemLockServiceTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsOemLockServiceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsOemLockServiceTestCases
index 2e4ef57..c3184ff 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsOemLockServiceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsOemLockServiceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsOemLockServiceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsOemLockServiceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsOemLockServiceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsOemLockServiceTestCases',
+        tag='7.0_r4.GtsOemLockServiceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsOemLockServiceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsOemLockServiceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsOemLockServiceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsOsTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsOsTestCases
similarity index 88%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsOsTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsOsTestCases
index 6acc239..e4bf140 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsOsTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsOsTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsOsTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsOsTestCases'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsOsTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsOsTestCases',
+        tag='7.0_r4.GtsOsTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsOsTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsOsTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsOsTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPackage b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPackage
similarity index 91%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPackage
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPackage
index 1516d58..81aa117 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPackage
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPackage
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPackage'
+NAME = 'cheets_GTS.7.0_r4.GtsPackage'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPackage',
-        test_name='cheets_GTS.7.0_r3.GtsPackage',
+        tag='7.0_r4.GtsPackage',
+        test_name='cheets_GTS.7.0_r4.GtsPackage',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsPackageInstallTestCases', '--include-filter', 'GtsPackageInstallerTapjackingTestCases', '--include-filter', 'GtsPackageManagerHostTestCases', '--include-filter', 'GtsPackageNameCertPairsDeviceTestCases', '--include-filter', 'GtsPackageUninstallTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPackage',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=2160)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPartnerBookmarksTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPartnerBookmarksTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPartnerBookmarksTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPartnerBookmarksTestCases
index 7809cd5..de11e64 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPartnerBookmarksTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPartnerBookmarksTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPartnerBookmarksTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsPartnerBookmarksTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPartnerBookmarksTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPartnerBookmarksTestCases',
+        tag='7.0_r4.GtsPartnerBookmarksTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsPartnerBookmarksTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPartnerBookmarksTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPartnerBookmarksTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPermission
similarity index 66%
copy from server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission
copy to server/site_tests/cheets_GTS/control.7.0_r4.GtsPermission
index 61fa455..3219df9 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsNoPermission
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPermission
@@ -5,14 +5,14 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsNoPermission'
+NAME = 'cheets_GTS.7.0_r4.GtsPermission'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
 TEST_TYPE = 'server'
 TIME = 'MEDIUM'
 MAX_RESULT_SIZE_KB = 307200
-DOC = 'Run module GtsNoPermissionTestCases, GtsNoPermissionTestCases25 of the Android Google Test Suite (GTS) in the ARC++ container.'
+DOC = 'Run module GtsPermissionControllerHostTestCases, GtsPermissionTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'
 
 def run_TS(machine):
     host_list = [hosts.create_host(machine)]
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsNoPermission',
-        test_name='cheets_GTS.7.0_r3.GtsNoPermission',
+        tag='7.0_r4.GtsPermission',
+        test_name='cheets_GTS.7.0_r4.GtsPermission',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
-        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsNoPermissionTestCases', '--include-filter', 'GtsNoPermissionTestCases25', '--ignore-business-logic-failure'],
+        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsPermissionControllerHostTestCases', '--include-filter', 'GtsPermissionTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
-        target_module='GtsNoPermission',
+        target_module='GtsPermission',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPlacementTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPlacementTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPlacementTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPlacementTestCases
index 5a004c3..592e3e9 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPlacementTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPlacementTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPlacementTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsPlacementTestCases'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsPlacementTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPlacementTestCases',
+        tag='7.0_r4.GtsPlacementTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsPlacementTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPlacementTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPlacementTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPlay b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPlay
similarity index 90%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPlay
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPlay
index 444128a..4d63fde 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPlay
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPlay
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPlay'
+NAME = 'cheets_GTS.7.0_r4.GtsPlay'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPlay',
-        test_name='cheets_GTS.7.0_r3.GtsPlay',
+        tag='7.0_r4.GtsPlay',
+        test_name='cheets_GTS.7.0_r4.GtsPlay',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsPlayAutoInstallTestCases', '--include-filter', 'GtsPlayStoreHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPlay',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrintTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrintTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPrintTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPrintTestCases
index 8539c8f..b562ab0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrintTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrintTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPrintTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsPrintTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPrintTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPrintTestCases',
+        tag='7.0_r4.GtsPrintTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsPrintTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPrintTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPrintTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivacyTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivacyTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivacyTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivacyTestCases
index 04faabd..e31694d 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivacyTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivacyTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPrivacyTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsPrivacyTestCases'
 ATTRIBUTES = 'suite:arc-gts, suite:bvt-perbuild'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=3,
-        tag='7.0_r3.GtsPrivacyTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPrivacyTestCases',
+        tag='7.0_r4.GtsPrivacyTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsPrivacyTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPrivacyTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPrivacyTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivilegedUpdatePreparer b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivilegedUpdatePreparer
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivilegedUpdatePreparer
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivilegedUpdatePreparer
index de39a04..2f15af4 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPrivilegedUpdatePreparer
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPrivilegedUpdatePreparer
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPrivilegedUpdatePreparer'
+NAME = 'cheets_GTS.7.0_r4.GtsPrivilegedUpdatePreparer'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPrivilegedUpdatePreparer',
-        test_name='cheets_GTS.7.0_r3.GtsPrivilegedUpdatePreparer',
+        tag='7.0_r4.GtsPrivilegedUpdatePreparer',
+        test_name='cheets_GTS.7.0_r4.GtsPrivilegedUpdatePreparer',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPrivilegedUpdatePreparer', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPrivilegedUpdatePreparer',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPropertiesTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPropertiesTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsPropertiesTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsPropertiesTestCases
index e94f928..59431c5 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsPropertiesTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsPropertiesTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsPropertiesTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsPropertiesTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsPropertiesTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsPropertiesTestCases',
+        tag='7.0_r4.GtsPropertiesTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsPropertiesTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsPropertiesTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsPropertiesTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsRegulationComplianceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsRegulationComplianceTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsRegulationComplianceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsRegulationComplianceTestCases
index 65d6f1f..44704cc 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsRegulationComplianceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsRegulationComplianceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsRegulationComplianceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsRegulationComplianceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsRegulationComplianceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsRegulationComplianceTestCases',
+        tag='7.0_r4.GtsRegulationComplianceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsRegulationComplianceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsRegulationComplianceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsRegulationComplianceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsRlzTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsRlzTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsRlzTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsRlzTestCases
index 4cf4681..a78e19d 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsRlzTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsRlzTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsRlzTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsRlzTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsRlzTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsRlzTestCases',
+        tag='7.0_r4.GtsRlzTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsRlzTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsRlzTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsRlzTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSample b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSample
similarity index 90%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSample
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSample
index 3f040cb..bc53788 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSample
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSample
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSample'
+NAME = 'cheets_GTS.7.0_r4.GtsSample'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSample',
-        test_name='cheets_GTS.7.0_r3.GtsSample',
+        tag='7.0_r4.GtsSample',
+        test_name='cheets_GTS.7.0_r4.GtsSample',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsSampleDeviceTestCases', '--include-filter', 'GtsSampleDynamicConfigTestCases', '--include-filter', 'GtsSampleHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSample',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1440)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsScreenshotHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsScreenshotHostTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsScreenshotHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsScreenshotHostTestCases
index 3589545..6985c0e 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsScreenshotHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsScreenshotHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsScreenshotHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsScreenshotHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsScreenshotHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsScreenshotHostTestCases',
+        tag='7.0_r4.GtsScreenshotHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsScreenshotHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsScreenshotHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsScreenshotHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSearchHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSearchHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSearchHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSearchHostTestCases
index 7344d82..1dd4753 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSearchHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSearchHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSearchHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSearchHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSearchHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSearchHostTestCases',
+        tag='7.0_r4.GtsSearchHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSearchHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSearchHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSearchHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSecurity b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSecurity
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSecurity
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSecurity
index 60c18ef..1094d83 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSecurity
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSecurity
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSecurity'
+NAME = 'cheets_GTS.7.0_r4.GtsSecurity'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSecurity',
-        test_name='cheets_GTS.7.0_r3.GtsSecurity',
+        tag='7.0_r4.GtsSecurity',
+        test_name='cheets_GTS.7.0_r4.GtsSecurity',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsSecurityHostTestCases', '--include-filter', 'GtsSecurityTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSecurity',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSensorHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSensorHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSensorHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSensorHostTestCases
index a4a46b0..7f5950a 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSensorHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSensorHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSensorHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSensorHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSensorHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSensorHostTestCases',
+        tag='7.0_r4.GtsSensorHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSensorHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSensorHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSensorHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSettings b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSettings
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSettings
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSettings
index 18e5e44..b238a59 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSettings
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSettings
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSettings'
+NAME = 'cheets_GTS.7.0_r4.GtsSettings'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSettings',
-        test_name='cheets_GTS.7.0_r3.GtsSettings',
+        tag='7.0_r4.GtsSettings',
+        test_name='cheets_GTS.7.0_r4.GtsSettings',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsSettingsHostTestCases', '--include-filter', 'GtsSettingsTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSettings',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSetupWizard b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSetupWizard
similarity index 88%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSetupWizard
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSetupWizard
index fb14bad..9b8eb39 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSetupWizard
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSetupWizard
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSetupWizard'
+NAME = 'cheets_GTS.7.0_r4.GtsSetupWizard'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSetupWizard',
-        test_name='cheets_GTS.7.0_r3.GtsSetupWizard',
+        tag='7.0_r4.GtsSetupWizard',
+        test_name='cheets_GTS.7.0_r4.GtsSetupWizard',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsSetupWizardHostTestCases', '--include-filter', 'GtsSetupWizardNoPermissionTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSetupWizard',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSimAppDialogTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSimAppDialogTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSimAppDialogTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSimAppDialogTestCases
index 125a26d..9636915 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSimAppDialogTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSimAppDialogTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSimAppDialogTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSimAppDialogTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSimAppDialogTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSimAppDialogTestCases',
+        tag='7.0_r4.GtsSimAppDialogTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSimAppDialogTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSimAppDialogTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSimAppDialogTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSmartBatteryDeviceTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSmartBatteryDeviceTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSmartBatteryDeviceTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSmartBatteryDeviceTestCases
index dea28c6..609f1c0 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSmartBatteryDeviceTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSmartBatteryDeviceTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSmartBatteryDeviceTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSmartBatteryDeviceTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSmartBatteryDeviceTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSmartBatteryDeviceTestCases',
+        tag='7.0_r4.GtsSmartBatteryDeviceTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSmartBatteryDeviceTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSmartBatteryDeviceTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSmartBatteryDeviceTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSsaidHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSsaidHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSsaidHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSsaidHostTestCases
index f00847e..d09d30f 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSsaidHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSsaidHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSsaidHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSsaidHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSsaidHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSsaidHostTestCases',
+        tag='7.0_r4.GtsSsaidHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSsaidHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSsaidHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSsaidHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStagedInstallHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStagedInstallHostTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsStagedInstallHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsStagedInstallHostTestCases
index 7cc3182..dd1a337 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStagedInstallHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStagedInstallHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsStagedInstallHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsStagedInstallHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsStagedInstallHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsStagedInstallHostTestCases',
+        tag='7.0_r4.GtsStagedInstallHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsStagedInstallHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsStagedInstallHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsStagedInstallHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStatsdHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStatsdHostTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsStatsdHostTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsStatsdHostTestCases
index 30013d9..382107f 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStatsdHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStatsdHostTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsStatsdHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsStatsdHostTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsStatsdHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsStatsdHostTestCases',
+        tag='7.0_r4.GtsStatsdHostTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsStatsdHostTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsStatsdHostTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsStatsdHostTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStorageTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStorageTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsStorageTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsStorageTestCases
index 6ada8b4..425b39a 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsStorageTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsStorageTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsStorageTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsStorageTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsStorageTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsStorageTestCases',
+        tag='7.0_r4.GtsStorageTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsStorageTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsStorageTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsStorageTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSupervisionTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSupervisionTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSupervisionTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSupervisionTestCases
index 88f4136..1941d30 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSupervisionTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSupervisionTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSupervisionTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsSupervisionTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSupervisionTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsSupervisionTestCases',
+        tag='7.0_r4.GtsSupervisionTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsSupervisionTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsSupervisionTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSupervisionTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSuspendApps b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSuspendApps
similarity index 88%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsSuspendApps
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsSuspendApps
index 70b31cd..03b2a94 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsSuspendApps
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsSuspendApps
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsSuspendApps'
+NAME = 'cheets_GTS.7.0_r4.GtsSuspendApps'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsSuspendApps',
-        test_name='cheets_GTS.7.0_r3.GtsSuspendApps',
+        tag='7.0_r4.GtsSuspendApps',
+        test_name='cheets_GTS.7.0_r4.GtsSuspendApps',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsSuspendAppsPermissionTestCases', '--include-filter', 'GtsSuspendAppsTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsSuspendApps',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTelecomManagerTests b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTelecomManagerTests
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsTelecomManagerTests
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsTelecomManagerTests
index bc79a95..11a32b2 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTelecomManagerTests
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTelecomManagerTests
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsTelecomManagerTests'
+NAME = 'cheets_GTS.7.0_r4.GtsTelecomManagerTests'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsTelecomManagerTests',
-        test_name='cheets_GTS.7.0_r3.GtsTelecomManagerTests',
+        tag='7.0_r4.GtsTelecomManagerTests',
+        test_name='cheets_GTS.7.0_r4.GtsTelecomManagerTests',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsTelecomManagerTests', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsTelecomManagerTests',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTelephonyTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTelephonyTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsTelephonyTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsTelephonyTestCases
index 05c76a5..2d751fc 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTelephonyTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTelephonyTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsTelephonyTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsTelephonyTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsTelephonyTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsTelephonyTestCases',
+        tag='7.0_r4.GtsTelephonyTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsTelephonyTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsTelephonyTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsTelephonyTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTestHarnessModeTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTestHarnessModeTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsTestHarnessModeTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsTestHarnessModeTestCases
index 01996cb..0ef166a 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTestHarnessModeTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTestHarnessModeTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsTestHarnessModeTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsTestHarnessModeTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsTestHarnessModeTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsTestHarnessModeTestCases',
+        tag='7.0_r4.GtsTestHarnessModeTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsTestHarnessModeTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsTestHarnessModeTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsTestHarnessModeTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTetheringTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTetheringTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsTetheringTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsTetheringTestCases
index ddc59ad..56e186c 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTetheringTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTetheringTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsTetheringTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsTetheringTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsTetheringTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsTetheringTestCases',
+        tag='7.0_r4.GtsTetheringTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsTetheringTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsTetheringTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsTetheringTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTv b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTv
similarity index 90%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsTv
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsTv
index 312c2d9..48e7488 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsTv
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsTv
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsTv'
+NAME = 'cheets_GTS.7.0_r4.GtsTv'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsTv',
-        test_name='cheets_GTS.7.0_r3.GtsTv',
+        tag='7.0_r4.GtsTv',
+        test_name='cheets_GTS.7.0_r4.GtsTv',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsTvBugReportTestCases', '--include-filter', 'GtsTvHostTestCases', '--include-filter', 'GtsTvTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsTv',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1440)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsUnofficialApisUsageTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsUnofficialApisUsageTestCases
similarity index 85%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsUnofficialApisUsageTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsUnofficialApisUsageTestCases
index 92e9b91..d20a113 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsUnofficialApisUsageTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsUnofficialApisUsageTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsUnofficialApisUsageTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsUnofficialApisUsageTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsUnofficialApisUsageTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsUnofficialApisUsageTestCases',
+        tag='7.0_r4.GtsUnofficialApisUsageTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsUnofficialApisUsageTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsUnofficialApisUsageTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsUnofficialApisUsageTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsUsageStatsTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsUsageStatsTestCases
similarity index 86%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsUsageStatsTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsUsageStatsTestCases
index 18135d2..1b077be 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsUsageStatsTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsUsageStatsTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsUsageStatsTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsUsageStatsTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsUsageStatsTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsUsageStatsTestCases',
+        tag='7.0_r4.GtsUsageStatsTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsUsageStatsTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsUsageStatsTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsUsageStatsTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsViewTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsViewTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsViewTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsViewTestCases
index b1fb90a..5c212af 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsViewTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsViewTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsViewTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsViewTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsViewTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsViewTestCases',
+        tag='7.0_r4.GtsViewTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsViewTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsViewTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsViewTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsWebView b/server/site_tests/cheets_GTS/control.7.0_r4.GtsWebView
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsWebView
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsWebView
index 8bc9bf1..bc47d5b 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsWebView
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsWebView
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsWebView'
+NAME = 'cheets_GTS.7.0_r4.GtsWebView'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsWebView',
-        test_name='cheets_GTS.7.0_r3.GtsWebView',
+        tag='7.0_r4.GtsWebView',
+        test_name='cheets_GTS.7.0_r4.GtsWebView',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsWebViewHostTestCases', '--include-filter', 'GtsWebViewTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsWebView',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1080)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsWellbeing b/server/site_tests/cheets_GTS/control.7.0_r4.GtsWellbeing
similarity index 89%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsWellbeing
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsWellbeing
index 5e2216b..6904a1e 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsWellbeing
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsWellbeing
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsWellbeing'
+NAME = 'cheets_GTS.7.0_r4.GtsWellbeing'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsWellbeing',
-        test_name='cheets_GTS.7.0_r3.GtsWellbeing',
+        tag='7.0_r4.GtsWellbeing',
+        test_name='cheets_GTS.7.0_r4.GtsWellbeing',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsWellbeingHostTestCases', '--include-filter', 'GtsWellbeingPermissionPolicyTestCases', '--include-filter', 'GtsWellbeingTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsWellbeing',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1440)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsYouTubeTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.GtsYouTubeTestCases
similarity index 87%
rename from server/site_tests/cheets_GTS/control.7.0_r3.GtsYouTubeTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.GtsYouTubeTestCases
index c4c09ad..c28ecfbb 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsYouTubeTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.GtsYouTubeTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsYouTubeTestCases'
+NAME = 'cheets_GTS.7.0_r4.GtsYouTubeTestCases'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         needs_push_media=True,
-        tag='7.0_r3.GtsYouTubeTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsYouTubeTestCases',
+        tag='7.0_r4.GtsYouTubeTestCases',
+        test_name='cheets_GTS.7.0_r4.GtsYouTubeTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsYouTubeTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='GtsYouTubeTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=3600)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.ReviewPermissionHelperGts
similarity index 72%
copy from server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases
copy to server/site_tests/cheets_GTS/control.7.0_r4.ReviewPermissionHelperGts
index 91ce467..aa9a70f 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.GtsAssistantHostTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.ReviewPermissionHelperGts
@@ -5,14 +5,14 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.GtsAssistantHostTestCases'
+NAME = 'cheets_GTS.7.0_r4.ReviewPermissionHelperGts'
 ATTRIBUTES = 'suite:arc-gts'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
 TEST_TYPE = 'server'
 TIME = 'MEDIUM'
 MAX_RESULT_SIZE_KB = 307200
-DOC = 'Run module GtsAssistantHostTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'
+DOC = 'Run module ReviewPermissionHelperGts of the Android Google Test Suite (GTS) in the ARC++ container.'
 
 def run_TS(machine):
     host_list = [hosts.create_host(machine)]
@@ -20,14 +20,14 @@
         'cheets_GTS',
         hosts=host_list,
         iterations=1,
-        tag='7.0_r3.GtsAssistantHostTestCases',
-        test_name='cheets_GTS.7.0_r3.GtsAssistantHostTestCases',
+        tag='7.0_r4.ReviewPermissionHelperGts',
+        test_name='cheets_GTS.7.0_r4.ReviewPermissionHelperGts',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
-        run_template=['run', 'commandAndExit', 'gts', '--module', 'GtsAssistantHostTestCases', '--ignore-business-logic-failure'],
+        run_template=['run', 'commandAndExit', 'gts', '--module', 'ReviewPermissionHelperGts', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
-        target_module='GtsAssistantHostTestCases',
+        target_module='ReviewPermissionHelperGts',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=720)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases b/server/site_tests/cheets_GTS/control.7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases
similarity index 91%
rename from server/site_tests/cheets_GTS/control.7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases
rename to server/site_tests/cheets_GTS/control.7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases
index 466e9ca..583d92b 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases'
+NAME = 'cheets_GTS.7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases'
 ATTRIBUTES = 'suite:arc-gts-qual'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 1
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=9,
-        tag='7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases',
-        test_name='cheets_GTS.7.0_r3.all.CtsCheckpointTestCases_-_GtsCallLogTestCases',
+        tag='7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases',
+        test_name='cheets_GTS.7.0_r4.all.CtsCheckpointTestCases_-_GtsCallLogTestCases',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'CtsCheckpointTestCases', '--include-filter', 'GtsAccountsHostTestCases', '--include-filter', 'GtsAdminTestCases', '--include-filter', 'GtsAfwTestCases', '--include-filter', 'GtsAndroidAutoDeviceTestCases', '--include-filter', 'GtsAppBlacklistDeviceTestCases', '--include-filter', 'GtsAppTestCases', '--include-filter', 'GtsArtManagerHostTestCases', '--include-filter', 'GtsAssistIntentTestCases', '--include-filter', 'GtsAssistantHostTestCases', '--include-filter', 'GtsBackupHostTestCases', '--include-filter', 'GtsBackupTestCases', '--include-filter', 'GtsBootStatsTestCases', '--include-filter', 'GtsCallLogTestCases', '--ignore-business-logic-failure'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='all.CtsCheckpointTestCases_-_GtsCallLogTestCases',
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=86400)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts b/server/site_tests/cheets_GTS/control.7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts
new file mode 100644
index 0000000..d701f9f
--- /dev/null
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts
@@ -0,0 +1,36 @@
+# Copyright 2016 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_GTS.7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts'
+ATTRIBUTES = 'suite:arc-gts-qual'
+DEPENDENCIES = 'arc'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'LONG'
+MAX_RESULT_SIZE_KB = 307200
+DOC = 'Run module GtsCameraTestCases, GtsCastHostTestCases, GtsContactsAppDeviceTestCases, GtsContactsTest, GtsContentTestCases, GtsDeviceConfigTestCases, GtsDexModuleRegistrationTestCases, GtsDialerDeviceTestCases, GtsDozeDeviceTestCases, GtsEdiHostTestCases, GtsExoPlayerTestCases, GtsFeaturesTestCases, GtsGameDeviceHostTestCases, GtsGmscoreHostTestCases, GtsGraphicsHostTestCases, GtsHomeHostTestCases, GtsIncidentConfirmationTestCases, GtsIncidentManagerTestCases, GtsInstallPackagesWhitelistDeviceTestCases, GtsInstantAppsHostTestCases, GtsLargeApkHostTestCases, GtsLauncherHostTestCases, GtsLocationHostTestCases, GtsLocationTestCases, GtsMediaTestCases, GtsMemoryHostTestCases, GtsMemoryTestCases, GtsModuleMetadataTestCases, GtsNetStatsHostTestCases, GtsNetTestCases, GtsNetworkStackHostTestCases, GtsNetworkWatchlistTestCases, GtsNmgiarcTestCases, GtsNoPermissionTestCases, GtsNoPermissionTestCases25, GtsNotificationTestCases, GtsOemLockServiceTestCases, GtsOsTestCases, GtsPackageInstallTestCases, GtsPackageInstallerTapjackingTestCases, GtsPackageManagerHostTestCases, GtsPackageNameCertPairsDeviceTestCases, GtsPackageUninstallTestCases, GtsPartnerBookmarksTestCases, GtsPermissionControllerHostTestCases, GtsPermissionTestCases, GtsPlacementTestCases, GtsPlayAutoInstallTestCases, GtsPlayStoreHostTestCases, GtsPrintTestCases, GtsPrivacyTestCases, GtsPrivilegedUpdatePreparer, GtsPropertiesTestCases, GtsRegulationComplianceTestCases, GtsRlzTestCases, GtsSampleDeviceTestCases, GtsSampleDynamicConfigTestCases, GtsSampleHostTestCases, GtsScreenshotHostTestCases, GtsSearchHostTestCases, GtsSecurityHostTestCases, GtsSecurityTestCases, GtsSensorHostTestCases, GtsSettingsHostTestCases, GtsSettingsTestCases, GtsSetupWizardHostTestCases, GtsSetupWizardNoPermissionTestCases, GtsSimAppDialogTestCases, GtsSmartBatteryDeviceTestCases, GtsSsaidHostTestCases, GtsStagedInstallHostTestCases, GtsStatsdHostTestCases, GtsStorageTestCases, GtsSupervisionTestCases, GtsSuspendAppsPermissionTestCases, GtsSuspendAppsTestCases, GtsTelecomManagerTests, GtsTelephonyTestCases, GtsTestHarnessModeTestCases, GtsTetheringTestCases, GtsTvBugReportTestCases, GtsTvHostTestCases, GtsTvTestCases, GtsUnofficialApisUsageTestCases, GtsUsageStatsTestCases, GtsViewTestCases, GtsWebViewHostTestCases, GtsWebViewTestCases, GtsWellbeingHostTestCases, GtsWellbeingPermissionPolicyTestCases, GtsWellbeingTestCases, GtsYouTubeTestCases, ReviewPermissionHelperGts of the Android Google Test Suite (GTS) in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_GTS',
+        hosts=host_list,
+        iterations=1,
+        max_retry=9,
+        needs_push_media=True,
+        tag='7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts',
+        test_name='cheets_GTS.7.0_r4.all.GtsCameraTestCases_-_ReviewPermissionHelperGts',
+        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
+        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsCameraTestCases', '--include-filter', 'GtsCastHostTestCases', '--include-filter', 'GtsContactsAppDeviceTestCases', '--include-filter', 'GtsContactsTest', '--include-filter', 'GtsContentTestCases', '--include-filter', 'GtsDeviceConfigTestCases', '--include-filter', 'GtsDexModuleRegistrationTestCases', '--include-filter', 'GtsDialerDeviceTestCases', '--include-filter', 'GtsDozeDeviceTestCases', '--include-filter', 'GtsEdiHostTestCases', '--include-filter', 'GtsExoPlayerTestCases', '--include-filter', 'GtsFeaturesTestCases', '--include-filter', 'GtsGameDeviceHostTestCases', '--include-filter', 'GtsGmscoreHostTestCases', '--include-filter', 'GtsGraphicsHostTestCases', '--include-filter', 'GtsHomeHostTestCases', '--include-filter', 'GtsIncidentConfirmationTestCases', '--include-filter', 'GtsIncidentManagerTestCases', '--include-filter', 'GtsInstallPackagesWhitelistDeviceTestCases', '--include-filter', 'GtsInstantAppsHostTestCases', '--include-filter', 'GtsLargeApkHostTestCases', '--include-filter', 'GtsLauncherHostTestCases', '--include-filter', 'GtsLocationHostTestCases', '--include-filter', 'GtsLocationTestCases', '--include-filter', 'GtsMediaTestCases', '--include-filter', 'GtsMemoryHostTestCases', '--include-filter', 'GtsMemoryTestCases', '--include-filter', 'GtsModuleMetadataTestCases', '--include-filter', 'GtsNetStatsHostTestCases', '--include-filter', 'GtsNetTestCases', '--include-filter', 'GtsNetworkStackHostTestCases', '--include-filter', 'GtsNetworkWatchlistTestCases', '--include-filter', 'GtsNmgiarcTestCases', '--include-filter', 'GtsNoPermissionTestCases', '--include-filter', 'GtsNoPermissionTestCases25', '--include-filter', 'GtsNotificationTestCases', '--include-filter', 'GtsOemLockServiceTestCases', '--include-filter', 'GtsOsTestCases', '--include-filter', 'GtsPackageInstallTestCases', '--include-filter', 'GtsPackageInstallerTapjackingTestCases', '--include-filter', 'GtsPackageManagerHostTestCases', '--include-filter', 'GtsPackageNameCertPairsDeviceTestCases', '--include-filter', 'GtsPackageUninstallTestCases', '--include-filter', 'GtsPartnerBookmarksTestCases', '--include-filter', 'GtsPermissionControllerHostTestCases', '--include-filter', 'GtsPermissionTestCases', '--include-filter', 'GtsPlacementTestCases', '--include-filter', 'GtsPlayAutoInstallTestCases', '--include-filter', 'GtsPlayStoreHostTestCases', '--include-filter', 'GtsPrintTestCases', '--include-filter', 'GtsPrivacyTestCases', '--include-filter', 'GtsPrivilegedUpdatePreparer', '--include-filter', 'GtsPropertiesTestCases', '--include-filter', 'GtsRegulationComplianceTestCases', '--include-filter', 'GtsRlzTestCases', '--include-filter', 'GtsSampleDeviceTestCases', '--include-filter', 'GtsSampleDynamicConfigTestCases', '--include-filter', 'GtsSampleHostTestCases', '--include-filter', 'GtsScreenshotHostTestCases', '--include-filter', 'GtsSearchHostTestCases', '--include-filter', 'GtsSecurityHostTestCases', '--include-filter', 'GtsSecurityTestCases', '--include-filter', 'GtsSensorHostTestCases', '--include-filter', 'GtsSettingsHostTestCases', '--include-filter', 'GtsSettingsTestCases', '--include-filter', 'GtsSetupWizardHostTestCases', '--include-filter', 'GtsSetupWizardNoPermissionTestCases', '--include-filter', 'GtsSimAppDialogTestCases', '--include-filter', 'GtsSmartBatteryDeviceTestCases', '--include-filter', 'GtsSsaidHostTestCases', '--include-filter', 'GtsStagedInstallHostTestCases', '--include-filter', 'GtsStatsdHostTestCases', '--include-filter', 'GtsStorageTestCases', '--include-filter', 'GtsSupervisionTestCases', '--include-filter', 'GtsSuspendAppsPermissionTestCases', '--include-filter', 'GtsSuspendAppsTestCases', '--include-filter', 'GtsTelecomManagerTests', '--include-filter', 'GtsTelephonyTestCases', '--include-filter', 'GtsTestHarnessModeTestCases', '--include-filter', 'GtsTetheringTestCases', '--include-filter', 'GtsTvBugReportTestCases', '--include-filter', 'GtsTvHostTestCases', '--include-filter', 'GtsTvTestCases', '--include-filter', 'GtsUnofficialApisUsageTestCases', '--include-filter', 'GtsUsageStatsTestCases', '--include-filter', 'GtsViewTestCases', '--include-filter', 'GtsWebViewHostTestCases', '--include-filter', 'GtsWebViewTestCases', '--include-filter', 'GtsWellbeingHostTestCases', '--include-filter', 'GtsWellbeingPermissionPolicyTestCases', '--include-filter', 'GtsWellbeingTestCases', '--include-filter', 'GtsYouTubeTestCases', '--include-filter', 'ReviewPermissionHelperGts', '--ignore-business-logic-failure'],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='all.GtsCameraTestCases_-_ReviewPermissionHelperGts',
+        target_plan=None,
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
+        prerequisites=['bluetooth'],
+        timeout=86400)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.7.0_r3.tradefed-run-collect-tests-only-internal b/server/site_tests/cheets_GTS/control.7.0_r4.tradefed-run-collect-tests-only-internal
similarity index 84%
rename from server/site_tests/cheets_GTS/control.7.0_r3.tradefed-run-collect-tests-only-internal
rename to server/site_tests/cheets_GTS/control.7.0_r4.tradefed-run-collect-tests-only-internal
index c7b2797..e4047ab 100644
--- a/server/site_tests/cheets_GTS/control.7.0_r3.tradefed-run-collect-tests-only-internal
+++ b/server/site_tests/cheets_GTS/control.7.0_r4.tradefed-run-collect-tests-only-internal
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_GTS.7.0_r3.tradefed-run-collect-tests-only-internal'
+NAME = 'cheets_GTS.7.0_r4.tradefed-run-collect-tests-only-internal'
 ATTRIBUTES = 'suite:arc-gts, suite:arc-gts-qual'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 0
@@ -21,14 +21,14 @@
         hosts=host_list,
         iterations=1,
         max_retry=0,
-        tag='7.0_r3.tradefed-run-collect-tests-only-internal',
-        test_name='cheets_GTS.7.0_r3.tradefed-run-collect-tests-only-internal',
+        tag='7.0_r4.tradefed-run-collect-tests-only-internal',
+        test_name='cheets_GTS.7.0_r4.tradefed-run-collect-tests-only-internal',
         authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
         run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot', '--module-arg', 'GtsYouTubeTestCases:skip-media-download:true'],
         retry_template=None,
         target_module=None,
         target_plan=None,
-        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r3-6045416.zip',
+        uri='gs://chromeos-arc-images/cts/bundle/android-gts-7_r4-6219464.zip',
         timeout=1800)
 
 parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_GTS/control.tradefed-run-test b/server/site_tests/cheets_GTS/control.tradefed-run-test
index 2c05b8c..e541f44 100644
--- a/server/site_tests/cheets_GTS/control.tradefed-run-test
+++ b/server/site_tests/cheets_GTS/control.tradefed-run-test
@@ -29,7 +29,7 @@
 # Define the variables that we are going to use and set sensible defaults.
 gts_module = ''
 gts_retry = 5
-gts_revision = '7_r3-6045416'  # TODO(ihf): Set this default value from generator.
+gts_revision = '7_r4-6219464'  # TODO(ihf): Set this default value from generator.
 gts_test = ''
 gts_timeout = 600
 
diff --git a/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py b/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
index 60606d8..6a0eb70 100644
--- a/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
+++ b/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
@@ -178,9 +178,11 @@
                          '' if expect_response else 'not ')
             rv = self.ec.send_command_get_output('help', ['.*>'])[0].strip()
         except error.TestFail as e:
-            logging.info(str(e))
-            if 'Timeout waiting for response' in str(e):
-                if not expect_response:
+            msg = str(e)
+            logging.info(msg)
+            if not expect_response:
+                if ('Timeout waiting for response' in msg or
+                    'No data was sent from the pty' in msg):
                     return
             raise e
         else:
diff --git a/server/site_tests/firmware_Cr50ECReset/firmware_Cr50ECReset.py b/server/site_tests/firmware_Cr50ECReset/firmware_Cr50ECReset.py
index b770a8f..98f22ec 100644
--- a/server/site_tests/firmware_Cr50ECReset/firmware_Cr50ECReset.py
+++ b/server/site_tests/firmware_Cr50ECReset/firmware_Cr50ECReset.py
@@ -49,9 +49,13 @@
         time.sleep(self.EC_SETTLE_TIME)
         try:
             self.ec.send_command_get_output('time', ['.*>'])
-        except error.TestFail, e:
-            logging.info(e)
-            if 'Timeout waiting for response' in str(e):
+        except error.TestFail as e:
+            # TODO(b/149760070): To detect if EC is responsive,
+            # send_command_get_output() should define and raise a Timeout error.
+            msg = str(e)
+            logging.info(msg)
+            if ('Timeout waiting for response' in msg or
+                'No data was sent from the pty' in msg):
                 return False
             raise
         else:
diff --git a/server/site_tests/firmware_Cr50OpenWhileAPOff/firmware_Cr50OpenWhileAPOff.py b/server/site_tests/firmware_Cr50OpenWhileAPOff/firmware_Cr50OpenWhileAPOff.py
index 2c5afe6..0d8842f 100644
--- a/server/site_tests/firmware_Cr50OpenWhileAPOff/firmware_Cr50OpenWhileAPOff.py
+++ b/server/site_tests/firmware_Cr50OpenWhileAPOff/firmware_Cr50OpenWhileAPOff.py
@@ -114,8 +114,10 @@
         # Verify the cr50 console responds to commands.
         try:
             logging.info(self.cr50.get_ccdstate())
-        except error.TestFail, e:
-            if 'Timeout waiting for response' in e.message:
+        except error.TestFail as e:
+            msg = str(e)
+            if ('Timeout waiting for response' in msg or
+                'No data was sent from the pty' in msg):
                 raise error.TestFail('Could not restore Cr50 console')
             raise
 
diff --git a/server/site_tests/firmware_Cr50RMAOpen/firmware_Cr50RMAOpen.py b/server/site_tests/firmware_Cr50RMAOpen/firmware_Cr50RMAOpen.py
index 1c24c80..11d20fa 100644
--- a/server/site_tests/firmware_Cr50RMAOpen/firmware_Cr50RMAOpen.py
+++ b/server/site_tests/firmware_Cr50RMAOpen/firmware_Cr50RMAOpen.py
@@ -65,7 +65,7 @@
         if not self.cr50.has_command('rma_auth'):
             raise error.TestNAError('Cannot test on Cr50 without RMA support')
 
-        if not self.cr50.using_servo_v4():
+        if not self.cr50._servo.dts_mode_is_valid():
             raise error.TestNAError('This messes with ccd settings. Use flex '
                     'cable to run the test.')
 
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch001 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch001
index 1663e6e..95e60d4 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch001
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch001
@@ -25,11 +25,13 @@
             channel=1,
             n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS],
             mode=hostap_config.HostapConfig.MODE_11N_PURE)
+    attenuation_increment = 4
+    final_attenuation = 100
     job.run_test('network_WiFi_AttenuatedPerf',
                  tag=NAME.split('.')[1],
                  host=host,
                  raw_cmdline_args=args,
-                 additional_params=ap_config)
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
 
 
 parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006
index b694b9c..6001511 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006
@@ -25,11 +25,13 @@
             channel=6,
             n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS],
             mode=hostap_config.HostapConfig.MODE_11N_PURE)
+    attenuation_increment = 4
+    final_attenuation = 100
     job.run_test('network_WiFi_AttenuatedPerf',
                  tag=NAME.split('.')[1],
                  host=host,
                  raw_cmdline_args=args,
-                 additional_params=ap_config)
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
 
 
 parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch011 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch011
index 660e321..8e673d9 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch011
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch011
@@ -25,11 +25,13 @@
             channel=11,
             n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_MINUS],
             mode=hostap_config.HostapConfig.MODE_11N_PURE)
+    attenuation_increment = 4
+    final_attenuation = 100
     job.run_test('network_WiFi_AttenuatedPerf',
                  tag=NAME.split('.')[1],
                  host=host,
                  raw_cmdline_args=args,
-                 additional_params=ap_config)
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
 
 
 parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch044 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch044
index 94e80da..243834a 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch044
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch044
@@ -25,11 +25,13 @@
             channel=44,
             n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS],
             mode=hostap_config.HostapConfig.MODE_11N_PURE)
+    attenuation_increment = 4
+    final_attenuation = 100
     job.run_test('network_WiFi_AttenuatedPerf',
                  tag=NAME.split('.')[1],
                  host=host,
                  raw_cmdline_args=args,
-                 additional_params=ap_config)
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
 
 
 parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153
index 4351117..bd389fc 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153
@@ -25,11 +25,13 @@
             channel=153,
             n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_MINUS],
             mode=hostap_config.HostapConfig.MODE_11N_PURE)
+    attenuation_increment = 4
+    final_attenuation = 100
     job.run_test('network_WiFi_AttenuatedPerf',
                  tag=NAME.split('.')[1],
                  host=host,
                  raw_cmdline_args=args,
-                 additional_params=ap_config)
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
 
 
 parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch036 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch036
new file mode 100644
index 0000000..6cdb8e5
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch036
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'wiley, pstew, quiche'
+NAME = 'network_WiFi_AttenuatedPerf.vht40_ch036'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT40 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    ap_config = hostap_config.HostapConfig(
+            channel=36,
+            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
+            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
+            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf',
+                 tag=NAME.split('.')[1],
+                 host=host,
+                 raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060
new file mode 100644
index 0000000..f7e3ec4
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'wiley, pstew, quiche'
+NAME = 'network_WiFi_AttenuatedPerf.vht40_ch060'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT40 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    ap_config = hostap_config.HostapConfig(
+            channel=60,
+            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
+            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
+            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf',
+                 tag=NAME.split('.')[1],
+                 host=host,
+                 raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch149 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch149
new file mode 100644
index 0000000..ee874d2
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch149
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'wiley, pstew, quiche'
+NAME = 'network_WiFi_AttenuatedPerf.vht40_ch149'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT40 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    ap_config = hostap_config.HostapConfig(
+            channel=149,
+            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
+            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
+            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf',
+                 tag=NAME.split('.')[1],
+                 host=host,
+                 raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157
new file mode 100644
index 0000000..e45afcd
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'wiley, pstew, quiche'
+NAME = 'network_WiFi_AttenuatedPerf.vht40_ch157'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT40 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    ap_config = hostap_config.HostapConfig(
+            channel=157,
+            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
+            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
+            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf',
+                 tag=NAME.split('.')[1],
+                 host=host,
+                 raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch042 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch042
new file mode 100644
index 0000000..42ff259
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch042
@@ -0,0 +1,42 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'arowa'
+NAME = 'network_WiFi_AttenuatedPerf.vht80_ch042'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT80 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    n_caps = [hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS]
+    ac_caps = [hostap_config.HostapConfig.AC_CAPABILITY_SHORT_GI_80]
+    ac_mode = hostap_config.HostapConfig.MODE_11AC_PURE
+    channel_width_80_mhz = hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_80
+    ap_config = hostap_config.HostapConfig(
+                    channel=44,
+                    mode=ac_mode,
+                    n_capabilities=n_caps,
+                    vht_channel_width=channel_width_80_mhz,
+                    vht_center_channel=42,
+                    ac_capabilities=ac_caps)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf', tag=NAME.split('.')[1],
+                 host=host, raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch155 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch155
new file mode 100644
index 0000000..c3c465a
--- /dev/null
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht80_ch155
@@ -0,0 +1,42 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = 'arowa'
+NAME = 'network_WiFi_AttenuatedPerf.vht80_ch155'
+ATTRIBUTES = "suite:wifi_atten_perf"
+TIME = 'SHORT'
+TEST_TYPE = 'Server'
+DEPENDENCIES = 'wificell'
+
+DOC = """
+This test uses netperf to measure the maximal receiving and transmitting
+throughput on a DUT with an open VHT80 802.11ac network across multiple
+attenuation levels.
+"""
+
+
+from autotest_lib.server.cros.network import hostap_config
+
+
+def run(machine):
+    host = hosts.create_host(machine)
+    n_caps = [hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS]
+    ac_caps = [hostap_config.HostapConfig.AC_CAPABILITY_SHORT_GI_80]
+    ac_mode = hostap_config.HostapConfig.MODE_11AC_PURE
+    channel_width_80_mhz = hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_80
+    ap_config = hostap_config.HostapConfig(
+                    channel=157,
+                    mode=ac_mode,
+                    n_capabilities=n_caps,
+                    vht_channel_width=channel_width_80_mhz,
+                    vht_center_channel=155,
+                    ac_capabilities=ac_caps)
+    attenuation_increment = 6
+    final_attenuation = 100
+    job.run_test('network_WiFi_AttenuatedPerf', tag=NAME.split('.')[1],
+                 host=host, raw_cmdline_args=args,
+                 additional_params=(ap_config, attenuation_increment, final_attenuation))
+
+
+parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/network_WiFi_AttenuatedPerf.py b/server/site_tests/network_WiFi_AttenuatedPerf/network_WiFi_AttenuatedPerf.py
index 34e14db..1bfbd6f 100644
--- a/server/site_tests/network_WiFi_AttenuatedPerf/network_WiFi_AttenuatedPerf.py
+++ b/server/site_tests/network_WiFi_AttenuatedPerf/network_WiFi_AttenuatedPerf.py
@@ -37,9 +37,6 @@
                        netperf_runner.NetperfConfig.TEST_TYPE_UDP_MAERTS),
     ]
 
-    ATTENUATION_STEP = 4
-    FINAL_ATTENUATION = 100
-
     TSV_OUTPUT_DIR = 'tsvs'
 
     DataPoint = collections.namedtuple('DataPoint',
@@ -54,8 +51,10 @@
         @param additional_params list of dicts describing router configs.
 
         """
-        self._ap_config = additional_params
+        self._ap_config = additional_params[0]
         self.series_note = None
+        self._attenuation_increment = additional_params[1]
+        self._final_attenuation = additional_params[2]
         if self.CMDLINE_SERIES_NOTE in commandline_args:
             self.series_note = commandline_args[self.CMDLINE_SERIES_NOTE]
 
@@ -81,8 +80,8 @@
                                                  ignore_failures=True)
         session.warmup_stations()
         start_atten = self.context.attenuator.get_minimal_total_attenuation()
-        for atten in range(start_atten, self.FINAL_ATTENUATION,
-                           self.ATTENUATION_STEP):
+        for atten in range(start_atten, self._final_attenuation,
+                           self._attenuation_increment):
             atten_tag = 'atten%03d' % atten
             self.context.attenuator.set_total_attenuation(
                     atten, self._ap_config.frequency)
@@ -147,7 +146,8 @@
 
         if max_atten is None:
             raise error.TestFail('Did not succeed at any atten level')
-        logging.info('Reached attenuation of: %d dB (signal %d)' % max_atten)
+        logging.info('Reached attenuation of: %d dB (signal %d)',
+                                max_atten[0], max_atten[1])
         self.write_perf_keyval({'ch%03d_max_atten' % self._ap_config.channel:
                                 max_atten[0]})
         self.write_perf_keyval({'ch%03d_min_signal' % self._ap_config.channel:
diff --git a/server/site_tests/platform_ExternalUSBBootStress/control.50 b/server/site_tests/platform_ExternalUSBBootStress/control.50
index 1360560..673ea7a 100644
--- a/server/site_tests/platform_ExternalUSBBootStress/control.50
+++ b/server/site_tests/platform_ExternalUSBBootStress/control.50
@@ -14,7 +14,7 @@
 TEST_TYPE = "server"
 # Stop running the test due to crbug.com/654478
 # ATTRIBUTES = "suite:usb_detect_stress"
-# DEPENDENCIES = "servo, usb_detect"
+# DEPENDENCIES = "servo"
 
 
 DOC = """
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.crashes b/server/site_tests/platform_ExternalUsbPeripherals/control.crashes
index 75fdcd9..1a7874f 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.crashes
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.crashes
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 #ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect b/server/site_tests/platform_ExternalUsbPeripherals/control.detect
index 28382ed..1815e9d 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect_stress"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.crash_check_short b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.crash_check_short
index 3ab886a..6a5c0ce 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.crash_check_short
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.crash_check_short
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.lid_close_open_short b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.lid_close_open_short
index 422b1cf..b9f427c 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.lid_close_open_short
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.lid_close_open_short
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect, use_lid"
+DEPENDENCIES = "servo, use_lid"
 JOB_RETRIES = 1
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.login_unplug_closelid_openlid_plug b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.login_unplug_closelid_openlid_plug
index b00068b..e8666d7 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.login_unplug_closelid_openlid_plug
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.login_unplug_closelid_openlid_plug
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect, use_lid"
+DEPENDENCIES = "servo, use_lid"
 JOB_RETRIES = 2
 
 DOC = """
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.long_cycle b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.long_cycle
index cfef39e..8519d34 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.long_cycle
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.long_cycle
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.unplug_login_plug b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.unplug_login_plug
index 678cb2e..4013166 100644
--- a/server/site_tests/platform_ExternalUsbPeripherals/control.detect.unplug_login_plug
+++ b/server/site_tests/platform_ExternalUsbPeripherals/control.detect.unplug_login_plug
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test uses servo to connect/disconnect servo USB hub before and
diff --git a/server/site_tests/platform_SuspendResumeTiming/control b/server/site_tests/platform_SuspendResumeTiming/control
index 37eff7c..9162df1 100644
--- a/server/site_tests/platform_SuspendResumeTiming/control
+++ b/server/site_tests/platform_SuspendResumeTiming/control
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test measures the time to suspend and resume
@@ -29,4 +29,4 @@
     job.run_test("platform_SuspendResumeTiming", host=host,
                  plug_usb=False, disable_sysinfo=True)
 
-parallel_simple(run, machines)
\ No newline at end of file
+parallel_simple(run, machines)
diff --git a/server/site_tests/platform_SuspendResumeTiming/control.usb_plugged b/server/site_tests/platform_SuspendResumeTiming/control.usb_plugged
index 2b77f3c..f401a24 100644
--- a/server/site_tests/platform_SuspendResumeTiming/control.usb_plugged
+++ b/server/site_tests/platform_SuspendResumeTiming/control.usb_plugged
@@ -13,7 +13,7 @@
 TEST_CLASS = "platform"
 TEST_TYPE = "server"
 ATTRIBUTES = "suite:usb_detect"
-DEPENDENCIES = "servo, usb_detect"
+DEPENDENCIES = "servo"
 
 DOC = """
 This test measures the time to suspend and resume
@@ -29,4 +29,4 @@
     job.run_test("platform_SuspendResumeTiming", host=host,
                  plug_usb=True, disable_sysinfo=True)
 
-parallel_simple(run, machines)
\ No newline at end of file
+parallel_simple(run, machines)