You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2016/12/12 17:25:30 UTC

qpid-jms git commit: QPIDJMS-234: set supported outcomes on transaction coordinator links, add test to validate

Repository: qpid-jms
Updated Branches:
  refs/heads/master 22bbb5da4 -> cc2ed51e1


QPIDJMS-234: set supported outcomes on transaction coordinator links, add test to validate


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/cc2ed51e
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/cc2ed51e
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/cc2ed51e

Branch: refs/heads/master
Commit: cc2ed51e17425452539a32656867fee7a7a78944
Parents: 22bbb5d
Author: Robert Gemmell <ro...@apache.org>
Authored: Mon Dec 12 17:24:55 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Mon Dec 12 17:24:55 2016 +0000

----------------------------------------------------------------------
 .../AmqpTransactionCoordinatorBuilder.java      |  9 ++++++
 .../TransactionsIntegrationTest.java            | 31 ++++++++++++++++++++
 .../qpid/jms/test/testpeer/TestAmqpPeer.java    | 11 ++++++-
 3 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/cc2ed51e/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/builders/AmqpTransactionCoordinatorBuilder.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/builders/AmqpTransactionCoordinatorBuilder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/builders/AmqpTransactionCoordinatorBuilder.java
index 47e8b4b..5e1fae7 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/builders/AmqpTransactionCoordinatorBuilder.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/builders/AmqpTransactionCoordinatorBuilder.java
@@ -19,6 +19,11 @@ package org.apache.qpid.jms.provider.amqp.builders;
 import org.apache.qpid.jms.meta.JmsSessionInfo;
 import org.apache.qpid.jms.provider.amqp.AmqpTransactionContext;
 import org.apache.qpid.jms.provider.amqp.AmqpTransactionCoordinator;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.messaging.Accepted;
+import org.apache.qpid.proton.amqp.messaging.Modified;
+import org.apache.qpid.proton.amqp.messaging.Rejected;
+import org.apache.qpid.proton.amqp.messaging.Released;
 import org.apache.qpid.proton.amqp.messaging.Source;
 import org.apache.qpid.proton.amqp.transaction.Coordinator;
 import org.apache.qpid.proton.amqp.transaction.TxnCapability;
@@ -39,7 +44,11 @@ public class AmqpTransactionCoordinatorBuilder extends AmqpResourceBuilder<AmqpT
     protected Sender createEndpoint(JmsSessionInfo resourceInfo) {
         Coordinator coordinator = new Coordinator();
         coordinator.setCapabilities(TxnCapability.LOCAL_TXN);
+
+        Symbol[] outcomes = new Symbol[]{ Accepted.DESCRIPTOR_SYMBOL, Rejected.DESCRIPTOR_SYMBOL, Released.DESCRIPTOR_SYMBOL, Modified.DESCRIPTOR_SYMBOL };
+
         Source source = new Source();
+        source.setOutcomes(outcomes);
 
         String coordinatorName = "qpid-jms:coordinator:" + resourceInfo.getId().toString();
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/cc2ed51e/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TransactionsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TransactionsIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TransactionsIntegrationTest.java
index 1da46f5..6ae09d5 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TransactionsIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TransactionsIntegrationTest.java
@@ -925,6 +925,37 @@ public class TransactionsIntegrationTest extends QpidJmsTestCase {
     }
 
     @Test(timeout=20000)
+    public void testCoordinatorLinkSupportedOutcomes() throws Exception {
+        try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+            Connection connection = testFixture.establishConnecton(testPeer);
+            connection.start();
+
+            // Expect session, then coordinator link
+            testPeer.expectBegin();
+
+            SourceMatcher sourceMatcher = new SourceMatcher();
+            sourceMatcher.withOutcomes(arrayContaining(Accepted.DESCRIPTOR_SYMBOL, Rejected.DESCRIPTOR_SYMBOL, Released.DESCRIPTOR_SYMBOL, Modified.DESCRIPTOR_SYMBOL));
+
+            testPeer.expectCoordinatorAttach(sourceMatcher);
+
+            // First expect an unsettled 'declare' transfer to the txn coordinator, and
+            // reply with a declared disposition state containing the txnId.
+            Binary txnId = new Binary(new byte[]{ (byte) 5, (byte) 6, (byte) 7, (byte) 8});
+            testPeer.expectDeclare(txnId);
+
+            connection.createSession(true, Session.SESSION_TRANSACTED);
+
+            //Expect rollback on close
+            testPeer.expectDischarge(txnId, true);
+
+            testPeer.expectClose();
+            connection.close();
+
+            testPeer.waitForAllHandlersToComplete(1000);
+        }
+    }
+
+    @Test(timeout=20000)
     public void testRollbackErrorCoordinatorClosedOnCommit() throws Exception {
         try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
             Connection connection = testFixture.establishConnecton(testPeer);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/cc2ed51e/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
index b8e065f..0a814d9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
@@ -1044,6 +1044,11 @@ public class TestAmqpPeer implements AutoCloseable
         expectCoordinatorAttach(false, false, null, null);
     }
 
+    public void expectCoordinatorAttach(SourceMatcher sourceMatcher)
+    {
+        expectCoordinatorAttach(sourceMatcher, false, false, null, null);
+    }
+
     public void expectCoordinatorAttach(boolean refuseLink, boolean deferAttachResponseWrite)
     {
         expectCoordinatorAttach(refuseLink, deferAttachResponseWrite, null, null);
@@ -1051,7 +1056,11 @@ public class TestAmqpPeer implements AutoCloseable
 
     public void expectCoordinatorAttach(final boolean refuseLink, boolean deferAttachResponseWrite, Symbol errorType, String errorMessage)
     {
-        expectSenderAttach(notNullValue(), new CoordinatorMatcher(), refuseLink, false, deferAttachResponseWrite, 0, errorType, errorMessage);
+        expectCoordinatorAttach(notNullValue(), refuseLink, deferAttachResponseWrite, errorType, errorMessage);
+    }
+
+    private void expectCoordinatorAttach(Matcher<Object> sourceMatcher, final boolean refuseLink, boolean deferAttachResponseWrite, Symbol errorType, String errorMessage) {
+        expectSenderAttach(sourceMatcher, new CoordinatorMatcher(), refuseLink, false, deferAttachResponseWrite, 0, errorType, errorMessage);
     }
 
     public void expectQueueBrowserAttach()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org