package glug.parser;
import static com.google.common.collect.ImmutableMap.of;
import static com.madgag.interval.SimpleInterval.interval;
import static glug.parser.logmessages.CompletedPageRequestParser.PAGE_REQUEST;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.madgag.interval.Interval;
import glug.groovy.ParserDefLoader;
import glug.model.SignificantInterval;
import glug.model.SignificantIntervalOccupier;
import glug.model.ThreadModel;
import glug.model.ThreadedSystem;
import glug.model.time.LogInstant;
import glug.model.time.LogInterval;
import glug.parser.LogLoader.LoadReport;
import glug.parser.logmessages.LogMessageParserRegistry;
import java.io.File;
import groovy.lang.GroovyCodeSource;
import org.junit.Test;
public class LogLoaderTest {
@Test
public void shouldTrackTotalIntervalUpdated() throws Exception {
LogParsingReader reader = mock(LogParsingReader.class);
ThreadedSystem threadedSystem = new ThreadedSystem();
ThreadModel thread = threadedSystem.getOrCreateThread("blahThread");
SignificantIntervalOccupier significantIntervalOccupierStub = PAGE_REQUEST.with("blah");
when(reader.parseNext()).thenReturn(
new SignificantInterval(of("type","My Type"), new LogInterval(new LogInstant(1000,1),new LogInstant(2000,2))),
new SignificantInterval(of("type","My Type"), new LogInterval(new LogInstant(3000,3),new LogInstant(4000,4))));
LogLoader logLoader=new LogLoader(reader);
LoadReport loadReport = logLoader.loadLines(2);
assertThat(loadReport.getUpdatedInterval(), equalTo((Interval<LogInstant>)interval(new LogInstant(1000,1),new LogInstant(4000,4))));
}
//@Test
public void shouldLoadExampleFile() throws Exception {
File file = new File("/home/roberto/development/glug-logs/respubs/r2frontend.log.2009-12-18.respub01.gz");
ThreadedSystem threadedSystem = new ThreadedSystem();
LogLoaderFactory logLoaderFactory = new LogLoaderFactory();
LogMessageParserRegistry registry = new ParserDefLoader().load(new GroovyCodeSource(new File("/home/roberto/development/glug/glug-model/src/main/java/glug/parser/logmessages/DefaultParsers.groovy")));
LogLoader logLoader = logLoaderFactory.createLoaderFor(file, threadedSystem, registry);
LoadReport lr;
do {
lr=logLoader.loadLines(100000);
System.out.println(lr);
} while (!lr.endOfStreamReached());
System.out.println(threadedSystem.getIntervalCoveredByAllThreads());
}
}