50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers;
|
|
using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
|
using ZB.MOM.WW.OtOpcUa.Core.Resilience;
|
|
|
|
public class ResilienceFormModelTests
|
|
{
|
|
[Fact]
|
|
public void Blank_form_serializes_to_null()
|
|
=> new ResilienceFormModel().ToJson().ShouldBeNull();
|
|
|
|
[Fact]
|
|
public void Partial_override_round_trips()
|
|
{
|
|
var m = new ResilienceFormModel { BulkheadMaxConcurrent = 16 };
|
|
m.Policies["Read"].TimeoutSeconds = 5;
|
|
m.Policies["Read"].RetryCount = 5;
|
|
|
|
var json = m.ToJson();
|
|
json.ShouldNotBeNull();
|
|
|
|
var back = ResilienceFormModel.FromJson(json);
|
|
back.BulkheadMaxConcurrent.ShouldBe(16);
|
|
back.Policies["Read"].TimeoutSeconds.ShouldBe(5);
|
|
back.Policies["Write"].IsEmpty.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Malformed_json_yields_empty_model()
|
|
{
|
|
var m = ResilienceFormModel.FromJson("{ not valid json");
|
|
m.BulkheadMaxConcurrent.ShouldBeNull();
|
|
m.Policies["Read"].IsEmpty.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Emitted_json_is_consumable_by_the_runtime_parser()
|
|
{
|
|
var m = new ResilienceFormModel { BulkheadMaxConcurrent = 16 };
|
|
m.Policies["Read"].TimeoutSeconds = 7;
|
|
|
|
var opts = DriverResilienceOptionsParser.ParseOrDefaults(DriverTier.B, m.ToJson(), out var diag);
|
|
diag.ShouldBeNull();
|
|
opts.BulkheadMaxConcurrent.ShouldBe(16);
|
|
opts.Resolve(DriverCapability.Read).TimeoutSeconds.ShouldBe(7);
|
|
opts.Resolve(DriverCapability.Write).RetryCount.ShouldBe(0);
|
|
}
|
|
}
|