Exemple #1
0
def transactional_queue_resend_modify_message(queue_name, client_id, kube_add):
    queue_res = MessageQueue(queue_name, client_id, kube_add)

    message = create_queue_message("resend to new queue {}".format(0),
                                   "my resend modify".encode('UTF-8'))
    queue_res.send_queue_message(message)

    queue = MessageQueue(queue_name, client_id, kube_add)
    tran = queue.create_transaction()

    res_rec = tran.receive(3, 5)

    if res_rec.is_error:
        raise "Message dequeue error, error: %s" % res_rec.is_error

    print("Received message id: {}, body: {} tags:{}".format(
        res_rec.message.MessageID, res_rec.message.Body, res_rec.message.Tags))

    mod_msg = res_rec.message
    mod_msg.Channel = "receiverB"

    mod_msg.Metadata = "new Metadata"

    res_mod = tran.modify(mod_msg)

    if res_mod.is_error:
        raise "Message modify error, error: %s" % res_mod.is_error

    print("Done")
    def test_modify_new_message_pass(self):
        client_id = "message_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("send_modify_new_message_pass", client_id,
                             kube_add)

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive(10)
        self.assertFalse(recm.is_error)
        modMsg = create_queue_message("hi there", "well hello".encode('UTF-8'))
        modMsg.queue = queue.queue_name

        resMod = tr.modify(modMsg)
        self.assertFalse(resMod.is_error)
        tr.close_stream()
        time.sleep(0.01)

        recm2 = tr.receive(3, 5)
        self.assertEqual("well hello", recm2.message.Body.decode("utf-8"))
        tr.close_stream()
    def test_delayed_transaction_message_pass(self):
        queue_name = "transaction_message_pass"
        client_id = "transaction_message_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue(queue_name, client_id, kube_add)
        mm = []

        queuePolicy = QueueMessagePolicy(DelaySeconds=3)
        message = create_queue_message("queueName {}".format(0),
                                       "first test Ack".encode('UTF-8'),
                                       queuePolicy)
        mm.append(message)

        queuePolicy2 = QueueMessagePolicy(DelaySeconds=5)
        message2 = create_queue_message("queueName {}".format(1),
                                        "first test Ack".encode('UTF-8'),
                                        queuePolicy2)
        mm.append(message2)
        queue.send_queue_messages_batch(mm)

        tr = queue.create_transaction()
        recm = tr.receive()
        self.assertEqual(
            recm.error,
            "Error 138: no new message in queue, wait time expired")
        tr.close_stream()
        time.sleep(0.1)

        recm = tr.receive(2, 3)
        self.assertFalse(recm.is_error)
        tr.close_stream()
        time.sleep(0.01)

        recm = tr.receive(2, 5)
        self.assertFalse(recm.is_error)
Exemple #4
0
def transactional_queue_resend_to_new_queue(queue_name, client_id, kube_add):
    queue_rej = MessageQueue(queue_name, client_id, kube_add)

    message = create_queue_message("resend to new queue {}".format(0),
                                   "my resend".encode('UTF-8'))
    queue_rej.send_queue_message(message)

    queue = MessageQueue(queue_name, client_id, kube_add)
    tran = queue.create_transaction()

    res_rec = tran.receive(5, 10)

    if res_rec.is_error:
        raise "Message dequeue error, error: %s" % res_rec.is_error

    print("Received message id: {}, body: {} tags:{}".format(
        res_rec.message.MessageID, res_rec.message.Body, res_rec.message.Tags))

    print("resend to new queue")

    res_resend = tran.resend("new-queue")

    if res_resend.is_error:
        raise "Message resend error, error: %s" % res_resend.is_error

    print("Done")
Exemple #5
0
    def test_get_message_pass_with_auth(self):
        client_id = "message_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("Get_Messages{}".format(randomString(10)),
                             client_id,
                             kube_add,
                             encryptionHeader=jwt.encode({},
                                                         algorithm="HS256",
                                                         key="some-key"))
        mm = []

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))
        mm.append(message)

        message2 = create_queue_message("sec test Ack",
                                        "hi again".encode('UTF-8'))
        mm.append(message2)
        queue.send_queue_messages_batch(mm)

        tr = queue.create_transaction()
        recm = tr.receive(3)
        self.assertFalse(recm.error)
        self.assertFalse(
            tr.ack_message(recm.message.Attributes.Sequence).is_error)
        self.assertEqual(1, len(queue.peek_queue_message().messages))
        self.assertFalse(tr.receive().is_error)
        tr.close_stream()
Exemple #6
0
    def test_modify_after_ack_fail_with_auth(self):
        client_id = "ack_fail"
        kube_add = "localhost:50000"
        queue = MessageQueue("test_modify_after_ack_fail",
                             client_id,
                             kube_add,
                             encryptionHeader=jwt.encode({},
                                                         algorithm="HS256",
                                                         key="some-key"))
        mm = []

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))
        mm.append(message)

        message2 = create_queue_message("sec test Ack",
                                        "hi again".encode('UTF-8'))
        mm.append(message2)
        queue.send_queue_messages_batch(mm)

        tr = queue.create_transaction()
        recm = tr.receive(5)

        tr.ack_message(recm.message.Attributes.Sequence)
        time.sleep(0.1)
        recMod = tr.extend_visibility(5)
        self.assertTrue(recMod.is_error)
    def test_send_receive_tran_ack_pass(self):
        client_id = "tran_ack_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("SendReciveTranAck_Pass", client_id, kube_add)

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive(5)
        self.assertFalse(
            tr.ack_message(recm.message.Attributes.Sequence).is_error)
    def test_send_receive_tran_visability_expired_pass(self):
        client_id = "expired_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("send_receive_tran_visability_expired_pass",
                             client_id, kube_add)

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive()
        tr.extend_visibility(5)
        time.sleep(4)
        ackms = tr.ack_message(recm.message.Attributes.Sequence)
        self.assertEqual(ackms.is_error, False)
    def test_send_receive_tran_visability_expired_fail(self):
        client_id = "expired_fail"
        kube_add = "localhost:50000"
        queue = MessageQueue("send_receive_tran_visability_expired_fail",
                             client_id, kube_add)

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive(4)
        time.sleep(5)
        ackms = tr.ack_message(recm.message.Attributes.Sequence)
        self.assertEqual(ackms.error,
                         "Error 129: current visibility timer expired")
