]> source.dussan.org Git - jgit.git/commitdiff
Try to fix intermittent test failure related to file timestamps 61/29161/6
authorRobin Rosenberg <robin.rosenberg@dewire.com>
Sat, 28 Jun 2014 13:31:11 +0000 (15:31 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Tue, 1 Jul 2014 13:29:11 +0000 (15:29 +0200)
Improve how tests do a "touch" operation on files. Instead of doing
"f.setLastModified(System.currentTimeMillis)" open a Outputstream on the
file and directly close it again. This makes this method rely only on
one clock - the clock of the filesystem.

Bug: 436917
Change-Id: I68ef3c2878f28b12daebf2ef6a9fa0a5d6e0964d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java

index 15334ee39611794af3588a7614e0e08a7e2441ea..c1e0a2dcf3e15da87e5886f80866a1ad8d46352b 100644 (file)
@@ -375,7 +375,7 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
         */
        public static long fsTick(File lastFile) throws InterruptedException,
                        IOException {
-               long sleepTime = 1;
+               long sleepTime = 64;
                FS fs = FS.DETECTED;
                if (lastFile != null && !fs.exists(lastFile))
                        throw new FileNotFoundException(lastFile.getPath());
@@ -386,8 +386,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
                        long actTime = fs.lastModified(tmp);
                        while (actTime <= startTime) {
                                Thread.sleep(sleepTime);
-                               sleepTime *= 5;
-                               fs.setLastModified(tmp, System.currentTimeMillis());
+                               sleepTime *= 2;
+                               FileOutputStream fos = new FileOutputStream(tmp);
+                               fos.close();
                                actTime = fs.lastModified(tmp);
                        }
                        return actTime;