Skip to content

Commit 6932018

Browse files
committed
Make FileSystemWatcherTests.waitsForPollingInterval more robust
The intent of the test is to: 1. Make a change 2. Sleep for long enough for that change to be picked up 3. Make another change 4. Stop that watcher after 1 further scan has been performed 5. Assert that a further scan was performed by checking that two separate sets of changes (step 1 and step 3) have been picked up Previously, step 2 relied on simply sleeping for a period of time longer than the polling interval. In reality, the polling interval is only a minimum time between scans and the actual time between them depends on thread scheduling, GC pauses, etc. This lead to the test failing intermittently if the scan didn't happen in a timely manner. This commit removes the sleep and replaces it with a while loop that waits for first change to be picked up. This ensures that the second change will be detected separately from the first and that two separate change sets should always be available once the watcher has stopped. See gh-7782
1 parent 7c2664f commit 6932018

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

spring-boot-devtools/src/test/java/org/springframework/boot/devtools/filewatch/FileSystemWatcherTests.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2016 the original author or authors.
2+
* Copyright 2012-2017 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -155,10 +155,12 @@ public void addNestedFile() throws Exception {
155155

156156
@Test
157157
public void waitsForPollingInterval() throws Exception {
158-
setupWatcher(100, 1);
158+
setupWatcher(10, 1);
159159
File folder = startWithNewFolder();
160160
touch(new File(folder, "test1.txt"));
161-
Thread.sleep(200);
161+
while (this.changes.size() != 1) {
162+
Thread.sleep(10);
163+
}
162164
touch(new File(folder, "test2.txt"));
163165
this.watcher.stopAfter(1);
164166
assertThat(this.changes.size()).isEqualTo(2);

0 commit comments

Comments
 (0)