Merge "add fsTick() to RepositoryTestCase"
This commit is contained in:
commit
bc27ac66cd
|
@ -160,38 +160,6 @@ public void testRacyGitDetection() throws IOException,
|
||||||
indexState(SMUDGE|MOD_TIME|LENGTH));
|
indexState(SMUDGE|MOD_TIME|LENGTH));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Waits until it is guaranteed that the filesystem timer (used e.g. for
|
|
||||||
* lastModified) has a value greater than the lastmodified time of the given
|
|
||||||
* file. This is done by touch a file, reading the lastmodified and sleeping
|
|
||||||
* attribute sleeping
|
|
||||||
*
|
|
||||||
* @param lastFile
|
|
||||||
* @return return the last measured value of the filesystem timer which is
|
|
||||||
* greater than then the lastmodification time of lastfile.
|
|
||||||
* @throws InterruptedException
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
public static long fsTick(File lastFile) throws InterruptedException,
|
|
||||||
IOException {
|
|
||||||
long sleepTime = 1;
|
|
||||||
File tmp = File.createTempFile("FileTreeIteratorWithTimeControl", null);
|
|
||||||
try {
|
|
||||||
long startTime = (lastFile == null) ? tmp.lastModified() : lastFile
|
|
||||||
.lastModified();
|
|
||||||
long actTime = tmp.lastModified();
|
|
||||||
while (actTime <= startTime) {
|
|
||||||
Thread.sleep(sleepTime);
|
|
||||||
sleepTime *= 5;
|
|
||||||
tmp.setLastModified(System.currentTimeMillis());
|
|
||||||
actTime = tmp.lastModified();
|
|
||||||
}
|
|
||||||
return actTime;
|
|
||||||
} finally {
|
|
||||||
tmp.delete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addToIndex(TreeSet<Long> modTimes)
|
private void addToIndex(TreeSet<Long> modTimes)
|
||||||
throws FileNotFoundException, IOException {
|
throws FileNotFoundException, IOException {
|
||||||
DirCacheBuilder builder = db.lockDirCache().builder();
|
DirCacheBuilder builder = db.lockDirCache().builder();
|
||||||
|
|
|
@ -232,4 +232,40 @@ public static String lookup(Object l, String nameTemplate,
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waits until it is guaranteed that a subsequent file modification has a
|
||||||
|
* younger modification timestamp than the modification timestamp of the
|
||||||
|
* given file. This is done by touching a temporary file, reading the
|
||||||
|
* lastmodified attribute and, if needed, sleeping. After sleeping this loop
|
||||||
|
* starts again until the filesystem timer has advanced enough.
|
||||||
|
*
|
||||||
|
* @param lastFile
|
||||||
|
* the file on which we want to wait until the filesystem timer
|
||||||
|
* has advanced more than the lastmodification timestamp of this
|
||||||
|
* file
|
||||||
|
* @return return the last measured value of the filesystem timer which is
|
||||||
|
* greater than then the lastmodification time of lastfile.
|
||||||
|
* @throws InterruptedException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static long fsTick(File lastFile) throws InterruptedException,
|
||||||
|
IOException {
|
||||||
|
long sleepTime = 1;
|
||||||
|
File tmp = File.createTempFile("FileTreeIteratorWithTimeControl", null);
|
||||||
|
try {
|
||||||
|
long startTime = (lastFile == null) ? tmp.lastModified() : lastFile
|
||||||
|
.lastModified();
|
||||||
|
long actTime = tmp.lastModified();
|
||||||
|
while (actTime <= startTime) {
|
||||||
|
Thread.sleep(sleepTime);
|
||||||
|
sleepTime *= 5;
|
||||||
|
tmp.setLastModified(System.currentTimeMillis());
|
||||||
|
actTime = tmp.lastModified();
|
||||||
|
}
|
||||||
|
return actTime;
|
||||||
|
} finally {
|
||||||
|
tmp.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue