示例#1
0
文件: tests.py 项目: alexgtom/ee122
    def setUp(self):
        self.h1 = BasicHost.create('h1')
        self.h2 = BasicHost.create('h2')

        self.s1 = RIPRouter.create('s1')
        self.s2 = RIPRouter.create('s2')

        # connect switches to host
        self.s1.linkTo(self.h1)
        self.s2.linkTo(self.h2)
        
        # connect switches together
        self.s1.linkTo(self.s2)

        dp_h1 = DiscoveryPacket(self.h1, 1)
        dp_h2 = DiscoveryPacket(self.h2, 1)
        dp_s1 = DiscoveryPacket(self.s1, 1)
        dp_s2 = DiscoveryPacket(self.s2, 1)
        
        # send discovery packet between h1 -- s1 on port 0
        self.h1.handle_rx(dp_s1, 0)
        self.s1.handle_rx(dp_h1, 0)

        # send discovery packet between h2 -- s2 on port 0
        self.h2.handle_rx(dp_s2, 0)
        self.s2.handle_rx(dp_h2, 0)

        # send discovery packet between s1 -- s2 on port 1
        self.s1.handle_rx(dp_s2, 1)
        self.s2.handle_rx(dp_s1, 1)

        self.entities = [self.h1, self.h2, self.s1, self.s2]
示例#2
0
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2):
    RIPRouter.create('student')
    BasicHost.create('dest')
    FakeEntity.create('announcer', None, [dest, 7])
    FakeEntity.create('listener', [dest, 8], None)

    topo.link(student, announcer)
    topo.link(student, listener)
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    RIPRouter.create('student')
    BasicHost.create('dest')
    FakeEntity.create('announcer', None, [dest, 7])
    FakeEntity.create('listener', [dest, 8], None)

    topo.link(student, announcer)
    topo.link(student, listener)
示例#4
0
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    RIPRouter.create('A')
    RIPRouter.create('B')
    #RIPRouter.create('C')
    #RIPRouter.create('D')
    RIPRouter.create('E')
    FakeEntity.create('Z', {A: 1}, {})
    topo.link(A, B)
    #topo.link(B, C)
    #topo.link(C, D)
    #topo.link(D, E)
    topo.link(B, E)
    topo.link(B, Z)
