示例#1
0
 def setUp(self):
     self.peer1 = BTPeer(5, 15151)
     self.peer1.debug = True
     self.peer2 = BTPeer(5, 25252)
     self.peer2.debug = True
     self.t1 = threading.Thread(target = self.peer1.mainloop)
     self.t2 = threading.Thread(target = self.peer2.mainloop)
    def __init__(self, maxpeers, serverport, name, register_server):
        BTPeer.__init__(self, maxpeers, serverport)
        self.requests = set()
        self.name = name
        self.register_server = register_server
        self.ext_ip = None

        handlers = {
            "DISC": self.handle_discovery,
            "REGR": self.handle_register_reply,
            "DISR": self.handle_discovery_reply,
            "BINT": self.handle_forward,
            "BTCR": self.handle_forward,
            "TRSC": self.handle_forward,
            "INIT": self.handle_forward
        }
        # Add node types here
        self.node_types = {
            "translation": "TRANSLATION",
            "broker": "BROKER",
            "transcription": "TRANSCRIPTION",
            "interface": "INTERFACE"
        }
        # Add Message to node type mapping here
        self.message_node_mapping = {
            "TRAN": "TRANSLATION",
            "BTCR": "BROKER",
            "TRSC": "TRANSCRIPTION",
            "BINT": "BROKER"
        }
        self.registered = False
        self.peerType = {}
        for m_type in handlers.keys():
            self.addhandler(m_type, handlers[m_type])
示例#3
0
 def __init__(self, maxpeers, serverport):
     BTPeer.__init__(self, maxpeers, serverport)
     self.requests = set()
     handlers = {
         "TRAN": self.handle_forward,
         "ACKT": self.handle_forward,
         "DISC": self.handle_forward,
         "REGS": self.handle_register,
         "REGR": self.handle_forward,
         "BINT": self.handle_forward,
         "BTCR": self.handle_forward,
         "TRSC": self.handle_forward,
         "INIT": self.handle_forward
     }
     for m_type in handlers.keys():
         self.addhandler(m_type, handlers[m_type])
     self.nodes = {}
     if os.path.exists('interface-info.txt'):
         os.remove('interface-info.txt')
示例#4
0
class BTPeerTest(unittest.TestCase):
    def setUp(self):
        self.peer1 = BTPeer(5, 15151)
        self.peer1.debug = True
        self.peer2 = BTPeer(5, 25252)
        self.peer2.debug = True
        self.t1 = threading.Thread(target = self.peer1.mainloop)
        self.t2 = threading.Thread(target = self.peer2.mainloop)

    def test_simple(self):
        m1 = 'hello from peer2'
        m2 = 'HELLO FROM PEER1'
        returns = {}
        def handler1(peerconn, msgdata, returns=returns):
            print peerconn, msgdata
            returns['p1'] = msgdata
        def handler2(peerconn, msgdata, returns=returns):
            print peerconn, msgdata
            returns['p2'] = msgdata

        self.peer1.addhandler('HELL', handler1)
        self.peer2.addhandler('HELL', handler2)

        self.t1.start()
        self.t2.start()

        time.sleep(0.5)

        self.peer1.connectandsend('localhost', 25252, 'HELL', m2)
        self.peer2.connectandsend('localhost', 15151, 'HELL', m1)

        time.sleep(0.1)

        self.assertEqual(returns['p1'], m1)
        self.assertEqual(returns['p2'], m2)

    def tearDown(self):
        self.peer1.shutdown = True
        self.peer2.shutdown = True
        # motivate threads to exit
        try:
            c = BTPeerConnection(None, 'localhost', 15151)
            c.close()
        except socket.error:
            pass
        try:
            c = BTPeerConnection(None, 'localhost', 25252)
            c.close()
        except socket.error:
            pass