def compare_etalons(etalons, basedir): cycle_exit_code = APP_CODE_TERMINATION_NORMAL for etalon in etalons: source_file = basedir + etalon['source'] target_file = basedir + etalon['target'] type = etalon['type'] res = compare.files(source_file, target_file, type) compare_string = 'ERROR' if res == True: compare_string = 'OK' else: cycle_exit_code = APP_CODE_TERMINATION_ERROR utils.enc_print ('COMPARE: ', etalon['source'], ' AND ', etalon['target'], ': ', compare_string) return cycle_exit_code
def test_convertor(dirname, model): text_uuid = str(uuid.uuid4()) temp_directory_name = dirname + text_uuid + DIR_LINE try: shutil.copytree(dirname, temp_directory_name, ignore=shutil.ignore_patterns(*IGNORE_PATTERNS)) model_file = '' + temp_directory_name + model['name'] exit_code = int(model['exit_code']) command = (rdo_ex + ' -i ' + utils.wrap_the_string_in_quotes(model_file) + ' >' + os.devnull + ' -c') utils.enc_print ('Run:', command, '\n') convertor_exit_code = subprocess.call(command, shell=True) utils.enc_print ('CONVERT EXIT CODE :', convertor_exit_code, '\n') if convertor_exit_code == exit_code: cycle_exit_code = compare_etalons(model['etalons'], temp_directory_name) if cycle_exit_code != APP_CODE_TERMINATION_NORMAL: arc_name = dirname + text_uuid + '.zip' utils.enc_print('Make zip archive: ' + arc_name) zipf = zipfile.ZipFile(arc_name, 'w') zipdir(temp_directory_name, zipf) zipf.close() except: traceback.print_exc(file=sys.stdout) cycle_exit_code = APP_CODE_TERMINATION_ERROR try: shutil.rmtree(temp_directory_name) except: traceback.print_exc(file=sys.stdout) cycle_exit_code = APP_CODE_TERMINATION_ERROR return cycle_exit_code
def test_console(dirname, model): # run rdo_console app on test model model_file = '' + dirname + model['name'] exit_code = int(model['exit_code']) command = (rdo_ex + ' -i ' + utils.wrap_the_string_in_quotes(model_file) + ' >' + os.devnull) if model['script'] and len(model['script']) > 0: command += ' -s ' + utils.wrap_the_string_in_quotes(dirname + model['script']) utils.enc_print('Run:', command, '\n') simulation_code = subprocess.call(command, shell=True) utils.enc_print ('SIMULATION EXIT CODE :', simulation_code) # check simulation exit code simulation_exit_code_string = 'ERROR' if simulation_code == exit_code: cycle_exit_code = APP_CODE_TERMINATION_NORMAL simulation_exit_code_string = 'OK' else: cycle_exit_code = APP_CODE_TERMINATION_ERROR utils.enc_print ('CHECK SIM EXIT CODE :', simulation_exit_code_string, '\n') # check etalons if simulation_code == exit_code and model['etalons'] and len(model['etalons']): try: # compare etalons cycle_exit_code = compare_etalons(model['etalons'], dirname) except: traceback.print_exc(file=sys.stdout) cycle_exit_code = APP_CODE_TERMINATION_ERROR # check error log elif simulation_code == exit_code and model['log_compilation']: try: simulation_log_file = dirname + RDO_CONSOLE_COMPILE_LOG_FILE_NAME simulation_log_file_etalon = dirname + model['log_compilation'] res = compare.full(simulation_log_file, simulation_log_file_etalon) check_message_cmp_string = 'ERROR' if res: cycle_exit_code = APP_CODE_TERMINATION_NORMAL check_message_cmp_string = 'OK' else: cycle_exit_code = APP_CODE_TERMINATION_ERROR utils.enc_print ('CHECK ERROR LIST :', check_message_cmp_string) except: traceback.print_exc(file=sys.stdout) cycle_exit_code = APP_CODE_TERMINATION_ERROR return cycle_exit_code
def delete_model_data(model_path): dir = os.path.dirname(model_path) files = utils.get_files_list(dir) utils.enc_print ('\nFound and deleted model data:') deleted = 0 for file in os.listdir(dir): file_path = os.path.join(dir, file) if (os.path.isfile(file_path)): if (not file_path.endswith(test_expansion) and not file_path.endswith(project_expansion)): utils.enc_print(file_path) os.remove(file_path) deleted = deleted + 1 if deleted == 0: utils.enc_print('nothing deleted') utils.enc_print('\n')
def delete_model_data(model_path): dir = os.path.dirname(model_path) files = utils.get_files_list(dir) utils.enc_print('\nFound and deleted model data:') deleted = 0 for file in os.listdir(dir): file_path = os.path.join(dir, file) if (os.path.isfile(file_path)): if (not file_path.endswith(test_expansion) and not file_path.endswith(project_expansion)): utils.enc_print(file_path) os.remove(file_path) deleted = deleted + 1 if deleted == 0: utils.enc_print('nothing deleted') utils.enc_print('\n')
############################################################################### # main code # ############################################################################### # parse console options parser = argparse.ArgumentParser(description = 'rdo executor of plugin tests') parser.add_argument('-ad', action = 'store', dest = 'app_directory', default = app_directory, help = 'application directory') parser.add_argument('-mp', action = 'store', dest = 'model_path', default = model_path, help = 'model directory') args = parser.parse_args() app_directory = '' + args.app_directory model_path = '' + args.model_path utils.enc_print("App directory:", os.path.abspath(app_directory)) utils.enc_print("Test project file path:", os.path.abspath(model_path)) rdo_ex = get_executables(app_directory) if rdo_ex is None: utils.enc_print ('Critical error! Build app not found.') sys.exit(APP_CODE_TERMINATION_ERROR) if not os.path.exists(model_path): utils.enc_print ('Critical error! Test nodel not found.') sys.exit(APP_CODE_TERMINATION_ERROR) utils.enc_print ('\nFind RDO executable:') utils.enc_print (rdo_ex)
def safe_exit(): utils.enc_print ('\n', 'PYTHON EXIT CODE :', G_EXIT_CODE, '\n') sys.exit(G_EXIT_CODE)
parser.add_argument('-md', action = 'store', dest = 'model_directory', default = model_directory, help = 'model directory') parser.add_argument('-enc', action='store', default = '') parser.add_argument('-dec', action='store', default = '') args = parser.parse_args() app_directory = '' + args.app_directory model_directory = '' + args.model_directory utils.ENC = args.enc utils.DEC = args.dec # global exit code variable G_EXIT_CODE = APP_CODE_TERMINATION_NORMAL utils.enc_print (dividing_line) utils.enc_print ('STARTED SCRIPT :', sys.argv[0]) utils.enc_print ('SYSTEM ENCODING', sys.getdefaultencoding()) utils.enc_print ('FILESYSTEM ENCODING', sys.getfilesystemencoding()) # search rdo and rdo_test executables rdo_ex = get_executables(app_directory) if not os.path.exists(rdo_ex): utils.enc_print ('Build app not found. Critical error !!!') sys.exit(APP_CODE_TERMINATION_ERROR) # search .rtestx files files = get_test_files(model_directory) files.sort() utils.enc_print ('\nFind RDO executables :')
action='store', dest='app_directory', default=app_directory, help='application directory') parser.add_argument('-mp', action='store', dest='model_path', default=model_path, help='model directory') args = parser.parse_args() app_directory = '' + args.app_directory model_path = '' + args.model_path utils.enc_print("App directory:", os.path.abspath(app_directory)) utils.enc_print("Test project file path:", os.path.abspath(model_path)) rdo_ex = get_executables(app_directory) if rdo_ex is None: utils.enc_print('Critical error! Build app not found.') sys.exit(APP_CODE_TERMINATION_ERROR) if not os.path.exists(model_path): utils.enc_print('Critical error! Test nodel not found.') sys.exit(APP_CODE_TERMINATION_ERROR) utils.enc_print('\nFind RDO executable:') utils.enc_print(rdo_ex)
file2_data = _read_result_data(file2) if cmp(file1_data, file2_data) == 0: return True return False def trace(file1, file2): file1_data = _read_trace_data(file1) file2_data = _read_trace_data(file2) if cmp(file1_data, file2_data) == 0: return True return False def files(file1, file2, type): if type == COMPARE_FULL: return full(file1, file2) elif type == COMPARE_TRACE: return trace(file1, file2) elif type == COMPARE_RESULT: return result(file1, file2) return False if __name__ == '__main__': utils.enc_print (str(files('game5.trc', 'game5_etalon.trc', COMPARE_TRACE)))