Skip to content

Commit 5a23109

Browse files
committed
Start to remove shared class state to fix test flakiness
1 parent 714c202 commit 5a23109

File tree

7 files changed

+213
-148
lines changed

7 files changed

+213
-148
lines changed

‎src/LightningDB.Tests/CursorTests.cs‎

Lines changed: 79 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ namespace LightningDB.Tests;
77

88
public class CursorTests : TestBase
99
{
10-
public CursorTests()
11-
{
12-
_env.Open();
13-
}
14-
1510
private static byte[][] PopulateCursorValues(LightningCursor cursor, int count = 5, string keyPrefix = "key")
1611
{
1712
var keys = Enumerable.Range(1, count)
@@ -41,13 +36,17 @@ private static byte[][] PopulateMultipleCursorValues(LightningCursor cursor, str
4136
[Test]
4237
public void CursorShouldBeCreated()
4338
{
44-
_env.RunCursorScenario((_, _, c) => c.ShouldNotBeNull());
39+
using var env = CreateEnvironment();
40+
env.Open();
41+
env.RunCursorScenario((_, _, c) => c.ShouldNotBeNull());
4542
}
4643

4744
[Test]
4845
public void CursorShouldPutValues()
4946
{
50-
_env.RunCursorScenario((tx, _, c) =>
47+
using var env = CreateEnvironment();
48+
env.Open();
49+
env.RunCursorScenario((tx, _, c) =>
5150
{
5251
PopulateCursorValues(c);
5352
var result = tx.Commit();
@@ -58,7 +57,9 @@ public void CursorShouldPutValues()
5857
[Test]
5958
public void CursorShouldSetSpanKey()
6059
{
61-
_env.RunCursorScenario((_, _, c) =>
60+
using var env = CreateEnvironment();
61+
env.Open();
62+
env.RunCursorScenario((_, _, c) =>
6263
{
6364
var keys = PopulateCursorValues(c);
6465
var firstKey = keys.First();
@@ -72,7 +73,9 @@ public void CursorShouldSetSpanKey()
7273
[Test]
7374
public void CursorShouldMoveToLast()
7475
{
75-
_env.RunCursorScenario((_, _, c) =>
76+
using var env = CreateEnvironment();
77+
env.Open();
78+
env.RunCursorScenario((_, _, c) =>
7679
{
7780
var keys = PopulateCursorValues(c);
7881
var lastKey = keys.Last();
@@ -85,7 +88,9 @@ public void CursorShouldMoveToLast()
8588
[Test]
8689
public void CursorShouldMoveToFirst()
8790
{
88-
_env.RunCursorScenario((_, _, c) =>
91+
using var env = CreateEnvironment();
92+
env.Open();
93+
env.RunCursorScenario((_, _, c) =>
8994
{
9095
var keys = PopulateCursorValues(c);
9196
var firstKey = keys.First();
@@ -98,7 +103,9 @@ public void CursorShouldMoveToFirst()
98103
[Test]
99104
public void ShouldIterateThroughCursor()
100105
{
101-
_env.RunCursorScenario((tx, db, c) =>
106+
using var env = CreateEnvironment();
107+
env.Open();
108+
env.RunCursorScenario((tx, db, c) =>
102109
{
103110
var keys = PopulateCursorValues(c);
104111
using var c2 = tx.CreateCursor(db);
@@ -115,7 +122,9 @@ public void ShouldIterateThroughCursor()
115122
[Test]
116123
public void CursorShouldDeleteElements()
117124
{
118-
_env.RunCursorScenario((tx, db, c) =>
125+
using var env = CreateEnvironment();
126+
env.Open();
127+
env.RunCursorScenario((tx, db, c) =>
119128
{
120129
var keys = PopulateCursorValues(c).Take(2).ToArray();
121130
for (var i = 0; i < 2; ++i)
@@ -132,14 +141,18 @@ public void CursorShouldDeleteElements()
132141
[Test]
133142
public void ShouldPutMultiple()
134143
{
135-
_env.RunCursorScenario((_, _, c) => { PopulateMultipleCursorValues(c); },
144+
using var env = CreateEnvironment();
145+
env.Open();
146+
env.RunCursorScenario((_, _, c) => { PopulateMultipleCursorValues(c); },
136147
DatabaseOpenFlags.DuplicatesFixed | DatabaseOpenFlags.Create);
137148
}
138149

139150
[Test]
140151
public void ShouldGetMultiple()
141152
{
142-
_env.RunCursorScenario((_, _, c) =>
153+
using var env = CreateEnvironment();
154+
env.Open();
155+
env.RunCursorScenario((_, _, c) =>
143156
{
144157
var key = "TestKey"u8.ToArray();
145158
var keys = PopulateMultipleCursorValues(c);
@@ -154,7 +167,9 @@ public void ShouldGetMultiple()
154167
[Test]
155168
public void ShouldGetNextMultiple()
156169
{
157-
_env.RunCursorScenario((_, _, c) =>
170+
using var env = CreateEnvironment();
171+
env.Open();
172+
env.RunCursorScenario((_, _, c) =>
158173
{
159174
var key = "TestKey"u8.ToArray();
160175
var keys = PopulateMultipleCursorValues(c);
@@ -168,7 +183,9 @@ public void ShouldGetNextMultiple()
168183
[Test]
169184
public void ShouldAdvanceKeyToClosestWhenKeyNotFound()
170185
{
171-
_env.RunCursorScenario((_, _, c) =>
186+
using var env = CreateEnvironment();
187+
env.Open();
188+
env.RunCursorScenario((_, _, c) =>
172189
{
173190
var expected = PopulateCursorValues(c).First();
174191
var result = c.Set("key"u8.ToArray());
@@ -181,7 +198,9 @@ public void ShouldAdvanceKeyToClosestWhenKeyNotFound()
181198
[Test]
182199
public void ShouldSetKeyAndGet()
183200
{
184-
_env.RunCursorScenario((_, _, c) =>
201+
using var env = CreateEnvironment();
202+
env.Open();
203+
env.RunCursorScenario((_, _, c) =>
185204
{
186205
var expected = PopulateCursorValues(c).ElementAt(2);
187206
var result = c.SetKey(expected);
@@ -193,7 +212,9 @@ public void ShouldSetKeyAndGet()
193212
[Test]
194213
public void ShouldSetKeyAndGetWithSpan()
195214
{
196-
_env.RunCursorScenario((_, _, c) =>
215+
using var env = CreateEnvironment();
216+
env.Open();
217+
env.RunCursorScenario((_, _, c) =>
197218
{
198219
var expected = PopulateCursorValues(c).ElementAt(2);
199220
var result = c.SetKey(expected.AsSpan());
@@ -205,7 +226,9 @@ public void ShouldSetKeyAndGetWithSpan()
205226
[Test]
206227
public void ShouldGetBoth()
207228
{
208-
_env.RunCursorScenario((_, _, c) =>
229+
using var env = CreateEnvironment();
230+
env.Open();
231+
env.RunCursorScenario((_, _, c) =>
209232
{
210233
var expected = PopulateCursorValues(c).ElementAt(2);
211234
var result = c.GetBoth(expected, expected);
@@ -216,7 +239,9 @@ public void ShouldGetBoth()
216239
[Test]
217240
public void ShouldGetBothWithSpan()
218241
{
219-
_env.RunCursorScenario((_, _, c) =>
242+
using var env = CreateEnvironment();
243+
env.Open();
244+
env.RunCursorScenario((_, _, c) =>
220245
{
221246
var expected = PopulateCursorValues(c).ElementAt(2);
222247
var expectedSpan = expected.AsSpan();
@@ -228,7 +253,9 @@ public void ShouldGetBothWithSpan()
228253
[Test]
229254
public void ShouldMoveToPrevious()
230255
{
231-
_env.RunCursorScenario((_, _, c) =>
256+
using var env = CreateEnvironment();
257+
env.Open();
258+
env.RunCursorScenario((_, _, c) =>
232259
{
233260
var expected = PopulateCursorValues(c).ElementAt(2);
234261
var expectedSpan = expected.AsSpan();
@@ -241,7 +268,9 @@ public void ShouldMoveToPrevious()
241268
[Test]
242269
public void ShouldSetRangeWithSpan()
243270
{
244-
_env.RunCursorScenario((_, _, c) =>
271+
using var env = CreateEnvironment();
272+
env.Open();
273+
env.RunCursorScenario((_, _, c) =>
245274
{
246275
var values = PopulateCursorValues(c);
247276
var firstAfter = values[0].AsSpan();
@@ -255,7 +284,9 @@ public void ShouldSetRangeWithSpan()
255284
[Test]
256285
public void ShouldGetBothRange()
257286
{
258-
_env.RunCursorScenario((_, _, c) =>
287+
using var env = CreateEnvironment();
288+
env.Open();
289+
env.RunCursorScenario((_, _, c) =>
259290
{
260291
var key = "TestKey"u8.ToArray();
261292
var values = PopulateMultipleCursorValues(c);
@@ -269,7 +300,9 @@ public void ShouldGetBothRange()
269300
[Test]
270301
public void ShouldGetBothRangeWithSpan()
271302
{
272-
_env.RunCursorScenario((_, _, c) =>
303+
using var env = CreateEnvironment();
304+
env.Open();
305+
env.RunCursorScenario((_, _, c) =>
273306
{
274307
var key = "TestKey"u8.ToArray().AsSpan();
275308
var values = PopulateMultipleCursorValues(c);
@@ -283,7 +316,9 @@ public void ShouldGetBothRangeWithSpan()
283316
[Test]
284317
public void ShouldMoveToFirstDuplicate()
285318
{
286-
_env.RunCursorScenario((_, _, c) =>
319+
using var env = CreateEnvironment();
320+
env.Open();
321+
env.RunCursorScenario((_, _, c) =>
287322
{
288323
var key = "TestKey"u8.ToArray();
289324
var values = PopulateMultipleCursorValues(c);
@@ -298,7 +333,9 @@ public void ShouldMoveToFirstDuplicate()
298333
[Test]
299334
public void ShouldMoveToLastDuplicate()
300335
{
301-
_env.RunCursorScenario((_, _, c) =>
336+
using var env = CreateEnvironment();
337+
env.Open();
338+
env.RunCursorScenario((_, _, c) =>
302339
{
303340
var key = "TestKey"u8.ToArray();
304341
var values = PopulateMultipleCursorValues(c);
@@ -312,7 +349,9 @@ public void ShouldMoveToLastDuplicate()
312349
[Test]
313350
public void ShouldMoveToNextNoDuplicate()
314351
{
315-
_env.RunCursorScenario((_, _, c) =>
352+
using var env = CreateEnvironment();
353+
env.Open();
354+
env.RunCursorScenario((_, _, c) =>
316355
{
317356
var values = PopulateMultipleCursorValues(c);
318357
var result = c.NextNoDuplicate();
@@ -324,7 +363,9 @@ public void ShouldMoveToNextNoDuplicate()
324363
[Test]
325364
public void ShouldRenewSameTransaction()
326365
{
327-
_env.RunCursorScenario((_, _, c) =>
366+
using var env = CreateEnvironment();
367+
env.Open();
368+
env.RunCursorScenario((_, _, c) =>
328369
{
329370
var result = c.Renew();
330371
result.ShouldBe(MDBResultCode.Success);
@@ -334,7 +375,9 @@ public void ShouldRenewSameTransaction()
334375
[Test]
335376
public void ShouldDeleteDuplicates()
336377
{
337-
_env.RunCursorScenario((_, _, c) =>
378+
using var env = CreateEnvironment();
379+
env.Open();
380+
env.RunCursorScenario((_, _, c) =>
338381
{
339382
var key = "TestKey"u8.ToArray();
340383
PopulateMultipleCursorValues(c);
@@ -373,19 +416,23 @@ void ReproduceCoreIteration(LightningEnvironment environment, LightningDatabase
373416
tx.Commit().ThrowOnError();
374417
}
375418

376-
using var db = OpenDatabase(_env);
419+
using var env = CreateEnvironment();
420+
env.Open();
421+
using var db = OpenDatabase(env);
377422

378423
for (var i = 0; i < 5000; i++)
379424
{
380-
ReproduceCoreIteration(_env, db);
425+
ReproduceCoreIteration(env, db);
381426
}
382427
true.ShouldBeTrue("Code would be unreachable otherwise.");
383428
}
384429

385430
[Test]
386431
public void CountCursor()
387432
{
388-
_env.RunCursorScenario((_, _, c) =>
433+
using var env = CreateEnvironment();
434+
env.Open();
435+
env.RunCursorScenario((_, _, c) =>
389436
{
390437
var key = "TestKey"u8.ToArray();
391438
var keys = PopulateMultipleCursorValues(c);

‎src/LightningDB.Tests/DatabaseIOTests.cs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ namespace LightningDB.Tests;
44

55
public class DatabaseIOTests : TestBase
66
{
7+
private readonly LightningEnvironment _env;
78
private readonly LightningTransaction _txn;
89
private readonly LightningDatabase _db;
910

10-
public DatabaseIOTests() : base(false)
11+
public DatabaseIOTests()
1112
{
1213
_env = CreateEnvironment(TempPath(), new EnvironmentConfiguration { MaxDatabases = 2});
1314
_env.Open();
@@ -21,6 +22,7 @@ public void CleanupDb()
2122
{
2223
_txn.Dispose();
2324
_db.Dispose();
25+
_env.Dispose();
2426
}
2527

2628
[Test]

0 commit comments

Comments
 (0)