Browse Source

Try to fix intermittent test failure related to file timestamps

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>
stable-3.5
Robin Rosenberg 11 years ago committed by Matthias Sohn
parent
commit
0f14d3bf40
  1. 7
      org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java

7
org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java

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

Loading…
Cancel
Save