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')
Exemple #5
0
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    :')
Exemple #9
0
                    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)
Exemple #10
0
    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)))