You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/05/20 17:04:12 UTC
svn commit: r1596281 - in /qpid/trunk/qpid/java:
bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/
bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/model/ ...
Author: kwall
Date: Tue May 20 15:04:11 2014
New Revision: 1596281
URL: http://svn.apache.org/r1596281
Log:
QPID-5715: [Java Broker] Make virtualhosts respect the states ACTIVE and STOPPED
* Changes in virtualhost state are now persisted to store.
* VirtualHostState eliminated. The PASSIVE state used when a BDB HA Virtualhost is in replica is replaced by UNAVAILABLE.
Work by me and Andrew MacBean <an...@gmail.com>.
Removed:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostState.java
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/State.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes
Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java Tue May 20 15:04:11 2014
@@ -44,6 +44,8 @@ import com.sleepycat.je.rep.util.Replica
import com.sleepycat.je.rep.utilint.HostPortPair;
import org.apache.log4j.Logger;
+
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
@@ -57,6 +59,7 @@ import org.apache.qpid.server.model.Stat
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory;
+import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer;
@@ -66,7 +69,6 @@ import org.apache.qpid.server.store.berk
import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory;
import org.apache.qpid.server.store.berkeleydb.replication.ReplicationGroupListener;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.virtualhost.VirtualHostState;
import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode;
@ManagedObject( category = false, type = "BDB_HA" )
@@ -702,12 +704,41 @@ public class BDBHAVirtualHostNodeImpl ex
ReplicaVirtualHost(Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode)
{
super(attributes, virtualHostNode);
- setState(VirtualHostState.PASSIVE);
}
@Override
- public void onCreate()
+ protected <C extends ConfiguredObject> C addChild(final Class<C> childClass,
+ final Map<String, Object> attributes,
+ final ConfiguredObject... otherParents)
+ {
+ throwUnsupportedForReplica();
+ return null;
+ }
+
+ @Override
+ public ExchangeImpl createExchange(final Map<String, Object> attributes)
+ {
+ throwUnsupportedForReplica();
+ return null;
+ }
+
+ @Override
+ public AMQQueue<?> createQueue(final Map<String, Object> attributes)
+ {
+ throwUnsupportedForReplica();
+ return null;
+ }
+
+ @Override
+ public State getState()
+ {
+ return State.UNAVAILABLE;
+ }
+
+ private void throwUnsupportedForReplica()
{
+ throw new IllegalStateException("The virtual host state of " + getState()
+ + " does not permit this operation.");
}
}
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java Tue May 20 15:04:11 2014
@@ -38,8 +38,6 @@ import org.apache.qpid.server.virtualhos
import org.apache.qpid.systest.rest.QpidRestTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.util.FileUtils;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.map.JsonMappingException;
public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase
{
@@ -97,7 +95,7 @@ public class BDBHAVirtualHostNodeRestTes
config.removeObjectConfiguration(VirtualHostNode.class, TEST3_VIRTUALHOST);
}
- public void testCreate3NodesCluster() throws Exception
+ public void testCreate3NodeGroup() throws Exception
{
createHANode(NODE1, _node1HaPort, _node1HaPort);
assertNode(NODE1, _node1HaPort, _node1HaPort, NODE1);
@@ -173,7 +171,7 @@ public class BDBHAVirtualHostNodeRestTes
assertEquals("Unexpected number of remote nodes on " + NODE2, 1, data.size());
}
- private void createHANode(String nodeName, int nodePort, int helperPort) throws IOException, JsonGenerationException, JsonMappingException
+ private void createHANode(String nodeName, int nodePort, int helperPort) throws Exception
{
Map<String, Object> nodeData = new HashMap<String, Object>();
nodeData.put(BDBHAVirtualHostNode.NAME, nodeName);
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java Tue May 20 15:04:11 2014
@@ -191,7 +191,7 @@ public class HAClusterManagementTest ext
catch (Exception e)
{
String message = e.getMessage();
- assertEquals("The virtual hosts state of PASSIVE does not permit this operation.", message);
+ assertEquals("The virtual host state of UNAVAILABLE does not permit this operation.", message);
}
try
@@ -202,7 +202,7 @@ public class HAClusterManagementTest ext
catch (Exception e)
{
String message = e.getMessage();
- assertEquals("The virtual hosts state of PASSIVE does not permit this operation.", message);
+ assertEquals("The virtual host state of UNAVAILABLE does not permit this operation.", message);
}
}
@@ -243,11 +243,11 @@ public class HAClusterManagementTest ext
catch (Exception e)
{
String message = e.getMessage();
- assertEquals("The virtual hosts state of PASSIVE does not permit this operation.", message);
+ assertEquals("The virtual host state of UNAVAILABLE does not permit this operation.", message);
}
Map<String, Object> attributes = _clusterCreator.getNodeAttributes(inactiveBrokerPort);
- assertEquals("Inactive broker has unexpeced role", "REPLICA", attributes.get(BDBHAVirtualHostNode.ROLE));
+ assertEquals("Inactive broker has unexpected role", "REPLICA", attributes.get(BDBHAVirtualHostNode.ROLE));
_clusterCreator.setNodeAttributes(inactiveBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.ROLE, "MASTER"));
_clusterCreator.awaitNodeToAttainRole(inactiveBrokerPort, "MASTER");
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/State.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/State.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/State.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/State.java Tue May 20 15:04:11 2014
@@ -27,7 +27,8 @@ public enum State
STOPPED,
ACTIVE,
DELETED,
- ERRORED(false);
+ ERRORED(false),
+ UNAVAILABLE;
private final boolean _valid;
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Tue May 20 15:04:11 2014
@@ -23,7 +23,6 @@ package org.apache.qpid.server.virtualho
import java.security.AccessControlException;
import java.security.PrivilegedAction;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -37,6 +36,7 @@ import java.util.concurrent.ScheduledFut
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
import javax.security.auth.Subject;
@@ -108,7 +108,7 @@ public abstract class AbstractVirtualHos
private final SystemNodeRegistry _systemNodeRegistry = new SystemNodeRegistry();
- private volatile VirtualHostState _state = VirtualHostState.INITIALISING;
+ private final AtomicReference<State> _state = new AtomicReference<>(State.UNINITIALIZED);
private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
@@ -273,18 +273,15 @@ public abstract class AbstractVirtualHos
}
}
}
- }
- private void checkVHostStateIsActive()
- {
- checkVHostState(VirtualHostState.ACTIVE);
+ addChangeListener(new StoreUpdatingChangeListener());
}
- private void checkVHostState(VirtualHostState... states)
+ private void checkVHostStateIsActive()
{
- if (!Arrays.asList(states).contains(getVirtualHostState()))
+ if (_state.get() != State.ACTIVE)
{
- throw new IllegalStateException("The virtual hosts state of " + getVirtualHostState()
+ throw new IllegalStateException("The virtual host state of " + _state.get()
+ " does not permit this operation.");
}
}
@@ -392,24 +389,7 @@ public abstract class AbstractVirtualHos
{
return State.DELETED;
}
- VirtualHostState implementationState = getVirtualHostState();
- switch(implementationState)
- {
- case INITIALISING:
- return State.UNINITIALIZED;
- case ACTIVE:
- return State.ACTIVE;
- case PASSIVE:
- // TODO
- return State.ACTIVE;
- case STOPPED:
- return State.STOPPED;
- case ERRORED:
- return State.ERRORED;
- default:
- throw new IllegalStateException("Unsupported state:" + implementationState);
- }
-
+ return _state.get();
}
@Override
@@ -709,7 +689,7 @@ public abstract class AbstractVirtualHos
//Stop Connections
_connectionRegistry.close();
_dtxRegistry.close();
- closeStorage();
+ closeMessageStore();
shutdownHouseKeeping();
_eventLogger.message(VirtualHostMessages.CLOSED(getName()));
@@ -725,7 +705,7 @@ public abstract class AbstractVirtualHos
}
}
- private void closeStorage()
+ private void closeMessageStore()
{
if (getMessageStore() != null)
{
@@ -808,11 +788,6 @@ public abstract class AbstractVirtualHos
return _dtxRegistry;
}
- public VirtualHostState getVirtualHostState()
- {
- return _state;
- }
-
public void block()
{
synchronized (_connectionRegistry)
@@ -902,14 +877,9 @@ public abstract class AbstractVirtualHos
}
}
- protected void setState(VirtualHostState state)
+ protected void reportIfError(State state)
{
- _state = state;
- }
-
- protected void reportIfError(VirtualHostState state)
- {
- if (state == VirtualHostState.ERRORED)
+ if (state == State.ERRORED)
{
_eventLogger.message(VirtualHostMessages.ERRORED(getName()));
}
@@ -1239,6 +1209,16 @@ public abstract class AbstractVirtualHos
return _housekeepingThreadCount;
}
+ @StateTransition( currentState = { State.ACTIVE, State.ERRORED, State.UNINITIALIZED }, desiredState = State.STOPPED )
+ protected void doStop()
+ {
+ closeChildren();
+ shutdownHouseKeeping();
+ closeMessageStore();
+ _state.set(State.STOPPED);
+
+ }
+
@StateTransition( currentState = { State.ACTIVE, State.QUIESCED, State.ERRORED }, desiredState = State.DELETED )
private void doDelete()
{
@@ -1250,11 +1230,7 @@ public abstract class AbstractVirtualHos
{
throw new IntegrityViolationException("Cannot delete default virtual host '" + hostName + "'");
}
- if (getVirtualHostState() == VirtualHostState.ACTIVE
- || getVirtualHostState() == VirtualHostState.INITIALISING)
- {
- close();
- }
+ close();
MessageStore ms = getMessageStore();
if (ms != null)
@@ -1268,8 +1244,6 @@ public abstract class AbstractVirtualHos
_logger.warn("Exception occurred on message store deletion", e);
}
}
- setAttribute(VirtualHost.STATE, getState(), State.DELETED);
- getDurableConfigurationStore().remove(asObjectRecord());
deleted();
}
}
@@ -1426,8 +1400,8 @@ public abstract class AbstractVirtualHos
getDurableConfigurationStore().create(new ConfiguredObjectRecordImpl(record.getId(), record.getType(), record.getAttributes()));
}
- @StateTransition( currentState = {State.UNINITIALIZED, State.ERRORED, State.QUIESCED}, desiredState = State.ACTIVE )
- protected void activate()
+ @StateTransition( currentState = {State.UNINITIALIZED, State.ERRORED, State.QUIESCED, State.STOPPED}, desiredState = State.ACTIVE )
+ private void onActivate()
{
_houseKeepingTasks = new ScheduledThreadPoolExecutor(getHousekeepingThreadCount());
@@ -1454,17 +1428,53 @@ public abstract class AbstractVirtualHos
new MessageStoreRecoverer(this, getMessageStoreLogSubject()).recover();
- VirtualHostState finalState = VirtualHostState.ERRORED;
+ State finalState = State.ERRORED;
try
{
initialiseHouseKeeping(getHousekeepingCheckPeriod());
- finalState = VirtualHostState.ACTIVE;
+ finalState = State.ACTIVE;
}
finally
{
- _state = finalState;
- reportIfError(_state);
+ _state.set(finalState);
+ reportIfError(_state.get());
}
+
}
+ private class StoreUpdatingChangeListener implements ConfigurationChangeListener
+ {
+ @Override
+ public void stateChanged(final ConfiguredObject<?> object, final State oldState, final State newState)
+ {
+ if (newState == State.DELETED)
+ {
+ getDurableConfigurationStore().remove(asObjectRecord());
+ object.removeChangeListener(this);
+ }
+ }
+
+ @Override
+ public void childAdded(final ConfiguredObject<?> object, final ConfiguredObject<?> child)
+ {
+
+ }
+
+ @Override
+ public void childRemoved(final ConfiguredObject<?> object, final ConfiguredObject<?> child)
+ {
+
+ }
+
+ @Override
+ public void attributeSet(final ConfiguredObject<?> object,
+ final String attributeName,
+ final Object oldAttributeValue,
+ final Object newAttributeValue)
+ {
+ getDurableConfigurationStore().update(false, asObjectRecord());
+ }
+ }
+
+
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Tue May 20 15:04:11 2014
@@ -104,8 +104,6 @@ public interface VirtualHostImpl< X exte
ScheduledFuture<?> scheduleTask(long delay, Runnable timeoutTask);
- VirtualHostState getVirtualHostState();
-
public void block();
public void unblock();
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java Tue May 20 15:04:11 2014
@@ -122,7 +122,7 @@ public abstract class AbstractStandardVi
{
if (LOGGER.isDebugEnabled())
{
- LOGGER.debug("Creating new virtualhost with name : " + getName());
+ LOGGER.debug("Creating new virtualhost with name : " + getName());
}
Map<String, Object> hostAttributes = new HashMap<String, Object>();
hostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
@@ -147,8 +147,6 @@ public abstract class AbstractStandardVi
}
});
}
-
- host.start();
}
@Override
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java Tue May 20 15:04:11 2014
@@ -584,11 +584,6 @@ public class MockVirtualHost implements
}
- public VirtualHostState getVirtualHostState()
- {
- return VirtualHostState.ACTIVE;
- }
-
public void block()
{
}
Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java Tue May 20 15:04:11 2014
@@ -44,13 +44,13 @@ import org.apache.qpid.common.ServerProp
import org.apache.qpid.properties.ConnectionStartProperties;
import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.port.AmqpPort;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import org.apache.qpid.server.virtualhost.VirtualHostState;
import org.apache.qpid.transport.Binary;
import org.apache.qpid.transport.Connection;
import org.apache.qpid.transport.ConnectionClose;
@@ -224,7 +224,7 @@ public class ServerConnectionDelegate ex
return;
}
- if (vhost.getVirtualHostState() != VirtualHostState.ACTIVE)
+ if (vhost.getState() != State.ACTIVE)
{
sconn.setState(Connection.State.CLOSING);
sconn.invoke(new ConnectionClose(ConnectionCloseCode.CONNECTION_FORCED, "Virtual host '"+vhostName+"' is not active"));
Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ConnectionOpenMethodHandler.java Tue May 20 15:04:11 2014
@@ -30,13 +30,13 @@ import org.apache.qpid.framing.AMQShortS
import org.apache.qpid.framing.ConnectionOpenBody;
import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.port.AmqpPort;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.protocol.v0_8.state.AMQState;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
import org.apache.qpid.server.protocol.v0_8.state.StateAwareMethodListener;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import org.apache.qpid.server.virtualhost.VirtualHostState;
public class ConnectionOpenMethodHandler implements StateAwareMethodListener<ConnectionOpenBody>
{
@@ -93,7 +93,7 @@ public class ConnectionOpenMethodHandler
throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, e.getMessage());
}
- if (virtualHost.getVirtualHostState() != VirtualHostState.ACTIVE)
+ if (virtualHost.getState() != State.ACTIVE)
{
throw body.getConnectionException(AMQConstant.CONNECTION_FORCED, "Virtual host '" + virtualHost.getName() + "' is not active");
}
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java Tue May 20 15:04:11 2014
@@ -30,6 +30,8 @@ import java.util.Map;
import javax.jms.JMSException;
+import junit.framework.TestCase;
+
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.server.model.Binding;
import org.apache.qpid.server.model.Broker;
@@ -399,4 +401,15 @@ public class Asserts
assertBinding(queueName, queueName, exchange, binding);
}
+ public static void assertActualAndDesiredState(final String expectedDesiredState,
+ final String expectedActualState,
+ final Map<String, Object> data)
+ {
+ String name = (String) data.get(ConfiguredObject.NAME);
+ TestCase.assertEquals("Object with name " + name + " has unexpected desired state",
+ expectedDesiredState,
+ data.get(ConfiguredObject.DESIRED_STATE));
+ TestCase.assertEquals("Object with name " + name + " has unexpected actual state",
+ expectedActualState, data.get(ConfiguredObject.STATE));
+ }
}
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java Tue May 20 15:04:11 2014
@@ -85,20 +85,20 @@ public class VirtualHostNodeRestTest ex
startBroker();
String restUrl = "virtualhostnode/" + TEST3_VIRTUALHOST;
- assertVirtualHostStates(restUrl, "STOPPED", "STOPPED");
+ assertActualAndDesireStates(restUrl, "STOPPED", "STOPPED");
}
public void testMutateState() throws Exception
{
String restUrl = "virtualhostnode/" + TEST3_VIRTUALHOST;
- assertVirtualHostStates(restUrl, "ACTIVE", "ACTIVE");
+ assertActualAndDesireStates(restUrl, "ACTIVE", "ACTIVE");
mutateVirtualHostDesiredState(restUrl, "STOPPED");
- assertVirtualHostStates(restUrl, "STOPPED", "STOPPED");
+ assertActualAndDesireStates(restUrl, "STOPPED", "STOPPED");
mutateVirtualHostDesiredState(restUrl, "ACTIVE");
- assertVirtualHostStates(restUrl, "ACTIVE", "ACTIVE");
+ assertActualAndDesireStates(restUrl, "ACTIVE", "ACTIVE");
}
public void testMutateAttributes() throws Exception
@@ -137,16 +137,12 @@ public class VirtualHostNodeRestTest ex
assertEquals("Host should be deleted", 0, virtualHostNodes.size());
}
- private void assertVirtualHostStates(final String restUrl,
- final String expectedDesiredState,
- final String expectedActualState) throws IOException
+ private void assertActualAndDesireStates(final String restUrl,
+ final String expectedDesiredState,
+ final String expectedActualState) throws IOException
{
Map<String, Object> virtualhostNode = getRestTestHelper().getJsonAsSingletonList(restUrl);
- assertEquals("Virtualhostnode has unexpected desired state",
- expectedDesiredState,
- virtualhostNode.get(VirtualHostNode.DESIRED_STATE));
- assertEquals("Virtualhostnode has unexpected actual state",
- expectedActualState, virtualhostNode.get(VirtualHostNode.STATE));
+ Asserts.assertActualAndDesiredState(expectedDesiredState, expectedActualState, virtualhostNode);
}
private void mutateVirtualHostDesiredState(final String restUrl, final String newState) throws IOException
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java Tue May 20 15:04:11 2014
@@ -22,6 +22,7 @@ package org.apache.qpid.systest.rest;
import java.io.File;
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -129,8 +130,9 @@ public class VirtualHostRestTest extends
public void testDeleteHost() throws Exception
{
- int responseCode = getRestTestHelper().submitRequest("virtualhost/" + TEST3_VIRTUALHOST + "/" + TEST3_VIRTUALHOST, "DELETE");
- assertEquals("Unexpected response code", 200, responseCode);
+ getRestTestHelper().submitRequest("virtualhost/" + TEST3_VIRTUALHOST + "/" + TEST3_VIRTUALHOST,
+ "DELETE",
+ HttpServletResponse.SC_OK);
List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("virtualhost/" + TEST3_VIRTUALHOST);
assertEquals("Host should be deleted", 0, hosts.size());
@@ -138,36 +140,66 @@ public class VirtualHostRestTest extends
public void testDeleteDefaultHostFails() throws Exception
{
- int responseCode = getRestTestHelper().submitRequest("virtualhost/" + TEST1_VIRTUALHOST, "DELETE");
- assertEquals("Unexpected response code", 409, responseCode);
-
- restartBroker();
-
- List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("virtualhost/" + TEST1_VIRTUALHOST);
- assertEquals("Host should be deleted", 1, hosts.size());
+ getRestTestHelper().submitRequest("virtualhost/" + TEST1_VIRTUALHOST, "DELETE", HttpServletResponse.SC_CONFLICT);
}
- public void testUpdateActiveHost() throws Exception
+ public void testMutateAttributes() throws Exception
{
String hostToUpdate = TEST3_VIRTUALHOST;
String restHostUrl = "virtualhost/" + hostToUpdate + "/" + hostToUpdate;
+
Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl);
Asserts.assertVirtualHost(hostToUpdate, hostDetails);
- Map<String, Object> newAttributes = new HashMap<String, Object>();
- newAttributes.put(VirtualHost.NAME, hostToUpdate);
- newAttributes.put(VirtualHost.DESCRIPTION, "This is a virtual host");
-
- int response = getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes);
- assertEquals("Unexpected response code", 200, response);
-
- restartBroker();
+ Map<String, Object> newAttributes = Collections.<String, Object>singletonMap(VirtualHost.DESCRIPTION, "This is a virtual host");
+ getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes, HttpServletResponse.SC_OK);
Map<String, Object> rereadHostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl);
Asserts.assertVirtualHost(hostToUpdate, rereadHostDetails);
assertEquals("This is a virtual host", rereadHostDetails.get(VirtualHost.DESCRIPTION));
}
+ public void testMutateState() throws Exception
+ {
+ String hostToUpdate = TEST3_VIRTUALHOST;
+ String restHostUrl = "virtualhost/" + hostToUpdate + "/" + hostToUpdate;
+
+ assertActualAndDesireStates(restHostUrl, "ACTIVE", "ACTIVE");
+
+ Map<String, Object> newAttributes = Collections.<String, Object>singletonMap(VirtualHost.DESIRED_STATE, "STOPPED");
+ getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes, HttpServletResponse.SC_OK);
+
+ assertActualAndDesireStates(restHostUrl, "STOPPED", "STOPPED");
+
+ newAttributes = Collections.<String, Object>singletonMap(VirtualHost.DESIRED_STATE, "ACTIVE");
+ getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes, HttpServletResponse.SC_OK);
+
+ assertActualAndDesireStates(restHostUrl, "ACTIVE", "ACTIVE");
+ }
+
+ public void testRecoverVirtualHostInDesiredStateStoppedWithDescription() throws Exception
+ {
+ String hostToUpdate = TEST3_VIRTUALHOST;
+ String restUrl = "virtualhost/" + hostToUpdate + "/" + hostToUpdate;
+
+ assertActualAndDesireStates(restUrl, "ACTIVE", "ACTIVE");
+
+ Map<String, Object> newAttributes = new HashMap<>();
+ newAttributes.put(VirtualHost.DESIRED_STATE, "STOPPED");
+ newAttributes.put(VirtualHost.DESCRIPTION, "My description");
+
+ getRestTestHelper().submitRequest(restUrl, "PUT", newAttributes, HttpServletResponse.SC_OK);
+
+ assertActualAndDesireStates(restUrl, "STOPPED", "STOPPED");
+
+ restartBroker();
+
+ Map<String, Object> rereadVirtualhost = getRestTestHelper().getJsonAsSingletonList(restUrl);
+ Asserts.assertActualAndDesiredState("STOPPED", "STOPPED", rereadVirtualhost);
+
+ assertEquals("Unexpected description after restart", "My description", rereadVirtualhost.get(VirtualHost.DESCRIPTION));
+ }
+
public void testPutCreateQueue() throws Exception
{
String queueName = getTestQueueName();
@@ -497,7 +529,7 @@ public class VirtualHostRestTest extends
JsonMappingException
{
String storePath = getStoreLocation(hostName);
- int responseCode = tryCreateVirtualHost(hostName, storeType, storePath, configPath);
+ int responseCode = tryCreateVirtualHostNode(hostName, storeType, storePath, configPath);
assertEquals("Unexpected response code", 201, responseCode);
return storePath;
}
@@ -507,7 +539,10 @@ public class VirtualHostRestTest extends
return new File(TMP_FOLDER, "store-" + hostName + "-" + System.currentTimeMillis()).getAbsolutePath();
}
- private int tryCreateVirtualHost(String hostName, String virtualHostNodeType, String storePath, String configPath) throws IOException,
+ private int tryCreateVirtualHostNode(String hostName,
+ String virtualHostNodeType,
+ String storePath,
+ String configPath) throws IOException,
JsonGenerationException, JsonMappingException
{
@@ -542,4 +577,12 @@ public class VirtualHostRestTest extends
assertNull("Unexpected connections", hostDetails.get(VIRTUALHOST_CONNECTIONS_ATTRIBUTE));
}
+ private void assertActualAndDesireStates(final String restUrl,
+ final String expectedDesiredState,
+ final String expectedActualState) throws IOException
+ {
+ Map<String, Object> virtualhost = getRestTestHelper().getJsonAsSingletonList(restUrl);
+ Asserts.assertActualAndDesiredState(expectedDesiredState, expectedActualState, virtualhost);
+ }
+
}
Modified: qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes?rev=1596281&r1=1596280&r2=1596281&view=diff
==============================================================================
--- qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes (original)
+++ qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes Tue May 20 15:04:11 2014
@@ -53,7 +53,8 @@ org.apache.qpid.systest.management.jmx.Q
org.apache.qpid.test.unit.client.MaxDeliveryCountTest#testWhenBrokerIsRestartedAfterEnqeuingMessages
-org.apache.qpid.systest.rest.VirtualHostRestTest#testUpdateActiveHost
+org.apache.qpid.systest.rest.VirtualHostRestTest#testRecoverVirtualHostInDesiredStateStoppedWithDescription
+
org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteNodeWithTestProfileStore
org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteNodeWithJsonStore
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org