From ddede6cbb43dd2d9bb13abfdc37df2985e383e32 Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Mon, 27 Nov 2023 18:19:50 +0530 Subject: [PATCH 1/7] Update default get-message wait option --- ballerina/types.bal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ballerina/types.bal b/ballerina/types.bal index bc7e743..9c84415 100644 --- a/ballerina/types.bal +++ b/ballerina/types.bal @@ -84,7 +84,7 @@ public type CertKey record {| # + waitInterval - The maximum time (in seconds) that a `get` call waits for a suitable message to # arrive. It is used in conjunction with `ibmmq.MQGMO_WAIT`. public type GetMessageOptions record {| - int options = MQGMO_NO_WAIT; + int options = MQGMO_WAIT; int waitInterval = 10; |}; From 3545976e7b1e75514c7d48e806a795b44a13f3ab Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Sun, 28 Jan 2024 12:43:46 +0530 Subject: [PATCH 2/7] Revert "Update default get-message wait option" This reverts commit ddede6cbb43dd2d9bb13abfdc37df2985e383e32. --- ballerina/types.bal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ballerina/types.bal b/ballerina/types.bal index 9c84415..bc7e743 100644 --- a/ballerina/types.bal +++ b/ballerina/types.bal @@ -84,7 +84,7 @@ public type CertKey record {| # + waitInterval - The maximum time (in seconds) that a `get` call waits for a suitable message to # arrive. It is used in conjunction with `ibmmq.MQGMO_WAIT`. public type GetMessageOptions record {| - int options = MQGMO_WAIT; + int options = MQGMO_NO_WAIT; int waitInterval = 10; |}; From 17442413464ce4f62b79ef91925f72df2cae7bee Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Sun, 28 Jan 2024 12:45:12 +0530 Subject: [PATCH 3/7] [Automated] Update the native jar versions --- ballerina/Ballerina.toml | 6 +++--- ballerina/Dependencies.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index f050e89..2177a8a 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -1,7 +1,7 @@ [package] org = "ballerinax" name = "ibm.ibmmq" -version = "0.1.3" +version = "0.1.4" authors = ["Ballerina"] keywords = ["ibm-mq"] repository = "https://github.com/ballerina-platform/module-ballerinax-ibm.ibmmq" @@ -12,8 +12,8 @@ distribution = "2201.8.0" [[platform.java17.dependency]] groupId = "io.ballerina.stdlib" artifactId = "ibm.ibmmq-native" -version = "0.1.3" -path = "../native/build/libs/ibm.ibmmq-native-0.1.3.jar" +version = "0.1.4" +path = "../native/build/libs/ibm.ibmmq-native-0.1.4-SNAPSHOT.jar" [[platform.java17.dependency]] groupId = "org.json" diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index 3b960de..ce515cf 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -63,7 +63,7 @@ modules = [ [[package]] org = "ballerinax" name = "ibm.ibmmq" -version = "0.1.3" +version = "0.1.4" dependencies = [ {org = "ballerina", name = "crypto"}, {org = "ballerina", name = "jballerina.java"}, From 069d0bdca89f33c35ba591aace33258fc8936b45 Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Sun, 28 Jan 2024 12:40:00 +0530 Subject: [PATCH 4/7] Fix documentation issues --- ballerina/destination.bal | 18 ++++++++++++++++++ ballerina/queue_manager.bal | 3 +++ ballerina/types.bal | 8 ++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/ballerina/destination.bal b/ballerina/destination.bal index 5f298ef..815188b 100644 --- a/ballerina/destination.bal +++ b/ballerina/destination.bal @@ -30,6 +30,9 @@ public isolated client class Queue { *Destination; # Puts a message to an IBM MQ queue. + # ```ballerina + # check queue->put({payload: "Hello World".toBytes()}); + # ``` # # + message - IBM MQ message # + return - An `ibmmq:Error` if the operation fails or else `()` @@ -39,6 +42,9 @@ public isolated client class Queue { } external; # Retrieves a message from an IBM MQ queue. + # ```ballerina + # ibmmq:Message? message = check queue->get(); + # ``` # # + getMessageOptions - Options to control message retrieval # + return - An `ibmmq:Message` if there is a message in the queue, `()` if there @@ -49,6 +55,9 @@ public isolated client class Queue { } external; # Closes the IBM MQ queue object. No further operations on this object are permitted after it is closed. + # ```ballerina + # check queue->close(); + # ``` # # + return - An `ibmmq:Error` if the operation fails or else `()` isolated remote function close() returns Error? = @@ -62,6 +71,9 @@ public isolated client class Topic { *Destination; # Puts a message to an IBM MQ topic. + #```ballerina + # check topic->put({payload: "Hello World".toBytes()}); + #``` # # + message - IBM MQ message # + return - An `ibmmq:Error` if the operation fails or else `()` @@ -71,6 +83,9 @@ public isolated client class Topic { } external; # Retrieves a message from an IBM MQ topic. + #```ballerina + # ibmmq:Message? message = check topic->get(); + #``` # # + getMessageOptions - Options to control message retrieval # + return - An `ibmmq:Message` if there is a message in the topic, `()` if there @@ -81,6 +96,9 @@ public isolated client class Topic { } external; # Closes the IBM MQ topic object. No further operations on this object are permitted after it is closed. + # ```ballerina + # check topic->close(); + # ``` # # + return - An `ibmmq:Error` if the operation fails or else `()` isolated remote function close() returns Error? = diff --git a/ballerina/queue_manager.bal b/ballerina/queue_manager.bal index a6acb7b..4a27853 100644 --- a/ballerina/queue_manager.bal +++ b/ballerina/queue_manager.bal @@ -66,6 +66,9 @@ public isolated class QueueManager { 'class: "io.ballerina.lib.ibm.ibmmq.QueueManager" } external; + # Ends the connection to the IBM MQ queue manager. + # + # + return - An `ibmmq:Error` if the operation failed public isolated function disconnect() returns Error? = @java:Method { 'class: "io.ballerina.lib.ibm.ibmmq.QueueManager" diff --git a/ballerina/types.bal b/ballerina/types.bal index bc7e743..2e2fb10 100644 --- a/ballerina/types.bal +++ b/ballerina/types.bal @@ -194,8 +194,8 @@ public type MQRFH record {| # Header record representing the MQCIH structure. # # + flags - Flag of the header -# + encoding - field description -# + codedCharSetId - field description +# + encoding - Numeric encoding of data that follows NameValueData +# + codedCharSetId - Character set identifier of data that follows NameValueString # + format - MQ format name of data that follows MQCIH # + strucId - Structure identifier # + strucLength - Length of the structure @@ -211,7 +211,7 @@ public type MQRFH record {| # + conversationalTask - Whether task can be conversational # + taskEndStatus - Status at end of task # + facility - Bridge facility token -# + 'function - field description +# + 'function - MQ call name or CICS EIBFN function # + abendCode - Abend code # + authenticator - Password or passticket # + replyToFormat - MQ format name of reply message @@ -271,7 +271,7 @@ public type MQCIH record {| # + mfsMapName - The message format services map name, placed in the IO PCB field # + replyToFormat - This is the MQ format name of the reply message that is sent # in response to the current message -# + authenticator - The RACF® password or PassTicket +# + authenticator - RACF password or passticket # + tranInstanceId - This is the transaction instance identifier # + tranState - This indicates the IMS conversation state # + commitMode - IMS commit mode From 55871468cf7faefdc53b0d10af4fde6d21217d66 Mon Sep 17 00:00:00 2001 From: Ayesh Almeida <77491511+ayeshLK@users.noreply.github.com> Date: Mon, 29 Jan 2024 09:40:46 +0530 Subject: [PATCH 5/7] Update ballerina/queue_manager.bal Co-authored-by: Nipuna Ransinghe --- ballerina/queue_manager.bal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ballerina/queue_manager.bal b/ballerina/queue_manager.bal index 4a27853..f857177 100644 --- a/ballerina/queue_manager.bal +++ b/ballerina/queue_manager.bal @@ -68,7 +68,7 @@ public isolated class QueueManager { # Ends the connection to the IBM MQ queue manager. # - # + return - An `ibmmq:Error` if the operation failed + # + return - An `ibmmq:Error` if the operation fails or else `()` public isolated function disconnect() returns Error? = @java:Method { 'class: "io.ballerina.lib.ibm.ibmmq.QueueManager" From 3430a8c7d3dc0a409799896c22d4687b313f24dd Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Mon, 29 Jan 2024 11:39:22 +0530 Subject: [PATCH 6/7] Update default auth-config for the docker test containers --- ballerina/tests/resources/docker-compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ballerina/tests/resources/docker-compose.yaml b/ballerina/tests/resources/docker-compose.yaml index d3e33b1..8e33f1c 100644 --- a/ballerina/tests/resources/docker-compose.yaml +++ b/ballerina/tests/resources/docker-compose.yaml @@ -12,6 +12,7 @@ services: environment: - LICENSE=accept - MQ_QMGR_NAME=QM1 + - MQ_APP_PASSWORD=password healthcheck: test: ["CMD-SHELL", "chkmqstarted"] interval: 10s @@ -26,6 +27,7 @@ services: environment: - LICENSE=accept - MQ_QMGR_NAME=QM2 + - MQ_APP_PASSWORD=password volumes: - ./secrets/server.crt:/etc/mqm/pki/keys/mykey/server.crt - ./secrets/server.key:/etc/mqm/pki/keys/mykey/server.key From 2e3ed247faedd123bc447087eec6e8d9a7d73bca Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Mon, 29 Jan 2024 11:39:34 +0530 Subject: [PATCH 7/7] Update test cases with authentication --- .../tests/queue_producer_consumer_tests.bal | 52 +++++++++++---- ballerina/tests/secure_socket_tests.bal | 8 +++ .../topic_publisher_subscriber_tests.bal | 64 ++++++++++++++----- 3 files changed, 95 insertions(+), 29 deletions(-) diff --git a/ballerina/tests/queue_producer_consumer_tests.bal b/ballerina/tests/queue_producer_consumer_tests.bal index d228df0..1a15fd4 100644 --- a/ballerina/tests/queue_producer_consumer_tests.bal +++ b/ballerina/tests/queue_producer_consumer_tests.bal @@ -21,7 +21,9 @@ import ballerina/time; groups: ["ibmmqQueue"] } function basicQueueProducerConsumerTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); check producer->put({ @@ -42,7 +44,9 @@ function basicQueueProducerConsumerTest() returns error? { groups: ["ibmmqQueue"] } function basicQueueProducerConsumerWithOneQueueObjectTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue queue = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT | MQOO_INPUT_AS_Q_DEF); check queue->put({ payload: "Hello World with one queue".toBytes() @@ -61,7 +65,9 @@ function basicQueueProducerConsumerWithOneQueueObjectTest() returns error? { groups: ["ibmmqQueue"] } function basicQueueProducerConsumerWithJsonPayloadTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); json messageBody = { @@ -116,7 +122,9 @@ function basicQueueProducerConsumerWithJsonPayloadTest() returns error? { groups: ["ibmmqQueue"] } function pubSubMultipleMessagesQueueProducerConsumerTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); foreach int i in 0 ... 4 { @@ -141,7 +149,9 @@ function pubSubMultipleMessagesQueueProducerConsumerTest() returns error? { groups: ["ibmmqQueue"] } function consumerWithoutProducingMessageTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); Message|Error? result = consumer->get(options = MQGMO_WAIT, waitInterval = 5); test:assertTrue(result is ()); @@ -153,7 +163,9 @@ function consumerWithoutProducingMessageTest() returns error? { groups: ["ibmmqQueue"] } function produceToNonExistingQueueTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue|Error result = queueManager.accessQueue("NON.EXISTING.QUEUE", MQOO_OUTPUT); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing queue: MQJE001: Completion Code '2', Reason '2085'."); @@ -169,7 +181,9 @@ function produceToNonExistingQueueTest() returns error? { groups: ["ibmmqQueue"] } function consumerConnectToNonExistingQueueTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue|Error result = queueManager.accessQueue("NON.EXISTING.QUEUE", MQOO_INPUT_AS_Q_DEF); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing queue: MQJE001: Completion Code '2', Reason '2085'."); @@ -185,7 +199,9 @@ function consumerConnectToNonExistingQueueTest() returns error? { groups: ["ibmmqQueue"] } function produceWithInvalidQueueNameTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue|Error result = queueManager.accessQueue("INVALID QUEUE", MQOO_INPUT_AS_Q_DEF); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing queue: MQJE001: Completion Code '2', Reason '2085'."); @@ -201,7 +217,9 @@ function produceWithInvalidQueueNameTest() returns error? { groups: ["ibmmqQueue"] } function consumeFromAnInvalidQueueNameTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue|Error result = queueManager.accessQueue("INVALID QUEUE", MQOO_INPUT_AS_Q_DEF); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing queue: MQJE001: Completion Code '2', Reason '2085'."); @@ -217,7 +235,9 @@ function consumeFromAnInvalidQueueNameTest() returns error? { groups: ["ibmmqQueue"] } function produceAndConsumerMessageWithAdditionalPropertiesTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); time:Utc timeNow = time:utcNow(); @@ -257,7 +277,9 @@ function produceAndConsumerMessageWithAdditionalPropertiesTest() returns error? groups: ["ibmmqQueue"] } function produceAndConsumerMessageWithAdditionalPropertiesWithJsonPayloadTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); time:Utc timeNow = time:utcNow(); @@ -332,7 +354,9 @@ function produceAndConsumerMessageWithAdditionalPropertiesWithJsonPayloadTest() groups: ["ibmmqQueue"] } function produceAndConsumerMessageWithMultipleHeaderTypesTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); check producer->put({ @@ -397,7 +421,9 @@ function produceAndConsumerMessageWithMultipleHeaderTypesTest() returns error? { groups: ["ibmmqQueue"] } function produceAndConsumerMessageWithMultipleHeaderTypesWithJsonPayloadTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Queue producer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_OUTPUT); Queue consumer = check queueManager.accessQueue("DEV.QUEUE.1", MQOO_INPUT_AS_Q_DEF); json messageBody = { diff --git a/ballerina/tests/secure_socket_tests.bal b/ballerina/tests/secure_socket_tests.bal index 466e1df..9531b2c 100644 --- a/ballerina/tests/secure_socket_tests.bal +++ b/ballerina/tests/secure_socket_tests.bal @@ -25,6 +25,8 @@ function basicPublisherSubscriberSecureSocketTest() returns error? { host = "localhost", port = 1415, channel = "DEV.APP.SVRCONN", + userID = "app", + password = "password", sslCipherSuite = TLS12ORHIGHER, secureSocket = { cert: "./tests/resources/secrets/server.crt", @@ -59,6 +61,8 @@ function basicQueueProducerConsumerSecureSocketTest() returns error? { host = "localhost", port = 1415, channel = "DEV.APP.SVRCONN", + userID = "app", + password = "password", sslCipherSuite = TLS12ORHIGHER, secureSocket = { cert: "./tests/resources/secrets/server.crt", @@ -93,6 +97,8 @@ function basicPublisherSubscriberSecureSocketJksTest() returns error? { host = "localhost", port = 1415, channel = "DEV.APP.SVRCONN", + userID = "app", + password = "password", sslCipherSuite = TLS12ORHIGHER, secureSocket = { cert: { @@ -130,6 +136,8 @@ function basicQueueProducerConsumerSecureSocketJksTest() returns error? { host = "localhost", port = 1415, channel = "DEV.APP.SVRCONN", + userID = "app", + password = "password", sslCipherSuite = TLS12ORHIGHER, secureSocket = { cert: { diff --git a/ballerina/tests/topic_publisher_subscriber_tests.bal b/ballerina/tests/topic_publisher_subscriber_tests.bal index 74966de..6844bc8 100644 --- a/ballerina/tests/topic_publisher_subscriber_tests.bal +++ b/ballerina/tests/topic_publisher_subscriber_tests.bal @@ -20,7 +20,9 @@ import ballerina/test; groups: ["ibmmqTopic"] } function basicPublisherSubscriberTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -41,7 +43,9 @@ function basicPublisherSubscriberTest() returns error? { groups: ["ibmmqTopic"] } function pubSubMultipleMessagesInOrderTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); foreach int i in 0 ... 4 { @@ -66,7 +70,9 @@ function pubSubMultipleMessagesInOrderTest() returns error? { groups: ["ibmmqTopic"] } function subscribeWithFiniteTimeoutTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -87,7 +93,9 @@ function subscribeWithFiniteTimeoutTest() returns error? { groups: ["ibmmqTopic"] } function subscribeWithoutPublishTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Message|Error? result = subscriber->get(waitInterval = 5); test:assertTrue(result is ()); @@ -99,7 +107,9 @@ function subscribeWithoutPublishTest() returns error? { groups: ["ibmmqTopic"] } function publishToNonExistingTopicTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic|Error result = queueManager.accessTopic("dev", "NON.EXISTING.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing topic: MQJE001: Completion Code '2', Reason '2085'."); @@ -115,7 +125,9 @@ function publishToNonExistingTopicTest() returns error? { groups: ["ibmmqTopic"] } function subscribeToNonExistingTopicTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic|Error result = queueManager.accessTopic("dev", "NON.EXISTING.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing topic: MQJE001: Completion Code '2', Reason '2085'."); @@ -131,7 +143,9 @@ function subscribeToNonExistingTopicTest() returns error? { groups: ["ibmmqTopic"] } function subscribeWithInvalidTopicNameTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic|Error result = queueManager.accessTopic("dev", "INVALID TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing topic: MQJE001: Completion Code '2', Reason '2152'."); @@ -147,7 +161,9 @@ function subscribeWithInvalidTopicNameTest() returns error? { groups: ["ibmmqTopic"] } function publishWithInvalidTopicNameTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic|Error result = queueManager.accessTopic("dev", "INVALID TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); if result is Error { test:assertEquals(result.message(), "Error occurred while accessing topic: MQJE001: Completion Code '2', Reason '2085'."); @@ -163,7 +179,9 @@ function publishWithInvalidTopicNameTest() returns error? { groups: ["ibmmqTopic"] } function accessTopicAfterQMDisconnectTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); check queueManager.disconnect(); Topic|Error result = queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); if result is Error { @@ -180,7 +198,9 @@ function accessTopicAfterQMDisconnectTest() returns error? { groups: ["ibmmqTopic"] } function putToTopicAfterTopicCloseTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->close(); Error? result = publisher->put({ @@ -201,7 +221,9 @@ function putToTopicAfterTopicCloseTest() returns error? { groups: ["ibmmqTopic"] } function putToTopicAfterQMDisconnectTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check queueManager.disconnect(); Error? result = publisher->put({ @@ -222,7 +244,9 @@ function putToTopicAfterQMDisconnectTest() returns error? { groups: ["ibmmqTopic"] } function publishSubscribeWithMQRFH2HeadersTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -299,7 +323,9 @@ function publishSubscribeWithMQRFH2HeadersTest() returns error? { groups: ["ibmmqTopic"] } function publishSubscribeWithMQRFHHeadersTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -336,7 +362,9 @@ function publishSubscribeWithMQRFHHeadersTest() returns error? { groups: ["ibmmqTopic"] } function publishSubscribeWithMQCIHHeadersTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -426,7 +454,9 @@ function publishSubscribeWithMQCIHHeadersTest() returns error? { groups: ["ibmmqTopic"] } function publishSubscribeWithMQIIHHeadersTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({ @@ -484,7 +514,9 @@ function publishSubscribeWithMQIIHHeadersTest() returns error? { groups: ["ibmmqTopic"] } function publishSubscribeWithMultipleHeaderTypesTest() returns error? { - QueueManager queueManager = check new (name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN"); + QueueManager queueManager = check new ( + name = "QM1", host = "localhost", channel = "DEV.APP.SVRCONN", + userID = "app", password = "password"); Topic subscriber = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_SUBSCRIPTION, MQSO_CREATE); Topic publisher = check queueManager.accessTopic("dev", "DEV.BASE.TOPIC", OPEN_AS_PUBLICATION, MQOO_OUTPUT); check publisher->put({