Example #1
0
        public void CreationFailMockTransportTest()
        {
            MockTransportFactory factory = new MockTransportFactory();

            Uri location = new Uri("mock://0.0.0.0:61616?transport.failOnCreate=true");

            factory.CreateTransport(location);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
    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);
    }