001 package jp.osdl.jbento2.analyzer;
002
003 import java.io.File;
004 import java.io.FileInputStream;
005 import java.io.IOException;
006 import java.io.InputStreamReader;
007 import java.io.Reader;
008
009 import org.apache.commons.io.FileUtils;
010
011 public class Analyzer {
012
013 public static void main(String[] args) throws Exception {
014 Analyzer analyzer = new Analyzer();
015 analyzer.analyze();
016 }
017
018 private String src = "jbento.log";
019
020 private String srcEncoding = null;
021
022 private String dest = "result";
023
024 private String parser = "jbento";
025
026 private long rampUpMillis = 0;
027
028 private long rampDownMillis = 0;
029
030 private long durationMillis = 0;
031
032 public void analyze() throws Exception {
033 SampleParser sp = SampleParserFactory.create(getParser());
034 SampleList allSamples = sp.parse(createReader());
035
036 SampleList samples = null;
037
038 if (getDurationMillis() > 0) {
039 samples = new RampUpDurationFilter(getRampUpMillis(),
040 getDurationMillis()).doFilter(allSamples);
041 } else {
042 samples = new RampUpDownFilter(getRampUpMillis(),
043 getRampDownMillis()).doFilter(allSamples);
044 }
045
046 File destFile = new File(dest);
047 destFile.mkdirs();
048 SummaryBuilder sb = new SummaryBuilder(allSamples, samples);
049 FileUtils.writeStringToFile(new File(destFile, "summary.txt"), sb
050 .build(), "UTF-8");
051 if (samples.isEmpty()) {
052 return;
053 }
054 ThroughputBuilder tb = new ThroughputBuilder(samples);
055 FileUtils.writeStringToFile(new File(destFile, "throughput.txt"), tb
056 .build(), "UTF-8");
057 ResponseTimeBuilder rtb = new ResponseTimeBuilder(samples);
058 FileUtils.writeStringToFile(new File(destFile, "responseTime.txt"), rtb
059 .build(), "UTF-8");
060
061 ThroughputTimeLineBuilder ttlb = new ThroughputTimeLineBuilder(samples);
062 FileUtils.writeStringToFile(new File(destFile, "throughputTimeLine.txt"),
063 ttlb.build(), "UTF-8");
064 }
065
066 protected Reader createReader() throws IOException {
067 File srcFile = new File(getSrc());
068 if (!srcFile.exists()) {
069 throw new AnalyzerException("File not found. src=" + getSrc());
070 }
071 if (getSrcEncoding() == null) {
072 return new InputStreamReader(new FileInputStream(srcFile));
073 } else {
074 return new InputStreamReader(new FileInputStream(srcFile),
075 getSrcEncoding());
076 }
077 }
078
079 public String getSrc() {
080 return src;
081 }
082
083 public void setSrc(String src) {
084 this.src = src;
085 }
086
087 public String getSrcEncoding() {
088 return srcEncoding;
089 }
090
091 public void setSrcEncoding(String srcEncoding) {
092 this.srcEncoding = srcEncoding;
093 }
094
095 public String getDest() {
096 return dest;
097 }
098
099 public void setDest(String dest) {
100 this.dest = dest;
101 }
102
103 public String getParser() {
104 return parser;
105 }
106
107 public void setParser(String parser) {
108 this.parser = parser;
109 }
110
111 public long getRampUpMillis() {
112 return rampUpMillis;
113 }
114
115 public void setRampUpMillis(long rampUpMillis) {
116 this.rampUpMillis = rampUpMillis;
117 }
118
119 public long getRampDownMillis() {
120 return rampDownMillis;
121 }
122
123 public void setRampDownMillis(long rampDownMillis) {
124 this.rampDownMillis = rampDownMillis;
125 }
126
127 public long getDurationMillis() {
128 return durationMillis;
129 }
130
131 public void setDurationMillis(long durationMillis) {
132 this.durationMillis = durationMillis;
133 }
134
135 }