Example #1
0
    def testUdpDevice(self):
        """
        Test UdpDevice class
        """
        console.terse("{0}\n".format(self.testUdpDevice.__doc__))

        stack = stacking.UdpStack()
        self.assertIsInstance(stack.local, devicing.IpLocalDevice)
        self.assertEqual(stack.local.uid, 1)
        self.assertEqual(stack.local.name, "Device{0}".format(stack.local.uid))
        self.assertEqual(stack.local.ha, ('127.0.0.1', stacking.UdpStack.Port))
        self.assertEqual(stack.local.kind, None)
        self.assertEqual(stack.aha, ('0.0.0.0', stacking.UdpStack.Port))

        device = devicing.IpDevice(stack=stack)
        self.assertEqual(device.stack, stack)
        self.assertEqual(device.uid, 2)  # stacks .local has uid 1
        self.assertEqual(device.name, "Device{0}".format(device.uid))
        self.assertEqual(device.ha, ('127.0.0.1', stacking.UdpStack.Port))
        self.assertEqual(device.kind, None)

        device = devicing.IpRemoteDevice(stack=stack)
        self.assertIs(device.stack, stack)
        self.assertEqual(device.uid, 3)
        self.assertEqual(device.name, "Device{0}".format(device.uid))
        self.assertEqual(device.ha, ('127.0.0.1', stacking.UdpStack.Port))
        self.assertEqual(device.kind, None)

        stack.close()

        ha = ('127.0.0.1', 8000)
        stack = stacking.UdpStack(ha=ha)
        self.assertIsInstance(stack.local, devicing.IpLocalDevice)
        self.assertEqual(stack.local.uid, 1)
        self.assertEqual(stack.local.name, "Device{0}".format(stack.local.uid))
        self.assertEqual(stack.local.ha, ha)
        self.assertEqual(stack.local.kind, None)
        self.assertEqual(stack.aha, ha)

        device = devicing.IpDevice(stack=stack, ha=ha)
        self.assertEqual(device.stack, stack)
        self.assertEqual(device.uid, 2)  # stacks .local has uid 1
        self.assertEqual(device.name, "Device{0}".format(device.uid))
        self.assertEqual(device.ha, ha)
        self.assertEqual(device.kind, None)
        self.assertEqual(device.host, ha[0])
        self.assertEqual(device.port, ha[1])

        device = devicing.IpRemoteDevice(stack=stack, ha=ha)
        self.assertIs(device.stack, stack)
        self.assertEqual(device.uid, 3)
        self.assertEqual(device.name, "Device{0}".format(device.uid))
        self.assertEqual(device.ha, ha)
        self.assertEqual(device.kind, None)
        self.assertEqual(device.host, ha[0])
        self.assertEqual(device.port, ha[1])

        stack.close()
    def testUdpStack(self):
        """
        Test UdpStack class
        """
        console.terse("{0}\n".format(self.testUdpStack.__doc__))

        stack = stacking.UdpStack()
        self.assertIsInstance(stack.local, devicing.IpLocalDevice)
        self.assertEqual(stack.local.uid, 1)
        self.assertEqual(stack.local.name, "Device{0}".format(stack.local.uid))
        self.assertEqual(stack.local.ha, ('127.0.0.1', stacking.UdpStack.Port))
        self.assertEqual(stack.local.kind, None)
        self.assertEqual(stack.aha, ('0.0.0.0', stacking.UdpStack.Port))
        stack.close()

        ha = ('127.0.0.1', 8000)
        stack = stacking.UdpStack(ha=ha)
        self.assertIsInstance(stack.local, devicing.IpLocalDevice)
        self.assertEqual(stack.local.uid, 1)
        self.assertEqual(stack.local.name, "Device{0}".format(stack.local.uid))
        self.assertEqual(stack.local.ha, ha)
        self.assertEqual(stack.local.kind, None)
        self.assertEqual(stack.aha, ha)
        stack.close()
    def testUdpStacks(self):
        """
        Test two stacks sending packets
        """
        console.terse("{0}\n".format(self.testUdpStacks.__doc__))

        stamper = Stamper()

        alpha = stacking.UdpStack(name='alpha',
                               port=8000)
        self.assertEqual(alpha.name, "alpha")
        self.assertEqual(alpha.ha, ('127.0.0.1', 8000))
        self.assertEqual(alpha.aha, ('0.0.0.0', 8000))
        self.assertIs(alpha.handler.opened, True)
        self.assertEqual(len(alpha.remotes), 0)

        remote = devicing.IpRemoteDevice(stack=alpha,
                                       name='BetaRemote',
                                       ha=('localhost', 8002))
        self.assertEqual(remote.uid, 2)
        self.assertEqual(remote.name, 'BetaRemote')
        self.assertEqual(remote.ha, ('127.0.0.1', 8002))
        alpha.addRemote(remote)


        beta = stacking.UdpStack(name='beta',
                              port=8002)
        self.assertEqual(beta.name, "beta")
        self.assertEqual(beta.ha, ('127.0.0.1', 8002))
        self.assertEqual(beta.aha, ('0.0.0.0', 8002))
        self.assertIs(beta.handler.opened, True)
        self.assertEqual(len(beta.remotes), 0)

        remote = devicing.IpRemoteDevice(stack=beta,
                                       name='AlphaRemote',
                                       ha=('localhost', 8000))
        self.assertEqual(remote.uid, 2)
        self.assertEqual(remote.name, 'AlphaRemote')
        self.assertEqual(remote.ha, ('127.0.0.1', 8000))
        beta.addRemote(remote)

        msg2beta = "Hello beta it's me alpha."
        alpha.message(msg2beta)

        msg2alpha = "Hi alpha from beta."
        beta.message(msg2alpha)

        #timer = Timer(duration=0.5)
        while (alpha.txMsgs or alpha.txPkts or alpha.rxPkts or alpha.rxMsgs
                or beta.txMsgs or  beta.txPkts or beta.rxPkts or beta.rxMsgs):
            alpha.serviceAllTx()
            beta.serviceAllTx()
            time.sleep(0.1)
            alpha.serviceAllRx()
            beta.serviceAllRx()
            stamper.advanceStamp(0.1)

        self.assertEqual(len(alpha.rxMsgs), 0)
        self.assertEqual(len(beta.rxMsgs), 0)
        self.assertEqual(alpha.stats['msg_received'], 1)
        self.assertEqual(beta.stats['msg_received'], 1)

        msg2beta = "Whats up beta?"
        packet = packeting.Packet(packed=msg2beta.encode('ascii'))
        alpha.transmit(packet)

        msg2alpha = "Just hanging alpha."
        packet = packeting.Packet(packed=msg2alpha.encode('ascii'))
        beta.transmit(packet)

        while (alpha.txMsgs or alpha.txPkts or alpha.rxPkts or alpha.rxMsgs
                or beta.txMsgs or  beta.txPkts or beta.rxPkts or beta.rxMsgs):
            alpha.serviceAllTx()
            beta.serviceAllTx()
            time.sleep(0.1)
            alpha.serviceAllRx()
            beta.serviceAllRx()
            stamper.advanceStamp(0.1)

        self.assertEqual(len(alpha.rxMsgs), 0)
        self.assertEqual(len(beta.rxMsgs), 0)
        self.assertEqual(alpha.stats['msg_received'], 2)
        self.assertEqual(beta.stats['msg_received'], 2)

        alpha.close()
        beta.close()

        alpha.reopen()
        beta.reopen()

        alpha.close()
        beta.close()