示例#1
0
def wboxPrioritization(name, prog, v, ctype, n, r, b, repeats, selsize):
    javaFlag = True if v == "v0" else False

    fin = "input/{}_{}/{}-{}.txt".format(prog, v, prog, ctype)
    if javaFlag:
        fault_matrix = "input/{}_{}/fault_matrix.pickle".format(prog, v)
    else:
        fault_matrix = "input/{}_{}/fault_matrix_key_tc.pickle".format(prog, v)

    outpath = "output/{}_{}/".format(prog, v)
    ppath = outpath + "prioritized/"

    if name == "GT":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                stime, ptime, prioritization = competitors.gt(fin)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "FAST-" + selsize.__name__[:-1]:
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                if javaFlag:
                    stime, ptime, prioritization = fast.fast_(
                        fin, selsize, r=r, b=b, memory=False)
                else:
                    stime, ptime, prioritization = fast.fast_(
                        fin, selsize, r=r, b=b, memory=True)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "FAST-pw":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                if javaFlag:
                    stime, ptime, prioritization = fast.fast_pw(fin, r, b)
                else:
                    stime, ptime, prioritization = fast.fast_pw(
                        fin, r, b, memory=True)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "GA":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                stime, ptime, prioritization = competitors.ga(fin)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "GA-S":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                stime, ptime, prioritization = competitors.ga_s(fin)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "ART-D":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                stime, ptime, prioritization = competitors.artd(fin)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    elif name == "ART-F":
        if ("{}-{}.tsv".format(name, ctype)) not in set(os.listdir(outpath)):
            ptimes, stimes, apfds = [], [], []
            for run in range(repeats):
                print(" Run", run)
                stime, ptime, prioritization = competitors.artf(fin)
                writePrioritization(ppath, name, ctype, run, prioritization)
                apfd = metric.apfd(prioritization, fault_matrix, javaFlag)
                apfds.append(apfd)
                stimes.append(stime)
                ptimes.append(ptime)
                print("  Progress: 100%  ")
                print("  Running time:", stime + ptime)
                if javaFlag:
                    print("  APFD:", sum(apfds[run]) / len(apfds[run]))
                else:
                    print("  APFD:", apfd)
            rep = (name, stimes, ptimes, apfds)
            writeOutput(outpath, ctype, rep, javaFlag)
            print("")
        else:
            print(name, "already run.")

    else:
        print("Wrong input.")
        print(usage)
        exit()
示例#2
0
def scalability(name, ts, tc, n, r, b, selsize):
    filename = "{}x{}".format(ts, tc)
    fin = "scalability/input/{}.txt".format(filename)
    outpath = "scalability/output/"


    if name == "FAST-" + selsize.__name__[:-1]:
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            stime, ptime, prioritization = fast.fast_(
                fin, selsize, r=r, b=b, memory=False)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
        else:
            print name, "already run."

    elif name == "FAST-pw":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            stime, ptime, prioritization = fast.fast_pw(
                fin, selsize, r=r, b=b, memory=False)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
        else:
            print name, "already run."

    elif name == "STR":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.str_(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "I-TSD":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.i_tsd(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "GT":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.gt(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "GA":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.ga(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "GA-S":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.ga_s(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "ART-D":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.art_d(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    elif name == "ART-F":
        if ("{}-{}.tsv".format(name, filename)) not in set(os.listdir(outpath)):
            print name
            stime, ptime, prioritization = competitors.art_f(fin)
            print("  Progress: 100%  ")
            print "  Running time:", stime + ptime
            rep = (name, stime, ptime)
            writeOutput(outpath, filename, rep)
            print("")
        else:
            print name, "already run."

    else:
        print "Wrong input name."
示例#3
0
                                            bbox=True,
                                            k=k,
                                            memory=True,
                                            B=B)
            fdl = metric.fdl(sel, faultMatrix, javaFlag)
            sOut = "{}/{}-{}-{}.pickle".format(sPath, "FAST-all", reduction,
                                               run + 1)
            pickle.dump(sel, open(sOut, "wb"))
            tOut = "{}/{}-{}-{}.pickle".format(tPath, "FAST-all", reduction,
                                               run + 1)
            pickle.dump((pTime, rTime, fdl), open(tOut, "wb"))
            print("FAST-all", reduction, pTime, rTime, fdl)

        # WHITEBOX APPROACHES
        for run in range(repeats):
            pTime, rTime, sel = competitors.ga(wBoxFile, B=B)
            fdl = metric.fdl(sel, faultMatrix, javaFlag)
            sOut = "{}/{}-{}-{}.pickle".format(sPath, "GA", reduction, run + 1)
            pickle.dump(sel, open(sOut, "wb"))
            tOut = "{}/{}-{}-{}.pickle".format(tPath, "GA", reduction, run + 1)
            pickle.dump((pTime, rTime, fdl), open(tOut, "wb"))
            print("GA", reduction, pTime, rTime, fdl)

        for run in range(repeats):
            pTime, rTime, sel = competitors.artd(wBoxFile, B=B)
            fdl = metric.fdl(sel, faultMatrix, javaFlag)
            sOut = "{}/{}-{}-{}.pickle".format(sPath, "ART-D", reduction,
                                               run + 1)
            pickle.dump(sel, open(sOut, "wb"))
            tOut = "{}/{}-{}-{}.pickle".format(tPath, "ART-D", reduction,
                                               run + 1)
def run_algorithm(script, covType, algorithm, prog, v, red):

    ## Removed since we are only running once with a large B
    ## Reduced from 50 for development efficiency
    ## Increase this number when generating data
    #repeats = 5
    print(f"running {algorithm} {covType}.....")
    # FAST-R parameters
    k, n, r, b = 5, 10, 1, 10
    dim = 10

    # FAST-f sample size
    def all_(x):
        return x

    def sqrt_(x):
        return int(math.sqrt(x)) + 1

    def log_(x):
        return int(math.log(x, 2)) + 1

    def one_(x):
        return 1

    inputFile = "input/{}_{}/{}-bbox.txt".format(prog, v, prog)
    wBoxFile = "input/{}_{}/{}-{}.txt".format(prog, v, prog, covType)
    numOfTCS = sum((1 for _ in open(inputFile)))
    selection = set()

    # Change this number to determine the fraction of the total tests we want
    reduction = float(red)

    B = int(numOfTCS * reduction)

    #if algorithm == "FAST++":
    #        pTime, rTime, sel = fastr.fastPlusPlus(inputFile, dim=dim, B=B)
    #        selection = sel

    #elif algorithm == "FAST-CS":
    #    for run in range(repeats):
    #        pTime, rTime, sel = fastr.fastCS(inputFile, dim=dim, B=B)
    #        selection = sel

    #elif algorithm == "FAST-pw":
    #    for run in range(repeats):
    #        pTime, rTime, sel = fastr.fast_pw(inputFile, dim=dim, B=B)
    #        selection = sel

    if algorithm == "GA":
        pTime, rTime, sel = competitors.ga(wBoxFile, B=B)
        selection = sel

    elif algorithm == "ART-D":
        pTime, rTime, sel = competitors.artd(wBoxFile, B=B)
        selection = sel

    elif algorithm == "ART-F":
        pTime, rTime, sel = competitors.artf(wBoxFile, B=B)
        selection = sel

    else:
        print('Not a supported algorithm: {}'.format(algorithm))
        exit()

    return selection