public void CreationFailMockTransportTest() { MockTransportFactory factory = new MockTransportFactory(); Uri location = new Uri("mock://0.0.0.0:61616?transport.failOnCreate=true"); factory.CreateTransport(location); }
/// <summary> /// Create a transport factory for the scheme. If we do not support the transport protocol, /// an NMSConnectionException will be thrown. /// </summary> /// <param name="location"></param> /// <returns></returns> private static ITransportFactory CreateTransportFactory(Uri location) { string scheme = location.Scheme; if (null == scheme || 0 == scheme.Length) { throw new NMSConnectionException(String.Format("Transport scheme invalid: [{0}]", location.ToString())); } ITransportFactory factory = null; try { switch (scheme.ToLower()) { case "tcp": factory = new TcpTransportFactory(); break; case "ssl": factory = new SslTransportFactory(); break; case "discovery": factory = new DiscoveryTransportFactory(); break; case "failover": factory = new FailoverTransportFactory(); break; case "mock": factory = new MockTransportFactory(); break; default: throw new NMSConnectionException(String.Format("The transport {0} is not supported.", scheme)); } } catch (NMSConnectionException) { throw; } catch { throw new NMSConnectionException("Error creating transport."); } if (null == factory) { throw new NMSConnectionException("Unable to create a transport."); } return(factory); }
public void CreateMockTransportWithParamsTest() { MockTransportFactory factory = new MockTransportFactory(); Uri location = new Uri("mock://0.0.0.0:61616?transport.failOnSendMessage=true&transport.numSentMessagesBeforeFail=20"); MockTransport transport = (MockTransport)factory.CompositeConnect(location); Assert.IsNotNull(transport); Assert.IsTrue(transport.FailOnSendMessage); Assert.AreEqual(20, transport.NumSentMessagesBeforeFail); }
public void CreateMockTransportTest() { MockTransportFactory factory = new MockTransportFactory(); Uri location = new Uri("mock://0.0.0.0:61616"); ITransport transport = factory.CreateTransport(location); Assert.IsNotNull(transport); Assert.IsInstanceOf <MockTransport>(transport.Narrow(typeof(MockTransport))); MockTransport mock = (MockTransport)transport.Narrow(typeof(MockTransport)); Assert.IsTrue(mock.IsConnected); Assert.IsFalse(mock.IsFaultTolerant); }
public void SetUp() { this.received = new List <Command>(); this.exceptions = new List <Exception>(); Uri uri = new Uri("mock://mock?wireformat=openwire"); MockTransportFactory factory = new MockTransportFactory(); this.transport = factory.CompositeConnect(uri) as MockTransport; this.localWireFormatInfo = new WireFormatInfo(); this.localWireFormatInfo.Version = 5; this.localWireFormatInfo.MaxInactivityDuration = 3000; this.localWireFormatInfo.TightEncodingEnabled = false; }
public async Task ListenIPWithEphemeralPort_TransportsGetIPv6Any() { var options = new KestrelServerOptions(); options.ApplicationServices = new ServiceCollection() .AddLogging() .BuildServiceProvider(); options.ListenAnyIP(0, options => { options.UseHttps(TestResources.GetTestCertificate()); options.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; }); var mockTransportFactory = new MockTransportFactory(); var mockMultiplexedTransportFactory = new MockMultiplexedTransportFactory(); using var server = new KestrelServerImpl( Options.Create(options), new List <IConnectionListenerFactory>() { mockTransportFactory }, new List <IMultiplexedConnectionListenerFactory>() { mockMultiplexedTransportFactory }, new LoggerFactory(new[] { new KestrelTestLoggerProvider() })); await server.StartAsync(new DummyApplication(context => Task.CompletedTask), CancellationToken.None); var transportEndPoint = Assert.Single(mockTransportFactory.BoundEndPoints); var multiplexedTransportEndPoint = Assert.Single(mockMultiplexedTransportFactory.BoundEndPoints); Assert.Equal(IPAddress.IPv6Any, ((IPEndPoint)transportEndPoint.OriginalEndPoint).Address); Assert.Equal(IPAddress.IPv6Any, ((IPEndPoint)multiplexedTransportEndPoint.OriginalEndPoint).Address); // Should have been assigned a random value. Assert.NotEqual(0, ((IPEndPoint)transportEndPoint.BoundEndPoint).Port); // Same random value should be used for both transports. Assert.Equal(((IPEndPoint)transportEndPoint.BoundEndPoint).Port, ((IPEndPoint)multiplexedTransportEndPoint.BoundEndPoint).Port); }
public async Task ListenWithCustomEndpoint_DoesNotThrow() { var options = new KestrelServerOptions(); options.ApplicationServices = new ServiceCollection() .AddLogging() .BuildServiceProvider(); var customEndpoint = new UriEndPoint(new("http://localhost:5000")); options.Listen(customEndpoint, options => { options.UseHttps(TestResources.GetTestCertificate()); options.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; }); var mockTransportFactory = new MockTransportFactory(); var mockMultiplexedTransportFactory = new MockMultiplexedTransportFactory(); using var server = new KestrelServerImpl( Options.Create(options), new List <IConnectionListenerFactory>() { mockTransportFactory }, new List <IMultiplexedConnectionListenerFactory>() { mockMultiplexedTransportFactory }, new LoggerFactory(new[] { new KestrelTestLoggerProvider() })); await server.StartAsync(new DummyApplication(context => Task.CompletedTask), CancellationToken.None); var transportEndPoint = Assert.Single(mockTransportFactory.BoundEndPoints); var multiplexedTransportEndPoint = Assert.Single(mockMultiplexedTransportFactory.BoundEndPoints); Assert.Same(customEndpoint, transportEndPoint.BoundEndPoint); Assert.Same(customEndpoint, multiplexedTransportEndPoint.BoundEndPoint); }