Commit 8a3b6bf0 authored by Christian Wulf's avatar Christian Wulf

added case study trace reconstruction

parent ecee8995
@echo off
REM @author Nils Christian Ehmke
setlocal enabledelayedexpansion
:main
REM Check if the parameters are correct.
if "%1"=="" (
call:print_usage
GOTO:EOF
)
if not exist %1\NUL (
echo %1 is not a directory
call:print_usage
GOTO:EOF
)
if "%2"=="" (
echo Missing file extensions
call:print_usage
GOTO:EOF
)
REM Now get all parameters from %2 on as extensions (SHIFT and %* don't work together very well in a Batch script).
SET DIRNAME=%1
SHIFT
SET EXTS=%1
:loop
SHIFT
if NOT "%1"=="" (
SET EXTS=%EXTS% %1
GOTO:loop
)
REM We want to count the pic and dot-files.
SET /a PIC_COUNTER=0
SET /a DOT_COUNTER=0
REM Convert the dot and pic files using the old filenames as base for the new ones.
IF exist %DIRNAME%\*.pic (
for /F "delims=" %%i in ('dir /B /S "%DIRNAME%\*.pic"') do (
for %%j in (%EXTS%) do (
pic2plot -T %%j "%%i" > "%%i.%%j"
if "%%j" == "pdf" (
pic2plot -T ps "%%i" > "%%i.ps"
ps2pdf "%%i.ps"
)
)
SET /a PIC_COUNTER=PIC_COUNTER + 1
)
)
IF exist %DIRNAME%\*.dot (
for /F "delims=" %%i in ('dir /B /S "%DIRNAME%\*.dot"') do (
for %%j in (%EXTS%) do (
dot -T %%j "%%i" > "%%i.%%j"
)
SET /a DOT_COUNTER=DOT_COUNTER + 1
)
)
REM Show the user the resulting counters.
echo.
echo Processed !DOT_COUNTER! .dot file(s)
echo Processed !PIC_COUNTER! .pic file(s)
GOTO:EOF
REM This subfunction shows the user the usage of the batch-script.
:print_usage
echo.
REM Normally we could use %~n0 to show the current file, but due to the fact that we have this scrips as a helper script, we have to add the name manually.
echo Usage: dotPic-fileConverter.bat ^<output-directory^> ^<file-type-1 ... file-type-N^>
echo.
echo Example: dotPic-fileConverter.bat C:\Temp pdf png ps
GOTO:EOF
REM Don't close the window immediately.
@echo on
PAUSE
\ No newline at end of file
cd %~dp0
SET BINDIR=%cd%
SET JAVAARGS=-Dkieker.common.logging.Log=JDK -Djava.util.logging.config.file=./logging.properties -Xms56m -Xmx1024m
SET MAINCLASSNAME=kieker.tools.traceAnalysis.TraceAnalysisTool
SET CLASSPATH=%BINDIR%\kieker-1.13-emf.jar;%BINDIR%\lib\*;%BINDIR%
SET OUTPUT_DIR=output_kieker
java %JAVAARGS% -cp "%CLASSPATH%" %MAINCLASSNAME% -i kieker-20100830-082225522-UTC -o %OUTPUT_DIR% --plot-Aggregated-Assembly-Call-Tree
java %JAVAARGS% -cp "%CLASSPATH%" %MAINCLASSNAME% -i kieker-20100830-082225522-UTC -o %OUTPUT_DIR% --plot-Deployment-Operation-Dependency-Graph responseTimes
dotPic-fileConverter.bat %OUTPUT_DIR% pdf
SET OUTPUT_DIR=output_teetime
cd %~dp0
SET BINDIR=%cd%
SET JAVAARGS=-Dkieker.common.logging.Log=JDK -Djava.util.logging.config.file=./logging.properties -Xms56m -Xmx1024m -Dkieker.analysisteetime.config.DependencyGraphConfiguration.importDirectory=kieker-20100830-082225522-UTC -Dkieker.analysisteetime.config.DependencyGraphConfiguration.timeUnitOfRecods=MILLIS -Dkieker.analysisteetime.config.DependencyGraphConfiguration.exportDirectory=%OUTPUT_DIR%
#SET MAINCLASSNAME=teetime.framework.Execution kieker.analysisteetime.config.DependencyGraphConfiguration
SET MAINCLASSNAME=kieker.analysisteetime.config.DependencyGraphConfiguration
SET CLASSPATH=%BINDIR%\kieker-1.14-SNAPSHOT-emf.jar;%BINDIR%\lib\*;%BINDIR%
java %JAVAARGS% -cp "%CLASSPATH%" %MAINCLASSNAME% kieker-20100830-082225522-UTC %OUTPUT_DIR%
dotPic-fileConverter.bat %OUTPUT_DIR% pdf
digraph G {
0[label ="'Entry'",shape=none];
1[label ="@3:bookstoreTracing.Bookstore\n.searchBook()",shape=none];
2[label ="@1:bookstoreTracing.Catalog\n.getBook(..)",shape=none];
3[label ="@2:bookstoreTracing.CRM\n.getOffers()",shape=none];
4[label ="@1:bookstoreTracing.Catalog\n.getBook(..)",shape=none];
0->1[style=solid,arrowhead=none,label="1635" ]
1->2[style=solid,arrowhead=none,label="1635" ]
1->3[style=solid,arrowhead=none,label="1635" ]
3->4[style=solid,arrowhead=none,label="1635" ]
}
digraph G {
rankdir=LR;
"depNode_0" [label="'Entry'",shape="none"]
subgraph "cluster_container1" {
label = "<<execution container>>\nSRV1";
shape = "box";
style = "filled";
fillcolor = "white";
subgraph "cluster_component_1" {
label = "<<deployment component>>\n@1:bookstoreTracing.Catalog";
shape = "box";
style = "filled";
fillcolor = "white";
"depNode_2" [label="getBook(..)",shape="oval",style="filled",color="#000000",fillcolor="white"]
}
}
subgraph "cluster_container2" {
label = "<<execution container>>\nSRV0";
shape = "box";
style = "filled";
fillcolor = "white";
subgraph "cluster_component_2" {
label = "<<deployment component>>\n@1:bookstoreTracing.Catalog";
shape = "box";
style = "filled";
fillcolor = "white";
"depNode_4" [label="getBook(..)",shape="oval",style="filled",color="#000000",fillcolor="white"]
}
subgraph "cluster_component_3" {
label = "<<deployment component>>\n@2:bookstoreTracing.CRM";
shape = "box";
style = "filled";
fillcolor = "white";
"depNode_3" [label="getOffers()",shape="oval",style="filled",color="#000000",fillcolor="white"]
}
subgraph "cluster_component_4" {
label = "<<deployment component>>\n@3:bookstoreTracing.Bookstore";
shape = "box";
style = "filled";
fillcolor = "white";
"depNode_1" [label="searchBook()",shape="oval",style="filled",color="#000000",fillcolor="white"]
}
}
depNode_0->depNode_1[label=1635, style="solid", arrowhead="open", color="#000000"]
depNode_1->depNode_2[label=1092, style="solid", arrowhead="open", color="#000000"]
depNode_1->depNode_3[label=1635, style="solid", arrowhead="open", color="#000000"]
depNode_1->depNode_4[label=543, style="solid", arrowhead="open", color="#000000"]
depNode_3->depNode_2[label=1062, style="solid", arrowhead="open", color="#000000"]
depNode_3->depNode_4[label=573, style="solid", arrowhead="open", color="#000000"]
}
<html><head><title>System Model Reconstructed by Kieker.TraceAnalysis</title>
<style type="text/css">
.colTitle {font-size: 11px; background: linear-gradient(to bottom, #FDFDFD, #DDDDDD) transparent }
.cell {font-family: monospace; font-size: 10px; font-family: inherited}
.tabTitle {padding: 4px 4px; font-size: 12px; background: linear-gradient(to bottom, #FFFFFF, #CCEEFF) transparent; border: 1px solid #4DC4FF;color: #333399}
.tab {border-collapse: collapse; border: 1px solid #9D9D9D; font-family: "Segoe UI", "Verdana", "Arial", sans-serif}
.space{padding: 4px 10px;}
</style>
</head><body>
<pre>
.
.
.
.
.
.
.
.
.
.
</pre>
<span style="display: inline-block">
<table class="tab" border="1" style="width:100%">
<tr><th class="tabTitle" colspan="4">Component Types</th></tr>
<tr>
<th class="colTitle space">ID</th>
<th class="colTitle space">Package</th>
<th class="colTitle space">Name</th>
<th class="colTitle space">Operations</th>
</tr>
<tr class="cell">
<td class="space"><a name="COMPONENT_TYPE-3">3</a></td>
<td class="space">bookstoreTracing</td>
<td class="space">Bookstore</td>
<td class="space"><li><a href="#OPERATION-3">searchBook()</a></li></td>
</tr>
<tr class="cell">
<td class="space"><a name="COMPONENT_TYPE-2">2</a></td>
<td class="space">bookstoreTracing</td>
<td class="space">CRM</td>
<td class="space"><li><a href="#OPERATION-2">getOffers()</a></li></td>
</tr>
<tr class="cell">
<td class="space"><a name="COMPONENT_TYPE-1">1</a></td>
<td class="space">bookstoreTracing</td>
<td class="space">Catalog</td>
<td class="space"><li><a href="#OPERATION-1">getBook(boolean)</a></li></td>
</tr>
</table>
<br/>
<table class="tab" border="1" style="width:100%">
<tr><th class="tabTitle" colspan="5">Operations</th></tr>
<tr>
<th class="colTitle space">ID</th>
<th class="colTitle space">Component type</th>
<th class="colTitle space">Name</th>
<th class="colTitle space">Parameter types</th>
<th class="colTitle space">Return type</th>
</tr>
<tr class="cell">
<td class="space"><a name="OPERATION-3">3</a></td>
<td class="space"><a href="#COMPONENT_TYPE-3">bookstoreTracing.Bookstore</a></td>
<td class="space">searchBook</td>
<td class="space">&nbsp;</td>
<td class="space">&lt;NO-RETURN-TYPE&gt;</td>
</tr>
<tr class="cell">
<td class="space"><a name="OPERATION-2">2</a></td>
<td class="space"><a href="#COMPONENT_TYPE-2">bookstoreTracing.CRM</a></td>
<td class="space">getOffers</td>
<td class="space">&nbsp;</td>
<td class="space">&lt;NO-RETURN-TYPE&gt;</td>
</tr>
<tr class="cell">
<td class="space"><a name="OPERATION-1">1</a></td>
<td class="space"><a href="#COMPONENT_TYPE-1">bookstoreTracing.Catalog</a></td>
<td class="space">getBook</td>
<td class="space"><li>boolean</li></td>
<td class="space">&lt;NO-RETURN-TYPE&gt;</td>
</tr>
</table>
<br/>
<table class="tab" border="1" style="width:100%">
<tr><th class="tabTitle" colspan="3">Assembly Components</th></tr>
<tr>
<th class="colTitle space">ID</th>
<th class="colTitle space">Name</th>
<th class="colTitle space">Component type</th>
</tr>
<tr class="cell">
<td class="space"><a name="ASSEMBLY_COMPONENT-3">3</a></td>
<td class="space">@3</td>
<td class="space"><a href="#COMPONENT_TYPE-3">bookstoreTracing.Bookstore</a></td>
</tr>
<tr class="cell">
<td class="space"><a name="ASSEMBLY_COMPONENT-2">2</a></td>
<td class="space">@2</td>
<td class="space"><a href="#COMPONENT_TYPE-2">bookstoreTracing.CRM</a></td>
</tr>
<tr class="cell">
<td class="space"><a name="ASSEMBLY_COMPONENT-1">1</a></td>
<td class="space">@1</td>
<td class="space"><a href="#COMPONENT_TYPE-1">bookstoreTracing.Catalog</a></td>
</tr>
</table>
<br/>
<table class="tab" border="1" style="width:100%">
<tr><th class="tabTitle" colspan="2">Execution Containers</th></tr>
<tr>
<th class="colTitle space">ID</th>
<th class="colTitle space">Name</th>
</tr>
<tr class="cell">
<td class="space"><a name="EXECUTION_CONTAINER-2">2</a></td>
<td class="space">SRV0</td>
</tr>
<tr class="cell">
<td class="space"><a name="EXECUTION_CONTAINER-1">1</a></td>
<td class="space">SRV1</td>
</tr>
</table>
<br/>
<table class="tab" border="1" style="width:100%">
<tr><th class="tabTitle" colspan="3">Deployment Components</th></tr>
<tr>
<th class="colTitle space">ID</th>
<th class="colTitle space">Assembly component</th>
<th class="colTitle space">Execution container</th>
</tr>
<tr class="cell">
<td class="space"><a name="ALLOCATION_COMPONENT-4">4</a></td>
<td class="space"><a href="#ALLOCATION_COMPONENT-3">@3:bookstoreTracing.Bookstore</a></td>
<td class="space"><a href="#EXECUTION_CONTAINER-2">SRV0</a></td>
</tr>
<tr class="cell">
<td class="space"><a name="ALLOCATION_COMPONENT-3">3</a></td>
<td class="space"><a href="#ALLOCATION_COMPONENT-2">@2:bookstoreTracing.CRM</a></td>
<td class="space"><a href="#EXECUTION_CONTAINER-2">SRV0</a></td>
</tr>
<tr class="cell">
<td class="space"><a name="ALLOCATION_COMPONENT-2">2</a></td>
<td class="space"><a href="#ALLOCATION_COMPONENT-1">@1:bookstoreTracing.Catalog</a></td>
<td class="space"><a href="#EXECUTION_CONTAINER-2">SRV0</a></td>
</tr>
<tr class="cell">
<td class="space"><a name="ALLOCATION_COMPONENT-1">1</a></td>
<td class="space"><a href="#ALLOCATION_COMPONENT-1">@1:bookstoreTracing.Catalog</a></td>
<td class="space"><a href="#EXECUTION_CONTAINER-1">SRV1</a></td>
</tr>
</table>
</span>
<pre>
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
</pre>
</body></html>
<?xml version="1.0" encoding="UTF-8"?>
<Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="platform:/resource/Kieker/model/AnalysisMetaModel.ecore" name="AnalysisProject">
<plugins xsi:type="Reader" name="FSReader-2" classname="kieker.analysis.plugin.reader.filesystem.FSReader" id="_x6x28BcZEei_9dg5ayE--A">
<properties name="ignoreUnknownRecordTypes" value="true"/>
<properties name="inputDirs" value="kieker-20100830-082225522-UTC"/>
<outputPorts name="monitoringRecords" id="_x61hUBcZEei_9dg5ayE--A" subscribers="_x62vcBcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="StringBufferFilter-3" classname="kieker.analysis.plugin.filter.forward.StringBufferFilter" id="_x62IYBcZEei_9dg5ayE--A">
<outputPorts name="relayed-events" id="_x62IYRcZEei_9dg5ayE--A" subscribers="_x63WgRcZEei_9dg5ayE--A"/>
<inputPorts name="received-events" id="_x62vcBcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="ThreadEvent2TraceEventFilter-4" classname="kieker.analysis.plugin.filter.flow.ThreadEvent2TraceEventFilter" id="_x62vcRcZEei_9dg5ayE--A">
<outputPorts name="defaultOutputPort" id="_x63WgBcZEei_9dg5ayE--A" subscribers="_x63WhhcZEei_9dg5ayE--A _x63WhxcZEei_9dg5ayE--A"/>
<inputPorts name="defaultInputPort" id="_x63WgRcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="TimestampFilter-5" classname="kieker.analysis.plugin.filter.select.TimestampFilter" id="_x63WghcZEei_9dg5ayE--A">
<properties name="timeunit" value="NANOSECONDS"/>
<properties name="ignoreAfterTimestamp" value="9223372036854775807"/>
<properties name="ignoreBeforeTimestamp" value="0"/>
<outputPorts name="recordsWithinTimePeriod" id="_x63WgxcZEei_9dg5ayE--A" subscribers="_x63WjhcZEei_9dg5ayE--A"/>
<outputPorts name="recordsOutsidePeriod" id="_x63WhBcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsAny" id="_x63WhRcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsExecution" id="_x63WhhcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsFlow" id="_x63WhxcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsCombined" id="_x63WiBcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="TraceIdFilter-6" classname="kieker.analysis.plugin.filter.select.TraceIdFilter" id="_x63WiRcZEei_9dg5ayE--A">
<properties name="selectedTraceIds" value=""/>
<properties name="acceptAllTraces" value="true"/>
<outputPorts name="recordsMatchingId" id="_x63WihcZEei_9dg5ayE--A" subscribers="_x64koBcZEei_9dg5ayE--A _x64kqhcZEei_9dg5ayE--A"/>
<outputPorts name="recordsNotMatchingId" id="_x63WixcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsExecution" id="_x63WjBcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsFlow" id="_x63WjRcZEei_9dg5ayE--A"/>
<inputPorts name="monitoringRecordsCombined" id="_x63WjhcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Execution record transformation" classname="kieker.tools.traceAnalysis.filter.executionRecordTransformation.ExecutionRecordTransformationFilter" id="_x63WjxcZEei_9dg5ayE--A">
<repositories name="systemModelRepository" repository="_x6wo0BcZEei_9dg5ayE--A" id="_x639kBcZEei_9dg5ayE--A"/>
<outputPorts name="transformedExecutions" id="_x639kRcZEei_9dg5ayE--A" subscribers="_x64kphcZEei_9dg5ayE--A"/>
<inputPorts name="operationExecutionRecords" id="_x64koBcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Trace reconstruction (execution records -> execution traces)" classname="kieker.tools.traceAnalysis.filter.traceReconstruction.TraceReconstructionFilter" id="_x64koRcZEei_9dg5ayE--A">
<properties name="timeunit" value="NANOSECONDS"/>
<properties name="ignoreInvalidTraces" value="false"/>
<properties name="maxTraceDuration" value="600000000000"/>
<repositories name="systemModelRepository" repository="_x6wo0BcZEei_9dg5ayE--A" id="_x64kohcZEei_9dg5ayE--A"/>
<outputPorts name="messageTraces" id="_x64koxcZEei_9dg5ayE--A" subscribers="_x65LtxcZEei_9dg5ayE--A"/>
<outputPorts name="executionTraces" id="_x64kpBcZEei_9dg5ayE--A"/>
<outputPorts name="invalidExecutionTraces" id="_x64kpRcZEei_9dg5ayE--A"/>
<inputPorts name="executions" id="_x64kphcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Trace reconstruction (trace event records -> event record traces)" classname="kieker.analysis.plugin.filter.flow.EventRecordTraceReconstructionFilter" id="_x64kpxcZEei_9dg5ayE--A">
<properties name="timeunit" value="NANOSECONDS"/>
<properties name="maxTraceTimeout" value="9223372036854775807"/>
<properties name="repairEventBasedTraces" value="false"/>
<properties name="maxTraceDuration" value="600000000000"/>
<outputPorts name="validTraces" id="_x64kqBcZEei_9dg5ayE--A" subscribers="_x64krhcZEei_9dg5ayE--A _x65LsxcZEei_9dg5ayE--A"/>
<outputPorts name="invalidTraces" id="_x64kqRcZEei_9dg5ayE--A" subscribers="_x64krxcZEei_9dg5ayE--A"/>
<inputPorts name="traceRecords" id="_x64kqhcZEei_9dg5ayE--A"/>
<inputPorts name="timestamps" id="_x64kqxcZEei_9dg5ayE--A"/>
<inputPorts name="traceEventRecords" id="_x64krBcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Trace reconstruction (event records -> event record traces)" classname="kieker.tools.traceAnalysis.filter.flow.EventRecordTraceCounter" id="_x64krRcZEei_9dg5ayE--A">
<properties name="logInvalidTraces" value="true"/>
<inputPorts name="validEventRecordTraces" id="_x64krhcZEei_9dg5ayE--A"/>
<inputPorts name="invalidEventRecordTraces" id="_x64krxcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Trace reconstruction (event record traces -> execution traces)" classname="kieker.tools.traceAnalysis.filter.flow.TraceEventRecords2ExecutionAndMessageTraceFilter" id="_x64ksBcZEei_9dg5ayE--A">
<properties name="enhanceJavaConstructors" value="true"/>
<properties name="enhanceCallDetection" value="true"/>
<properties name="ignoreAssumed" value="false"/>
<repositories name="systemModelRepository" repository="_x6wo0BcZEei_9dg5ayE--A" id="_x64ksRcZEei_9dg5ayE--A"/>
<outputPorts name="executionTrace" id="_x65LsBcZEei_9dg5ayE--A"/>
<outputPorts name="messageTrace" id="_x65LsRcZEei_9dg5ayE--A" subscribers="_x65LtxcZEei_9dg5ayE--A"/>
<outputPorts name="invalidTrace" id="_x65LshcZEei_9dg5ayE--A"/>
<inputPorts name="traceEvents" id="_x65LsxcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="OperationDependencyGraphAllocationFilter-7" classname="kieker.tools.traceAnalysis.filter.visualization.dependencyGraph.OperationDependencyGraphAllocationFilter" id="_x65LtBcZEei_9dg5ayE--A">
<repositories name="systemModelRepository" repository="_x6wo0BcZEei_9dg5ayE--A" id="_x65LtRcZEei_9dg5ayE--A"/>
<outputPorts name="graphs" id="_x65LthcZEei_9dg5ayE--A" subscribers="_x65LuRcZEei_9dg5ayE--A"/>
<inputPorts name="messageTraces" id="_x65LtxcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="Operation dependency graph (deployment level)" classname="kieker.tools.traceAnalysis.filter.visualization.GraphWriterPlugin" id="_x65LuBcZEei_9dg5ayE--A">
<properties name="outputPath" value="output_kieker/"/>
<properties name="shortLabels" value="false"/>
<properties name="selfLoops" value="false"/>
<properties name="includeWeights" value="true"/>
<properties name="dotOutputFn" value=""/>
<inputPorts name="inputGraph" id="_x65LuRcZEei_9dg5ayE--A"/>
</plugins>
<plugins xsi:type="Filter" name="SystemModel2FileFilter-8" classname="kieker.tools.traceAnalysis.filter.systemModel.SystemModel2FileFilter" id="_x65LuhcZEei_9dg5ayE--A">
<properties name="outputFnHtml" value="output_kieker/system-entities.html"/>
<repositories name="systemModelRepository" repository="_x6wo0BcZEei_9dg5ayE--A" id="_x65LuxcZEei_9dg5ayE--A"/>
</plugins>
<repositories classname="kieker.tools.traceAnalysis.systemModel.repository.SystemModelRepository" id="_x6wo0BcZEei_9dg5ayE--A"/>
</Project>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment