blob: abd069ccf40dc923a2829f68b53adc337b2405f1 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.filter.config.tools.utils;
//_______________________________________________
// imports
import java.util.*;
import java.lang.*;
//_______________________________________________
// implementation
public class AnalyzeStartupLog
{
private class OperationTime
{
/** name the measured operation. */
public java.lang.String sOperation;
/** contains the time value, when this operation was started. */
public long nStartTime;
/** contains the time value, when this operation was finished. */
public long nEndTime;
/** text inside log file, which identifies the start time value. */
public java.lang.String sStartMsg;
/** text inside log file, which identifies the end time value. */
public java.lang.String sEndMsg;
}
//_________________________________
// main
public static void main(java.lang.String[] lCmdLine)
{
int nExit = 0;
try
{
// analyze command line
ConfigHelper aCmdLine = new ConfigHelper("", lCmdLine);
java.lang.String sLogDir = aCmdLine.getString("logdir" );
java.lang.String sDataFile = aCmdLine.getString("datafile");
if (sLogDir == null || sDataFile == null)
{
System.err.println("AnalyzeStartupLog lodir=<dir> datafile=<file>");
System.err.println("E.g.: AnalyzeStartupLog lodir=c:\\temp\\logs datafile=c:\\temp\\data.csv");
System.exit(--nExit);
}
// get list of all log files
boolean bRecursive = true;
java.util.Vector lLogs = FileHelper.getSystemFilesFromDir(new java.io.File(sLogDir), bRecursive);
if (lLogs == null || lLogs.isEmpty())
{
System.err.println("log dir is empty");
System.exit(--nExit);
}
// analyze it
java.lang.StringBuffer sOut = new java.lang.StringBuffer(1000);
sOut.append("log;t_cfg_start;t_cfg_end;t_fwk_start;t_fwk_end;t_sfx_start;t_sfx_end;t_types_start;t_types_end;t_filters_start;t_filters_end;");
sOut.append("t_filters_swriter_start;t_filters_swriter_end;t_filters_sweb_start;t_filters_sweb_end;t_filters_sglobal_start;t_filters_sglobal_end;t_filters_scalc_start;t_filters_scalc_end;t_filters_sdraw_start;t_filters_sdraw_end;t_filters_simpress_start;t_filters_simpress_end;t_filters_schart_start;t_filters_schart_end;t_filters_smath_start;t_filters_smath_end;");
sOut.append("t_others_start;t_others_end;d_cfg;d_fwk;d_sfx;d_types;d_filters;d_others;d_complete\n");
java.util.Enumeration aIt = lLogs.elements();
while (aIt.hasMoreElements())
{
java.io.File aLog = (java.io.File)aIt.nextElement();
java.io.FileReader aReader = new java.io.FileReader(aLog);
java.io.BufferedReader aBuffer = new java.io.BufferedReader(aReader);
long t_cfg_start = 0;
long t_cfg_end = 0;
long t_fwk_start = 0;
long t_fwk_end = 0;
long t_sfx_start = 0;
long t_sfx_end = 0;
long t_types_start = 0;
long t_types_end = 0;
long t_filters_start = 0;
long t_filters_end = 0;
long t_filters_swriter_start = 0;
long t_filters_swriter_end = 0;
long t_filters_sweb_start = 0;
long t_filters_sweb_end = 0;
long t_filters_sglobal_start = 0;
long t_filters_sglobal_end = 0;
long t_filters_scalc_start = 0;
long t_filters_scalc_end = 0;
long t_filters_sdraw_start = 0;
long t_filters_sdraw_end = 0;
long t_filters_simpress_start = 0;
long t_filters_simpress_end = 0;
long t_filters_schart_start = 0;
long t_filters_schart_end = 0;
long t_filters_smath_start = 0;
long t_filters_smath_end = 0;
long t_others_start = 0;
long t_others_end = 0;
while (true)
{
java.lang.String sLine = aBuffer.readLine();
if (sLine == null)
break;
if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : { creation ConfigItem [file=standard, version=6, mode=3]"))
t_cfg_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : } creation ConfigItem"))
t_cfg_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : { reading TypeDetection.xml"))
t_fwk_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : } reading TypeDetection.xml"))
t_fwk_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadTypes"))
t_types_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadTypes"))
t_types_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadFilters"))
t_filters_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadFilters"))
t_filters_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [swriter]"))
t_filters_swriter_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [swriter]"))
t_filters_swriter_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [sweb]"))
t_filters_sweb_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [sweb]"))
t_filters_sweb_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [sglobal]"))
t_filters_sglobal_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [sglobal]"))
t_filters_sglobal_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [scalc]"))
t_filters_scalc_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [scalc]"))
t_filters_scalc_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [sdraw]"))
t_filters_sdraw_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [sdraw]"))
t_filters_sdraw_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [simpress]"))
t_filters_simpress_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [simpress]"))
t_filters_simpress_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [schart]"))
t_filters_schart_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [schart]"))
t_filters_schart_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ reading FilterGroup [smath]"))
t_filters_smath_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} reading FilterGroup [smath]"))
t_filters_smath_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadDetectors"))
t_others_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadContentHandlers"))
t_others_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} framework (as96863) ::FilterCache::FilterCache"))
t_sfx_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
else
if (sLine.endsWith("} desktop (lo119109) OfficeWrapper::OfficeWrapper"))
t_sfx_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
}
sOut.append(aLog.getName() );
sOut.append(";" );
sOut.append(t_cfg_start );
sOut.append(";" );
sOut.append(t_cfg_end );
sOut.append(";" );
sOut.append(t_fwk_start );
sOut.append(";" );
sOut.append(t_fwk_end );
sOut.append(";" );
sOut.append(t_sfx_start );
sOut.append(";" );
sOut.append(t_sfx_end );
sOut.append(";" );
sOut.append(t_types_start );
sOut.append(";" );
sOut.append(t_types_end );
sOut.append(";" );
sOut.append(t_filters_start );
sOut.append(";" );
sOut.append(t_filters_end );
sOut.append(";" );
sOut.append(t_filters_swriter_start );
sOut.append(";" );
sOut.append(t_filters_swriter_end );
sOut.append(";" );
sOut.append(t_filters_sweb_start );
sOut.append(";" );
sOut.append(t_filters_sweb_end );
sOut.append(";" );
sOut.append(t_filters_sglobal_start );
sOut.append(";" );
sOut.append(t_filters_sglobal_end );
sOut.append(";" );
sOut.append(t_filters_scalc_start );
sOut.append(";" );
sOut.append(t_filters_scalc_end );
sOut.append(";" );
sOut.append(t_filters_sdraw_start );
sOut.append(";" );
sOut.append(t_filters_sdraw_end );
sOut.append(";" );
sOut.append(t_filters_simpress_start );
sOut.append(";" );
sOut.append(t_filters_simpress_end );
sOut.append(";" );
sOut.append(t_filters_schart_start );
sOut.append(";" );
sOut.append(t_filters_schart_end );
sOut.append(";" );
sOut.append(t_filters_smath_start );
sOut.append(";" );
sOut.append(t_filters_smath_end );
sOut.append(";" );
sOut.append(t_others_start );
sOut.append(";" );
sOut.append(t_others_end );
sOut.append(";" );
sOut.append(t_cfg_end -t_cfg_start );
sOut.append(";" );
sOut.append(t_fwk_end -t_fwk_start );
sOut.append(";" );
sOut.append(t_sfx_end -t_sfx_start );
sOut.append(";" );
sOut.append(t_types_end -t_types_start );
sOut.append(";" );
sOut.append(t_filters_end-t_filters_start);
sOut.append(";" );
sOut.append(t_others_end -t_others_start );
sOut.append(";" );
sOut.append(t_others_end -t_cfg_start );
sOut.append("\n" );
aBuffer.close();
}
java.io.FileWriter aCSV = new java.io.FileWriter(sDataFile);
java.lang.String sData = sOut.toString();
aCSV.write(sData, 0, sData.length());
aCSV.flush();
aCSV.close();
}
catch(java.lang.Throwable exAny)
{
System.err.println(exAny.getMessage());
exAny.printStackTrace();
System.exit(--nExit);
}
System.exit(0);
}
}