Revision: 4965
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 31, 2008 09:00 by narkisr
Initial Code
public class TailAssertor {
private static final long sec = 1000L;
private static final Log log = LogService.getLog(TailAssertor.class.getName());
private static long sampleInterval = 5000;
public static void assertNewLinesWithTail(final File logfile, final String expectedLine, int durationInSec) {
long filePointer = logfile.length();// The file pointer keeps track of where we are in the file
RandomAccessFile file = null;
try {
file = new RandomAccessFile(logfile, "r");
for (final Date startTime = new Date(); new Date().getTime() - startTime.getTime() < durationInSec * sec;) {
long fileLength = logfile.length();
if (fileLength < filePointer) {// file has been cleared
file = new RandomAccessFile(logfile, "r");
filePointer = 0;
}
if (fileLength > filePointer) {
file.seek(filePointer);// There is new data to read
for (String line = file.readLine(); line != null;) {
if (line.contains(expectedLine)) {
return;
}
line = file.readLine();
}
filePointer = file.getFilePointer();
}
Thread.sleep(sampleInterval);// Sleep for the specified interval
}
} catch (Exception e) {
log.error(e);
} finally {
closeFile(file);
}
throw new AssertionError("the requested line wasn't found within the required time frame!");
}
private static void closeFile(RandomAccessFile file) {
if (file != null) {
try {
file.close();
} catch (IOException e) {
log.error(e);
}
}
}
}
Initial URL
Initial Description
A simple testing assertion which looks up for a line within a file until a pre defined time frame ends (loosely based upon http://www.informit.com/guides/content.aspx?g=java&seqNum=226).
Initial Title
Simple tail like assertion
Initial Tags
java
Initial Language
Java