/** Close a component and remove it from its associated TestReactor. * Closes any associated server and reactor channel. */ void close() { assertNotNull(_testReactor); if (_server != null) { assertEquals(TransportReturnCodes.SUCCESS, _server.close(_errorInfo.error())); _server = null; } if (_reactorChannel != null) closeChannel(); _testReactor.removeComponent(this); _testReactor = null; } }
assertNotNull(component.server()); assertNull(component.reactorChannel()); else if (key.channel() == component.server().selectableChannel()) assertEquals(ReactorReturnCodes.SUCCESS, _reactor.accept(component.server(), acceptOpts, component.reactorRole(), _errorInfo)); return; assertEquals(ReactorReturnCodes.SUCCESS, _reactor.connect(connectOpts, component.reactorRole(), _errorInfo));
assertEquals(false, component.reactorChannelIsUp()); break; case ReactorChannelEventTypes.CHANNEL_UP: component.reactorChannelIsUp(true); break; case ReactorChannelEventTypes.CHANNEL_DOWN: case ReactorChannelEventTypes.CHANNEL_DOWN_RECONNECTING: if (component.reactorChannelIsUp()) assertNotNull(component.reactorChannel().selectableChannel()); assertNotNull(component.reactorChannel().selectableChannel().keyFor(_selector)); component.reactorChannel().selectableChannel().keyFor(_selector).cancel(); component.reactorChannelIsUp(false); break; case ReactorChannelEventTypes.CHANNEL_READY: case ReactorChannelEventTypes.FD_CHANGE: case ReactorChannelEventTypes.WARNING: assertNotNull(component.reactorChannel()); break; default: if (component.reactorChannel() != null) assertEquals(component.reactorChannel(), event.reactorChannel()); else component.reactorChannel(event.reactorChannel());
/** Sends an RDM message to the component's channel, and dispatches to ensure no events are received and any internal flush events are processed. */ int submitAndDispatch(MsgBase msg, ReactorSubmitOptions submitOptions) { int ret = submit(msg, submitOptions); testReactor().dispatch(0); return ret; }
TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
sessionOpts.reconnectMaxDelay(reconnectMaxDelay); consumer.testReactor().connect(sessionOpts, consumer, TestReactorComponent.nextReservedServerPort()); for (int i = 0; i < reconnectAttemptLimit + 1; ++i)
/** Adds a component's server to the selector. */ void registerComponentServer(TestReactorComponent component) { assertNotNull(component.server()); try { component.server().selectableChannel().register(_selector, SelectionKey.OP_ACCEPT); } catch (ClosedChannelException e) { e.printStackTrace(); fail("Caught ClosedChannelException"); } }
ret = _reactor.connect(connectOpts, component.reactorRole(), _errorInfo); assertEquals("Connect failed: " + ret + "(" + _errorInfo.location() + " -- "+ _errorInfo.error().text() + ")", ReactorReturnCodes.SUCCESS, ret);
/** This provider always rejects tunnel streams. */ class TunnelStreamRejectProvider extends Provider { TunnelStreamRejectOptions _rejectOptions = ReactorFactory.createTunnelStreamRejectOptions(); public TunnelStreamRejectProvider(TestReactor reactor) { super(reactor); } @Override public int listenerCallback(TunnelStreamRequestEvent event) { super.listenerCallback(event); /* Accept the tunnel stream request. */ _rejectOptions.clear(); _rejectOptions.state().streamState(StreamStates.CLOSED); _rejectOptions.state().dataState(DataStates.SUSPECT); _rejectOptions.state().code(StateCodes.NOT_ENTITLED); assertEquals(ReactorReturnCodes.SUCCESS, reactorChannel().rejectTunnelStream(event, _rejectOptions, _errorInfo)); return ReactorReturnCodes.SUCCESS; } }
/** Sends a Msg to the component's channel, and dispatches to ensure no events are received and any internal flush events are processed. */ int submitAndDispatch(Msg msg, ReactorSubmitOptions submitOptions) { int ret = submit(msg, submitOptions); testReactor().dispatch(0); return ret; }
sessionOpts.reconnectMaxDelay(reconnectMaxDelay); consumer.testReactor().connect(sessionOpts, consumer, TestReactorComponent.nextReservedServerPort()); for (int i = 0; i < 3; ++i)
TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
if (component.reactorChannel() != null && component.reactorChannelIsUp()) component.reactorChannel().selectableChannel().register(_selector, SelectionKey.OP_READ, component.reactorChannel());
TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
TestReactorComponent.closeSession(consumer, provider); TestReactorComponent.closeSession(consumer, rejectProvider);
consumerReactor.dispatch(0); TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
consumerReactor.dispatch(0); TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
consumerReactor.dispatch(0); TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
consumerReactor.dispatch(0); TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();
consumerReactor.dispatch(0); TestReactorComponent.closeSession(consumer, provider); consumerReactor.close(); providerReactor.close();