This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
The following commit(s) were added to refs/heads/master by this push:
new ec80f23 Rework waiting for events to fix random failures.
ec80f23 is described below
commit ec80f23ac8d94411b2ced2e9d2062505690fa42f
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Jul 16 22:06:41 2021 -0400
Rework waiting for events to fix random failures.
---
.../commons/vfs2/impl/DefaultFileMonitorTest.java | 54 +++++++++++-----------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git
a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileMonitorTest.java
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileMonitorTest.java
index cfb67c2..e31774c 100644
---
a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileMonitorTest.java
+++
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileMonitorTest.java
@@ -193,7 +193,7 @@ public class DefaultFileMonitorTest {
@After
public void tearDown() {
- //fileSystemManager.close();
+ // fileSystemManager.close();
deleteTestFileIfPresent();
}
@@ -231,15 +231,11 @@ public class DefaultFileMonitorTest {
status = null;
Thread.sleep(DELAY_MILLIS * 5);
testFile.delete();
- Thread.sleep(DELAY_MILLIS * 30);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event " + status, Status.DELETED,
status);
+ waitFor(Status.DELETED, DELAY_MILLIS * 30);
status = null;
Thread.sleep(DELAY_MILLIS * 5);
writeToFile(testFile);
- Thread.sleep(DELAY_MILLIS * 30);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event " + status, Status.CREATED,
status);
+ waitFor(Status.CREATED, DELAY_MILLIS * 30);
} finally {
monitor.stop();
}
@@ -257,8 +253,7 @@ public class DefaultFileMonitorTest {
try {
writeToFile(testFile);
Thread.sleep(DELAY_MILLIS * 5);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event", Status.CREATED, status);
+ waitFor(Status.CREATED, DELAY_MILLIS * 5);
} finally {
monitor.stop();
}
@@ -276,9 +271,7 @@ public class DefaultFileMonitorTest {
monitor.start();
try {
testFile.delete();
- Thread.sleep(500);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event", Status.DELETED, status);
+ waitFor(Status.DELETED, DELAY_MILLIS * 5);
} finally {
monitor.stop();
}
@@ -301,9 +294,7 @@ public class DefaultFileMonitorTest {
final long valueMillis = System.currentTimeMillis();
final boolean rcMillis = testFile.setLastModified(valueMillis);
assertTrue("setLastModified succeeded", rcMillis);
- Thread.sleep(DELAY_MILLIS * 5);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event", Status.CHANGED, status);
+ waitFor(Status.CHANGED, DELAY_MILLIS * 5);
} finally {
monitor.stop();
}
@@ -329,9 +320,7 @@ public class DefaultFileMonitorTest {
monitor.start();
try {
testFile.delete();
- Thread.sleep(DELAY_MILLIS * 5);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event", Status.DELETED, status);
+ waitFor(Status.DELETED, DELAY_MILLIS * 5);
} finally {
monitor.stop();
}
@@ -348,27 +337,38 @@ public class DefaultFileMonitorTest {
monitor.start();
try {
writeToFile(testFile);
- Thread.sleep(DELAY_MILLIS * 5);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event " + status, Status.CREATED,
status);
+ waitFor(Status.CREATED, DELAY_MILLIS * 10);
status = null;
testFile.delete();
- Thread.sleep(DELAY_MILLIS * 5);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event " + status, Status.DELETED,
status);
+ waitFor(Status.DELETED, DELAY_MILLIS * 10);
status = null;
Thread.sleep(DELAY_MILLIS * 5);
monitor.addFile(fileObject);
writeToFile(testFile);
- Thread.sleep(DELAY_MILLIS * 10);
- assertTrue("No event occurred", status != null);
- assertEquals("Incorrect event " + status, Status.CREATED,
status);
+ waitFor(Status.CREATED, DELAY_MILLIS * 10);
} finally {
monitor.stop();
}
}
}
+ private void waitFor(final Status expected, final long timeoutMillis)
throws InterruptedException {
+ if (expected == status) {
+ return;
+ }
+ long remaining = timeoutMillis;
+ final long interval = timeoutMillis / 10;
+ while (remaining > 0) {
+ Thread.sleep(interval);
+ remaining -= interval;
+ if (expected == status) {
+ return;
+ }
+ }
+ assertTrue("No event occurred", status != null);
+ assertEquals("Incorrect event " + status, expected, status);
+ }
+
private void writeToFile(final File file) throws IOException {
// assertTrue(file.delete());
try (final BufferedWriter out =
Files.newBufferedWriter(file.toPath())) {