Пример #1
0
    def test11(self):
        conn = stomp.Connection(get_default_host())
        tl = TestListener('123')
        conn.set_listener('', tl)
        conn.start()
        conn.connect(get_default_user(), get_default_password(), wait=True)
        conn.subscribe(destination='/queue/test', ack='auto', id=1)

        conn.send(body='this is a test', destination='/queue/test', receipt='123')

        tl.wait_for_message()

        self.assertTrue(tl.connections == 1, 'should have received 1 connection acknowledgement')
        self.assertTrue(tl.messages >= 1, 'should have received at least 1 message')
        self.assertTrue(tl.errors == 0, 'should not have received any errors')

        conn.unsubscribe(destination='/queue/test', id=1)

        wl = WaitingListener('DISCONNECT1')
        conn.set_listener('waiting', wl)

        # stomp1.1 disconnect with receipt
        conn.disconnect(receipt='DISCONNECT1')

        # wait for the receipt
        wl.wait_on_receipt()
Пример #2
0
    def testheartbeat(self):
        conn = stomp.Connection(get_default_host(), heartbeats=(2000, 3000))
        listener = TestListener('123')
        conn.set_listener('', listener)
        conn.connect(get_default_user(), get_default_password(), wait=True)
        self.assertTrue(conn.heartbeats[0] > 0)
        conn.subscribe(destination='/queue/test', ack='auto', id=1)

        conn.send(body='this is a test',
                  destination='/queue/test',
                  receipt='123')

        listener.wait_for_message()
        conn.disconnect(receipt=None)

        self.assertTrue(
            listener.connections >= 1,
            'should have received 1 connection acknowledgement, was %s' %
            listener.connections)
        self.assertTrue(
            listener.messages >= 1,
            'should have received 1 message, was %s' % listener.messages)
        self.assertTrue(
            listener.errors == 0,
            'should not have received any errors, was %s' % listener.errors)
        self.assertTrue(
            listener.heartbeat_timeouts == 0,
            'should not have received a heartbeat timeout, was %s' %
            listener.heartbeat_timeouts)
Пример #3
0
    def send_test_message(self, conn):
        listener = TestListener("123", print_to_log=True)
        conn.set_listener("testlistener", listener)
        conn.connect(get_default_user(), get_default_password(), wait=True)

        queuename = "/queue/test1-%s" % self.timestamp
        conn.subscribe(destination=queuename, id=1, ack="auto")
        conn.send(body="this is a test", destination=queuename, receipt="123")
        listener.wait_for_message()
Пример #4
0
    def testbasic(self):
        conn = stomp.Connection11(get_default_host())
        listener = TestListener('123')
        conn.set_listener('', listener)
        conn.connect(get_default_user(), get_default_password(), wait=True)
        conn.subscribe(destination='/queue/test', id=1, ack='auto')

        conn.send(body='this is a test', destination='/queue/test', receipt='123')

        listener.wait_on_receipt()
        listener.wait_for_message()

        conn.disconnect(receipt=None)

        self.assertTrue(listener.connections == 1, 'should have received 1 connection acknowledgement')
        self.assertTrue(listener.messages == 1, 'should have received 1 message')
        self.assertTrue(listener.errors == 0, 'should not have received any errors')
Пример #5
0
class TestContext(unittest.TestCase):
    def setUp(self):
        self.timestamp = time.strftime('%Y%m%d%H%M%S')

    def test_with_context(self):
        with stomp.Connection(get_default_host()) as conn:
            self.listener = TestListener('123')
            conn.set_listener('', self.listener)
            conn.connect(get_default_user(), get_default_password(), wait=True)

            queuename = '/queue/test1-%s' % self.timestamp
            conn.subscribe(destination=queuename, id=1, ack='auto')
            conn.send(body='this is a test', destination=queuename, receipt='123')
            self.listener.wait_for_message()

        self.assertTrue(self.listener.connections == 1, 'should have received 1 connection acknowledgement')
        self.assertTrue(self.listener.disconnects >= 1, 'should have received 1 disconnect')
Пример #6
0
    def testheartbeat(self):
        conn = stomp.Connection(get_default_host(), heartbeats=(2000, 3000))
        listener = TestListener('123')
        conn.set_listener('', listener)
        conn.start()
        conn.connect(get_default_user(), get_default_password(), wait=True)
        self.assertTrue(conn.heartbeats[0] > 0)
        conn.subscribe(destination='/queue/test', ack='auto', id=1)

        conn.send(body='this is a test', destination='/queue/test', receipt='123')

        listener.wait_for_message()
        conn.disconnect(receipt=None)

        self.assertTrue(listener.connections >= 1, 'should have received 1 connection acknowledgement, was %s' % listener.connections)
        self.assertTrue(listener.messages >= 1, 'should have received 1 message, was %s' % listener.messages)
        self.assertTrue(listener.errors == 0, 'should not have received any errors, was %s' % listener.errors)
        self.assertTrue(listener.heartbeat_timeouts == 0, 'should not have received a heartbeat timeout, was %s' % listener.heartbeat_timeouts)
