public void FailoverTransportSendOnewayFailTest()
{
Uri uri = new Uri(
"failover:(mock://localhost:61616?transport.failOnSendMessage=true," +
"mock://localhost:61618)?transport.randomize=false");
FailoverTransportFactory factory = new FailoverTransportFactory();
using(ITransport transport = factory.CreateTransport(uri))
{
Assert.IsNotNull(transport);
transport.Command = OnCommand;
transport.Exception = OnException;
FailoverTransport failover = transport.Narrow(typeof(FailoverTransport)) as FailoverTransport;
Assert.IsNotNull(failover);
Assert.IsFalse(failover.Randomize);
failover.Resumed = OnResumed;
transport.Start();
Thread.Sleep(1000);
Assert.IsTrue(failover.IsConnected);
// Ensure the current mock transport has the correct outgoing command handler
MockTransport mock = transport.Narrow(typeof(MockTransport)) as MockTransport;
Assert.IsNotNull(mock);
Assert.AreEqual(61616, mock.RemoteAddress.Port);
VerifyCommandHandlerSetting(transport, mock);
mock.OutgoingCommand = OnOutgoingCommand;
ActiveMQMessage message = new ActiveMQMessage();
int numMessages = 4;
for(int i = 0; i < numMessages; ++i)
{
transport.Oneway(message);
// Make sure we switched to second failover
mock = transport.Narrow(typeof(MockTransport)) as MockTransport;
Assert.IsNotNull(mock);
Assert.AreEqual(61618, mock.RemoteAddress.Port);
}
Thread.Sleep(1000);
Assert.AreEqual(numMessages, this.sent.Count);
}
}