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 }); }
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>() }); }