Exemple #10
0
def transactional_queue_reject(queue_name, client_id, kube_add):
    queue = MessageQueue(queue_name, client_id, kube_add)
    transaction = queue.create_transaction()
    res_rec = transaction.receive(10, 10)

    if res_rec.is_error:
        raise "Message dequeue error, error: %s" % res_rec.is_error

    print("Received message id: {}, body: {} tags:{}".format(
        res_rec.message.MessageID, res_rec.message.Body, res_rec.message.Tags))

    res_rej = transaction.rejected_message(res_rec.message.Attributes.Sequence)
    if res_rej.is_error:
        raise Exception("Ack message error: %s" % res_rej.error)

    print("rejected message message of type: %s" %
          StreamRequestType(res_rej.stream_request_type).name)
    def test_send_receive_tran_ack_fail(self):
        client_id = "tran_ack_fail"
        kube_add = "localhost:50000"
        queue = MessageQueue("SendReciveTranAck_Fail", client_id, kube_add)

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive(5)
        ackms = tr.ack_message(recm.message.Attributes.Sequence)
        time.sleep(0.1)
        recm2 = tr.receive(5)
        self.assertFalse(ackms.is_error)
        self.assertTrue(recm2.is_error)
        tr.close_stream()
Exemple #12
0
    def test_send_receive_tran_ack_pass_with_auth(self):
        client_id = "tran_ack_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("SendReceiveTranAck_Pass",
                             client_id,
                             kube_add,
                             encryptionHeader=jwt.encode({},
                                                         algorithm="HS256",
                                                         key="some-key"))

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive(5)
        self.assertFalse(
            tr.ack_message(recm.message.Attributes.Sequence).is_error)
Exemple #13
0
def transactional_queue_extand_visibility(queue_name, client_id, kube_add):
    queue_rej = MessageQueue("reject_test", client_id, kube_add)

    message = create_queue_message("queueName {}".format(0),
                                   "my reject".encode('UTF-8'))
    queue_rej.send_queue_message(message)

    queue = MessageQueue("reject_test", client_id, kube_add)
    tran = queue.create_transaction()

    res_rec = tran.receive(5, 10)

    if res_rec.is_error:
        raise "Message dequeue error, error: %s" % res_rec.is_error

    print("Received message id: {}, body: {} tags: {}".format(
        res_rec.message.MessageID, res_rec.message.Body, res_rec.message.Tags))

    print("work for 1 second")

    time.sleep(1)

    print("Need more time to process, extend visibility for more 3 seconds")

    res_ext = tran.extend_visibility(3)

    if res_ext.is_error:
        raise Exception("Ack message error: %s" % res_ext.error)

    print("Approved. work for 2.5 seconds")

    time.sleep(2.5)

    print("Work done... ack the message")

    res_ack = tran.ack_message(res_rec.message.Attributes.Sequence)

    if res_ack.is_error:
        raise Exception("Ack message error: %s" % res_ack.error)

    print("ack done")
Exemple #14
0
    def test_send_receive_tran_visibility_expired_pass_with_auth(self):
        client_id = "expired_pass"
        kube_add = "localhost:50000"
        queue = MessageQueue("send_receive_tran_visibility_expired_pass",
                             client_id,
                             kube_add,
                             encryptionHeader=jwt.encode({},
                                                         algorithm="HS256",
                                                         key="some-key"))

        message = create_queue_message("first test Ack",
                                       "hi there".encode('UTF-8'))

        queue.send_queue_message(message)

        tr = queue.create_transaction()
        recm = tr.receive()
        tr.extend_visibility(5)
        time.sleep(4)
        ackms = tr.ack_message(recm.message.Attributes.Sequence)
        self.assertEqual(ackms.is_error, False)
Exemple #15
0
    ]
    message.attributes = None
    message.policy = policy
    return message


if __name__ == "__main__":
    client_id = "python-sdk-cookbook-queues-resend-sender"
    kube_add = "localhost:50000"
    queue = MessageQueue("Get_Messages{}".format(random_string(10)), client_id,
                         kube_add)
    mm = []

    message = create_queue_message("some-metadata", "hi there".encode('UTF-8'))
    mm.append(message)

    message2 = create_queue_message("some-metadata",
                                    "hi again".encode('UTF-8'))
    mm.append(message2)
    queue.send_queue_messages_batch(mm)

    tr = queue.create_transaction()
    for seq in range(3):
        stream = tr.receive(1, 5)
        print(stream.message)
        if seq == 0:
            tr.resend(queue.queue_name)
        else:
            tr.ack_message(stream.message.Attributes.Sequence)
        tr.close_stream()