[auto_test] Enable cellular_ota tests on Satlab DUTs.

With Satlab, DUTs are being deployed in Tokyo and UK. Adding local
carriers to tests to enable them running as part of cellular_ota_flaky
test suite.

BUG=b:214055303
TEST=Presubmit passes.

Change-Id: Ib740a7b12001bdddc5a32839ada7d4e5c7aa9fb9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/3381360
Tested-by: Dinesh Kumar Sunkara <[email protected]>
Auto-Submit: Dinesh Kumar Sunkara <[email protected]>
Reviewed-by: Harpreet Grewal <[email protected]>
Commit-Queue: Dinesh Kumar Sunkara <[email protected]>
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.docomo b/client/site_tests/cellular_DisableWhileConnecting/control.docomo
new file mode 100644
index 0000000..845a94e
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.docomo
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.docomo"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.ee b/client/site_tests/cellular_DisableWhileConnecting/control.ee
new file mode 100644
index 0000000..a408c73
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.ee
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.ee"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.kddi b/client/site_tests/cellular_DisableWhileConnecting/control.kddi
new file mode 100644
index 0000000..bb04fab
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.kddi
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.kddi"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.rakuten b/client/site_tests/cellular_DisableWhileConnecting/control.rakuten
new file mode 100644
index 0000000..edaa006
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.rakuten
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.rakuten"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.softbank b/client/site_tests/cellular_DisableWhileConnecting/control.softbank
new file mode 100644
index 0000000..f53a52e
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.softbank
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.softbank"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_DisableWhileConnecting/control.vodafone b/client/site_tests/cellular_DisableWhileConnecting/control.vodafone
new file mode 100644
index 0000000..4e00911
--- /dev/null
+++ b/client/site_tests/cellular_DisableWhileConnecting/control.vodafone
@@ -0,0 +1,47 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_DisableWhileConnecting.vodafone"
+PURPOSE = "Check that the 3G modem can handle a disconnect while connecting."
+CRITERIA = """
+This test will fail if a disconnect request while the modem is
+connecting is not promptly executed.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+DOC = """
+Check that the 3G modem can handle a disconnect while connecting.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=1
+
+test_env = test_environment.CellularOTATestEnvironment()
+# Disabling this test. More details @ b/174480387
+"""
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=0,
+             iterations=ITERATIONS_PER_TEST,
+             tag='instant_disable') """
+
+# Since dbus-python emits our calls asynchronously, it is sometimes
+# (often?) the case that the disable arrives before the connect.
+# There's no good way to track what actually gets sent first, so we
+# sleep.
+job.run_test('cellular_DisableWhileConnecting',
+             test_env=test_env,
+             delay_before_disable_ms=0,
+             disable_delay_per_iteration_ms=int(1000.0 / ITERATIONS_PER_TEST),
+             iterations=ITERATIONS_PER_TEST,
+             tag='disable_delay_ramp')
diff --git a/client/site_tests/cellular_Identifiers/control.docomo b/client/site_tests/cellular_Identifiers/control.docomo
new file mode 100644
index 0000000..0e35977
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.docomo
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.docomo"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_Identifiers/control.ee b/client/site_tests/cellular_Identifiers/control.ee
new file mode 100644
index 0000000..28af9a9
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.ee
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.ee"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_Identifiers/control.kddi b/client/site_tests/cellular_Identifiers/control.kddi
new file mode 100644
index 0000000..213aa20
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.kddi
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.kddi"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_Identifiers/control.rakuten b/client/site_tests/cellular_Identifiers/control.rakuten
new file mode 100644
index 0000000..aeb795a
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.rakuten
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.rakuten"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_Identifiers/control.softbank b/client/site_tests/cellular_Identifiers/control.softbank
new file mode 100644
index 0000000..de4fbb9
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.softbank
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.softbank"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_Identifiers/control.vodafone b/client/site_tests/cellular_Identifiers/control.vodafone
new file mode 100644
index 0000000..d34d994
--- /dev/null
+++ b/client/site_tests/cellular_Identifiers/control.vodafone
@@ -0,0 +1,33 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Identifiers.vodafone"
+PURPOSE = "Verify cellular modem provides correct identification information."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - Cellular modem does not provide an identifier
+"""
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+ATTRIBUTES = "suite:cellular_ota_flaky"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+DOC = """
+  Tests that a cellular modem provides correct identification information
+
+  The test queries the modem for the following identifiers:
+    - MEID
+    - IMEI
+    - IMSI
+    - ICCID
+    - SIM operator ID
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Identifiers', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.docomo b/client/site_tests/cellular_SafetyDance/control.docomo
new file mode 100644
index 0000000..2b64d9f
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.docomo
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.docomo"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.ee b/client/site_tests/cellular_SafetyDance/control.ee
new file mode 100644
index 0000000..aaa7c66
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.ee
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.ee"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.kddi b/client/site_tests/cellular_SafetyDance/control.kddi
new file mode 100644
index 0000000..e9a816d
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.kddi
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.kddi"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.rakuten b/client/site_tests/cellular_SafetyDance/control.rakuten
new file mode 100644
index 0000000..0637243
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.rakuten
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.rakuten"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.softbank b/client/site_tests/cellular_SafetyDance/control.softbank
new file mode 100644
index 0000000..2f84c9c
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.softbank
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.softbank"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_SafetyDance/control.vodafone b/client/site_tests/cellular_SafetyDance/control.vodafone
new file mode 100644
index 0000000..4bf6065
--- /dev/null
+++ b/client/site_tests/cellular_SafetyDance/control.vodafone
@@ -0,0 +1,29 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SafetyDance.vodafone"
+PURPOSE = "Stress-test all connman 3G operations."
+CRITERIA = """
+This test will fail if any DBus call times out or flimflam crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests all connman 3G operations.
+
+  This test runs a long series of 3G operations in pseudorandom order. All of
+  these 3G operations must return a convincing result (EINPROGRESS or no error).
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_SafetyDance', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.docomo b/client/site_tests/cellular_Smoke/control.docomo
new file mode 100644
index 0000000..f2c89b6
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.docomo
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.docomo"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.ee b/client/site_tests/cellular_Smoke/control.ee
new file mode 100644
index 0000000..73a7d59
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.ee
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.ee"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.kddi b/client/site_tests/cellular_Smoke/control.kddi
new file mode 100644
index 0000000..31bd086
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.kddi
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.kddi"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.rakuten b/client/site_tests/cellular_Smoke/control.rakuten
new file mode 100644
index 0000000..dc8691e
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.rakuten
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.rakuten"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.softbank b/client/site_tests/cellular_Smoke/control.softbank
new file mode 100644
index 0000000..4fff560
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.softbank
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.softbank"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_Smoke/control.vodafone b/client/site_tests/cellular_Smoke/control.vodafone
new file mode 100644
index 0000000..7c2763e
--- /dev/null
+++ b/client/site_tests/cellular_Smoke/control.vodafone
@@ -0,0 +1,38 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_Smoke.vodafone"
+PURPOSE = "Verify 3G modem can connect to the network."
+CRITERIA = """
+This test will fail if one of the following conditions occur:
+  - 3G modem fails to connect to network
+  - the modem is not left in a working state
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+# TODO(crbug.com/932661) Fix the root cause of the flakiness and
+# remove this hack.
+JOB_RETRIES=3
+
+DOC = """
+  Tests that 3G modem can connect to the network
+
+  The test attempts to connect using the 3G network.  It assumes that
+  a 3G modem is plugged in and has a signal.  The test then
+  disconnects from the network, and verifies that the modem still
+  responds to modem manager DBUS API calls.  It repeats the
+  connect/disconnect sequence several times.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_Smoke', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.docomo b/client/site_tests/cellular_StressEnable/control.docomo
new file mode 100644
index 0000000..8ea2b96
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.docomo
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.docomo"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.ee b/client/site_tests/cellular_StressEnable/control.ee
new file mode 100644
index 0000000..8f0b0af
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.ee
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.ee"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.kddi b/client/site_tests/cellular_StressEnable/control.kddi
new file mode 100644
index 0000000..967d4e2
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.kddi
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.kddi"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.rakuten b/client/site_tests/cellular_StressEnable/control.rakuten
new file mode 100644
index 0000000..3c9ddc1
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.rakuten
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.rakuten"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.softbank b/client/site_tests/cellular_StressEnable/control.softbank
new file mode 100644
index 0000000..32fe8e2
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.softbank
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.softbank"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_StressEnable/control.vodafone b/client/site_tests/cellular_StressEnable/control.vodafone
new file mode 100644
index 0000000..18f0a59
--- /dev/null
+++ b/client/site_tests/cellular_StressEnable/control.vodafone
@@ -0,0 +1,26 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_StressEnable.vodafone"
+PURPOSE = "Stress-test Connman enable/disable"
+CRITERIA = """
+This test fails if flimflam ever fails to respond to a DBus message or crashes.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+DOC = """
+  Stress-tests enabling and disabling a technology at short intervals.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+test_env = test_environment.CellularOTATestEnvironment()
+job.run_test('cellular_StressEnable', test_env=test_env)
diff --git a/client/site_tests/cellular_SuspendResume/control.docomo b/client/site_tests/cellular_SuspendResume/control.docomo
new file mode 100644
index 0000000..14b60bf
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.docomo
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.docomo"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_SuspendResume/control.ee b/client/site_tests/cellular_SuspendResume/control.ee
new file mode 100644
index 0000000..b7c29c0
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.ee
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.ee"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_SuspendResume/control.kddi b/client/site_tests/cellular_SuspendResume/control.kddi
new file mode 100644
index 0000000..d432b24
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.kddi
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.kddi"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_SuspendResume/control.rakuten b/client/site_tests/cellular_SuspendResume/control.rakuten
new file mode 100644
index 0000000..bb325ab
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.rakuten
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.rakuten"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_SuspendResume/control.softbank b/client/site_tests/cellular_SuspendResume/control.softbank
new file mode 100644
index 0000000..320b23a
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.softbank
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.softbank"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_SuspendResume/control.vodafone b/client/site_tests/cellular_SuspendResume/control.vodafone
new file mode 100644
index 0000000..f756b78
--- /dev/null
+++ b/client/site_tests/cellular_SuspendResume/control.vodafone
@@ -0,0 +1,30 @@
+# Copyright 2022 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 = "ChromeOS Team"
+NAME = "cellular_SuspendResume.vodafone"
+PURPOSE = "Test 3g modem state after suspend/resume"
+CRITERIA = """
+    Check the 3g state of the device after suspend and resume.  Verify
+    that 3g can be enabled under all situations after resuming of device.
+    Verify that if autoconnect is turned on that the modem autoconnects
+    after resuming.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+DOC = """
+    Verify that 3g can be enabled under all suspend/resume situations.
+"""
+
+# Run all scenarios twice, first with autoconnect off, then with it on
+job.run_test('cellular_SuspendResume',
+             autoconnect=False, tag='autoconnect_off')
+job.run_test('cellular_SuspendResume',
+             autoconnect=True, tag='autoconnect_on')
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.docomo b/client/site_tests/cellular_ValidateTestEnvironment/control.docomo
new file mode 100644
index 0000000..ce5bb4b
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.docomo
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.docomo"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:docomo"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.ee b/client/site_tests/cellular_ValidateTestEnvironment/control.ee
new file mode 100644
index 0000000..80614f4
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.ee
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.ee"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:ee"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.kddi b/client/site_tests/cellular_ValidateTestEnvironment/control.kddi
new file mode 100644
index 0000000..b3ce7ff
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.kddi
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.kddi"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:kddi"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.rakuten b/client/site_tests/cellular_ValidateTestEnvironment/control.rakuten
new file mode 100644
index 0000000..9410f9f
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.rakuten
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.rakuten"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:rakuten"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.softbank b/client/site_tests/cellular_ValidateTestEnvironment/control.softbank
new file mode 100644
index 0000000..510392b
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.softbank
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.softbank"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:softbank"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
diff --git a/client/site_tests/cellular_ValidateTestEnvironment/control.vodafone b/client/site_tests/cellular_ValidateTestEnvironment/control.vodafone
new file mode 100644
index 0000000..a7a5bc8
--- /dev/null
+++ b/client/site_tests/cellular_ValidateTestEnvironment/control.vodafone
@@ -0,0 +1,38 @@
+# Copyright (c) 2022 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 = "ChromeOS Team"
+NAME = "cellular_ValidateTestEnvironment.vodafone"
+PURPOSE = "Verify that the test setup common to all other tests has no failures."
+CRITERIA = """
+    Check that no errors occur when the setup and tear down of the
+    base class CellularTestEnvironment is executed multiple times.
+"""
+ATTRIBUTES = "suite:cellular_ota_flaky"
+TIME = "SHORT"
+TEST_CATEGORY = "Functional"
+TEST_CLASS = "network"
+TEST_TYPE = "client"
+DEPENDENCIES = "carrier:vodafone"
+PY_VERSION = 3
+
+DOC = """
+    Verify that the test setup common to all other tests has no failures.
+"""
+
+from autotest_lib.client.cros.cellular import test_environment
+
+ITERATIONS_PER_TEST=3
+
+test_env = test_environment.CellularTestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='Base',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)
+
+test_env = test_environment.CellularOTATestEnvironment(enable_temp_containments=False)
+job.run_test('cellular_ValidateTestEnvironment',
+             tag='OTA',
+             test_env=test_env,
+             iterations=ITERATIONS_PER_TEST)