cheets_CTS_R: Split dEQP-VK.

The module is too large compared to the infra time limit.
Handling for moblab control files are to be considered later.

BUG=b:188520609
TEST=cheets_CTS_R.arm.CtsDeqpTestCases.dEQP-VK.64

Change-Id: I8469ca4b20666733413824d216e7279dba161d45
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/3233590
Tested-by: Kazuhiro Inaba <kinaba@chromium.org>
Auto-Submit: Kazuhiro Inaba <kinaba@chromium.org>
Reviewed-by: Jiyoun Ha <jiyounha@chromium.org>
(cherry picked from commit f51b7612a0fefeaa8c7a4789ba00eb6d7bc3d6ce)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/3233491
Commit-Queue: Kazuhiro Inaba <kinaba@chromium.org>
diff --git a/server/cros/tradefed/generate_controlfiles_CTS_R.py b/server/cros/tradefed/generate_controlfiles_CTS_R.py
index 827937b..455d133 100755
--- a/server/cros/tradefed/generate_controlfiles_CTS_R.py
+++ b/server/cros/tradefed/generate_controlfiles_CTS_R.py
@@ -171,6 +171,7 @@
 
 CONFIG['SPLIT_BY_BITS_MODULES'] = [
         'CtsDeqpTestCases',
+        'CtsDeqpTestCases.dEQP-VK',
         'CtsMediaTestCases',
 ]
 
diff --git a/server/cros/tradefed/generate_controlfiles_common.py b/server/cros/tradefed/generate_controlfiles_common.py
index c500429..3fa4f463 100755
--- a/server/cros/tradefed/generate_controlfiles_common.py
+++ b/server/cros/tradefed/generate_controlfiles_common.py
@@ -1153,26 +1153,38 @@
                       whole_module_set=None,
                       hardware_suite=False,
                       abi_bits=None):
-    """Write a single control file."""
-    filename = get_controlfile_name(name,
-                                    abi,
-                                    revision,
-                                    is_public,
-                                    abi_bits=abi_bits)
-    content = get_controlfile_content(name,
-                                      modules,
-                                      abi,
-                                      revision,
-                                      build,
-                                      uri,
-                                      suites,
-                                      is_public,
-                                      is_latest,
-                                      hardware_suite=hardware_suite,
-                                      whole_module_set=whole_module_set,
-                                      abi_bits=abi_bits)
-    with open(filename, 'w') as f:
-        f.write(content)
+    """Write control files per each ABI or combined."""
+    abi_bits_list = []
+    config_key = 'PUBLIC_SPLIT_BY_BITS_MODULES' if is_public else 'SPLIT_BY_BITS_MODULES'
+    if modules & set(CONFIG.get(config_key, [])):
+        # If |abi| is predefined (like CTS), splits the modules by
+        # 32/64-bits. If not (like GTS) generate both arm and x86 jobs.
+        for abi_arch in [abi] if abi else ['arm', 'x86']:
+            for abi_bits in [32, 64]:
+                abi_bits_list.append((abi_arch, abi_bits))
+    else:
+        abi_bits_list.append((abi, None))
+
+    for abi, abi_bits in abi_bits_list:
+        filename = get_controlfile_name(name,
+                                        abi,
+                                        revision,
+                                        is_public,
+                                        abi_bits=abi_bits)
+        content = get_controlfile_content(name,
+                                          modules,
+                                          abi,
+                                          revision,
+                                          build,
+                                          uri,
+                                          suites,
+                                          is_public,
+                                          is_latest,
+                                          hardware_suite=hardware_suite,
+                                          whole_module_set=whole_module_set,
+                                          abi_bits=abi_bits)
+        with open(filename, 'w') as f:
+            f.write(content)
 
 
 def write_moblab_controlfiles(modules, abi, revision, build, uri, is_public):
@@ -1189,23 +1201,8 @@
         # option will cover variants with optional parameters.
         if is_parameterized_module(module):
             continue
