protected EventStoreGrpcFixture(
            Action <VNodeBuilder> configureVNode      = default,
            Action <IWebHostBuilder> configureWebHost = default,
            EventStoreClientSettings clientSettings   = default)
        {
            var webHostBuilder = new WebHostBuilder();

            configureWebHost?.Invoke(webHostBuilder);

            var vNodeBuilder = new TestVNodeBuilder();

            vNodeBuilder.RunInMemory().WithTfChunkSize(1024 * 1024);
            configureVNode?.Invoke(vNodeBuilder);

            Node         = vNodeBuilder.Build();
            _db          = vNodeBuilder.GetDb();
            _disposables = new List <IDisposable>();
            TestServer   = new TestServer(webHostBuilder.UseSerilog().UseStartup(new TestClusterVNodeStartup(Node)));

            var settings = clientSettings ?? new EventStoreClientSettings {
                CreateHttpMessageHandler = () => new ResponseVersionHandler {
                    InnerHandler = TestServer.CreateHandler()
                },
                OperationOptions = { TimeoutAfter = Debugger.IsAttached ? null : (TimeSpan?)TimeSpan.FromSeconds(30) }
            };

            Client = new EventStoreClient(settings);
        }
        protected EventStoreGrpcFixture(
            Action <VNodeBuilder> configureVNode      = default,
            Action <IWebHostBuilder> configureWebHost = default)
        {
            var webHostBuilder = new WebHostBuilder();

            configureWebHost?.Invoke(webHostBuilder);

            var vNodeBuilder = new TestVNodeBuilder();

            vNodeBuilder.RunInMemory().WithTfChunkSize(1024 * 1024);
            configureVNode?.Invoke(vNodeBuilder);

            Node = vNodeBuilder.Build();
            _db  = vNodeBuilder.GetDb();

            TestServer = new TestServer(
                webHostBuilder
                .UseStartup(new TestClusterVNodeStartup(Node)));

            Client = new EventStoreClient(new UriBuilder().Uri, () => new HttpClient(new ResponseVersionHandler {
                InnerHandler = TestServer.CreateHandler()
            })
            {
                Timeout = Timeout.InfiniteTimeSpan
            });
        }
Beispiel #3
0
        public StandaloneKestrelServerFixture()
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport",
                                     true);    //TODO JPB Remove this sadness when dotnet core supports kestrel + http2 on macOS
            }

            using var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(new IPEndPoint(IPAddress.Loopback, 0));
            var port = ((IPEndPoint)socket.LocalEndPoint).Port;

            var vNodeBuilder = new TestVNodeBuilder();

            vNodeBuilder.RunInMemory();
            _node = vNodeBuilder.Build();
            _db   = vNodeBuilder.GetDb();

            _host = new WebHostBuilder()
                    .UseKestrel(serverOptions => {
                serverOptions.Listen(IPAddress.Loopback, port, listenOptions => {
                    if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
                    {
                        listenOptions.Protocols = HttpProtocols.Http2;
                    }
                    else
                    {
                        listenOptions.UseHttps();
                    }
                });
            })
                    .UseSerilog()
                    .UseStartup(_node.Startup)
                    .Build();

            Client = new EventStoreClient(new EventStoreClientSettings {
                CreateHttpMessageHandler = () => new SocketsHttpHandler {
                    SslOptions = new SslClientAuthenticationOptions {
                        RemoteCertificateValidationCallback = delegate { return(true); }
                    }
                },
                ConnectivitySettings = new EventStoreClientConnectivitySettings {
                    Address = new UriBuilder {
                        Port   = port,
                        Scheme = RuntimeInformation.IsOSPlatform(OSPlatform.OSX)
                                                        ? Uri.UriSchemeHttp
                                                        : Uri.UriSchemeHttps
                    }.Uri,
                },
                LoggerFactory = _host.Services.GetRequiredService <ILoggerFactory>()
            });
        }