diff --git a/tests/NATS.Client.Core2.Tests/SemVerTest.cs b/tests/NATS.Client.Core2.Tests/SemVerTest.cs new file mode 100644 index 000000000..5f82bceb7 --- /dev/null +++ b/tests/NATS.Client.Core2.Tests/SemVerTest.cs @@ -0,0 +1,23 @@ +using NATS.Client.Core.Tests; + +namespace NATS.Client.Core2.Tests; + +public class SemVerTest +{ + [Fact] + public void TestSemVerParsing() + { + var server = new ServerInfo { Version = "2.12.0" }; + var test = "2.11.0"; + Assert.True(server.VersionIsGreaterThenOrEqualTo(test)); + } + + [Fact] + public void TestSemVerMajorMinor() + { + var server = new ServerInfo { Version = "2.12.0-preview.1" }; + var test = "2.12.0"; + Assert.False(server.VersionIsGreaterThenOrEqualTo(test)); + Assert.True(server.VersionMajorMinorIsGreaterThenOrEqualTo(2, 12)); + } +} diff --git a/tests/NATS.Client.TestUtilities/NATS.Client.TestUtilities.csproj b/tests/NATS.Client.TestUtilities/NATS.Client.TestUtilities.csproj index 741e25d1a..85befff6c 100644 --- a/tests/NATS.Client.TestUtilities/NATS.Client.TestUtilities.csproj +++ b/tests/NATS.Client.TestUtilities/NATS.Client.TestUtilities.csproj @@ -11,6 +11,7 @@ + diff --git a/tests/NATS.Client.TestUtilities/Utils.cs b/tests/NATS.Client.TestUtilities/Utils.cs index 81c616317..5ddd0cbf6 100644 --- a/tests/NATS.Client.TestUtilities/Utils.cs +++ b/tests/NATS.Client.TestUtilities/Utils.cs @@ -172,20 +172,21 @@ await Retry.Until("service is found", async () => public static class ServerVersionUtils { - public static bool ServerVersionIsGreaterThenOrEqualTo(this NatsConnection nats, int major, int minor) + public static bool VersionMajorMinorIsGreaterThenOrEqualTo(this INatsServerInfo? serverInfo, int major, int minor) { - var m = Regex.Match(nats.ServerInfo!.Version, @"^(\d+)\.(\d+)"); - if (m.Success && m.Groups.Count == 3) - { - if (int.TryParse(m.Groups[1].Value, out var serverMajor) && int.TryParse(m.Groups[2].Value, out var serverMinor)) - { - if (serverMajor > major) - return true; - if (serverMajor == major && serverMinor >= minor) - return true; - } - } + var testVersion = new SemanticVersioning.Version($"{major}.{minor}.0"); + var serverVersion = new SemanticVersioning.Version(serverInfo!.Version); + if (serverVersion.Major > testVersion.Major) + return true; + if (serverVersion.Major < testVersion.Major) + return false; + return serverVersion.Minor >= testVersion.Minor; + } - return false; + public static bool VersionIsGreaterThenOrEqualTo(this INatsServerInfo? serverInfo, string version) + { + var testVersion = new SemanticVersioning.Version(version); + var serverVersion = new SemanticVersioning.Version(serverInfo!.Version); + return serverVersion >= testVersion; } } diff --git a/tests/NATS.Slow.Tests/ClusterTests2.cs b/tests/NATS.Slow.Tests/ClusterTests2.cs index 654fcbc6c..4846f6369 100644 --- a/tests/NATS.Slow.Tests/ClusterTests2.cs +++ b/tests/NATS.Slow.Tests/ClusterTests2.cs @@ -91,7 +91,7 @@ public async Task Check_JetStream_cluster_related_fields() Assert.NotNull(s1.Info.Cluster.RaftGroup); Assert.True(s1.Info.Cluster.RaftGroup.Length > 0); - if (nats.ServerVersionIsGreaterThenOrEqualTo(2, 12)) + if (nats.ServerInfo.VersionMajorMinorIsGreaterThenOrEqualTo(2, 12)) { var tolerance = TimeSpan.FromSeconds(10); Assert.True(s1.Info.Cluster.LeaderSince > started - tolerance);