Skip to content

Commit c4c0f86

Browse files
committed
initialize and use the date from a single RedisFixture instance for test env
1 parent 00c7895 commit c4c0f86

File tree

1 file changed

+61
-42
lines changed

1 file changed

+61
-42
lines changed

tests/NRedisStack.Tests/SkipIfRedisAttribute.cs

Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,27 @@ public enum Is
1717
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
1818
public class SkipIfRedisAttribute : FactAttribute
1919
{
20+
private class RedisFixtureData
21+
{
22+
public RedisFixtureData()
23+
{
24+
using (var redisFixture = new RedisFixture())
25+
{
26+
isEnterprise = redisFixture.isEnterprise;
27+
isOSSCluster = redisFixture.isOSSCluster;
28+
serverVersion = redisFixture.Redis.GetServer(redisFixture.Redis.GetEndPoints()[0]).Version;
29+
}
30+
}
31+
32+
public readonly bool isEnterprise;
33+
public readonly bool isOSSCluster;
34+
public readonly Version serverVersion;
35+
}
2036
private readonly string _targetVersion;
2137
private readonly Comparison _comparison;
2238
private readonly List<Is> _environments = new List<Is>();
2339

40+
private static RedisFixtureData _redisFixtureData;
2441
private static Version serverVersion = null;
2542

2643
public SkipIfRedisAttribute(
@@ -64,61 +81,63 @@ public override string? Skip
6481
{
6582
string skipReason = "";
6683
bool skipped = false;
67-
using (RedisFixture redisFixture = new RedisFixture())
84+
if (_redisFixtureData == null)
6885
{
69-
foreach (var environment in _environments)
70-
{
71-
switch (environment)
72-
{
73-
case Is.OSSCluster:
74-
if (redisFixture.isOSSCluster)
75-
{
76-
skipReason = skipReason + " Redis server is OSS cluster.";
77-
skipped = true;
78-
}
79-
break;
80-
81-
case Is.Standalone:
82-
if (!redisFixture.isOSSCluster)
83-
{
84-
skipReason = skipReason + " Redis server is not OSS cluster.";
85-
skipped = true;
86-
}
87-
break;
88-
89-
case Is.Enterprise:
90-
if (redisFixture.isEnterprise)
91-
{
92-
skipReason = skipReason + " Redis Enterprise environment.";
93-
skipped = true;
94-
}
95-
break;
96-
}
97-
}
98-
// Version check (if Is.Standalone/Is.OSSCluster is set then )
99-
100-
serverVersion = serverVersion ?? redisFixture.Redis.GetServer(redisFixture.Redis.GetEndPoints()[0]).Version;
101-
var targetVersion = new Version(_targetVersion);
102-
int comparisonResult = serverVersion.CompareTo(targetVersion);
86+
_redisFixtureData = new RedisFixtureData();
87+
}
10388

104-
switch (_comparison)
89+
foreach (var environment in _environments)
90+
{
91+
switch (environment)
10592
{
106-
case Comparison.LessThan:
107-
if (comparisonResult < 0)
93+
case Is.OSSCluster:
94+
if (_redisFixtureData.isOSSCluster)
10895
{
109-
skipReason = skipReason + $" Redis server version ({serverVersion}) is less than {_targetVersion}.";
96+
skipReason = skipReason + " Redis server is OSS cluster.";
11097
skipped = true;
11198
}
11299
break;
113-
case Comparison.GreaterThanOrEqual:
114-
if (comparisonResult >= 0)
100+
101+
case Is.Standalone:
102+
if (!_redisFixtureData.isOSSCluster)
115103
{
116-
skipReason = skipReason + $" Redis server version ({serverVersion}) is greater than or equal to {_targetVersion}.";
104+
skipReason = skipReason + " Redis server is not OSS cluster.";
105+
skipped = true;
106+
}
107+
break;
108+
109+
case Is.Enterprise:
110+
if (_redisFixtureData.isEnterprise)
111+
{
112+
skipReason = skipReason + " Redis Enterprise environment.";
117113
skipped = true;
118114
}
119115
break;
120116
}
121117
}
118+
// Version check (if Is.Standalone/Is.OSSCluster is set then )
119+
120+
serverVersion = _redisFixtureData.serverVersion;
121+
var targetVersion = new Version(_targetVersion);
122+
int comparisonResult = serverVersion.CompareTo(targetVersion);
123+
124+
switch (_comparison)
125+
{
126+
case Comparison.LessThan:
127+
if (comparisonResult < 0)
128+
{
129+
skipReason = skipReason + $" Redis server version ({serverVersion}) is less than {_targetVersion}.";
130+
skipped = true;
131+
}
132+
break;
133+
case Comparison.GreaterThanOrEqual:
134+
if (comparisonResult >= 0)
135+
{
136+
skipReason = skipReason + $" Redis server version ({serverVersion}) is greater than or equal to {_targetVersion}.";
137+
skipped = true;
138+
}
139+
break;
140+
}
122141

123142
if (skipped)
124143
return "Test skipped, because:" + skipReason;

0 commit comments

Comments
 (0)