Skip to content

Commit 924492d

Browse files
committed
Fix test: don't rely on exact numbers of events
1 parent b19cdaf commit 924492d

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

src/test/java/engineering/swat/watch/SingleDirectoryTests.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,8 @@ void indexingRescanOnOverflow() throws IOException, InterruptedException {
172172
// inside a watch. I've added some comments below to make it make sense.
173173

174174
var directory = testDir.getTestDirectory();
175-
176175
var semaphore = new Semaphore(0);
176+
177177
var nCreated = new AtomicInteger();
178178
var nModified = new AtomicInteger();
179179
var nDeleted = new AtomicInteger();
@@ -225,7 +225,7 @@ void indexingRescanOnOverflow() throws IOException, InterruptedException {
225225

226226
var overflow = new WatchEvent(WatchEvent.Kind.OVERFLOW, directory);
227227
((EventHandlingWatch) watch).handleEvent(overflow);
228-
Thread.sleep(TestHelper.LONG_WAIT.toMillis());
228+
Thread.sleep(TestHelper.NORMAL_WAIT.toMillis());
229229
// At this point, the current thread has presumably slept long
230230
// enough for the `OVERFLOW` event to have been handled by the
231231
// rescanner. This means that synthetic events must have been issued
@@ -237,11 +237,16 @@ void indexingRescanOnOverflow() throws IOException, InterruptedException {
237237
semaphore.release();
238238

239239
await("Overflow should trigger created events")
240-
.until(nCreated::get, Predicate.isEqual(2)); // 1 synthetic event + 1 regular event
240+
.until(nCreated::get, n -> n >= 2); // 1 synthetic event + >=1 regular event
241241
await("Overflow should trigger modified events")
242-
.until(nModified::get, Predicate.isEqual(4)); // 2 synthetic events + 2 regular events
242+
.until(nModified::get, n -> n >= 4); // 2 synthetic events + >=2 regular events
243243
await("Overflow should trigger deleted events")
244-
.until(nDeleted::get, Predicate.isEqual(2)); // 1 synthetic event + 1 regular event
244+
.until(nDeleted::get, n -> n >= 2); // 1 synthetic event + >=1 regular event
245+
246+
// Reset counters for next phase of the test
247+
nCreated.set(0);
248+
nModified.set(0);
249+
nDeleted.set(0);
245250

246251
// Let's do some more file operations, trigger another `OVERFLOW`
247252
// event, and observe that synthetic events *aren't* issued this
@@ -252,21 +257,25 @@ void indexingRescanOnOverflow() throws IOException, InterruptedException {
252257
Files.delete(directory.resolve("d.txt"));
253258

254259
await("File create should trigger regular created event")
255-
.until(nCreated::get, Predicate.isEqual(3));
260+
.until(nCreated::get, n -> n >= 1);
256261
await("File write should trigger regular modified event")
257-
.until(nModified::get, Predicate.isEqual(5));
262+
.until(nModified::get, n -> n >= 1);
258263
await("File delete should trigger regular deleted event")
259-
.until(nDeleted::get, Predicate.isEqual(3));
264+
.until(nDeleted::get, n -> n >= 1);
265+
266+
var nCreatedBeforeOverflow = nCreated.get();
267+
var nModifiedBeforeOverflow = nModified.get();
268+
var nDeletedBeforeOverflow = nDeleted.get();
260269

261270
((EventHandlingWatch) watch).handleEvent(overflow);
262271
Thread.sleep(TestHelper.NORMAL_WAIT.toMillis());
263272

264273
await("Overflow shouldn't trigger synthetic created event after file create (and index updated)")
265-
.until(nCreated::get, Predicate.isEqual(3));
274+
.until(nCreated::get, Predicate.isEqual(nCreatedBeforeOverflow));
266275
await("Overflow shouldn't trigger synthetic modified event after file write (and index updated)")
267-
.until(nModified::get, Predicate.isEqual(5));
276+
.until(nModified::get, Predicate.isEqual(nModifiedBeforeOverflow));
268277
await("Overflow shouldn't trigger synthetic deleted event after file delete (and index updated)")
269-
.until(nDeleted::get, Predicate.isEqual(3));
278+
.until(nDeleted::get, Predicate.isEqual(nDeletedBeforeOverflow));
270279
}
271280
}
272281
}

0 commit comments

Comments
 (0)