class TopicManagerTest(unittest.TestCase): """ Tests for the L{TopicManager} class. """ def setUp(self): self.tm = TopicManager() self.conn = MockConnection() def test_subscribe(self): """ Test subscribing a connection to the topic. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = StompFrame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) print self.conn.frames assert len(self.conn.frames) == 1 assert self.conn.frames[0] == f def test_unsubscribe(self): """ Test unsubscribing a connection from the queue. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = StompFrame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) print self.conn.frames assert len(self.conn.frames) == 1 assert self.conn.frames[0] == f self.tm.unsubscribe(self.conn, dest) f = StompFrame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) assert len(self.conn.frames) == 1 def send_simple(self): """ Test a basic send command. """ dest = '/topic/dest' f = StompFrame('SEND', headers={'destination': dest}, body='Empty') self.tm.send(f) # Assert some side-effects assert 'message-id' in f.headers assert f.cmd == 'MESSAGE'
class TopicManagerTest(unittest.TestCase): """ Tests for the L{TopicManager} class. """ def setUp(self): self.tm = TopicManager() self.conn = MockConnection() def test_subscribe(self): """ Test subscribing a connection to the topic. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = Frame(frames.MESSAGE, headers={'destination': dest}, body='Empty') self.tm.send(f) self.assertEqual(len(self.conn.frames), 1) self.assertEqual(self.conn.frames[0], f) def test_unsubscribe(self): """ Test unsubscribing a connection from the queue. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = Frame(frames.MESSAGE, headers={'destination': dest}, body='Empty') self.tm.send(f) self.assertEqual(len(self.conn.frames), 1) self.assertEqual(self.conn.frames[0], f) self.tm.unsubscribe(self.conn, dest) f = Frame(frames.MESSAGE, headers={'destination': dest}, body='Empty') self.tm.send(f) self.assertEqual(len(self.conn.frames), 1) def test_send_simple(self): """ Test a basic send command. """ dest = '/topic/dest' f = Frame(frames.SEND, headers={'destination': dest}, body='Empty') self.tm.send(f) # Assert some side-effects self.assertIn('message-id', f.headers) self.assertEqual(f.cmd, 'message') def test_send_subscriber_timeout(self): """ Test a send command when one subscriber errs out. """ class TimeoutConnection(object): reliable_subscriber = False def send_frame(self, frame): raise socket.timeout("timed out") def reset(self): pass dest = '/topic/dest' bad_client = TimeoutConnection() # Subscribe both a good client and a bad client. self.tm.subscribe(bad_client, dest) self.tm.subscribe(self.conn, dest) f = Frame('message', headers={'destination': dest}, body='Empty') self.tm.send(f) # Make sure out good client got the message. self.assertEqual(len(self.conn.frames), 1) self.assertEqual(self.conn.frames[0], f) # Make sure our bad client got disconnected # (This might be a bit too intimate.) self.assertNotIn(bad_client, self.tm._topics[dest])
class TopicManagerTest(unittest.TestCase): """ Tests for the L{TopicManager} class. """ def setUp(self): self.tm = TopicManager() self.conn = MockConnection() def test_subscribe(self): """ Test subscribing a connection to the topic. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = Frame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) print self.conn.frames assert len(self.conn.frames) == 1 assert self.conn.frames[0] == f def test_unsubscribe(self): """ Test unsubscribing a connection from the queue. """ dest = '/topic/dest' self.tm.subscribe(self.conn, dest) f = Frame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) print self.conn.frames assert len(self.conn.frames) == 1 assert self.conn.frames[0] == f self.tm.unsubscribe(self.conn, dest) f = Frame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) assert len(self.conn.frames) == 1 def send_simple(self): """ Test a basic send command. """ dest = '/topic/dest' f = Frame('SEND', headers={'destination': dest}, body='Empty') self.tm.send(f) # Assert some side-effects assert 'message-id' in f.headers assert f.command == 'MESSAGE' def send_subscriber_timeout(self): """ Test a send command when one subscriber errs out. """ class TimeoutConnection(object): reliable_subscriber = False def send_frame(self, frame): raise socket.timeout("timed out") def reset(self): pass dest = '/topic/dest' bad_client = TimeoutConnection() # Subscribe both a good client and a bad client. self.tm.subscribe(bad_client, dest) self.tm.subscribe(self.conn, dest) f = Frame('MESSAGE', headers={'destination': dest}, body='Empty') self.tm.send(f) # Make sure out good client got the message. assert len(self.conn.frames) == 1 assert self.conn.frames[0] == f # Make sure our bad client got disconnected # (This might be a bit too intimate.) assert bad_client not in self.tm._topics[dest]