def testGetEvents(self): self._log.debug( "\ntestGetEvents" ) self._router = myDummyRouter() self.udpRx = WebbrickUdpEventReceiver( self._router ) self.udpRx.start() # Not really a unit test as it just waits to log events. self._sendUdpEvents( testEvents1 ) self.assertEqual( self._router._seen, allEvents )
class TestWebBrickUdpEventReceiver(unittest.TestCase): def setUp(self): self._log = logging.getLogger( "TestWebBrickUdpEventReceiver" ) self._log.debug( "\n\nsetUp" ) self.loader = None self._router = None self.udpRx = None return def tearDown(self): self._log.debug( "tearDown" ) if self.udpRx: self.udpRx.stop() self.udpRx = None time.sleep(3) # ensure closed down. if self.loader: self.loader.stop() # all tasks self.loader = None time.sleep(3) # ensure closed down. return def _sendUdpEvents(self, events ): # open socket testSkt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # generate some UDP event packets for pkt in events: self._log.debug( "send %s", str(pkt) ) time.sleep(0.1) testSkt.sendto( pkt, ("localhost", 2552) ) time.sleep(1) testSkt.close() # Actual tests follow def testGetEvents(self): self._log.debug( "\ntestGetEvents" ) self._router = myDummyRouter() self.udpRx = WebbrickUdpEventReceiver( self._router ) self.udpRx.start() # Not really a unit test as it just waits to log events. self._sendUdpEvents( testEvents1 ) self.assertEqual( self._router._seen, allEvents ) def testUdpEvent(self): self._log.debug( "\ntestUdpEvent" ) self.loader = EventRouterLoader() self.loader.loadHandlers( getDictFromXmlString(testConfigUdp) ) self.loader.start() # all tasks self._router = self.loader.getEventRouter() self._sendUdpEvents( testEvents2 ) time.sleep(1) TestEventLogger.logEvents() #needs updating t handle real webbrick also on network. self.assertEqual( len(TestEventLogger._events), 2) self.assertEqual( TestEventLogger._events[0].getType(), "http://id.webbrick.co.uk/events/webbrick/TD" ) self.assertEqual( TestEventLogger._events[0].getSource(), "webbrick/100/TD/0" ) self.assertEqual( TestEventLogger._events[1].getType(), "http://id.webbrick.co.uk/events/webbrick/TD" ) self.assertEqual( TestEventLogger._events[1].getSource(), "webbrick/100/TD/1" ) def testUdpTempEvent(self): self._log.debug( "\ntestUdpTempEvent" ) self.loader = EventRouterLoader() self.loader.loadHandlers( getDictFromXmlString(testConfigUdp) ) self.loader.start() # all tasks self._router = self.loader.getEventRouter() self._sendUdpEvents( testEvents3 ) time.sleep(1) TestEventLogger.logEvents() #needs updating t handle real webbrick also on network. self.assertEqual( len(TestEventLogger._events), 2) self.assertEqual( TestEventLogger._events[0].getType(), "http://id.webbrick.co.uk/events/webbrick/CT" ) self.assertEqual( TestEventLogger._events[0].getSource(), "webbrick/100/CT/1" ) self.assertEqual( TestEventLogger._events[1].getType(), "http://id.webbrick.co.uk/events/webbrick/ET" ) self.assertEqual( TestEventLogger._events[1].getSource(), "webbrick/100/ET/1" ) def testLotsOfEvents(self): self._log.debug( "\n\ntestLotsOfEvents" ) self.loader = EventRouterLoader() self.loader.loadHandlers( getDictFromXmlString(testConfigUdp) ) self.loader.start() # all tasks self._router = self.loader.getEventRouter() NumEvents = 4096 # open socket testSkt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # generate some UDP event packets pkt = "\012GTa\001\000\004\100\101\001\000\000\000" for i in range(NumEvents): testSkt.sendto( pkt+chr(i%256), ("localhost", 2552) ) testSkt.close() time.sleep(5) self.failUnless( len(TestEventLogger._events) >= NumEvents, "NumEvents %i, received %i" % (NumEvents, len(TestEventLogger._events) ) ) def testDummy(self): return