15f9996aaSopenharmony_ci#!/usr/bin/env python 25f9996aaSopenharmony_ci# -*- coding: utf-8 -*- 35f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 45f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 55f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 65f9996aaSopenharmony_ci# You may obtain a copy of the License at 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 95f9996aaSopenharmony_ci# 105f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 115f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 125f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 145f9996aaSopenharmony_ci# limitations under the License. 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_ci""" 175f9996aaSopenharmony_ci 185f9996aaSopenharmony_ciUsage: gen_summary_ebpf_testcase_config.py \ 195f9996aaSopenharmony_ci --ebpf-testcase-path out/xxx/ebpf_testcase \ 205f9996aaSopenharmony_ci --ebpf-summary-config-file xx/xxx.json \ 215f9996aaSopenharmony_ci 225f9996aaSopenharmony_ciGenerate the summary ebpf testcase config files. 235f9996aaSopenharmony_ci 245f9996aaSopenharmony_ci""" 255f9996aaSopenharmony_ciimport argparse 265f9996aaSopenharmony_ciimport os 275f9996aaSopenharmony_ciimport os.path 285f9996aaSopenharmony_ciimport sys 295f9996aaSopenharmony_ciimport json 305f9996aaSopenharmony_ci 315f9996aaSopenharmony_ci 325f9996aaSopenharmony_cidef summary_subsystem_config_file(testcase_dir: str, summary_file: str): 335f9996aaSopenharmony_ci if testcase_dir == ' ': 345f9996aaSopenharmony_ci return 355f9996aaSopenharmony_ci 365f9996aaSopenharmony_ci subsystem_list = [] 375f9996aaSopenharmony_ci for root, dirs, files in os.walk(testcase_dir): 385f9996aaSopenharmony_ci for name in files: 395f9996aaSopenharmony_ci if name.endswith('.json'): 405f9996aaSopenharmony_ci subsystem_list.append(os.path.join(root, name)) 415f9996aaSopenharmony_ci 425f9996aaSopenharmony_ci # load the subsystem testcase info 435f9996aaSopenharmony_ci context = [] 445f9996aaSopenharmony_ci for file_path in subsystem_list: 455f9996aaSopenharmony_ci try: 465f9996aaSopenharmony_ci with open(file_path, 'r') as infile: 475f9996aaSopenharmony_ci file_data = json.load(infile) 485f9996aaSopenharmony_ci context.append(file_data) 495f9996aaSopenharmony_ci except OSError as err: 505f9996aaSopenharmony_ci raise err 515f9996aaSopenharmony_ci 525f9996aaSopenharmony_ci # write the summary file.json 535f9996aaSopenharmony_ci try: 545f9996aaSopenharmony_ci with open(summary_file, 'w') as out_file: 555f9996aaSopenharmony_ci json.dump(context, out_file, sort_keys=True, indent=2) 565f9996aaSopenharmony_ci except OSError as err: 575f9996aaSopenharmony_ci raise err 585f9996aaSopenharmony_ci 595f9996aaSopenharmony_ci 605f9996aaSopenharmony_cidef main(argv): 615f9996aaSopenharmony_ci parser = argparse.ArgumentParser() 625f9996aaSopenharmony_ci parser.add_argument('--ebpf-testcase-path', help='', required=True) 635f9996aaSopenharmony_ci parser.add_argument('--ebpf-summary-config-file', help='', required=True) 645f9996aaSopenharmony_ci args = parser.parse_args() 655f9996aaSopenharmony_ci 665f9996aaSopenharmony_ci testcase_dir = args.ebpf_testcase_path 675f9996aaSopenharmony_ci summary_file = args.ebpf_summary_config_file 685f9996aaSopenharmony_ci 695f9996aaSopenharmony_ci if os.path.exists(summary_file): 705f9996aaSopenharmony_ci os.remove(summary_file) 715f9996aaSopenharmony_ci 725f9996aaSopenharmony_ci summary_subsystem_config_file(testcase_dir, summary_file) 735f9996aaSopenharmony_ci 745f9996aaSopenharmony_ci 755f9996aaSopenharmony_ciif __name__ == "__main__": 765f9996aaSopenharmony_ci main(sys.argv) 77