|
- # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- import json
- import os
- import sys
-
-
- def get_all_paddle_file(rootPath):
- """get all file in Paddle repo: paddle/fluild, python"""
- traverse_files = ['%s' % rootPath]
- all_file_paddle = '%s/build/all_file_paddle' % rootPath
- all_file_paddle_list = []
- with open(all_file_paddle, 'w') as f:
- for filename in traverse_files:
- g = os.walk(filename)
- for path, dir_list, file_list in g:
- for file_name in file_list:
- all_file_paddle_list.append(os.path.join(path, file_name))
- return all_file_paddle_list
-
-
- def get_all_uts(rootPath):
- all_uts_paddle = '%s/build/all_uts_paddle' % rootPath
- os.system(
- r'cd %s/build && ctest -N -V | grep -Ei "Test[ \t]+#" | grep -oEi "\w+$" > %s'
- % (rootPath, all_uts_paddle)
- )
-
-
- def remove_useless_file(rootPath):
- """remove useless file in ut_file_map.json"""
- all_file_paddle_list = get_all_paddle_file(rootPath)
- ut_file_map_new = {}
- ut_file_map = "%s/build/ut_file_map.json" % rootPath
- with open(ut_file_map, 'r') as load_f:
- load_dict = json.load(load_f)
- for key in load_dict:
- if key in all_file_paddle_list:
- ut_file_map_new[key] = load_dict[key]
-
- with open("%s/build/ut_file_map.json" % rootPath, "w") as f:
- json.dump(ut_file_map_new, f, indent=4)
- print("remove_useless_file ut_file_map success!!")
-
-
- def handle_ut_file_map(rootPath):
- utNotSuccess_list = []
- ut_map_path = "%s/build/ut_map" % rootPath
- files = os.listdir(ut_map_path)
- ut_file_map = {}
- count = 0
- not_success_file = open("%s/build/prec_delta" % rootPath, 'w')
- # if testdir is not made,write the test into prec_delta
- get_all_uts(rootPath)
- all_ut = '%s/build/all_uts_paddle' % rootPath
- with open(all_ut, 'r') as f:
- all_ut_list = []
- for ut in f.readlines():
- ut = ut.replace('\n', '')
- all_ut_list.append(ut.strip())
- f.close()
- for ut in all_ut_list:
- filedir = '%s/build/ut_map/%s' % (rootPath, ut)
- if not os.path.exists(filedir):
- not_success_file.write('%s\n' % ut)
- utNotSuccess_list.append(ut)
- # if fnda.tmp not exists,write the test into prec_delta
- for ut in files:
- count = count + 1
- print("ut %s: %s" % (count, ut))
- coverage_info = '%s/%s/fnda.tmp' % (ut_map_path, ut)
- if os.path.exists(coverage_info):
- filename = '%s/%s/related_%s.txt' % (ut_map_path, ut, ut)
- try:
- f = open(filename)
- print("oepn %s succesfully" % filename)
- except FileNotFoundError:
- print("%s is not found." % filename)
- return
- lines = f.readlines()
- for line in lines:
- line = line.replace('\n', '').strip()
- if line == '':
- continue
- elif line.startswith('/paddle/build'):
- source_file = line.replace('/build', '')
- # source_file = re.sub('.pb.*', '.proto', source_file)
- elif 'precise test map fileeee:' in line:
- source_file = line.split('precise test map fileeee:')[
- 1
- ].strip()
- else:
- source_file = line
- if source_file not in ut_file_map:
- ut_file_map[source_file] = []
- if ut not in ut_file_map[source_file]:
- ut_file_map[source_file].append(ut)
- f.close()
- else:
- not_success_file.write('%s\n' % ut)
- utNotSuccess_list.append(ut)
- not_success_file.close()
-
- print("utNotSuccess:")
- print(utNotSuccess_list)
-
- for ut in files:
- if ut not in utNotSuccess_list:
- filename = '%s/%s/notrelated_%s.txt' % (ut_map_path, ut, ut)
- try:
- f = open(filename)
- print("oepn %s succesfully" % filename)
- except FileNotFoundError:
- print("%s is not found." % filename)
- lines = f.readlines()
- for line in lines:
- line = line.replace('\n', '').strip()
- if line == '':
- continue
- elif line.startswith('/paddle/build'):
- source_file = line.replace('/build', '')
- else:
- source_file = line
- if source_file not in ut_file_map:
- ut_file_map[source_file] = []
- f.close()
- with open("%s/build/ut_file_map.json" % rootPath, "w") as f:
- json.dump(ut_file_map, f, indent=4)
-
-
- def notsuccessfuc(rootPath):
- utNotSuccess = ''
- ut_map_path = "%s/build/ut_map" % rootPath
- files = os.listdir(ut_map_path)
- count = 0
-
- # ut failed!!
- for ut in files:
- if ut == 'simple_precise_test':
- continue
- coverage_info = '%s/%s/fnda.tmp' % (ut_map_path, ut)
- if os.path.exists(coverage_info):
- pass
- else:
- count = count + 1
- utNotSuccess = utNotSuccess + '^%s$|' % ut
-
- # ut not exec
-
- get_all_uts(rootPath)
- with open("/paddle/build/all_uts_paddle", "r") as f:
- data = f.readlines()
- for ut in data:
- ut = ut.replace('\n', '').strip()
- if ut not in files:
- print(ut)
- count = count + 1
- utNotSuccess = utNotSuccess + '^%s$|' % ut
-
- if utNotSuccess != '':
- print("utNotSuccess count: %s" % count)
- f = open('%s/build/utNotSuccess' % rootPath, 'w')
- f.write(utNotSuccess[:-1])
- f.close()
-
-
- def ut_file_map_supplement(rootPath):
- ut_file_map_new = "%s/build/ut_file_map.json" % rootPath
- precision_test_map_store_dir = "/precision_test_map_store"
- os.system('mkdir %s' % precision_test_map_store_dir)
- os.system(
- 'cd %s && wget --no-proxy https://paddle-docker-tar.bj.bcebos.com/tmp_test/ut_file_map.json --no-check-certificate'
- % precision_test_map_store_dir
- )
- ut_file_map_old = "%s/ut_file_map.json" % precision_test_map_store_dir
- with open(ut_file_map_new, 'r') as load_f:
- load_dict_new = json.load(load_f)
-
- all_uts_paddle = '%s/build/all_uts_paddle' % rootPath
-
- with open(all_uts_paddle, 'r') as f:
- all_uts_paddle_list = []
- for ut in f.readlines():
- all_uts_paddle_list.append(ut.strip())
- f.close()
-
- with open("%s/ut_file_map.json" % precision_test_map_store_dir, "w") as f:
- json.dump(load_dict_new, f, indent=4)
- print("load_dict_new success!!")
-
- os.system(
- 'cd %s && wget --no-proxy https://paddle-docker-tar.bj.bcebos.com/tmp_test/prec_delta --no-check-certificate'
- % precision_test_map_store_dir
- )
- prec_delta_new = "%s/build/prec_delta" % rootPath
- with open(prec_delta_new, 'r') as f:
- prec_delta_new_list = []
- for ut in f.readlines():
- prec_delta_new_list.append(ut.strip())
- f.close()
- prec_delta_new_list.append(
- 'test_py_reader_error_msg'
- ) # add a python case for pycoverage
- prec_delta_file = open("%s/prec_delta" % precision_test_map_store_dir, 'w')
- for ut in prec_delta_new_list:
- prec_delta_file.write(ut + '\n')
- print("prec_delta_file success!!")
- prec_delta_file.close()
-
-
- def utmap_analysis(rootPath):
- ut_file_map_new = "%s/build/ut_file_map.json" % rootPath
- with open(ut_file_map_new, 'r') as load_f:
- load_dict_new = json.load(load_f)
- print(len(load_dict_new))
- for filename in load_dict_new:
- print(filename, len(load_dict_new[filename]))
-
-
- if __name__ == "__main__":
- func = sys.argv[1]
- if func == 'get_not_success_ut':
- rootPath = sys.argv[2]
- notsuccessfuc(rootPath)
- elif func == 'get_ut_map':
- rootPath = sys.argv[2]
- handle_ut_file_map(rootPath)
- remove_useless_file(rootPath)
- ut_file_map_supplement(rootPath)
|