Пример #7
0
class TestContext(unittest.TestCase):
    def setUp(self):
        self.timestamp = time.strftime('%Y%m%d%H%M%S')

    def send_test_message(self, conn):
        self.listener = TestListener('123', print_to_log=True)
        conn.set_listener('testlistener', self.listener)
        conn.connect(get_default_user(), get_default_password(), wait=True)

        queuename = '/queue/test1-%s' % self.timestamp
        conn.subscribe(destination=queuename, id=1, ack='auto')
        conn.send(body='this is a test', destination=queuename, receipt='123')
        self.listener.wait_for_message()

    def post_test_message(self, conn):
        conn.remove_listener('testlistener')
        pass

    def check_asserts(self):
        self.assertTrue(self.listener.connections == 1,
                        'should have received 1 connection acknowledgement')
        self.assertTrue(self.listener.disconnects >= 1,
                        'should have received 1 disconnect')

    def test_with_context_stomp11(self):
        with stomp.Connection11(get_default_host()) as conn:
            self.send_test_message(conn)
        self.check_asserts()
        self.post_test_message(conn)

    def test_with_context_stomp10(self):
        with stomp.Connection10(get_default_host()) as conn:
            self.send_test_message(conn)
        self.check_asserts()
        self.post_test_message(conn)

    def test_with_context_stomp12(self):
        with stomp.Connection12(get_default_host()) as conn:
            self.send_test_message(conn)
        self.check_asserts()
        self.post_test_message(conn)
Пример #8
0
    def testconnect(self):
        conn = stomp.Connection11(get_sni_ssl_host())
        conn.set_ssl(get_sni_ssl_host())
        listener = TestListener(self.receipt_id, print_to_log=True)
        conn.set_listener('', listener)
        conn.connect(get_default_user(), get_default_password(), wait=True)
        conn.subscribe(destination='/queue/test', id=1, ack='auto')

        print('.....sending message with receipt %s' % self.receipt_id)
        conn.send(body='this is a test',
                  destination='/queue/test',
                  receipt=self.receipt_id)

        listener.wait_for_message()
        conn.disconnect(receipt=None)

        self.assertTrue(listener.connections == 1,
                        'should have received 1 connection acknowledgement')
        self.assertTrue(listener.messages >= 1,
                        'should have received 1 message')
        self.assertTrue(listener.errors == 0,
                        'should not have received any errors')
Пример #9
0
    def testconnect(self):
        if not is_inside_travis():
            logging.info("Running ipv6 test")
            receipt_id = str(uuid.uuid4())
            conn = stomp.Connection11(get_sni_ssl_host())
            conn.set_ssl(get_sni_ssl_host())
            listener = TestListener(receipt_id, print_to_log=True)
            conn.set_listener('', listener)
            conn.connect(get_default_user(), get_default_password(), wait=True)
            conn.subscribe(destination="/queue/test", id=1, ack="auto")

            logging.info("sending message with receipt %s" % receipt_id)
            conn.send(body="this is a test",
                      destination="/queue/test",
                      receipt=receipt_id)

            listener.wait_for_message()
            conn.disconnect(receipt=None)

            assert listener.connections == 1, "should have received 1 connection acknowledgement"
            assert listener.messages >= 1, "should have received 1 message"
            assert listener.errors == 0, "should not have received any errors"
Пример #10
0
    def test_ssl_connection(self):
        listener = TestListener("123", print_to_log=True)
        try:
            import ssl
            queuename = "/queue/test4-%s" % listener.timestamp
            conn = stomp.Connection(get_default_ssl_host())
            conn.set_ssl(get_default_ssl_host())
            conn.set_listener("testlistener", listener)
            conn.connect(get_default_user(), get_default_password(), wait=True)
            conn.subscribe(destination=queuename, id=1, ack="auto")

            conn.send(body="this is a test", destination=queuename, receipt="123")

            listener.wait_on_receipt()
            listener.wait_for_message()

            conn.disconnect(receipt=None)

            assert conn.get_ssl() is not None
            assert listener.connections == 1, "should have received 1 connection acknowledgement"
            assert listener.messages == 1, "should have received 1 message"
            assert listener.errors == 0, "should not have received any errors"
        except ImportError:
            pass
