use of org.apache.qpid.server.transport.AMQPConnection in project qpid-broker-j by apache.
the class ProtocolEngine_1_0_0Test method setUp.
@Override
public void setUp() throws Exception {
super.setUp();
_networkConnection = mock(ServerNetworkConnection.class);
when(_networkConnection.getLocalAddress()).thenReturn(new InetSocketAddress(0));
_broker = mock(Broker.class);
when(_broker.getModel()).thenReturn(BrokerModel.getInstance());
when(_broker.getNetworkBufferSize()).thenReturn(256 * 1026);
final TaskExecutor taskExecutor = new TaskExecutorImpl();
taskExecutor.start();
when(_broker.getChildExecutor()).thenReturn(taskExecutor);
when(_broker.getTaskExecutor()).thenReturn(taskExecutor);
when(_broker.getId()).thenReturn(UUID.randomUUID());
when(_broker.getEventLogger()).thenReturn(new EventLogger());
when(((Broker) _broker).getCategoryClass()).thenReturn(Broker.class);
_port = mock(AmqpPort.class);
when(_port.getChildExecutor()).thenReturn(taskExecutor);
when(_port.getCategoryClass()).thenReturn(Port.class);
when(_port.getModel()).thenReturn(BrokerModel.getInstance());
final SubjectCreator subjectCreator = mock(SubjectCreator.class);
_authenticationProvider = mock(AuthenticationProvider.class);
when(_port.getAuthenticationProvider()).thenReturn(_authenticationProvider);
_virtualHost = mock(VirtualHost.class);
when(_virtualHost.getChildExecutor()).thenReturn(taskExecutor);
when(_virtualHost.getModel()).thenReturn(BrokerModel.getInstance());
when(_virtualHost.getState()).thenReturn(State.ACTIVE);
when(_virtualHost.isActive()).thenReturn(true);
final ArgumentCaptor<AMQPConnection> connectionCaptor = ArgumentCaptor.forClass(AMQPConnection.class);
final ArgumentCaptor<ConnectionEstablishmentPolicy> establishmentPolicyCaptor = ArgumentCaptor.forClass(ConnectionEstablishmentPolicy.class);
doAnswer(new Answer() {
@Override
public Object answer(final InvocationOnMock invocation) throws Throwable {
_connection = connectionCaptor.getValue();
return null;
}
}).when(_virtualHost).registerConnection(connectionCaptor.capture(), establishmentPolicyCaptor.capture());
when(_virtualHost.getPrincipal()).thenReturn(mock(VirtualHostPrincipal.class));
when(_port.getAddressSpace(anyString())).thenReturn(_virtualHost);
when(_port.getSubjectCreator(anyBoolean(), anyString())).thenReturn(subjectCreator);
final ArgumentCaptor<Principal> userCaptor = ArgumentCaptor.forClass(Principal.class);
when(subjectCreator.createSubjectWithGroups(userCaptor.capture())).then(new Answer<Subject>() {
@Override
public Subject answer(final InvocationOnMock invocation) throws Throwable {
Subject subject = new Subject();
subject.getPrincipals().add(userCaptor.getValue());
return subject;
}
});
final ByteBufferSender sender = mock(ByteBufferSender.class);
when(_networkConnection.getSender()).thenReturn(sender);
AMQPDescribedTypeRegistry registry = AMQPDescribedTypeRegistry.newInstance().registerTransportLayer().registerMessagingLayer().registerTransactionLayer().registerSecurityLayer();
_frameWriter = new FrameWriter(registry, new ByteBufferSender() {
@Override
public boolean isDirectBufferPreferred() {
return false;
}
@Override
public void send(final QpidByteBuffer msg) {
_protocolEngine_1_0_0.received(msg);
}
@Override
public void flush() {
}
@Override
public void close() {
}
});
}
use of org.apache.qpid.server.transport.AMQPConnection in project qpid-broker-j by apache.
the class VirtualHostTest method testStopVirtualHost_ClosesConnections.
public void testStopVirtualHost_ClosesConnections() {
String virtualHostName = getName();
QueueManagingVirtualHost<?> virtualHost = createVirtualHost(virtualHostName);
assertEquals("Unexpected state", State.ACTIVE, virtualHost.getState());
AbstractAMQPConnection connection = createMockProtocolConnection(virtualHost);
assertEquals("Unexpected number of connections before connection registered", 0, virtualHost.getConnectionCount());
AMQPConnection modelConnection = mock(AMQPConnection.class);
when(modelConnection.closeAsync()).thenReturn(Futures.immediateFuture(null));
virtualHost.registerConnection(modelConnection, new NoopConnectionEstablishmentPolicy());
assertEquals("Unexpected number of connections after connection registered", 1, virtualHost.getConnectionCount());
((AbstractConfiguredObject<?>) virtualHost).stop();
assertEquals("Unexpected state", State.STOPPED, virtualHost.getState());
assertEquals("Unexpected number of connections after virtualhost stopped", 0, virtualHost.getConnectionCount());
verify(modelConnection).closeAsync();
}
use of org.apache.qpid.server.transport.AMQPConnection in project qpid-broker-j by apache.
the class AbstractQueue method switchToConnectionExclusivity.
private void switchToConnectionExclusivity() throws ExistingConsumerPreventsExclusive {
switch(_exclusive) {
case NONE:
case CONTAINER:
case PRINCIPAL:
AMQPConnection con = null;
Iterator<QueueConsumer<?, ?>> queueConsumerIterator = _queueConsumerManager.getAllIterator();
while (queueConsumerIterator.hasNext()) {
QueueConsumer<?, ?> c = queueConsumerIterator.next();
if (con == null) {
con = c.getSession().getAMQPConnection();
} else if (!con.equals(c.getSession().getAMQPConnection())) {
throw new ExistingConsumerPreventsExclusive();
}
}
_exclusiveOwner = con;
break;
case SESSION:
_exclusiveOwner = _exclusiveOwner == null ? null : ((AMQPSession<?, ?>) _exclusiveOwner).getAMQPConnection();
break;
case LINK:
_exclusiveOwner = _exclusiveSubscriber == null ? null : _exclusiveSubscriber.getSession().getAMQPConnection();
}
}
use of org.apache.qpid.server.transport.AMQPConnection in project qpid-broker-j by apache.
the class AbstractQueue method switchToPrincipalExclusivity.
private void switchToPrincipalExclusivity() throws ExistingConsumerPreventsExclusive {
switch(_exclusive) {
case NONE:
case CONTAINER:
Principal principal = null;
Iterator<QueueConsumer<?, ?>> queueConsumerIterator = _queueConsumerManager.getAllIterator();
while (queueConsumerIterator.hasNext()) {
QueueConsumer<?, ?> c = queueConsumerIterator.next();
if (principal == null) {
principal = c.getSession().getAMQPConnection().getAuthorizedPrincipal();
} else if (!Objects.equals(principal.getName(), c.getSession().getAMQPConnection().getAuthorizedPrincipal().getName())) {
throw new ExistingConsumerPreventsExclusive();
}
}
_exclusiveOwner = principal;
break;
case CONNECTION:
_exclusiveOwner = _exclusiveOwner == null ? null : ((AMQPConnection) _exclusiveOwner).getAuthorizedPrincipal();
break;
case SESSION:
_exclusiveOwner = _exclusiveOwner == null ? null : ((AMQPSession<?, ?>) _exclusiveOwner).getAMQPConnection().getAuthorizedPrincipal();
break;
case LINK:
_exclusiveOwner = _exclusiveSubscriber == null ? null : _exclusiveSubscriber.getSession().getAMQPConnection().getAuthorizedPrincipal();
}
}
use of org.apache.qpid.server.transport.AMQPConnection in project qpid-broker-j by apache.
the class ConnectionAndUserPredicateTest method testEvaluateConnectionNameForAmqp.
public void testEvaluateConnectionNameForAmqp() {
AMQPConnection connection = mock(AMQPConnection.class);
when(connection.getRemoteAddressString()).thenReturn("foo:1234");
when(connection.getRemoteContainerName()).thenReturn(null);
_subject.getPrincipals().add(new ConnectionPrincipal(connection));
_predicate.setConnectionNamePattern(".*:1234");
Subject.doAs(_subject, new PrivilegedAction<Void>() {
@Override
public Void run() {
assertTrue("predicate unexpectedly did not match", _predicate.evaluate(mock(ILoggingEvent.class)));
return null;
}
});
_predicate.setConnectionNamePattern(".*:4321");
Subject.doAs(_subject, new PrivilegedAction<Void>() {
@Override
public Void run() {
assertFalse("predicate unexpectedly matched", _predicate.evaluate(mock(ILoggingEvent.class)));
return null;
}
});
}
Aggregations