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 import java.text.SimpleDateFormat; 009 010 import org.apache.commons.io.FileUtils; 011 import org.apache.commons.io.IOUtils; 012 013 public class GCAnalyzer { 014 015 public static void main(String[] args) throws Exception { 016 GCAnalyzer analyzer = new GCAnalyzer(); 017 analyzer.analyze(); 018 } 019 020 private String src = "gc.log"; 021 022 private String dest = "gc.csv"; 023 024 private String startTime = null; 025 026 private long rampUpMillis = 0; 027 028 private long durationMillis = 0; 029 030 public void analyze() throws Exception { 031 Reader r = null; 032 033 try { 034 GCParser gp = GCParserFactory.create(null); 035 r = createReader(); 036 GCList allGCs = gp.parse(r); 037 038 GCBuilder gcb = new GCBuilder(allGCs); 039 if (startTime != null) { 040 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 041 gcb.setStartMillis(formatter.parse(startTime).getTime()); 042 } 043 gcb.setRampUpMillis(rampUpMillis); 044 gcb.setDurationMillis(durationMillis); 045 gcb.setLastModified(getLastModified()); 046 FileUtils.writeStringToFile(new File(dest), gcb.build(), "UTF-8"); 047 048 } finally { 049 IOUtils.closeQuietly(r); 050 } 051 } 052 053 protected Reader createReader() throws IOException { 054 File srcFile = new File(getSrc()); 055 if (!srcFile.exists()) { 056 throw new AnalyzerException("File not found. src=" + getSrc()); 057 } 058 return new InputStreamReader(new FileInputStream(srcFile)); 059 } 060 061 protected long getLastModified() { 062 File srcFile = new File(getSrc()); 063 return srcFile.lastModified(); 064 } 065 066 public String getSrc() { 067 return src; 068 } 069 070 public void setSrc(String src) { 071 this.src = src; 072 } 073 074 public String getDest() { 075 return dest; 076 } 077 078 public void setDest(String dest) { 079 this.dest = dest; 080 } 081 082 public String getStartTime() { 083 return startTime; 084 } 085 086 public void setStartTime(String startTime) { 087 this.startTime = startTime; 088 } 089 090 public long getDurationMillis() { 091 return durationMillis; 092 } 093 094 public void setDurationMillis(long durationMillis) { 095 this.durationMillis = durationMillis; 096 } 097 098 public long getRampUpMillis() { 099 return rampUpMillis; 100 } 101 102 public void setRampUpMillis(long rampUpMillis) { 103 this.rampUpMillis = rampUpMillis; 104 } 105 106 }