78 lines
2.7 KiB
C#
78 lines
2.7 KiB
C#
using Shouldly;
|
|
using ZB.MOM.NatsNet.Server;
|
|
|
|
namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;
|
|
|
|
public sealed partial class RouteHandlerTests
|
|
{
|
|
[Fact] // T:2854
|
|
public void RouteCompressionAuto_ShouldSucceed()
|
|
{
|
|
var errors = new List<Exception>();
|
|
var warnings = new List<Exception>();
|
|
|
|
var options = new ServerOptions();
|
|
var parseError = ServerOptions.ParseCluster(
|
|
new Dictionary<string, object?>
|
|
{
|
|
["name"] = "local",
|
|
["compression"] = new Dictionary<string, object?>
|
|
{
|
|
["mode"] = CompressionModes.S2Auto,
|
|
["rtt_thresholds"] = new List<object?> { "100ms", "200ms", "300ms" },
|
|
},
|
|
},
|
|
options,
|
|
errors,
|
|
warnings);
|
|
|
|
parseError.ShouldBeNull();
|
|
errors.ShouldBeEmpty();
|
|
options.Cluster.Compression.Mode.ShouldBe(CompressionModes.S2Auto);
|
|
options.Cluster.Compression.RttThresholds.Count.ShouldBe(3);
|
|
options.Cluster.Compression.RttThresholds[0].ShouldBe(TimeSpan.FromMilliseconds(100));
|
|
options.Cluster.Compression.RttThresholds[1].ShouldBe(TimeSpan.FromMilliseconds(200));
|
|
options.Cluster.Compression.RttThresholds[2].ShouldBe(TimeSpan.FromMilliseconds(300));
|
|
|
|
options = new ServerOptions();
|
|
errors.Clear();
|
|
warnings.Clear();
|
|
parseError = ServerOptions.ParseCluster(
|
|
new Dictionary<string, object?>
|
|
{
|
|
["compression"] = new Dictionary<string, object?>
|
|
{
|
|
["mode"] = CompressionModes.S2Auto,
|
|
["rtt_thresholds"] = new List<object?> { "0ms", "100ms", "0ms", "300ms" },
|
|
},
|
|
},
|
|
options,
|
|
errors,
|
|
warnings);
|
|
|
|
parseError.ShouldBeNull();
|
|
errors.ShouldBeEmpty();
|
|
options.Cluster.Compression.RttThresholds.Count.ShouldBe(4);
|
|
options.Cluster.Compression.RttThresholds[0].ShouldBe(TimeSpan.Zero);
|
|
options.Cluster.Compression.RttThresholds[1].ShouldBe(TimeSpan.FromMilliseconds(100));
|
|
options.Cluster.Compression.RttThresholds[2].ShouldBe(TimeSpan.Zero);
|
|
options.Cluster.Compression.RttThresholds[3].ShouldBe(TimeSpan.FromMilliseconds(300));
|
|
|
|
options = new ServerOptions();
|
|
errors.Clear();
|
|
warnings.Clear();
|
|
parseError = ServerOptions.ParseCluster(
|
|
new Dictionary<string, object?>
|
|
{
|
|
["compression"] = false,
|
|
},
|
|
options,
|
|
errors,
|
|
warnings);
|
|
|
|
parseError.ShouldBeNull();
|
|
errors.ShouldBeEmpty();
|
|
options.Cluster.Compression.Mode.ShouldBe(CompressionModes.Off);
|
|
}
|
|
}
|