From dd726229f7cc2b739a673ff28165a6b9c3b2ccd6 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 31 Mar 2020 06:59:31 +1100 Subject: [PATCH] remove redundant state machines (#236) --- .../GenerateDockerfileStep.cs | 10 +++--- .../GenerateHelmChartStep.cs | 10 +++--- src/Microsoft.Tye.Hosting/DockerRunner.cs | 6 ++-- src/Microsoft.Tye.Hosting/ProcessRunner.cs | 5 +-- src/Microsoft.Tye.Hosting/ProxyService.cs | 4 +-- src/Microsoft.Tye.Hosting/TyeDashboardApi.cs | 32 ++++++++----------- src/tye/Program.cs | 4 +-- .../multi-phase-dockerfile/Startup.cs | 6 ++-- .../single-phase-dockerfile/Startup.cs | 6 ++-- 9 files changed, 40 insertions(+), 43 deletions(-) diff --git a/src/Microsoft.Tye.Core/GenerateDockerfileStep.cs b/src/Microsoft.Tye.Core/GenerateDockerfileStep.cs index f871820a..a80af636 100644 --- a/src/Microsoft.Tye.Core/GenerateDockerfileStep.cs +++ b/src/Microsoft.Tye.Core/GenerateDockerfileStep.cs @@ -13,16 +13,16 @@ namespace Microsoft.Tye public bool Force { get; set; } - public override async Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service) + public override Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service) { if (SkipWithoutProject(output, service, out var project)) { - return; + return Task.CompletedTask; } if (SkipWithoutContainerInfo(output, service, out var container)) { - return; + return Task.CompletedTask; } if (container.UseMultiphaseDockerfile == false) @@ -40,8 +40,8 @@ namespace Microsoft.Tye File.Delete(dockerFilePath); - await DockerfileGenerator.WriteDockerfileAsync(output, application, project, container, dockerFilePath); - output.WriteInfoLine($"Generated Dockerfile at '{dockerFilePath}'."); + output.WriteInfoLine($"Generating Dockerfile at '{dockerFilePath}'."); + return DockerfileGenerator.WriteDockerfileAsync(output, application, project, container, dockerFilePath); } } } diff --git a/src/Microsoft.Tye.Core/GenerateHelmChartStep.cs b/src/Microsoft.Tye.Core/GenerateHelmChartStep.cs index 500fd7d3..f7d1a35d 100644 --- a/src/Microsoft.Tye.Core/GenerateHelmChartStep.cs +++ b/src/Microsoft.Tye.Core/GenerateHelmChartStep.cs @@ -13,16 +13,16 @@ namespace Microsoft.Tye public bool Force { get; set; } - public override async Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service) + public override Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service) { if (SkipWithoutProject(output, service, out var project)) { - return; + return Task.CompletedTask; } if (SkipWithoutContainerInfo(output, service, out var container)) { - return; + return Task.CompletedTask; } var chartDirectory = Path.Combine(project.ProjectFile.DirectoryName, "charts"); @@ -36,14 +36,14 @@ namespace Microsoft.Tye } var chart = new HelmChartStep(); - await HelmChartGenerator.GenerateAsync( + output.WriteInfoLine($"Generating Helm Chart at '{Path.Combine(chartDirectory, chart.ChartName)}'."); + return HelmChartGenerator.GenerateAsync( output, application, project, container, chart, new DirectoryInfo(chartDirectory)); - output.WriteInfoLine($"Generated Helm Chart at '{Path.Combine(chartDirectory, chart.ChartName)}'."); } } diff --git a/src/Microsoft.Tye.Hosting/DockerRunner.cs b/src/Microsoft.Tye.Hosting/DockerRunner.cs index b23a1c7b..8d06be87 100644 --- a/src/Microsoft.Tye.Hosting/DockerRunner.cs +++ b/src/Microsoft.Tye.Hosting/DockerRunner.cs @@ -359,14 +359,16 @@ namespace Microsoft.Tye.Hosting } } - private async Task StopContainerAsync(Service service) + private Task StopContainerAsync(Service service) { if (service.Items.TryGetValue(typeof(DockerInformation), out var value) && value is DockerInformation di) { di.StoppingTokenSource.Cancel(); - await Task.WhenAll(di.Tasks); + return Task.WhenAll(di.Tasks); } + + return Task.CompletedTask; } private static string? GetUserSecretsPathFromSecrets() diff --git a/src/Microsoft.Tye.Hosting/ProcessRunner.cs b/src/Microsoft.Tye.Hosting/ProcessRunner.cs index cf7edd4c..3f557ecc 100644 --- a/src/Microsoft.Tye.Hosting/ProcessRunner.cs +++ b/src/Microsoft.Tye.Hosting/ProcessRunner.cs @@ -294,15 +294,16 @@ namespace Microsoft.Tye.Hosting private Task KillRunningProcesses(IDictionary services) { - static async Task KillProcessAsync(Service service) + static Task KillProcessAsync(Service service) { if (service.Items.TryGetValue(typeof(ProcessInfo), out var stateObj) && stateObj is ProcessInfo state) { // Cancel the token before stopping the process state.StoppedTokenSource.Cancel(); - await Task.WhenAll(state.Tasks); + return Task.WhenAll(state.Tasks); } + return Task.CompletedTask; } var index = 0; diff --git a/src/Microsoft.Tye.Hosting/ProxyService.cs b/src/Microsoft.Tye.Hosting/ProxyService.cs index b300b0c2..a49288a2 100644 --- a/src/Microsoft.Tye.Hosting/ProxyService.cs +++ b/src/Microsoft.Tye.Hosting/ProxyService.cs @@ -29,7 +29,7 @@ namespace Microsoft.Tye.Hosting _logger = logger; } - public async Task StartAsync(Application application) + public Task StartAsync(Application application) { _host = new HostBuilder() .ConfigureServer(server => @@ -148,7 +148,7 @@ namespace Microsoft.Tye.Hosting }) .Build(); - await _host.StartAsync(); + return _host.StartAsync(); } public async Task StopAsync(Application application) diff --git a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs index 101dfb6c..5266c9ab 100644 --- a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs +++ b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs @@ -56,7 +56,7 @@ namespace Microsoft.Tye.Hosting _options); } - private async Task Services(HttpContext context) + private Task Services(HttpContext context) { var app = context.RequestServices.GetRequiredService(); @@ -70,10 +70,10 @@ namespace Microsoft.Tye.Hosting list.Add(CreateServiceJson(service)); } - await JsonSerializer.SerializeAsync(context.Response.Body, list, _options); + return JsonSerializer.SerializeAsync(context.Response.Body, list, _options); } - private async Task Service(HttpContext context) + private Task Service(HttpContext context) { var app = context.RequestServices.GetRequiredService(); @@ -83,18 +83,16 @@ namespace Microsoft.Tye.Hosting if (!app.Services.TryGetValue(name, out var service)) { context.Response.StatusCode = 404; - await JsonSerializer.SerializeAsync(context.Response.Body, new + return JsonSerializer.SerializeAsync(context.Response.Body, new { message = $"Unknown service {name}" }, _options); - - return; } var serviceJson = CreateServiceJson(service); - await JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options); + return JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options); } private static V1Service CreateServiceJson(Model.Service service) @@ -211,7 +209,7 @@ namespace Microsoft.Tye.Hosting return serviceJson; } - private async Task Logs(HttpContext context) + private Task Logs(HttpContext context) { var app = context.RequestServices.GetRequiredService(); @@ -221,19 +219,17 @@ namespace Microsoft.Tye.Hosting if (!app.Services.TryGetValue(name, out var service)) { context.Response.StatusCode = 404; - await JsonSerializer.SerializeAsync(context.Response.Body, new + return JsonSerializer.SerializeAsync(context.Response.Body, new { message = $"Unknown service {name}" }, _options); - - return; } - await JsonSerializer.SerializeAsync(context.Response.Body, service.CachedLogs, _options); + return JsonSerializer.SerializeAsync(context.Response.Body, service.CachedLogs, _options); } - private async Task AllMetrics(HttpContext context) + private Task AllMetrics(HttpContext context) { var app = context.RequestServices.GetRequiredService(); @@ -258,10 +254,10 @@ namespace Microsoft.Tye.Hosting sb.AppendLine(); } - await context.Response.WriteAsync(sb.ToString()); + return context.Response.WriteAsync(sb.ToString()); } - private async Task Metrics(HttpContext context) + private Task Metrics(HttpContext context) { var app = context.RequestServices.GetRequiredService(); @@ -273,13 +269,11 @@ namespace Microsoft.Tye.Hosting if (!app.Services.TryGetValue(name, out var service)) { context.Response.StatusCode = 404; - await JsonSerializer.SerializeAsync(context.Response.Body, new + return JsonSerializer.SerializeAsync(context.Response.Body, new { message = $"Unknown service {name}" }, _options); - - return; } foreach (var replica in service.Replicas) @@ -296,7 +290,7 @@ namespace Microsoft.Tye.Hosting } } - await context.Response.WriteAsync(sb.ToString()); + return context.Response.WriteAsync(sb.ToString()); } } } diff --git a/src/tye/Program.cs b/src/tye/Program.cs index fe8542d2..454dc5c1 100644 --- a/src/tye/Program.cs +++ b/src/tye/Program.cs @@ -16,7 +16,7 @@ namespace Microsoft.Tye { static partial class Program { - public static async Task Main(string[] args) + public static Task Main(string[] args) { var command = new RootCommand() { @@ -47,7 +47,7 @@ namespace Microsoft.Tye builder.UseExceptionHandler(HandleException); var parser = builder.Build(); - return await parser.InvokeAsync(args); + return parser.InvokeAsync(args); } private static void HandleException(Exception exception, InvocationContext context) diff --git a/test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs b/test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs index a45414dd..74a2dba0 100644 --- a/test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs +++ b/test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -30,9 +30,9 @@ namespace multi_phase_dockerfile app.UseEndpoints(endpoints => { - endpoints.MapGet("/", async context => + endpoints.MapGet("/", context => { - await context.Response.WriteAsync("Hello World!"); + return context.Response.WriteAsync("Hello World!"); }); }); } diff --git a/test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs b/test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs index 7ef502a4..881cd5f3 100644 --- a/test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs +++ b/test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -30,9 +30,9 @@ namespace single_phase_dockerfile app.UseEndpoints(endpoints => { - endpoints.MapGet("/", async context => + endpoints.MapGet("/", context => { - await context.Response.WriteAsync("Hello World!"); + return context.Response.WriteAsync("Hello World!"); }); }); }