Fix FileSnapshotTests for filesystem with high timestamp resolution
When filesystem timestamp resolution is very high some tests don't work since runtime of the test setup is too long to reach a racily clean FileSnapshot. Hence skip these tests when timestamp resolution is higher than 10 millisecond. Change-Id: Ie47dd10eda22037b5c1ebff6b6becce0654ea807 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
bce4ac97fa
commit
9eff45e4f2
|
@ -52,7 +52,9 @@
|
|||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.nio.file.attribute.FileTime;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.eclipse.jgit.util.FS;
|
||||
import org.eclipse.jgit.util.FileUtils;
|
||||
|
@ -66,12 +68,14 @@ public class FileSnapshotTest {
|
|||
|
||||
private Path trash;
|
||||
|
||||
private Duration fsTimerResolution;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
trash = Files.createTempDirectory("tmp_");
|
||||
// measure timer resolution before the test to avoid time critical tests
|
||||
// are affected by time needed for measurement
|
||||
FS.getFsTimerResolution(trash.getParent());
|
||||
fsTimerResolution = FS.getFsTimerResolution(trash.getParent());
|
||||
}
|
||||
|
||||
@Before
|
||||
|
@ -114,10 +118,14 @@ public void testActuallyIsModifiedTrivial() throws Exception {
|
|||
*/
|
||||
@Test
|
||||
public void testNewFileWithWait() throws Exception {
|
||||
// if filesystem timestamp resolution is high the snapshot won't be
|
||||
// racily clean
|
||||
Assume.assumeTrue(
|
||||
fsTimerResolution.compareTo(Duration.ofMillis(10)) > 0);
|
||||
Path f1 = createFile("newfile");
|
||||
waitNextTick(f1);
|
||||
FileSnapshot save = FileSnapshot.save(f1.toFile());
|
||||
Thread.sleep(1500);
|
||||
TimeUnit.NANOSECONDS.sleep(fsTimerResolution.dividedBy(2).toNanos());
|
||||
assertTrue(save.isModified(f1.toFile()));
|
||||
}
|
||||
|
||||
|
@ -128,6 +136,10 @@ public void testNewFileWithWait() throws Exception {
|
|||
*/
|
||||
@Test
|
||||
public void testNewFileNoWait() throws Exception {
|
||||
// if filesystem timestamp resolution is high the snapshot won't be
|
||||
// racily clean
|
||||
Assume.assumeTrue(
|
||||
fsTimerResolution.compareTo(Duration.ofMillis(10)) > 0);
|
||||
Path f1 = createFile("newfile");
|
||||
FileSnapshot save = FileSnapshot.save(f1.toFile());
|
||||
assertTrue(save.isModified(f1.toFile()));
|
||||
|
|
Loading…
Reference in New Issue