示例#5
0
文件: tsao.py 项目: alexgtom/ee122
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    global expectedUpdate1
    global expectedSender1
    global waittime

    print "Creating routers..."
    RIPRouter.create('A')
    RIPRouter.create('B')
    RIPRouter.create('C')
    RIPRouter.create('D')
    RIPRouter.create('E')
    RIPRouter.create('F')
    RIPRouter.create('G')
    RIPRouter.create('H')
    RIPRouter.create('I')
    RIPRouter.create('J')
    createExpectedDict()
    FakeEntity.create('Z', expectedUpdate1, expectedSender1, {})
    
    
    print "Case 1: A-B-Z"
    topo.link(A, B)      #A - B - Z
    topo.link(B, Z)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 2: A B-Z"
    topo.unlink(A, B)    #A   B - Z
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 3: A-B Z"
    topo.unlink(B, Z)
    time.sleep(waittime/2)
    topo.link(A, B)      #A - B   Z
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 4: A-B-C-D-E-Z"
    topo.link(E, Z)      #A - B - C - D - E - Z
    topo.link(B, C)
    topo.link(C, D)
    time.sleep(waittime)
    topo.link(D, E)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 5: Circle(A,E)-Z"
    topo.link(E, A)      #A - B - C - D - E - Z
    time.sleep(waittime) # \_____________/
    if(failed):
        return

    print "Case 6: Clique(A,E)-Z"
    #topo.link(A, B)
    topo.link(A, C)
    topo.link(A, D)
    #topo.link(A, E)
    #topo.link(B, C)
    topo.link(B, D)      #        ---A---
    topo.link(B, E)      #       /  / \  \ 
    time.sleep(waittime) #      B--|---|-E -- Z   
    #topo.link(C, D)     #       \ |/ \| /
    topo.link(C, E)      #        C-----D
    #topo.link(D, E)     #   Clique
    time.sleep(waittime)
    if(failed):
        return

    print "Case 7: Centralize(A,{B,C,D,E,Z}"
    #topo.unlink(A, B)
    #topo.unlink(A, C)
    #topo.unlink(A, D)
    #topo.unlink(A, E)
    topo.unlink(E, Z)
    topo.unlink(B, C)
    topo.unlink(B, D)    #           Z
    topo.unlink(B, E)    #           |    
    topo.unlink(C, D)    #      B -- A -- E
    topo.unlink(C, E)    #          / \  
    topo.unlink(D, E)    #        C     D
    time.sleep(waittime)
    topo.link(A, Z)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 8: Centralize(A,Circle(B-E,Z))"
    topo.link(B, C)      
    topo.link(C, D)      
    topo.link(D, E)      
    time.sleep(waittime)    #       ---Z---
    topo.link(E, Z)         #      /   |   \ 
    time.sleep(waittime/2)  #     B -- A -- E
    topo.link(Z, B)         #      \  / \  /
    time.sleep(waittime)    #       C-----D
    if(failed):
        return
    
    print "Case 9: A-B-Branch(Z, C-D-E, F-G)"
    topo.unlink(A, Z)
    topo.unlink(E, Z)
    topo.unlink(B, Z)
    #topo.unlink(A, B)
    topo.unlink(A, C)
    topo.unlink(A, D)
    topo.unlink(A, E)
    topo.unlink(B, C)
    topo.link(F, G)
    #print "REM"
    #topo.unlink(C, D)
    #topo.unlink(D, E)  
    time.sleep(waittime) 
    topo.link(B, Z)      
    time.sleep(waittime/2)
    Z.send_specific_announce({F: 1, G: 2, C: 1, D: 2, E: 3})
    time.sleep(waittime/2)
    topo.unlink(B, Z)      
    topo.link(Z, C)        
    time.sleep(waittime/2)
    Z.send_specific_announce({F: 1, G: 2, B: 1, A: 2})
    time.sleep(waittime/2)   #             
    topo.unlink(C, Z)        #             F - G
    topo.link(Z, F)          #             |
    time.sleep(waittime/2)   #     A - B - Z - C - D - E 
    Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3})    
    time.sleep(waittime/2)
    topo.unlink(F, G)
    Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3, G: 100})
    #print "NIM"
    time.sleep(waittime/2)
    topo.link(F, G)
    time.sleep(waittime)
    if(failed):
        return

    print "Case 10: EShaped(ABC,EHD,FGZ)"
    #topo.unlink(B, Z)
    #topo.unlink(Z, C)
    topo.unlink(Z, F)
    #topo.unlink(A, B)
    topo.unlink(C, D)
    topo.unlink(D, E)
    #topo.unlink(F, G)
    topo.link(B, C)
    topo.link(A, E)      #     A ------B------C
    topo.link(E, H)      #     |
    topo.link(H, D)      #     E ------H------D
    topo.link(A, F)      #     |
    time.sleep(waittime) #     F-------G------Z
    topo.link(G, Z)      
    time.sleep(waittime/2)
    topo.disconnect(H)
    time.sleep(waittime)
    if(failed):
        return
    
    A.remove()
    B.remove()
    C.remove()
    D.remove()
    E.remove()
    F.remove()
    G.remove()
    H.remove()
    I.remove()
    J.remove()
    Z.remove()
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    RIPRouter.create('A')
    RIPRouter.create('B')
    FakeEntity.create('C', {A: 1}, {})
    topo.link(A, B)
    topo.link(B, C)
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2):
    RIPRouter.create('A')
    RIPRouter.create('B')
    FakeEntity.create('C', {A: 1}, {})
    topo.link(A, B)
    topo.link(B, C)
