blob: 52198e2fbd9da8ce8ee4481e261021f31fcb8042 [file] [log] [blame]
#!/usr/bin/env python3
__copyright__ = """
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
"""
"""
Script to create report summary CSV file.
"""
import csv
import argparse
def get_extra_config_name(extra_param):
return extra_param.replace(', ', '_') if extra_param != 'N.A' else ' Default'
def generate_headers(config_results):
# Keys: [CONFIG_NAME, TFM_PLATFORM, COMPILER, LIB_MODEL, ISOLATION_LEVEL, TEST_REGRESSION,
# TEST_PSA_API, CMAKE_BUILD_TYPE, BL2, PROFILE, EXTRA_PARAMS, RESULT]
common_params = list(config_results[0].keys())[1:-2]
extra_params = set()
for config in config_results:
extra_params.add(get_extra_config_name(config['EXTRA_PARAMS']))
csv_headers = common_params + sorted(list(extra_params))
return csv_headers
def generate_result_rows(config_results):
for config in config_results:
config[get_extra_config_name(config['EXTRA_PARAMS'])] = config['RESULT']
return sorted(config_results, key = lambda x: x['TFM_PLATFORM'])
def main(user_args):
with open(user_args.input_file, newline='') as csvfile:
config_results = csv.DictReader(csvfile)
config_results = [dict(config) for config in config_results]
csv_headers = generate_headers(config_results)
with open(user_args.output_file, 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_headers, restval='', extrasaction='ignore')
writer.writeheader()
writer.writerows(generate_result_rows(config_results))
def get_cmd_args():
"""Parse command line arguments"""
# Parse command line arguments to override config
parser = argparse.ArgumentParser(description="Create CSV report file")
cmdargs = parser.add_argument_group("Create CSV file")
# Configuration control
cmdargs.add_argument(
"--input-file",
dest="input_file",
action="store",
help="Build or test result of the config",
)
cmdargs.add_argument(
"--output-file",
dest="output_file",
action="store",
help="File name of CSV report",
)
return parser.parse_args()
if __name__ == "__main__":
main(get_cmd_args())