def _validateAndExpandInputs(argv): rtl.validateInputOrExit(argv, 3, "solution1 solution2 attribute") testSolution = argv[0] baselineSolution = argv[1] attribute = argv[2] rtl.validateFileOrExit(testSolution) rtl.validateFileOrExit(baselineSolution) return (testSolution, baselineSolution, attribute)
def _runGenericCase(inputFile, executable, verbose=False): stdout = sys.stdout if verbose else open(os.devnull, 'w') rtl.validateFileOrExit(inputFile) rtl.validateExeOrExit(executable) casebase = os.path.sep.join(inputFile.split(os.path.sep)[-1].split('.')[:-1]) caseparent = os.path.sep.join(inputFile.split(os.path.sep)[:-1]) logFile = caseparent + os.path.sep + casebase + '.log' returnCode = _runCase(executable, inputFile, logFile, stdout) print("COMPLETE with code {}".format(returnCode), flush=True) return returnCode
shutil.copytree(inputsDirectory, testBuildDirectory, ignore=ignoreBaselineItems) ### Run openfast on the test case if not noExec: caseInputFile = os.path.join(testBuildDirectory, caseName + ".fst") returnCode = openfastDrivers.runOpenfastCase(caseInputFile, executable) if returnCode != 0: rtl.exitWithError("") ### Build the filesystem navigation variables for running the regression test # testing on file 2. Gives each observer and sweep of frequency ranges localOutFile = os.path.join(testBuildDirectory, caseName + "_2.out") baselineOutFile = os.path.join(targetOutputDirectory, caseName + "_2.out") rtl.validateFileOrExit(localOutFile) rtl.validateFileOrExit(baselineOutFile) testData, testInfo, testPack = pass_fail.readFASTOut(localOutFile) baselineData, baselineInfo, _ = pass_fail.readFASTOut(baselineOutFile) performance = pass_fail.calculateNorms(testData, baselineData) normalizedNorm = performance[:, 1] # export all case summaries results = list(zip(testInfo["attribute_names"], [*performance])) results_max = performance.max(axis=0) exportCaseSummary(testBuildDirectory, caseName, results, results_max, tolerance) # failing case if not pass_fail.passRegressionTest(normalizedNorm, tolerance):
def calculateNorms(testData, baselineData, tolerance): relativeNorm = calculateMaxNormOverRange(testData, baselineData, tolerance) maxNorm = calculateMaxNorm(testData, baselineData) return relativeNorm, maxNorm if __name__=="__main__": rtl.validateInputOrExit(sys.argv, 4, "{} test_solution baseline_solution tolerance".format(sys.argv[0])) testSolution = sys.argv[1] baselineSolution = sys.argv[2] tolerance = sys.argv[3] try: tolerance = float(tolerance) except ValueError: rtl.exitWithError("Error: invalid tolerance given, {}".format(tolerance)) rtl.validateFileOrExit(testSolution) rtl.validateFileOrExit(baselineSolution) testData, testInfo, testPack = readFASTOut(testSolution) baselineData, baselineInfo, basePack = readFASTOut(baselineSolution) normalizedNorm, maxNorm = pass_fail.calculateNorms(testData, baselineData, tolerance) if passRegressionTest(normalizedNorm, tolerance): sys.exit(0) else: dict1, info1, pack1 = readFASTOut(testSolution) sys.exit(1)