Fix Joram tests
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/62a5cfd1 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/62a5cfd1 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/62a5cfd1 Branch: refs/heads/ARTEMIS-780 Commit: 62a5cfd1204f69616dcb140fe2369026379cb4d8 Parents: edc947d Author: jbertram <[email protected]> Authored: Sat Nov 19 11:03:20 2016 -0600 Committer: jbertram <[email protected]> Committed: Wed Nov 23 09:04:35 2016 -0600 ---------------------------------------------------------------------- .../impl/journal/AbstractJournalStorageManager.java | 1 + .../artemis/core/postoffice/impl/PostOfficeImpl.java | 3 +-- .../artemis/core/server/impl/ActiveMQServerImpl.java | 13 +++++++++---- .../activemq/artemis/core/server/impl/AddressInfo.java | 11 +++++++++++ .../jtests/jms/conform/session/TopicSessionTest.java | 2 ++ 5 files changed, 24 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/62a5cfd1/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java index b4247ae..ee40f4e 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java @@ -1278,6 +1278,7 @@ public abstract class AbstractJournalStorageManager implements StorageManager { try { long recordID = idGenerator.generateID(); bindingEncoding.setId(recordID); + addressInfo.setId(recordID); bindingsJournal.appendAddRecordTransactional(tx, recordID, JournalRecordIds.ADDRESS_BINDING_RECORD, bindingEncoding); } finally { readUnLock(); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/62a5cfd1/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java index 1c0c343..dc73680 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java @@ -450,8 +450,7 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding synchronized (addressLock) { Bindings bindingsForAddress = getBindingsForAddress(address); if (bindingsForAddress.getBindings().size() > 0) { - return null; -// throw new IllegalStateException("Address has bindings"); + throw ActiveMQMessageBundle.BUNDLE.addressHasBindings(address); } managementService.unregisterAddress(address); return addressManager.removeAddressInfo(address); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/62a5cfd1/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java index b865361..16dccbb 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java @@ -2271,6 +2271,11 @@ public class ActiveMQServerImpl implements ActiveMQServer { if (putAddressInfoIfAbsent(addressInfo) != null) { throw ActiveMQMessageBundle.BUNDLE.addressAlreadyExists(addressInfo.getName()); } + + // TODO: is this the right way to do this? + long txID = storageManager.generateID(); + storageManager.addAddressBinding(txID, addressInfo); + storageManager.commitBindings(txID); } @Override @@ -2292,10 +2297,9 @@ public class ActiveMQServerImpl implements ActiveMQServer { } // TODO: is this the right way to do this? - // long txID = storageManager.generateID(); - // storageManager.deleteAddressBinding(txID, getAddressInfo(address).getID()); - // storageManager.commitBindings(txID); - + long txID = storageManager.generateID(); + storageManager.deleteAddressBinding(txID, getAddressInfo(address).getId()); + storageManager.commitBindings(txID); } @Override @@ -2347,6 +2351,7 @@ public class ActiveMQServerImpl implements ActiveMQServer { final long txID = storageManager.generateID(); final long queueID = storageManager.generateID(); + final long addressID = storageManager.generateID(); final QueueConfig.Builder queueConfigBuilder; if (addressName == null) { http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/62a5cfd1/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/AddressInfo.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/AddressInfo.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/AddressInfo.java index a92e8d3..9653a4e 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/AddressInfo.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/AddressInfo.java @@ -21,6 +21,8 @@ import org.apache.activemq.artemis.api.core.SimpleString; public class AddressInfo { + private long id; + private final SimpleString name; private RoutingType routingType = RoutingType.MULTICAST; @@ -84,10 +86,19 @@ public class AddressInfo { return name; } + public void setId(long id) { + this.id = id; + } + + public long getId() { + return id; + } + @Override public String toString() { StringBuffer buff = new StringBuffer(); buff.append("Address [name=" + name); + buff.append(", id=" + id); buff.append(", routingType=" + routingType); buff.append(", defaultMaxQueueConsumers=" + defaultMaxQueueConsumers); buff.append(", defaultDeleteOnNoConsumers=" + defaultDeleteOnNoConsumers); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/62a5cfd1/tests/joram-tests/src/test/java/org/objectweb/jtests/jms/conform/session/TopicSessionTest.java ---------------------------------------------------------------------- diff --git a/tests/joram-tests/src/test/java/org/objectweb/jtests/jms/conform/session/TopicSessionTest.java b/tests/joram-tests/src/test/java/org/objectweb/jtests/jms/conform/session/TopicSessionTest.java index 7ad6c76..6eab31d 100644 --- a/tests/joram-tests/src/test/java/org/objectweb/jtests/jms/conform/session/TopicSessionTest.java +++ b/tests/joram-tests/src/test/java/org/objectweb/jtests/jms/conform/session/TopicSessionTest.java @@ -115,6 +115,8 @@ public class TopicSessionTest extends PubSubTestCase { TextMessage m = (TextMessage) subscriber.receive(TestConfig.TIMEOUT); Assert.assertTrue(m != null); Assert.assertEquals("test", m.getText()); + subscriber.close(); + subscriberSession.unsubscribe("testTopic"); } catch (JMSException e) { fail(e); }
