Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[tracecompass-dev] Txt parser to custom analysis

Hi,

I am trying to create an overview of the states of several components in a system. For this I want to use a timeGraphView of TraceCompass.

The input trace is a text file file which i parse using a custom parser. I filtered out a Timestamp (2016-07-28 09:25:45.037), a field named Origin (a string) and a event_type (Closed, Closing....). The event should trigger a state change defined in my stateProvider


The parser:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<CustomTxtTraceDefinitionList>
<Definition category="Custom Text-xml" name="xml">
<TimeStampOutputFormat>yyyy-MM-dd HH:mm:ss.SSS</TimeStampOutputFormat>
<InputLine>
<Cardinality max="2147483647" min="0"/>
<RegEx>\t+.*\t+(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d.\d\d\d)+\t([a-zA-Z]*\t)+ReportStateChange.[a-zA-Z]*\s-&gt;\s(.[a-zA-Z]*).*</RegEx>
<InputData action="" format="yyyy-MM-dd HH:mm:ss.SSS" name="Timestamp" tag="TIMESTAMP"/>
<InputData action="" format="" name="Origin" tag="OTHER"/>
<InputData action="" format="" name="Event type" tag="EVENT_TYPE"/>
</InputLine>
<OutputColumn name="Timestamp" tag="TIMESTAMP"/>
<OutputColumn name="Origin" tag="OTHER"/>
<OutputColumn name="Event type" tag="EVENT_TYPE"/>
</Definition>
</CustomTxtTraceDefinitionList>


The parser is ok, but i cannot get the connection between the filtered fields and analysis which is defined as:

<tmfxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/xmlDefinition.xsd">

   <stateProvider version="0" id="my.al.state.provider">
        <head>
            <traceType id="my.trace.id" />
            <label value="My test analysis" />
        </head>

        <definedValue name="OPENED"  value="100" />
        <definedValue name="CLOSED"  value="101" />
        <definedValue name="OPENING" value="102" />
        <definedValue name="CLOSING" value="103" />
        <definedValue name="EMPTY"   value="104" />
        <definedValue name="FILLED"  value="105" />
        <definedValue name="ERROR"   value="106" />

        <eventHandler eventName="Opened">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$OPENED" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Closed">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$CLOSED" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Opening">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$OPENING" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Closing">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$CLOSING" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Empty">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$EMPTY" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Filled">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$FILLED" />
            </stateChange>
        </eventHandler>
        <eventHandler eventName="Error">
            <stateChange>
                <stateAttribute type="constant" value="Tasks" />
                <stateAttribute type="eventField" value="number" />
                <stateValue type="int" value="$ERROR" />
            </stateChange>
        </eventHandler>
</stateProvider>
 
<timeGraphView id="my.al.time.graph.view">
        <head>
            <analysis id="my.al.state.provider" />
            <label value="My txt View" />
        </head>

        <definedValue name="OPENED"  value="100" color="#118811" />
        <definedValue name="CLOSED"  value="101" color="#881111" />
        <definedValue name="OPENING" value="102" color="#AEB522" />
        <definedValue name="CLOSING" value="103" color="#AEB524" />
        <definedValue name="EMPTY"   value="104" color="#AEB524" />
        <definedValue name="FILLED"  value="105" color="#AEB528" />
        <definedValue name="ERROR"   value="106" color="#AEB52A" />

        <entry path="Tasks/*">
<display type="self" />
        </entry>
    </timeGraphView>
</tmfxml>

My questions:
Is this the right place to ask these questions?
Is it possible using a text input trace to create the graph I want?
How can i get the state provider to use the events coming from the custom text parser?

Thanks,

Johan

Back to the top