| File: KubernetesProbesOptionsValidatorTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.Diagnostics.Probes.Tests\Microsoft.Extensions.Diagnostics.Probes.Tests.csproj (Microsoft.Extensions.Diagnostics.Probes.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Xunit; namespace Microsoft.Extensions.Diagnostics.Probes.Test; public class KubernetesProbesOptionsValidatorTests { [Fact] public void Validator_DefaultValues_Succeeds() { var options = new KubernetesProbesOptions(); ValidateOptionsResult result = new KubernetesProbesOptionsValidator().Validate(nameof(options), options); Assert.True(result.Succeeded); } [Fact] public void Validator_GivenValidOptions_Succeeds() { var options = new KubernetesProbesOptions(); options.LivenessProbe.TcpPort = 2305; options.StartupProbe.TcpPort = 2306; options.ReadinessProbe.TcpPort = 2307; ValidateOptionsResult result = new KubernetesProbesOptionsValidator().Validate(nameof(options), options); Assert.True(result.Succeeded); } [Fact] public void Validator_GivenInvalidOptions_Fails() { var options = new KubernetesProbesOptions(); options.LivenessProbe.TcpPort = 2305; options.StartupProbe.TcpPort = 2305; options.ReadinessProbe.TcpPort = 2307; var validator = new KubernetesProbesOptionsValidator(); ValidateOptionsResult result = validator.Validate(nameof(options), options); Assert.True(result.Failed); options.LivenessProbe.TcpPort = 2305; options.StartupProbe.TcpPort = 2306; options.ReadinessProbe.TcpPort = 2305; result = validator.Validate(nameof(options), options); Assert.True(result.Failed); options.LivenessProbe.TcpPort = 2305; options.StartupProbe.TcpPort = 2306; options.ReadinessProbe.TcpPort = 2306; result = validator.Validate(nameof(options), options); Assert.True(result.Failed); options.LivenessProbe.TcpPort = 2305; options.StartupProbe.TcpPort = 2305; options.ReadinessProbe.TcpPort = 2305; result = validator.Validate(nameof(options), options); Assert.True(result.Failed); } [Fact] public async Task Validator_WhenHostStarts_Succeeds() { using IHost host = CreateHost(services => { services.AddKubernetesProbes(options => { options.LivenessProbe.TcpPort = 22305; options.StartupProbe.TcpPort = 22306; options.ReadinessProbe.TcpPort = 22307; }).AddHealthChecks(); }); try { host.Start(); await host.StopAsync(); } catch (OptionsValidationException ex) { Assert.Fail("Unexpected OptionsValidationException: " + ex.Message); } catch (Exception ex) { Assert.Fail("Unexpected exception: " + ex.Message); throw; } } [Fact] public void Validator_WhenHostStarts_Fails() { Action action = () => { using IHost host = CreateHost(services => { services.AddKubernetesProbes(options => { options.LivenessProbe.TcpPort = 22305; options.StartupProbe.TcpPort = 22305; options.ReadinessProbe.TcpPort = 22307; }).AddHealthChecks(); }); host.Start(); }; Assert.Throws<OptionsValidationException>(action); } private static IHost CreateHost(Action<IServiceCollection> configureServices) { return Host.CreateDefaultBuilder() .ConfigureServices(configureServices) .Build(); } }