package metrics4Asterisk.parse;
import metrics4Asterisk.metrics.CallMetric;
import metrics4Asterisk.util.DateMaker;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import com.csvreader.CsvReader;
import junit.framework.TestCase;
import metrics4Asterisk.display.WeekDistribution;
import metrics4Asterisk.util.Constants;
/**
*
* @author lances
*/
public class WeekdayLogParserTest extends TestCase {
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
/**
* Test of init method, of class QueueLogParser.
* possible wierd scenerios
* 1192932250|1192932239.35419|4357482436|NONE|ENTERQUEUE||9122857742
* call come in for a non existing number it cause
* can get ird of it by eliminating calls that aren't for call center numbers from entering the queue
* 02 / 18 / 08
* 05 / 23 / 08
*/
@Test
public void testLog() throws Exception {
InputStream fstream = null;
BufferedReader in = null;
CsvReader reader = null;
try {
fstream = this.getClass().getClassLoader().getResourceAsStream("megacalllog.txt");
in = new BufferedReader(new InputStreamReader(fstream));
reader = new CsvReader(in, Constants.ASTERISK_LOG_SPERATOR);
Set<String> queuenames = new HashSet<String>();
queuenames.add("superqueue");
queuenames.add("internetTechSupport");
CallMapper mapperc = new CallMapper(queuenames);
LogParser<LogMapper<CallMetric>> queueLogParser = new LogParser<LogMapper<CallMetric>>();
queueLogParser.setLogMapper(mapperc);
Calendar cFromDate = DateMaker.makeFromString("02/21/2008");
Calendar cToDate = DateMaker.makeFromString("02/28/2008");
queueLogParser.parse(cFromDate, cToDate, reader);
WeekDistribution weeksD = new WeekDistribution();
weeksD.init(cFromDate, cToDate);
weeksD.setQueueNames(queuenames);
weeksD.makeSummary(queueLogParser.getLogMapper().getMap());
System.out.println(weeksD);
//TODO test each day!!!!
} catch (Exception e) {
fail("no exception should occur");
} finally {
closeResources(fstream, in, reader);
}
}
@Test
public void testInvalidDateRange() throws Exception {
InputStream fstream = null;
BufferedReader in = null;
CsvReader reader = null;
try {
fstream = this.getClass().getClassLoader().getResourceAsStream("megacalllog.txt");
in = new BufferedReader(new InputStreamReader(fstream));
reader = new CsvReader(in, Constants.ASTERISK_LOG_SPERATOR);
Set<String> queuenames = new HashSet<String>();
queuenames.add("superqueue");
queuenames.add("internetTechSupport");
CallMapper mapperc = new CallMapper(queuenames);
LogParser<LogMapper<CallMetric>> queueLogParser = new LogParser<LogMapper<CallMetric>>();
queueLogParser.setLogMapper(mapperc);
Calendar cFromDate = DateMaker.makeFromString("02/17/2008");
Calendar cToDate = DateMaker.makeFromString("02/10/2008");
queueLogParser.parse(cFromDate, cToDate, reader);
WeekDistribution weeksD = new WeekDistribution();
weeksD.init(cFromDate, cToDate);
fail("exception should occur");
} catch (Exception e) {
} finally {
closeResources(fstream, in, reader);
}
}
@Test
public void testInvalidDateWeeks() throws Exception {
InputStream fstream = null;
BufferedReader in = null;
CsvReader reader = null;
try {
fstream = this.getClass().getClassLoader().getResourceAsStream("megacalllog.txt");
in = new BufferedReader(new InputStreamReader(fstream));
reader = new CsvReader(in, Constants.ASTERISK_LOG_SPERATOR);
Set<String> queuenames = new HashSet<String>();
queuenames.add("superqueue");
queuenames.add("internetTechSupport");
CallMapper mapperc = new CallMapper(queuenames);
LogParser<LogMapper<CallMetric>> queueLogParser = new LogParser<LogMapper<CallMetric>>();
queueLogParser.setLogMapper(mapperc);
Calendar cFromDate = DateMaker.makeFromString("02/17/2008");
Calendar cToDate = DateMaker.makeFromString("02/21/2008");
queueLogParser.parse(cFromDate, cToDate, reader);
WeekDistribution weeksD = new WeekDistribution();
weeksD.init(cFromDate, cToDate);
fail("exception should occur");
} catch (Exception e) {
} finally {
closeResources(fstream, in, reader);
}
}
@Test
public void testInvalidDateWeek2() throws Exception {
InputStream fstream = null;
BufferedReader in = null;
CsvReader reader = null;
try {
fstream = this.getClass().getClassLoader().getResourceAsStream("megacalllog.txt");
in = new BufferedReader(new InputStreamReader(fstream));
reader = new CsvReader(in, Constants.ASTERISK_LOG_SPERATOR);
Set<String> queuenames = new HashSet<String>();
queuenames.add("superqueue");
queuenames.add("internetTechSupport");
CallMapper mapperc = new CallMapper(queuenames);
LogParser<LogMapper<CallMetric>> queueLogParser = new LogParser<LogMapper<CallMetric>>();
queueLogParser.setLogMapper(mapperc);
Calendar cFromDate = DateMaker.makeFromString("02/17/2008");
Calendar cToDate = DateMaker.makeFromString("02/24/2008");
cToDate.add(Calendar.SECOND, -1); //end date can't be exclusive
queueLogParser.parse(cFromDate, cToDate, reader);
WeekDistribution weeksD = new WeekDistribution();
weeksD.init(cFromDate, cToDate);
fail("exception should occur");
} catch (Exception e) {
} finally {
closeResources(fstream, in, reader);
}
}
private void closeResources(InputStream fstream, BufferedReader in, CsvReader reader) {
try {
reader.close();
} catch (Exception e) {
}
try {
in.close();
} catch (Exception e) {
}
try {
fstream.close();
} catch (Exception e) {
}
}
}