File: Program.cs
Web Access
Project: src\src\Http\Routing\test\testassets\Benchmarks\Benchmarks.csproj (Benchmarks)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.TestHost;
 
namespace Benchmarks;
 
public class Program
{
    public static Task Main(string[] args)
    {
        return GetHostBuilder(args).Build().RunAsync();
    }
 
    public static IHostBuilder GetHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .AddCommandLine(args)
            .AddEnvironmentVariables(prefix: "RoutingBenchmarks_")
            .Build();
 
        // Consoler logger has a major impact on perf results, so do not use
        // default builder.
 
        var hostBuilder = new HostBuilder()
                .ConfigureWebHost(webHostBuilder =>
                {
                    webHostBuilder
                        .UseKestrel()
                        .UseTestServer()
                        .UseConfiguration(config);
                });
 
        var scenario = config["scenarios"]?.ToLowerInvariant();
        if (scenario == "plaintextdispatcher" || scenario == "plaintextendpointrouting")
        {
            hostBuilder.ConfigureWebHost(webHostBuilder =>
            {
                webHostBuilder
                    .UseStartup<StartupUsingEndpointRouting>()
                    // for testing
                    .UseSetting("Startup", nameof(StartupUsingEndpointRouting));
            });
        }
        else if (scenario == "plaintextrouting" || scenario == "plaintextrouter")
        {
            hostBuilder.ConfigureWebHost(webHostBuilder =>
            {
                webHostBuilder
                    .UseStartup<StartupUsingRouter>()
                    // for testing
                    .UseSetting("Startup", nameof(StartupUsingRouter));
            });
        }
        else
        {
            throw new InvalidOperationException(
                $"Invalid scenario '{scenario}'. Allowed scenarios are PlaintextEndpointRouting and PlaintextRouter");
        }
 
        return hostBuilder;
    }
}