Example #1
0
    def testSocketUdpNb(self):
        """
        Test Class SocketUdpNb
        """
        console.terse("{0}\n".format(self.testSocketUdpNb.__doc__))
        console.reinit(verbosity=console.Wordage.profuse)

        userDirpath = os.path.join('~', '.ioflo', 'test')
        userDirpath = os.path.abspath(os.path.expanduser(userDirpath))
        if not os.path.exists(userDirpath):
            os.makedirs(userDirpath)

        tempDirpath = tempfile.mkdtemp(prefix="test",
                                       suffix="log",
                                       dir=userDirpath)

        logDirpath = os.path.join(tempDirpath, 'log')
        if not os.path.exists(logDirpath):
            os.makedirs(logDirpath)

        wireLog = wiring.WireLog(path=logDirpath)
        result = wireLog.reopen(prefix='alpha', midfix='6101')

        alpha = udping.SocketUdpNb(port=6101, wlog=wireLog)
        self.assertIs(alpha.opened, False)
        self.assertIs(alpha.reopen(), True)
        self.assertIs(alpha.opened, True)

        beta = udping.SocketUdpNb(port=6102)
        self.assertIs(beta.opened, False)
        self.assertIs(beta.reopen(), True)
        self.assertIs(beta.opened, True)

        console.terse("Sending alpha to beta\n")
        msgOut = b"alpha sends to beta"
        alpha.send(msgOut, beta.ha)
        time.sleep(0.05)
        msgIn, src = beta.receive()
        self.assertEqual(msgOut, msgIn)
        self.assertEqual(src[1], alpha.ha[1])

        console.terse("Sending alpha to alpha\n")
        msgOut = b"alpha sends to alpha"
        alpha.send(msgOut, alpha.ha)
        time.sleep(0.05)
        msgIn, src = alpha.receive()
        self.assertEqual(msgOut, msgIn)
        self.assertEqual(src[1], alpha.ha[1])

        console.terse("Sending beta to alpha\n")
        msgOut = b"beta sends to alpha"
        beta.send(msgOut, alpha.ha)
        time.sleep(0.05)
        msgIn, src = alpha.receive()
        self.assertEqual(msgOut, msgIn)
        self.assertEqual(src[1], beta.ha[1])
        time.sleep(0.05)

        console.terse("Sending beta to beta\n")
        msgOut = b"beta sends to beta"
        beta.send(msgOut, beta.ha)
        time.sleep(0.05)
        time.sleep(0.05)
        msgIn, src = beta.receive()
        self.assertEqual(msgOut, msgIn)
        self.assertEqual(src[1], beta.ha[1])

        alpha.close()
        beta.close()

        self.assertIs(alpha.opened, False)

        wireLog.close()
        shutil.rmtree(tempDirpath)
        console.reinit(verbosity=console.Wordage.concise)
Example #2
0
    def testBroadcast(self):
        """
        Test Class SocketUdpNb
        """
        console.terse("{0}\n".format(self.testBroadcast.__doc__))

        try:  # only run if netifaces installed
            from ioflo.aio.aioing import getDefaultHost, getDefaultBroadcast
        except ImportError:
            return

        console.reinit(verbosity=console.Wordage.profuse)

        #unicast = socket.gethostbyname(socket.gethostname())
        unicast = getDefaultHost()

        #parts = unicast.split('.')
        #parts[3] = '255'
        #broadcast = ".".join(parts)  # make broadcast send address

        broadcast = getDefaultBroadcast()
        bha = (broadcast, 6102)

        alpha = udping.SocketUdpNb(host=unicast, port=6101, bcast=True)
        self.assertIs(alpha.opened, False)
        self.assertIs(alpha.reopen(), True)
        self.assertIs(alpha.opened, True)
        self.assertIs(alpha.bcast, True)
        self.assertEqual(alpha.ha, (unicast, 6101))

        beta = udping.SocketUdpNb(
            host="",  # any
            port=6102)
        self.assertIs(beta.reopen(), True)
        self.assertIs(beta.bcast, False)
        self.assertEqual(beta.ha, ("0.0.0.0", 6102))
        self.assertEqual(beta.ha[1], bha[1])  # same port

        console.terse("Broadcasting alpha to beta\n")
        msgOut = b"alpha broadcasts to beta"
        alpha.send(msgOut, bha)
        time.sleep(0.1)
        msgIn, src = beta.receive()
        self.assertEqual(msgIn, msgOut)
        self.assertEqual(src, alpha.ha)

        alpha.close()
        beta.close()
        time.sleep(0.1)

        beta = udping.SocketUdpNb(
            host="",  # any
            port=6102,
            bcast=True)
        self.assertIs(beta.reopen(), True)
        self.assertIs(beta.bcast, True)
        self.assertEqual(beta.ha, ("0.0.0.0", 6102))
        self.assertEqual(beta.ha[1], bha[1])  # same port

        console.terse("Broadcasting beta to beta\n")
        msgOut = b"beta broadcasts to beta"
        beta.send(msgOut, bha)
        time.sleep(0.2)
        msgIn, src = beta.receive()
        self.assertEqual(msgIn, msgOut)
        self.assertEqual(src[1], beta.ha[1])

        beta.close()
        time.sleep(0.5)
        self.assertIs(alpha.opened, False)
        self.assertIs(beta.opened, False)
        console.reinit(verbosity=console.Wordage.concise)