示例#8
0
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    global expectedUpdate1
    global expectedSender1
    global waittime

    print "Creating routers..."
    RIPRouter.create('A')
    RIPRouter.create('B')
    RIPRouter.create('C')
    RIPRouter.create('D')
    RIPRouter.create('E')
    RIPRouter.create('F')
    RIPRouter.create('G')
    RIPRouter.create('H')
    RIPRouter.create('I')
    RIPRouter.create('J')
    createExpectedDict()
    FakeEntity.create('Z', expectedUpdate1, expectedSender1, {})
    
    '''
    print "Case 1: A-B-Z"
    topo.link(A, B)      #A - B - Z
    topo.link(B, Z)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 2: A B-Z"
    topo.unlink(A, B)    #A   B - Z
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 3: A-B Z"
    topo.unlink(B, Z)
    time.sleep(waittime/2)
    topo.link(A, B)      #A - B   Z
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 4: A-B-C-D-E-Z"
    topo.link(E, Z)      #A - B - C - D - E - Z
    topo.link(B, C)
    topo.link(C, D)
    time.sleep(waittime)
    topo.link(D, E)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 5: Circle(A,E)-Z"
    topo.link(E, A)      #A - B - C - D - E - Z
    time.sleep(waittime) # \_____________/
    if(failed):
        return

    print "Case 6: Clique(A,E)-Z"
    #topo.link(A, B)
    topo.link(A, C)
    topo.link(A, D)
    #topo.link(A, E)
    #topo.link(B, C)
    topo.link(B, D)      #        ---A---
    topo.link(B, E)      #       /  / \  \ 
    time.sleep(waittime) #      B--|---|-E -- Z   
    #topo.link(C, D)     #       \ |/ \| /
    topo.link(C, E)      #        C-----D
    #topo.link(D, E)     #   Clique
    time.sleep(waittime)
    if(failed):
        return

    print "Case 7: Centralize(A,{B,C,D,E,Z}"
    #topo.unlink(A, B)
    #topo.unlink(A, C)
    #topo.unlink(A, D)
    #topo.unlink(A, E)
    topo.unlink(E, Z)
    topo.unlink(B, C)
    topo.unlink(B, D)    #           Z
    topo.unlink(B, E)    #           |    
    topo.unlink(C, D)    #      B -- A -- E
    topo.unlink(C, E)    #          / \  
    topo.unlink(D, E)    #        C     D
    time.sleep(waittime)
    topo.link(A, Z)
    time.sleep(waittime)
    if(failed):
        return
    
    print "Case 8: Centralize(A,Circle(B-E,Z))"
    topo.link(B, C)      
    topo.link(C, D)      
    topo.link(D, E)      
    time.sleep(waittime)    #       ---Z---
    topo.link(E, Z)         #      /   |   \ 
    time.sleep(waittime/2)  #     B -- A -- E
    topo.link(Z, B)         #      \  / \  /
    time.sleep(waittime)    #       C-----D
    if(failed):
        return
    
    print "Case 9: A-B-Branch(Z, C-D-E, F-G)"
    topo.unlink(A, Z)
    topo.unlink(E, Z)
    topo.unlink(B, Z)
    #topo.unlink(A, B)
    topo.unlink(A, C)
    topo.unlink(A, D)
    topo.unlink(A, E)
    topo.unlink(B, C)
    topo.link(F, G)
    #print "REM"
    #topo.unlink(C, D)
    #topo.unlink(D, E)  
    time.sleep(waittime) 
    topo.link(B, Z)      
    time.sleep(waittime/2)
    Z.send_specific_announce({F: 1, G: 2, C: 1, D: 2, E: 3})
    time.sleep(waittime/2)
    topo.unlink(B, Z)      
    topo.link(Z, C)        
    time.sleep(waittime/2)
    Z.send_specific_announce({F: 1, G: 2, B: 1, A: 2})
    time.sleep(waittime/2)   #             
    topo.unlink(C, Z)        #             F - G
    topo.link(Z, F)          #             |
    time.sleep(waittime/2)   #     A - B - Z - C - D - E 
    Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3})    
    time.sleep(waittime/2)
    topo.unlink(F, G)
    Z.send_specific_announce({B: 1, A: 2, C: 1, D: 2, E: 3, G: 100})
    #print "NIM"
    time.sleep(waittime/2)
    topo.link(F, G)
    time.sleep(waittime)
    if(failed):
        return
    '''
    print "Case 10: EShaped(ABC,EHD,FGZ)"
    #topo.unlink(B, Z)
    #topo.unlink(Z, C)
    topo.unlink(Z, F)
    #topo.unlink(A, B)
    topo.unlink(C, D)
    topo.unlink(D, E)
    #topo.unlink(F, G)
    topo.link(B, C)
    topo.link(A, E)      #     A ------B------C
    topo.link(E, H)      #     |
    topo.link(H, D)      #     E ------H------D
    topo.link(A, F)      #     |
    time.sleep(waittime) #     F-------G------Z
    topo.link(G, Z)      
    time.sleep(waittime/2)
    topo.disconnect(H)
    time.sleep(waittime)
    if(failed):
        return
    
    A.remove()
    B.remove()
    C.remove()
    D.remove()
    E.remove()
    F.remove()
    G.remove()
    H.remove()
    I.remove()
    J.remove()
    Z.remove()
示例#9
0
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2):
    RIPRouter.create("A")
    RIPRouter.create("B")
    FakeEntity.create("C", {A: 1}, {})
    topo.link(A, B)
    topo.link(B, C)
示例#10
0
def create (switch_type = FakeEntity, host_type = FakeEntity, n = 2):
    RIPRouter.create('A')
    BasicHost.create('C')
    FakeEntity.create('B', {C: 100}, {C: 1}) 
    topo.link(A, B)
def create(switch_type=FakeEntity, host_type=FakeEntity, n=2):
    RIPRouter.create("A")
    BasicHost.create("C")
    FakeEntity.create("B", {C: 100}, {C: 1})
    topo.link(A, B)