/*
* The HRT Project.
* Aavailable under a Creative Commons 2.0 License.
*/
package org.hrva.capture;
import java.io.*;
import java.util.Properties;
import junit.framework.TestCase;
/**
* Tests LogTail.
*
* @author slott
*/
public class LogTailTest extends TestCase {
File sample_log_file;
Writer sample_log;
Properties shared= null;
/**
* Constructs TestCase instance.
* @param testName
*/
public LogTailTest(String testName) {
super(testName);
}
/**
* TestCase setup. Removes old files. Creates a sample log file,
* which is left open for writing.
*
* @throws Exception
*/
@Override
protected void setUp() throws Exception {
super.setUp();
File output;
output = new File("test/log_tail_new.state");
output.delete();
output = new File("test/sample.extract");
output.delete();
sample_log_file = new File("test/sample.log");
sample_log= new BufferedWriter( new FileWriter( sample_log_file, false ) );
sample_log.write( "07:04:42 02/15 V.1.2233 H.0.0 MT_LOCATION Lat/Lon:370620935/-763413842 [Valid] Adher:-1 [Valid] Odom:2668 [Valid] DGPS:On FOM:2\n" );
sample_log.write( "07:04:42 02/15 V.1.2236 H.0.0 MT_TIMEPOINTCROSSING Time:07:04:36 Arrival Rte:4 Dir:2 TP:329 Stop:45 Svc:1 Blk:221 Lat/Lon:370315618/-763461352 [Valid] Adher:2 [Valid] Odom:1924 [Valid] DGPS:On FOM:2\n" );
sample_log.flush();
shared= new Properties();
}
/**
* TestCase Teardown. Closes the open log file.
* @throws Exception
*/
@Override
protected void tearDown() throws Exception {
super.tearDown();
sample_log.close();
sample_log_file.delete();
}
/**
* Test of run_main method, of class LogTail.
* @throws Exception
*/
public void testRun_main() throws Exception {
System.out.println("run_main");
String[] args = { "-o", "test/sample.extract", "test/sample.log" };
String status= "test/logtail.history";
Properties setup= new Properties();
setup.setProperty( "size.test/sample.log", "8" );
setup.setProperty( "seq.test/sample.log", "2" );
setup.store(new FileWriter( new File( status )), "Test");
shared.setProperty("logtail.tail_status_filename", status);
LogTail instance = new LogTail(shared);
instance.run_main(args);
BufferedReader rdr= new BufferedReader( new FileReader( new File( "test/sample.extract")));
assertEquals( " 02/15 V.1.2233 H.0.0 MT_LOCATION Lat/Lon:370620935/-763413842 [Valid] Adher:-1 [Valid] Odom:2668 [Valid] DGPS:On FOM:2", rdr.readLine() );
assertEquals( "07:04:42 02/15 V.1.2236 H.0.0 MT_TIMEPOINTCROSSING Time:07:04:36 Arrival Rte:4 Dir:2 TP:329 Stop:45 Svc:1 Blk:221 Lat/Lon:370315618/-763461352 [Valid] Adher:2 [Valid] Odom:1924 [Valid] DGPS:On FOM:2", rdr.readLine() );
assertEquals( null, rdr.readLine() );
setup= new Properties();
setup.load(new FileReader( new File( status )));
assertEquals( "3", setup.getProperty( "seq.test/sample.log" ) );
assertEquals( "327", setup.getProperty( "size.test/sample.log" ) );
}
/**
* Test of tail method, of class LogTail.
* @throws Exception
*/
public void testTail() throws Exception {
System.out.println("tail");
String status= "test/logtail.history";
Properties setup= new Properties();
setup.setProperty( "size.test/sample.log", "8" );
setup.setProperty( "seq.test/sample.log", "2" );
setup.store(new FileWriter( new File( status )), "Test");
String source = "test/sample.log";
String target = "test/sample.extract";
shared.setProperty("logtail.tail_status_filename", status);
LogTail instance = new LogTail(shared);
String expResult = target;
String result = instance.tail(source, target);
assertEquals(expResult, result);
BufferedReader rdr= new BufferedReader( new FileReader( new File( "test/sample.extract")));
assertEquals( " 02/15 V.1.2233 H.0.0 MT_LOCATION Lat/Lon:370620935/-763413842 [Valid] Adher:-1 [Valid] Odom:2668 [Valid] DGPS:On FOM:2", rdr.readLine() );
assertEquals( "07:04:42 02/15 V.1.2236 H.0.0 MT_TIMEPOINTCROSSING Time:07:04:36 Arrival Rte:4 Dir:2 TP:329 Stop:45 Svc:1 Blk:221 Lat/Lon:370315618/-763461352 [Valid] Adher:2 [Valid] Odom:1924 [Valid] DGPS:On FOM:2", rdr.readLine() );
assertEquals( null, rdr.readLine() );
setup= new Properties();
setup.load(new FileReader( new File( status )));
assertEquals( "3", setup.getProperty( "seq.test/sample.log" ) );
assertEquals( "327", setup.getProperty( "size.test/sample.log" ) );
}
/**
* Test of get_state method, of class LogTail.
*/
public void testGet_state_none() {
System.out.println("testGet_state_none");
String name = "test/no_such.state";
LogTail instance = new LogTail(shared);
Properties expResult = new Properties();
Properties result = instance.get_state(name);
assertEquals(expResult, result);
}
/**
* Test of get_state method, of class LogTail.
*/
public void testGet_state_exists() {
System.out.println("testGet_state_exists");
String name = "test/log_tail.state";
LogTail instance = new LogTail(shared);
Properties expResult = new Properties();
expResult.setProperty( "size.test/filename.log","1");
expResult.setProperty( "seq.test/filename.log","2");
Properties result = instance.get_state(name);
assertEquals(expResult, result);
}
/**
* Test of save_state method, of class LogTail.
* @throws Exception
*/
public void testSave_state() throws Exception {
System.out.println("save_state");
String name = "test/log_tail_new.state";
Properties state = new Properties();
state.setProperty( "size.test/filename.log","2");
state.setProperty( "seq.test/filename.log","3");
LogTail instance = new LogTail(shared);
instance.save_state(name, state);
BufferedReader rdr= new BufferedReader( new FileReader( new File(name)));
assertEquals( "#LogTail Cache", rdr.readLine() );
rdr.readLine(); // datestamp
assertEquals( "seq.test/filename.log=3", rdr.readLine() );
assertEquals( "size.test/filename.log=2", rdr.readLine() );
assertEquals( null, rdr.readLine() );
}
}