private static IRpcServerHost CreateNetGrpcServer(
            IRpcServiceDefinitionsProvider serviceDefinitionsProvider,
            RpcServerId serverId,
            RpcServerOptions options,
            Action <IServiceCollection> configureServices)
        {
            var hostBuilder = WebHost.CreateDefaultBuilder()
                              .ConfigureKestrel(options =>
            {
                options.ListenLocalhost(GrpcCoreFullStackTestsBase.GrpcTestPort, listenOptions =>
                {
                    listenOptions.UseHttps(TestCertificates.ServerPFXPath, "1111");
                    //listenOptions.UseHttps(certPath, "1111", o =>
                    //{
                    //    o.ClientCertificateMode = ClientCertificateMode.AllowCertificate;
                    //});
                    listenOptions.Protocols = HttpProtocols.Http2;
                });
            })
                              .ConfigureLogging(b => ConfigureLogging(b))
                              .ConfigureServices(s =>
            {
                s.AddSingleton(serviceDefinitionsProvider ?? new RpcServiceDefinitionsBuilder());
                s.Configure <RpcServicePublisherOptions>(o => o.ServerId = serverId);
                s.AddSingleton <IOptions <RpcServerOptions> >(new OptionsWrapper <RpcServerOptions>(options));

                configureServices?.Invoke(s);
            })
                              .UseStartup <NetStartup>();

            var host = hostBuilder.Build();

            var rpcServer = (NetGrpcServer)host.Services.GetService(typeof(NetGrpcServer));

            return(new NetGrpcTestServer(host, rpcServer));
        }