• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python2
2# Copyright 2019 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import collections
7
8
9CONFIG = {}
10
11CONFIG['TEST_NAME'] = 'cheets_CTS_Q'
12CONFIG['DOC_TITLE'] = 'Android Compatibility Test Suite (CTS)'
13CONFIG['MOBLAB_SUITE_NAME'] = 'suite:cts_Q'
14CONFIG['COPYRIGHT_YEAR'] = 2019
15CONFIG['AUTHKEY'] = ''
16
17# Both arm, x86 tests results normally is below 200MB.
18# 1000MB should be sufficient for CTS tests and dump logs for android-cts.
19CONFIG['LARGE_MAX_RESULT_SIZE'] = 1000 * 1024
20
21# Individual module normal produces less results than all modules, which is
22# ranging from 4MB to 50MB. 500MB should be sufficient to handle all the cases.
23CONFIG['NORMAL_MAX_RESULT_SIZE'] = 500 * 1024
24
25CONFIG['TRADEFED_CTS_COMMAND'] = 'cts'
26CONFIG['TRADEFED_RETRY_COMMAND'] = 'retry'
27CONFIG['TRADEFED_DISABLE_REBOOT'] = False
28CONFIG['TRADEFED_DISABLE_REBOOT_ON_COLLECTION'] = True
29CONFIG['TRADEFED_MAY_SKIP_DEVICE_INFO'] = False
30CONFIG['TRADEFED_EXECUTABLE_PATH'] = 'android-cts/tools/cts-tradefed'
31CONFIG['TRADEFED_IGNORE_BUSINESS_LOGIC_FAILURE'] = False
32
33# On moblab everything runs in the same suite.
34CONFIG['INTERNAL_SUITE_NAMES'] = ['suite:arc-cts-q']
35CONFIG['QUAL_SUITE_NAMES'] = []
36
37CONFIG['CONTROLFILE_TEST_FUNCTION_NAME'] = 'run_TS'
38CONFIG['CONTROLFILE_WRITE_SIMPLE_QUAL_AND_REGRESS'] = False
39CONFIG['CONTROLFILE_WRITE_CAMERA'] = False
40CONFIG['CONTROLFILE_WRITE_EXTRA'] = True
41
42# The dashboard suppresses upload to APFE for GS directories (based on autotest
43# tag) that contain 'tradefed-run-collect-tests'. b/119640440
44# Do not change the name/tag without adjusting the dashboard.
45_COLLECT = 'tradefed-run-collect-tests-only-internal'
46
47CONFIG['LAB_DEPENDENCY'] = {
48   'x86': ['cts_abi_x86']
49}
50
51CONFIG['CTS_JOB_RETRIES_IN_PUBLIC'] = 1
52CONFIG['CTS_QUAL_RETRIES'] = 9
53CONFIG['CTS_MAX_RETRIES'] = {
54    'CtsDeqpTestCases':         15,  # TODO(b/126787654)
55    'CtsIncidentHostTestCases': 30,  # TODO(b/128695132)
56    'CtsSensorTestCases':       30,  # TODO(b/124528412)
57}
58
59# Timeout in hours.
60CONFIG['CTS_TIMEOUT_DEFAULT'] = 1.0
61CONFIG['CTS_TIMEOUT'] = {
62    'CtsAutoFillServiceTestCases':       2.5,  # TODO(b/134662826)
63    'CtsDeqpTestCases':                 30.0,
64    'CtsDeqpTestCases.dEQP-EGL'  :       2.0,
65    'CtsDeqpTestCases.dEQP-GLES2':       2.0,
66    'CtsDeqpTestCases.dEQP-GLES3':       6.0,
67    'CtsDeqpTestCases.dEQP-GLES31':      6.0,
68    'CtsDeqpTestCases.dEQP-VK':         15.0,
69    'CtsFileSystemTestCases':            3.0,
70    'CtsHardwareTestCases':              2.0,
71    'CtsIcuTestCases':                   2.0,
72    'CtsLibcoreOjTestCases':             2.0,
73    'CtsMediaStressTestCases':           5.0,
74    'CtsMediaTestCases':                10.0,
75    'CtsNNAPIBenchmarkTestCases':        2.0,
76    'CtsPrintTestCases':                 1.5,
77    'CtsSecurityTestCases':              2.0,
78    'CtsSensorTestCases':                2.0,
79    'CtsStatsdHostTestCases':            2.0,
80    'CtsVideoTestCases':                 1.5,
81    'CtsWidgetTestCases':                2.0,
82    _COLLECT:                            2.5,
83}
84
85# Any test that runs as part as blocking BVT needs to be stable and fast. For
86# this reason we enforce a tight timeout on these modules/jobs.
87# Timeout in hours. (0.1h = 6 minutes)
88CONFIG['BVT_TIMEOUT'] = 0.1
89# We allow a very long runtime for qualification (2 days).
90CONFIG['QUAL_TIMEOUT'] = 48
91
92CONFIG['QUAL_BOOKMARKS'] = sorted([])
93
94CONFIG['SMOKE'] = []
95
96CONFIG['BVT_ARC'] = []
97
98CONFIG['BVT_PERBUILD'] = []
99
100CONFIG['NEEDS_POWER_CYCLE'] = []
101
102CONFIG['HARDWARE_DEPENDENT_MODULES'] = []
103
104# The suite is divided based on the run-time hint in the *.config file.
105CONFIG['VMTEST_INFO_SUITES'] = collections.OrderedDict()
106
107# Modules that are known to download and/or push media file assets.
108CONFIG['MEDIA_MODULES'] = [
109    'CtsMediaTestCases',
110    'CtsMediaStressTestCases',
111    'CtsMediaBitstreamsTestCases',
112]
113
114CONFIG['NEEDS_PUSH_MEDIA'] = CONFIG['MEDIA_MODULES']
115
116# Modules that are known to need the default apps of Chrome (eg. Files.app).
117CONFIG['ENABLE_DEFAULT_APPS'] = [
118    'CtsAppSecurityHostTestCases',
119]
120
121# Run `eject` for (and only for) each device with RM=1 in lsblk output.
122_EJECT_REMOVABLE_DISK_COMMAND = (
123    "\'lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject\'")
124# Behave more like in the verififed mode.
125_SECURITY_PARANOID_COMMAND = (
126    "\'echo 3 > /proc/sys/kernel/perf_event_paranoid\'")
127# Expose /proc/config.gz
128_CONFIG_MODULE_COMMAND = "\'modprobe configs\'"
129
130# TODO(b/126741318): Fix performance regression and remove this.
131_SLEEP_60_COMMAND = "\'sleep 60\'"
132
133# Preconditions applicable to public and internal tests.
134CONFIG['PRECONDITION'] = {
135    'CtsSecurityHostTestCases': [
136        _SECURITY_PARANOID_COMMAND, _CONFIG_MODULE_COMMAND
137    ],
138    # Tests are performance-sensitive, workaround to avoid CPU load on login.
139    # TODO(b/126741318): Fix performance regression and remove this.
140    'CtsViewTestCases': [_SLEEP_60_COMMAND],
141}
142CONFIG['LOGIN_PRECONDITION'] = {
143    'CtsAppSecurityHostTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
144    'CtsJobSchedulerTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
145    'CtsMediaTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
146    'CtsOsTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
147    'CtsProviderTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
148}
149
150# Preconditions applicable to public tests.
151CONFIG['PUBLIC_PRECONDITION'] = {
152}
153
154CONFIG['PUBLIC_DEPENDENCIES'] = {
155}
156
157# This information is changed based on regular analysis of the failure rate on
158# partner moblabs.
159CONFIG['PUBLIC_MODULE_RETRY_COUNT'] = {
160}
161
162# This information is changed based on regular analysis of the job run time on
163# partner moblabs.
164
165CONFIG['OVERRIDE_TEST_LENGTH'] = {
166    'CtsDeqpTestCases': 4,  # LONG
167    'CtsMediaTestCases': 4,
168    'CtsMediaStressTestCases': 4,
169    'CtsSecurityTestCases': 4,
170    'CtsCameraTestCases': 4,
171    # Even though collect tests doesn't run very long, it must be the very first
172    # job executed inside of the suite. Hence it is the only 'LENGTHY' test.
173    _COLLECT: 5,  # LENGTHY
174}
175
176# Enabling --logcat-on-failure can extend total run time significantly if
177# individual tests finish in the order of 10ms or less (b/118836700). Specify
178# modules here to not enable the flag.
179CONFIG['DISABLE_LOGCAT_ON_FAILURE'] = set([
180    'all',
181    'CtsDeqpTestCases',
182    'CtsDeqpTestCases.dEQP-EGL',
183    'CtsDeqpTestCases.dEQP-GLES2',
184    'CtsDeqpTestCases.dEQP-GLES3',
185    'CtsDeqpTestCases.dEQP-GLES31',
186    'CtsDeqpTestCases.dEQP-VK',
187    'CtsLibcoreTestCases',
188])
189
190CONFIG['EXTRA_MODULES'] = {
191    'CtsDeqpTestCases': {
192        'SUBMODULES': set([
193            'CtsDeqpTestCases.dEQP-EGL',
194            'CtsDeqpTestCases.dEQP-GLES2',
195            'CtsDeqpTestCases.dEQP-GLES3',
196            'CtsDeqpTestCases.dEQP-GLES31',
197            'CtsDeqpTestCases.dEQP-VK'
198        ]),
199        'SUITES': ['suite:arc-cts-q'],
200    },
201}
202
203# Moblab wants to shard dEQP really finely. This isn't needed anymore as it got
204# faster, but I guess better safe than sorry.
205CONFIG['PUBLIC_EXTRA_MODULES'] = {
206    'CtsDeqpTestCases' : [
207        'CtsDeqpTestCases.dEQP-EGL',
208        'CtsDeqpTestCases.dEQP-GLES2',
209        'CtsDeqpTestCases.dEQP-GLES3',
210        'CtsDeqpTestCases.dEQP-GLES31',
211        'CtsDeqpTestCases.dEQP-VK.api',
212        'CtsDeqpTestCases.dEQP-VK.binding_model',
213        'CtsDeqpTestCases.dEQP-VK.clipping',
214        'CtsDeqpTestCases.dEQP-VK.compute',
215        'CtsDeqpTestCases.dEQP-VK.device_group',
216        'CtsDeqpTestCases.dEQP-VK.draw',
217        'CtsDeqpTestCases.dEQP-VK.dynamic_state',
218        'CtsDeqpTestCases.dEQP-VK.fragment_operations',
219        'CtsDeqpTestCases.dEQP-VK.geometry',
220        'CtsDeqpTestCases.dEQP-VK.glsl',
221        'CtsDeqpTestCases.dEQP-VK.image',
222        'CtsDeqpTestCases.dEQP-VK.info',
223        'CtsDeqpTestCases.dEQP-VK.memory',
224        'CtsDeqpTestCases.dEQP-VK.multiview',
225        'CtsDeqpTestCases.dEQP-VK.pipeline',
226        'CtsDeqpTestCases.dEQP-VK.protected_memory',
227        'CtsDeqpTestCases.dEQP-VK.query_pool',
228        'CtsDeqpTestCases.dEQP-VK.rasterization',
229        'CtsDeqpTestCases.dEQP-VK.renderpass',
230        'CtsDeqpTestCases.dEQP-VK.renderpass2',
231        'CtsDeqpTestCases.dEQP-VK.robustness',
232        'CtsDeqpTestCases.dEQP-VK.sparse_resources',
233        'CtsDeqpTestCases.dEQP-VK.spirv_assembly',
234        'CtsDeqpTestCases.dEQP-VK.ssbo',
235        'CtsDeqpTestCases.dEQP-VK.subgroups',
236        'CtsDeqpTestCases.dEQP-VK.subgroups.b',
237        'CtsDeqpTestCases.dEQP-VK.subgroups.s',
238        'CtsDeqpTestCases.dEQP-VK.subgroups.vote',
239        'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic',
240        'CtsDeqpTestCases.dEQP-VK.subgroups.clustered',
241        'CtsDeqpTestCases.dEQP-VK.subgroups.quad',
242        'CtsDeqpTestCases.dEQP-VK.synchronization',
243        'CtsDeqpTestCases.dEQP-VK.tessellation',
244        'CtsDeqpTestCases.dEQP-VK.texture',
245        'CtsDeqpTestCases.dEQP-VK.ubo',
246        'CtsDeqpTestCases.dEQP-VK.wsi',
247        'CtsDeqpTestCases.dEQP-VK.ycbcr'
248    ]
249}
250# TODO(haddowk,kinaba): Hack for b/138622686. Clean up later.
251CONFIG['EXTRA_SUBMODULE_OVERRIDE'] = {
252    'x86': {
253         'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic': [
254             'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic.32',
255             'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic.64',
256         ]
257    }
258}
259
260CONFIG['EXTRA_COMMANDLINE'] = {
261    'CtsDeqpTestCases.dEQP-EGL': [
262        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
263        '--test', 'dEQP-EGL.*'
264    ],
265    'CtsDeqpTestCases.dEQP-GLES2': [
266        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
267        '--test', 'dEQP-GLES2.*'
268    ],
269    'CtsDeqpTestCases.dEQP-GLES3': [
270        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
271        '--test', 'dEQP-GLES3.*'
272    ],
273    'CtsDeqpTestCases.dEQP-GLES31': [
274        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
275        '--test', 'dEQP-GLES31.*'
276    ],
277    'CtsDeqpTestCases.dEQP-VK': [
278        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
279        '--test', 'dEQP-VK.*'
280    ],
281    'CtsDeqpTestCases.dEQP-VK.api': [
282        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
283        '--test', 'dEQP-VK.api.*'
284    ],
285    'CtsDeqpTestCases.dEQP-VK.binding_model': [
286        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
287        '--test', 'dEQP-VK.binding_model.*'
288    ],
289    'CtsDeqpTestCases.dEQP-VK.clipping': [
290        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
291        '--test', 'dEQP-VK.clipping.*'
292    ],
293    'CtsDeqpTestCases.dEQP-VK.compute': [
294        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
295        '--test', 'dEQP-VK.compute.*'
296    ],
297    'CtsDeqpTestCases.dEQP-VK.device_group': [
298        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
299        '--test', 'dEQP-VK.device_group*'  # Not ending on .* like most others!
300    ],
301    'CtsDeqpTestCases.dEQP-VK.draw': [
302        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
303        '--test', 'dEQP-VK.draw.*'
304    ],
305    'CtsDeqpTestCases.dEQP-VK.dynamic_state': [
306        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
307        '--test', 'dEQP-VK.dynamic_state.*'
308    ],
309    'CtsDeqpTestCases.dEQP-VK.fragment_operations': [
310        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
311        '--test', 'dEQP-VK.fragment_operations.*'
312    ],
313    'CtsDeqpTestCases.dEQP-VK.geometry': [
314        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
315        '--test', 'dEQP-VK.geometry.*'
316    ],
317    'CtsDeqpTestCases.dEQP-VK.glsl': [
318        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
319        '--test', 'dEQP-VK.glsl.*'
320    ],
321    'CtsDeqpTestCases.dEQP-VK.image': [
322        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
323        '--test', 'dEQP-VK.image.*'
324    ],
325    'CtsDeqpTestCases.dEQP-VK.info': [
326        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
327        '--test', 'dEQP-VK.info*'  # Not ending on .* like most others!
328    ],
329    'CtsDeqpTestCases.dEQP-VK.memory': [
330        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
331        '--test', 'dEQP-VK.memory.*'
332    ],
333    'CtsDeqpTestCases.dEQP-VK.multiview': [
334        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
335        '--test', 'dEQP-VK.multiview.*'
336    ],
337    'CtsDeqpTestCases.dEQP-VK.pipeline': [
338        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
339        '--test', 'dEQP-VK.pipeline.*'
340    ],
341    'CtsDeqpTestCases.dEQP-VK.protected_memory': [
342        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
343        '--test', 'dEQP-VK.protected_memory.*'
344    ],
345    'CtsDeqpTestCases.dEQP-VK.query_pool': [
346        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
347        '--test', 'dEQP-VK.query_pool.*'
348    ],
349    'CtsDeqpTestCases.dEQP-VK.rasterization': [
350        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
351        '--test', 'dEQP-VK.rasterization.*'
352    ],
353    'CtsDeqpTestCases.dEQP-VK.renderpass': [
354        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
355        '--test', 'dEQP-VK.renderpass.*'
356    ],
357    'CtsDeqpTestCases.dEQP-VK.renderpass2': [
358        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
359        '--test', 'dEQP-VK.renderpass2.*'
360    ],
361    'CtsDeqpTestCases.dEQP-VK.robustness': [
362        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
363        '--test', 'dEQP-VK.robustness.*'
364    ],
365    'CtsDeqpTestCases.dEQP-VK.sparse_resources': [
366        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
367        '--test', 'dEQP-VK.sparse_resources.*'
368    ],
369    'CtsDeqpTestCases.dEQP-VK.spirv_assembly': [
370        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
371        '--test', 'dEQP-VK.spirv_assembly.*'
372    ],
373    'CtsDeqpTestCases.dEQP-VK.ssbo': [
374        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
375        '--test', 'dEQP-VK.ssbo.*'
376    ],
377    'CtsDeqpTestCases.dEQP-VK.subgroups': [
378        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
379        '--test', 'dEQP-VK.subgroups.*'
380    ],
381    # Splitting VK.subgroups to smaller pieces to workaround b/138622686.
382    # TODO(kinaba,haddowk): remove them once the root cause is fixed, or
383    # reconsider the sharding strategy.
384    'CtsDeqpTestCases.dEQP-VK.subgroups.b': [
385        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
386        '--test', 'dEQP-VK.subgroups.b*'
387    ],
388    'CtsDeqpTestCases.dEQP-VK.subgroups.s': [
389        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
390        '--test', 'dEQP-VK.subgroups.s*'
391    ],
392    'CtsDeqpTestCases.dEQP-VK.subgroups.vote': [
393        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
394        '--test', 'dEQP-VK.subgroups.vote#*'
395    ],
396    'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic': [
397        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
398        '--test', 'dEQP-VK.subgroups.arithmetic#*'
399    ],
400    # TODO(haddowk,kinaba): Hack for b/138622686. Clean up later.
401    'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic.32': [
402        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
403        '--test', 'dEQP-VK.subgroups.arithmetic#*', '--abi', 'x86'
404    ],
405    # TODO(haddowk,kinaba): Hack for b/138622686. Clean up later.
406    'CtsDeqpTestCases.dEQP-VK.subgroups.arithmetic.64': [
407        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
408        '--test', 'dEQP-VK.subgroups.arithmetic#*', '--abi', 'x86_64'
409    ],
410    'CtsDeqpTestCases.dEQP-VK.subgroups.clustered': [
411        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
412        '--test', 'dEQP-VK.subgroups.clustered#*'
413    ],
414    'CtsDeqpTestCases.dEQP-VK.subgroups.quad': [
415        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
416        '--test', 'dEQP-VK.subgroups.quad#*'
417    ],
418    'CtsDeqpTestCases.dEQP-VK.synchronization': [
419        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
420        '--test', 'dEQP-VK.synchronization.*'
421    ],
422    'CtsDeqpTestCases.dEQP-VK.tessellation': [
423        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
424        '--test', 'dEQP-VK.tessellation.*'
425    ],
426    'CtsDeqpTestCases.dEQP-VK.texture': [
427        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
428        '--test', 'dEQP-VK.texture.*'
429    ],
430    'CtsDeqpTestCases.dEQP-VK.ubo': [
431        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
432        '--test', 'dEQP-VK.ubo.*'
433    ],
434    'CtsDeqpTestCases.dEQP-VK.wsi': [
435        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
436        '--test', 'dEQP-VK.wsi.*'
437    ],
438    'CtsDeqpTestCases.dEQP-VK.ycbcr': [
439        '--include-filter', 'CtsDeqpTestCases', '--module', 'CtsDeqpTestCases',
440        '--test', 'dEQP-VK.ycbcr.*'
441    ]
442}
443
444CONFIG['EXTRA_ATTRIBUTES'] = {}
445
446CONFIG['EXTRA_ARTIFACTS'] = {}
447CONFIG['PREREQUISITES'] = {}
448
449from generate_controlfiles_common import main
450
451if __name__ == '__main__':
452    main(CONFIG)
453