Example #1
0
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)
Example #2
0
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):
Example #4
0
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)