public void SetUp() { _bus = new InMemoryBus($"bus_{_serverEndPoint.Port}"); var pipelineBus = InMemoryBus.CreateTest(); var queue = new QueuedHandlerThreadPool(pipelineBus, "Test", new QueueStatsManager(), true, TimeSpan.FromMilliseconds(50)); _multiQueuedHandler = new MultiQueuedHandler(new IQueuedHandler[] { queue }, null); _multiQueuedHandler.Start(); var httpAuthenticationProviders = new IHttpAuthenticationProvider[] { new AnonymousHttpAuthenticationProvider() }; _service = new KestrelHttpService(ServiceAccessibility.Private, _bus, new NaiveUriRouter(), _multiQueuedHandler, false, null, 0, false, _serverEndPoint); KestrelHttpService.CreateAndSubscribePipeline(pipelineBus); _server = new TestServer( new WebHostBuilder() .UseStartup(new HttpServiceStartup(_service))); _httpMessageHandler = _server.CreateHandler(); _client = new HttpAsyncClient(_timeout, _httpMessageHandler); HttpBootstrap.Subscribe(_bus, _service); }
public void of_http_requests_routing() { const int iterations = 100000; IPublisher inputBus = new NoopPublisher(); var bus = InMemoryBus.CreateTest(); var queue = new QueuedHandlerThreadPool(bus, "Test", new QueueStatsManager(), true, TimeSpan.FromMilliseconds(50)); var multiQueuedHandler = new MultiQueuedHandler(new IQueuedHandler[] { queue }, null); var providers = new IHttpAuthenticationProvider[] { new AnonymousHttpAuthenticationProvider() }; var httpService = new KestrelHttpService(ServiceAccessibility.Public, inputBus, new TrieUriRouter(), multiQueuedHandler, false, null, 0, false); KestrelHttpService.CreateAndSubscribePipeline(bus); using var server = new TestServer(new WebHostBuilder().UseStartup(new HttpServiceStartup(httpService))); using var httpMessageHandler = server.CreateHandler(); var fakeController = new FakeController(iterations, null); httpService.SetupController(fakeController); httpService.Handle(new SystemMessage.SystemInit()); var rnd = new Random(); var sw = Stopwatch.StartNew(); var timeout = TimeSpan.FromMilliseconds(10000); var httpClient = new HttpAsyncClient(timeout, httpMessageHandler); for (int i = 0; i < iterations; ++i) { var route = fakeController.BoundRoutes[rnd.Next(0, fakeController.BoundRoutes.Count)]; switch (route.Item2) { case HttpMethod.Get: httpClient.Get(route.Item1, x => { }, x => { throw new Exception(); }); break; case HttpMethod.Post: httpClient.Post(route.Item1, "abracadabra", ContentType.Json, x => { }, x => { throw new Exception(); }); break; case HttpMethod.Delete: httpClient.Delete(route.Item1, x => { }, x => { throw new Exception(); }); break; case HttpMethod.Put: httpClient.Put(route.Item1, "abracadabra", ContentType.Json, x => { }, x => { throw new Exception(); }); break; default: throw new Exception(); } } fakeController.CountdownEvent.Wait(); sw.Stop(); Console.WriteLine("{0} request done in {1} ({2:0.00} per sec)", iterations, sw.Elapsed, 1000.0 * iterations / sw.ElapsedMilliseconds); httpService.Shutdown(); multiQueuedHandler.Stop(); }
/// <summary> /// Creates a new instance of /// </summary> /// <param name="authenticationProvider"></param> public HttpServerAuthDelegatingHandler(IHttpAuthenticationProvider authenticationProvider) { this.authenticationProvider = authenticationProvider; }