1#!/usr/bin/python 2 3# Copyright (c) 2015 The Chromium OS Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7"""This script creates a whitelist of test attributes based on the 'suite' read 8from test control files. 9""" 10import argparse 11 12import common 13from autotest_lib.client.common_lib.cros import dev_server 14from autotest_lib.server.cros.dynamic_suite.suite import Suite 15 16 17def main(): 18 """main script.""" 19 # Parse filepath from cmd line. 20 parser = argparse.ArgumentParser(description='Create attribute whitelist.') 21 parser.add_argument('path', metavar='WHITELIST_FILE_PATH', 22 help='Path to the file whitelist is written to. E.g. ' 23 './attribute_whitelist.txt') 24 args = parser.parse_args() 25 26 # Get all the suites from current test control files, and order them. 27 fs_getter = Suite.create_fs_getter(common.autotest_dir) 28 devserver = dev_server.ImageServer('') 29 suite_list = Suite.list_all_suites('', devserver, fs_getter) 30 suite_list.sort(key = str.lower) 31 32 # Parse attributes from suites, and write to a file 33 whitelist = ['suite:' + x for x in suite_list] 34 _WriteToFile(whitelist, args.path) 35 36 37def _WriteToFile(whitelist, path): 38 """"Write the whitelist to a file under the path. 39 40 The format of the file used here is a list, which can be easily read to a list 41 by using ast.literal_eval. 42 43 Args: 44 whitelist: a list contains all the allowed attributes. 45 path: path to the file. 46 """ 47 with open(path, 'wb') as attr_file: 48 attr_file.write('\n'.join(whitelist)) 49 50 51if __name__ == '__main__': 52 main() 53