From c4c0f8612f5a5f01aa11b46d5e7efa401a55dd0d Mon Sep 17 00:00:00 2001 From: atakavci Date: Thu, 16 Jan 2025 15:04:40 +0300 Subject: [PATCH] initialize and use the date from a single RedisFixture instance for test env --- .../NRedisStack.Tests/SkipIfRedisAttribute.cs | 103 +++++++++++------- 1 file changed, 61 insertions(+), 42 deletions(-) diff --git a/tests/NRedisStack.Tests/SkipIfRedisAttribute.cs b/tests/NRedisStack.Tests/SkipIfRedisAttribute.cs index eae76c4d..6f443eb4 100644 --- a/tests/NRedisStack.Tests/SkipIfRedisAttribute.cs +++ b/tests/NRedisStack.Tests/SkipIfRedisAttribute.cs @@ -17,10 +17,27 @@ public enum Is [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public class SkipIfRedisAttribute : FactAttribute { + private class RedisFixtureData + { + public RedisFixtureData() + { + using (var redisFixture = new RedisFixture()) + { + isEnterprise = redisFixture.isEnterprise; + isOSSCluster = redisFixture.isOSSCluster; + serverVersion = redisFixture.Redis.GetServer(redisFixture.Redis.GetEndPoints()[0]).Version; + } + } + + public readonly bool isEnterprise; + public readonly bool isOSSCluster; + public readonly Version serverVersion; + } private readonly string _targetVersion; private readonly Comparison _comparison; private readonly List _environments = new List(); + private static RedisFixtureData _redisFixtureData; private static Version serverVersion = null; public SkipIfRedisAttribute( @@ -64,61 +81,63 @@ public override string? Skip { string skipReason = ""; bool skipped = false; - using (RedisFixture redisFixture = new RedisFixture()) + if (_redisFixtureData == null) { - foreach (var environment in _environments) - { - switch (environment) - { - case Is.OSSCluster: - if (redisFixture.isOSSCluster) - { - skipReason = skipReason + " Redis server is OSS cluster."; - skipped = true; - } - break; - - case Is.Standalone: - if (!redisFixture.isOSSCluster) - { - skipReason = skipReason + " Redis server is not OSS cluster."; - skipped = true; - } - break; - - case Is.Enterprise: - if (redisFixture.isEnterprise) - { - skipReason = skipReason + " Redis Enterprise environment."; - skipped = true; - } - break; - } - } - // Version check (if Is.Standalone/Is.OSSCluster is set then ) - - serverVersion = serverVersion ?? redisFixture.Redis.GetServer(redisFixture.Redis.GetEndPoints()[0]).Version; - var targetVersion = new Version(_targetVersion); - int comparisonResult = serverVersion.CompareTo(targetVersion); + _redisFixtureData = new RedisFixtureData(); + } - switch (_comparison) + foreach (var environment in _environments) + { + switch (environment) { - case Comparison.LessThan: - if (comparisonResult < 0) + case Is.OSSCluster: + if (_redisFixtureData.isOSSCluster) { - skipReason = skipReason + $" Redis server version ({serverVersion}) is less than {_targetVersion}."; + skipReason = skipReason + " Redis server is OSS cluster."; skipped = true; } break; - case Comparison.GreaterThanOrEqual: - if (comparisonResult >= 0) + + case Is.Standalone: + if (!_redisFixtureData.isOSSCluster) { - skipReason = skipReason + $" Redis server version ({serverVersion}) is greater than or equal to {_targetVersion}."; + skipReason = skipReason + " Redis server is not OSS cluster."; + skipped = true; + } + break; + + case Is.Enterprise: + if (_redisFixtureData.isEnterprise) + { + skipReason = skipReason + " Redis Enterprise environment."; skipped = true; } break; } } + // Version check (if Is.Standalone/Is.OSSCluster is set then ) + + serverVersion = _redisFixtureData.serverVersion; + var targetVersion = new Version(_targetVersion); + int comparisonResult = serverVersion.CompareTo(targetVersion); + + switch (_comparison) + { + case Comparison.LessThan: + if (comparisonResult < 0) + { + skipReason = skipReason + $" Redis server version ({serverVersion}) is less than {_targetVersion}."; + skipped = true; + } + break; + case Comparison.GreaterThanOrEqual: + if (comparisonResult >= 0) + { + skipReason = skipReason + $" Redis server version ({serverVersion}) is greater than or equal to {_targetVersion}."; + skipped = true; + } + break; + } if (skipped) return "Test skipped, because:" + skipReason;