Пример #11
0
    def test_parsing(self):
        def pump(n):
            # pump; test server gives us one frame per received something
            for _ in range(n):
                conn.transport.send(b'\n')
                time.sleep(0.01)

        # Trailing optional EOLs in a frame

        self.server.add_frame('''CONNECTED
version:1.1
session:1
server:test
heart-beat:1000,1000

\x00''' + '\n\n\n')
        expected_heartbeat_count = 0

        conn = stomp.Connection([('127.0.0.1', 60000)])
        listener = TestListener()
        conn.set_listener('', listener)
        conn.connect()

        time.sleep(2)

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)

        # No trailing EOLs, separate heartbeat

        message_body = 'Hello\n...world!'
        message_frame = '''MESSAGE
content-type:text/plain

%s\x00''' % message_body

        self.server.add_frame(message_frame)
        self.server.add_frame('\n')
        expected_heartbeat_count += 1

        pump(2)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # Trailing EOL, separate heartbeat, another message

        self.server.add_frame(message_frame + '\n')
        self.server.add_frame('\n')
        self.server.add_frame(message_frame + '\n')
        expected_heartbeat_count += 1

        pump(3)

        listener.wait_for_heartbeat()
        listener.wait_for_message()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # Torture tests: return content one byte at a time

        self.server.add_frame('\n')
        for c in message_frame:
            self.server.add_frame(c)
        self.server.add_frame('\n')
        expected_heartbeat_count += 2

        pump(len(message_frame) + 2)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # ...and a similar one with content-length and null bytes in body

        message_body = '%s\x00\x00%s' % (message_body, message_body)
        message_frame = '''MESSAGE
content-type:text/plain
content-length:%s

%s\x00''' % (len(message_body), message_body)

        self.server.add_frame('\n')
        self.server.add_frame('\n')
        for c in message_frame:
            self.server.add_frame(c)
        self.server.add_frame('\n')
        expected_heartbeat_count += 3

        pump(len(message_frame) + 3)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual(
            {
                "content-type": "text/plain",
                "content-length": str(len(message_body)),
            }, headers)
        self.assertEqual(message_body, body)
Пример #12
0
    def test_parsing(self):

        def pump(n):
            # pump; test server gives us one frame per received something
            for _ in range(n):
                conn.transport.send(b'\n')
                time.sleep(0.01)

        # Trailing optional EOLs in a frame

        self.server.add_frame('''CONNECTED
version:1.1
session:1
server:test
heart-beat:1000,1000

\x00''' + '\n\n\n')
        expected_heartbeat_count = 0

        conn = stomp.Connection([('127.0.0.1', 60000)])
        listener = TestListener()
        conn.set_listener('', listener)
        conn.start()
        conn.connect()

        time.sleep(2)

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)

        # No trailing EOLs, separate heartbeat

        message_body = 'Hello\n...world!'
        message_frame = '''MESSAGE
content-type:text/plain

%s\x00''' % message_body

        self.server.add_frame(message_frame)
        self.server.add_frame('\n')
        expected_heartbeat_count += 1

        pump(2)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # Trailing EOL, separate heartbeat, another message

        self.server.add_frame(message_frame + '\n')
        self.server.add_frame('\n')
        self.server.add_frame(message_frame + '\n')
        expected_heartbeat_count += 1

        pump(3)

        listener.wait_for_heartbeat()
        listener.wait_for_message()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # Torture tests: return content one byte at a time

        self.server.add_frame('\n')
        for c in message_frame:
            self.server.add_frame(c)
        self.server.add_frame('\n')
        expected_heartbeat_count += 2

        pump(len(message_frame) + 2)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({"content-type": "text/plain"}, headers)
        self.assertEqual(message_body, body)

        # ...and a similar one with content-length and null bytes in body

        message_body = '%s\x00\x00%s' % (message_body, message_body)
        message_frame = '''MESSAGE
content-type:text/plain
content-length:%s

%s\x00''' % (len(message_body), message_body)

        self.server.add_frame('\n')
        self.server.add_frame('\n')
        for c in message_frame:
            self.server.add_frame(c)
        self.server.add_frame('\n')
        expected_heartbeat_count += 3

        pump(len(message_frame) + 3)

        listener.wait_for_heartbeat()
        headers, body = listener.get_latest_message()

        self.assertEqual(expected_heartbeat_count, listener.heartbeat_count)
        self.assertEqual({
            "content-type": "text/plain",
            "content-length": str(len(message_body)),
        }, headers)
        self.assertEqual(message_body, body)