-        if module in CONFIG.get('PUBLIC_SPLIT_BY_BITS_MODULES', []):
-            # If |abi| is predefined (like CTS), splits the modules by
-            # 32/64-bits. If not (like GTS) generate both arm and x86 jobs.
-            for abi_arch in [abi] if abi else ['arm', 'x86']:
-                for abi_bits in [32, 64]:
-                    write_controlfile(module,
-                                      set([module]),
-                                      abi_arch,
-                                      revision,
-                                      build,
-                                      uri,
-                                      None,
-                                      is_public,
-                                      abi_bits=abi_bits)
-        else:
-            write_controlfile(module, set([module]), abi, revision, build, uri,
-                              None, is_public)
+        write_controlfile(module, set([module]), abi, revision, build, uri,
+                          None, is_public)
 
 
 def write_regression_controlfiles(modules, abi, revision, build, uri,
@@ -1234,24 +1231,8 @@
     else:
         combined = combine_modules_by_common_word(set(modules))
         for key in combined:
-            if combined[key] & set(CONFIG.get('SPLIT_BY_BITS_MODULES', [])):
-                # If |abi| is predefined (like CTS), splits the modules by
-                # 32/64-bits. If not (like GTS) generate both arm and x86 jobs.
-                for abi_arch in [abi] if abi else ['arm', 'x86']:
-                    for abi_bits in [32, 64]:
-                        write_controlfile(key,
-                                          combined[key],
-                                          abi_arch,
-                                          revision,
-                                          build,
-                                          uri,
-                                          None,
-                                          is_public,
-                                          is_latest,
-                                          abi_bits=abi_bits)
-            else:
-                write_controlfile(key, combined[key], abi, revision, build,
-                                  uri, None, is_public, is_latest)
+            write_controlfile(key, combined[key], abi, revision, build, uri,
+                              None, is_public, is_latest)
 
 
 def write_qualification_controlfiles(modules, abi, revision, build, uri,
diff --git a/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK b/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.32
similarity index 86%
rename from server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK
rename to server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.32
index 5d1e8a7..9099e34 100644
--- a/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK
+++ b/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.32
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK'
+NAME = 'cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK.32'
 ATTRIBUTES = 'suite:arc-cts-r'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 0
@@ -20,9 +20,9 @@
         'cheets_CTS_R',
         hosts=host_list,
         iterations=1,
-        tag='11_r5.arm.CtsDeqpTestCases.dEQP-VK',
-        test_name='cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK',
-        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*'],
+        tag='11_r5.arm.CtsDeqpTestCases.dEQP-VK.32',
+        test_name='cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK.32',
+        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*', '--abi', 'armeabi-v7a'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='CtsDeqpTestCases',
         target_plan=None,
diff --git a/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK b/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.64
similarity index 86%
copy from server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK
copy to server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.64
index 5d1e8a7..60c5151 100644
--- a/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK
+++ b/server/site_tests/cheets_CTS_R/control.11_r5.arm.CtsDeqpTestCases.dEQP-VK.64
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK'
+NAME = 'cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK.64'
 ATTRIBUTES = 'suite:arc-cts-r'
 DEPENDENCIES = 'arc'
 JOB_RETRIES = 0
@@ -20,9 +20,9 @@
         'cheets_CTS_R',
         hosts=host_list,
         iterations=1,
-        tag='11_r5.arm.CtsDeqpTestCases.dEQP-VK',
-        test_name='cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK',
-        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*'],
+        tag='11_r5.arm.CtsDeqpTestCases.dEQP-VK.64',
+        test_name='cheets_CTS_R.11_r5.arm.CtsDeqpTestCases.dEQP-VK.64',
+        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*', '--abi', 'arm64-v8a'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='CtsDeqpTestCases',
         target_plan=None,
diff --git a/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK b/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.32
similarity index 87%
copy from server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK
copy to server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.32
index 5456809..6009c69 100644
--- a/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK
+++ b/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.32
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK'
+NAME = 'cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK.32'
 ATTRIBUTES = 'suite:arc-cts-r'
 DEPENDENCIES = 'arc, cts_abi_x86'
 JOB_RETRIES = 0
@@ -20,9 +20,9 @@
         'cheets_CTS_R',
         hosts=host_list,
         iterations=1,
-        tag='11_r5.x86.CtsDeqpTestCases.dEQP-VK',
-        test_name='cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK',
-        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*'],
+        tag='11_r5.x86.CtsDeqpTestCases.dEQP-VK.32',
+        test_name='cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK.32',
+        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*', '--abi', 'x86'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='CtsDeqpTestCases',
         target_plan=None,
diff --git a/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK b/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.64
similarity index 87%
rename from server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK
rename to server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.64
index 5456809..ab3aad8 100644
--- a/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK
+++ b/server/site_tests/cheets_CTS_R/control.11_r5.x86.CtsDeqpTestCases.dEQP-VK.64
@@ -5,7 +5,7 @@
 # This file has been automatically generated. Do not edit!
 
 AUTHOR = 'ARC++ Team'
-NAME = 'cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK'
+NAME = 'cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK.64'
 ATTRIBUTES = 'suite:arc-cts-r'
 DEPENDENCIES = 'arc, cts_abi_x86'
 JOB_RETRIES = 0
@@ -20,9 +20,9 @@
         'cheets_CTS_R',
         hosts=host_list,
         iterations=1,
-        tag='11_r5.x86.CtsDeqpTestCases.dEQP-VK',
-        test_name='cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK',
-        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*'],
+        tag='11_r5.x86.CtsDeqpTestCases.dEQP-VK.64',
+        test_name='cheets_CTS_R.11_r5.x86.CtsDeqpTestCases.dEQP-VK.64',
+        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases', '--test', 'dEQP-VK.*', '--abi', 'x86_64'],
         retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
         target_module='CtsDeqpTestCases',
         target_plan=None,