def simpleTest():
    radix = 4
    M = (2, 2, 4)
    algo = "Optimal"
    numL2Failure = 0
    numL1Failure = 0
    numLinkFailure = 1

    router = Router(radix)
    wiring = load_Wiring(M, algo)
    etms = load_ETM(M)

    l2fp = set(["c" + str(ci) for ci in range(numL2Failure)])
    print("L2 FPS:", l2fp)
    l1fps = getL1FP(wiring, numL1Failure)
    print("L1 FPS:", l1fps)
    linkfps = load_RepLinkFP(M, numLinkFailure, algo)
    print("Link FPS:", linkfps)

    for l1fp in l1fps:
        for linkfp in linkfps:
            router.setL2Failure(l2fp)
            router.setL1Failure(l1fp)
            router.setLinkFailure(linkfp)

            scenario = {"router": router, "wiring": wiring, "M": M}
            beta = verificationRouter(scenario)
            print("Beta =", beta, ": L2-FP =", l2fp, ", L1-FP =", l1fp,
                  ", LK-FP =", linkfp)
def test_L1Failure():
    radix = 4
    M = (2, 2, 4)
    K = len(M)
    algo = "Optimal"
    wiring = load_Wiring(M, algo)

    # Impose L1 switch failure
    MRes = (2, 1, 3)
    wiringRes = ((0, 0, 0), wiring[1], wiring[2], wiring[3])
    print("MRes:", MRes)
    print("wiringRes:", wiringRes)

    # Impose link failure
    lkfp = tuple()
    
    flowSet = fractionalize(radix, MRes, wiringRes)
    (flowCount, fgcd, upL1s, downL1s) = flowSet

    effCap = 0.5
    algoHash = "Optimal"
    flowRoute = solveCompactWeight(radix, M, flowSet, lkfp, effCap, algoHash)
    
    weights = resolveWeight(radix, MRes, wiringRes, flowSet, flowRoute)

    print_hash_result(radix, M, wiringRes, flowSet, flowRoute, weights)
    
    result = (flowSet, flowRoute, weights)
def computeCompactHash(radix, M, algo, algoHash, lkfp, effCap):
    K = len(M)
    wiring = load_Wiring(M, algo)
    flowSet = fractionalize(radix, M, wiring)
    flowRoute = solveCompactWeight(radix, M, flowSet, lkfp, effCap, algoHash)
    weights = resolveWeight(radix, M, wiring, flowSet, flowRoute)
    hashResult = (flowSet, flowRoute, weights)
    return hashResult
Esempio n. 4
0
def generateRepLinkFailurePatterns(radix, M, algo, minFailedLink,
                                   maxFailedLink):
    wiring = load_Wiring(M, algo)
    FP = FailurePattern(radix, wiring)

    assert minFailedLink >= 0
    upperboundFailure = radix**2 / 2
    assert maxFailedLink <= upperboundFailure

    for numFailure in range(minFailedLink, maxFailedLink + 1):
        t = time.time()
        fps = FP.setNumFailure(numFailure)
        repfps = set()
        for fp in fps:
            repfps.add(FP.getRepresentative(fp))

        save_RepLinkFP(repfps, M, numFailure, algo)
def test_LKFailure():
    radix = 4
    M = (2, 2, 4)
    K = len(M)
    algo = "Optimal"
    wiring = load_Wiring(M, algo)
    flowSet = fractionalize(radix, M, wiring)
    (flowCount, fgcd, upL1s, downL1s) = flowSet

    # Impose link failure pattern
    lkfp = (("e0", "c0"),)
    lkfp_id = 0
    effCap = 1
    algoHash = "Optimal"
    flowRoute = solveCompactWeight(radix, M, flowSet, lkfp, effCap, algoHash)
    weights = resolveWeight(radix, M, wiring, flowSet, flowRoute)

    print_hash_result(radix, M, wiring, flowSet, flowRoute, weights)
    result = (flowSet, flowRoute, weights)
    save_HashResultSingle(result, M, lkfp_id, algo, algoHash)
    fps = set()
    for c in comb:
        if sum(c) == numFailure:
            fps.add(tuple(c))
    return fps


def getL1FP(wiring, numFailure):
    (groups, gkeys) = deriveSubgroup(wiring)
    dists = getL1FailurePatterns(groups, gkeys, numFailure)
    fps = set()
    for dist in dists:
        fp = list()
        for gid in xrange(len(groups)):
            gk = gkeys[gid]
            for i in range(dist[gid]):
                fp.append("e" + str(groups[gk][i]))
        fps.add(tuple(fp))
    return fps


if __name__ == "__main__":
    radix = 4
    M = (2, 2, 4)
    algo = "Optimal"
    wiring = load_Wiring(M, algo)
    for numFailure in range(radix + 1):
        fps = getL1FP(wiring, numFailure)
        print(numFailure, fps)