Exemplo n.º 1
0
        public async Task LiteralPathsAreHandledCorrectly()
        {
            var capture = new PathCapture();
            var builder = new WebHostBuilder()
                          .ConfigureServices(svc => svc.AddTestServices())
                          .Configure(app =>
            {
                app.UsePrometheus(capture);
                app.Run(async ctx => await ctx.Response.WriteAsync("Hello world"));
            });

            using (var server = new TestServer(builder))
                using (var client = server.CreateClient())
                {
                    await client.GetAsync("/test");

                    await client.GetAsync("/something_else");
                }
            Assert.Equal("/test", capture.Paths[0]);
            Assert.Equal("/something_else", capture.Paths[1]);
        }
Exemplo n.º 2
0
        public async Task RoutingWithTemplatesHandledCorrectly()
        {
            var capture = new PathCapture();
            var builder = new WebHostBuilder()
                          .ConfigureServices(svc => svc.AddTestServices().AddRouting())
                          .Configure(app =>
            {
                app.UsePrometheus(capture);
                var routes = new RouteBuilder(app);
                routes.MapGet("route1/{userid:int}", async ctx => await ctx.Response.WriteAsync("Hello world"));
                routes.MapGet("route2/{agentid:guid}", async ctx => await ctx.Response.WriteAsync("Hello world"));
                app.UseRouter(routes.Build());
            });

            using (var server = new TestServer(builder))
                using (var client = server.CreateClient())
                {
                    await client.GetAsync("/route1/4");

                    await client.GetAsync($"/route2/{Guid.Empty}");
                }
            Assert.Equal("/route1/{userid:int}", capture.Paths[0]);
            Assert.Equal("/route2/{agentid:guid}", capture.Paths[1]);
        }
 public CaptureMiddleware(RequestDelegate next, HttpMetrics metrics, PathCapture pathCapture)
     : base(next, metrics)
 {
     this.pathCapture = pathCapture;
 }
Exemplo n.º 4
0
 public static IApplicationBuilder UsePrometheus(this IApplicationBuilder app, PathCapture capture)
 {
     return(app.UseMiddleware <CaptureMiddleware>(capture));
 }