Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[tracecompass-dev] Help regarding arrows in EASE scripting
  • From: <Lea.Jungmann@xxxxxx>
  • Date: Fri, 23 Jun 2023 13:31:28 +0000
  • Accept-language: de-DE, en-US
  • Delivered-to: tracecompass-dev@xxxxxxxxxxx
  • Ironport-data: A9a23:RuitE6PgW0DURBrvrR0elcFynXyQoLVcMsEvi/4bfWQNrUpz1mQDm zMbWD2COf7ZamP3fdtxOYW0ox4C6pKAydVjTXM5pCpnJ55oRWspJjg7wmPYZX76whjrFRo/h ykmQoCcappyFBcwnz/1WpD5t35wyKqUcbT1De/AK0hZSBRtIMsboUsLd9UR3Mgw2LBVPyvX4 Ymp+5OFYwf+s9JJGjt8B5yr+UsHUMva5WtwUmwWPZhjoFLYnn8JO5MTTYnZw6zQG9Q88kaSH o4v/Znhlo/r105F5uCNzt4XRnY3rov6ZmBivJb3t5+K2XCurgRqukoy2WF1hU1/011llPgpo DlBWADZpa7E8cQglcxEOyS0HR2SMoVp6ubFI1SWtPes6F/tKnjn6chKJRkpaNhwFuZfWQmi9 NQ0DBwgQD6mpseOmuyWesIqh8I/NsCtMIcF/H1tpd3bJa9+B8mTH+OTvo8ehmlYasNmRJ4yY +I9ZDMpTgnGbBhGPFE/BJYk2uul7pX6W2wD+A7N+PFti4TV5FBql7f8EPHRQIWlfOt5wUbF5 VzF/F2sV3n2M/Tak1Jp6EmEmvXGli7wX4cKHaajs/JnnnWezWgSEAYbE1yhrpGEZlWWV9ZTJ kIa/ysrtfJs+VygCNj7Qwex5nKApFgQVrK8DtEH1e1E8YKMiy7xO4TOZmcphAAO3CPueQEX6 w==
  • Ironport-hdrordr: A9a23:qCe9EajozYC0bRdZJyiK3ez0BXBQXuEji2hC6mlwRA09TyXBrb HNoB1p726QtN9xYgBYpTnuAsm9qB/nmKKdgrNhRYtKPjOW21dARbsKheCJ/9SKIULDH5tmtJ uIBJIRNDSfNzRHZI3BkW2F+p4bsb66GY6T9IHj80s=
  • Ironport-phdr: A9a23:4W/FmxWmdkCF6lYDsHALo65+1tjV8KwLVTF92vMcY1JmTK2v8tzYM VDF4r011RmVB9idt64YwLSK+4nbGkU+or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7F skRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCS9bL9oI xi7ogrcusYXjIZtN6081gbHrnxUdutZwm9lOUidlAvm6Meq+55j/SVQu/Y/+MNFTK73Yac2Q 6FGATo/K2w669HluhfFTQuU+3sTSX4WnQZSAwjE9x71QJH8uTbnu+Vn2SmaOcr2Ta0oWTmn8 qxmRgPkhDsBOjUk9mzcl85+g79BoB+5pxJx3ZPaYJ2bOvR9f6PSYdwVSHFbUcpNVSxMGJ+wY 5cRA+cHIO1Wr5P9p1wLrRamAgSiAv3gxSVSinHywK061eshEQTc0wwmGdIDq2nbrNHvNKsIT O+60rDFwDPeZPxZxTnz8pLHcgw9of6SR7Jwd9LcxFUzGw/YgFidqZHpMjGb2OkPsGWW8/ZsW +Kyh2MjtQx8oSSiy9owh4TKm44YxFDJ+Ct7zYsoJNC0VUx2bNC6HZZWqiqUOYx2QsY4TGFpv iY30rIGuZ+nfCgK1ZQo3ATTZOCAc4iN5B/oSeWfIS9giX54ZL6znQu+/Euvx+HmS8W53lVHo jBbntTNrnwBygDf5tKaRvZ+8UqtwyuD2g7Q5+1eP0w5laXWJpg8ybAqjJUTq17MHirulUXzi 6+Za1sr9/Cz6+TifrXmvpicN5Joig3mMqQhhMi/AeMgPwYAWWaV9+uy2r3j80P+Q7tEiec4n rfYvZ7VJMsWuLS1Aw5T0oY/8RawFS2q38kcnXkdNl5KZQyIg5DoO1HIPv/4Ee+yj0mwnDtx2 vzLPbLsDo/QInXNk7rtZ6hx5k9ExAo2199f5pZUCr8bIPL0X0/8rNrWAQEjPACux+jnFdN91 owbWW2VBK+ZNrjfvkKM5uI1OeWDeZEatC77K/c+//Hul2M2mUcBfam12psacG20Eux8I0qFe XrsnssBEWASswoiVuzlkkGNXiBPaHa1WqI8/is0CJm9DYvaW4+inqKB0TylEZJKYmBGC0iME Wz2eImeXPcMci2ScYddlWlQSaKoQIIq0hS2vRThjrZqMMLZ8SkZrYnukt9v6LuAuws18GkgK 8mUlUOQSW5xl2UObzMyxuZzrBoumR+4zaFkjqkARpRo7PRTX1JiXaM=
  • List-archive: <https://www.eclipse.org/mailman/private/tracecompass-dev/>
  • List-help: <mailto:tracecompass-dev-request@eclipse.org?subject=help>
  • List-subscribe: <https://www.eclipse.org/mailman/listinfo/tracecompass-dev>, <mailto:tracecompass-dev-request@eclipse.org?subject=subscribe>
  • List-unsubscribe: <https://www.eclipse.org/mailman/options/tracecompass-dev>, <mailto:tracecompass-dev-request@eclipse.org?subject=unsubscribe>
  • Thread-index: Adml1ttgg+QiejMTQMiGorEheXkYpA==
  • Thread-topic: Help regarding arrows in EASE scripting

Hi!

 

So I’ve been trying to use python with EASE scripting to make custom TimeGraphs but I run into two problems:

 

The first, minor, one is that every time I change the script, I have to change the name of the Analysis to make the changes appear. Is there a way around that?

 

My second issue is that even though I create arrows and hand them over to the TimeGraphProvider, they do not appear. I have been heavily relying on the script given in the tutorial here [1]. Here is the script I’ve been using:

 

loadModule('/TraceCompass/Analysis');

loadModule('/TraceCompass/Trace');

loadModule('/TraceCompass/View');

loadModule('/TraceCompass/DataProvider');

loadModule('/TraceCompass/Utils');

 

from py4j.java_gateway import JavaClass

import time

 

trace = getActiveTrace()

analysis = createScriptedAnalysis(trace, "Tasking")

 

if analysis is None:

    print("Trace is null")

    exit()

ss = analysis.getStateSystem(False)

 

def strToVarargs(str):

    object_class = java.lang.String

    object_array = gateway.new_array(object_class, 1)

    object_array[0] = str

    return object_array

 

tgArrows = createListWrapper();

tgEntries = createListWrapper();

 

def runAnalysis():

    iter = analysis.getEventIterator()

    last = None

    lastTime = 0

  

    event = None

    while iter.hasNext():

        if not(event is None):

            gateway.detach(event)

       

        event = iter.next();

       

       # Custom events

        if event.getName() == "pushed_channel":

            name = getEventFieldValue(event, "channel")

            if (not(name is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.modifyAttribute(event.getTimestamp().toNanos(), "Push", quark)

               

        if event.getName() == "unpushed_channel":

            name = getEventFieldValue(event, "channel")

            if (not(name is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.removeAttribute(event.getTimestamp().toNanos(), quark)

               

        if event.getName() == "activated_task":

            name = getEventFieldValue(event, "task")

            if (not(name is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.modifyAttribute(event.getTimestamp().toNanos(), "Activated", quark)

               

        if event.getName() == "start_executing_task":

           name = getEventFieldValue(event, "task")

           if(not(name is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.modifyAttribute(event.getTimestamp().toNanos(), "Executing", quark)

                

        if event.getName() == "stop_executing_task":

            name = getEventFieldValue(event, "task")

            if(not(name is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.removeAttribute(event.getTimestamp().toNanos(), quark)

                last = quark;

                lastTime = event.getTimestamp().toNanos();

        if event.getName() == "sched_switch":

            name = getEventFieldValue(event, "next_comm")

            if(not(name is None) and not(last is None)):

                quark = ss.getQuarkAbsoluteAndAdd(strToVarargs(str(name)))

                ss.removeAttribute(event.getTimestamp().toNanos(), quark)

                duration = lastTime - event.getTimestamp().toNanos();

 

                 # Arrows created and added to list here

                tgArrows.getList().add(createArrow(last, quark, lastTime, duration, 1))

               

    if not(event is None):

        ss.closeHistory(event.getTimestamp().toNanos())

if not(ss.waitUntilBuilt(0)):

    runAnalysis()

   

quarks = ss.getQuarks(strToVarargs("*"))

entries = []

 

#get all entries

for quark in quarks:

    entries.append(ss.getAttributeName(quark))

   

# put all entries into wrapper list

for entry in entries:

    quark = ss.getQuarkAbsolute(strToVarargs(str(entry)))

    listEntry = createEntry(entry, {"quark" : quark})

    tgEntries.getList().add(listEntry)

class EntryFunction(object):

    def apply(self, parameters):

        return tgEntries.getList();

   

    class Java:

        implements = ['java.util.function.Function']

       

class ArrowFunction(object):

    def apply(self, parameters):

        return tgArrows.getList();

   

    class Java:

        implements = ['java.util.function.Function']

 

entryFunction = EntryFunction()

arrowFunction = ArrowFunction()

provider = createScriptedTimeGraphProvider(analysis, entryFunction, None, arrowFunction);

if not(provider is None):

    openTimeGraphView(provider)

monitor = getScriptEngine().getMonitor()

while not monitor.isCanceled():

    time.sleep(5)

 

Is there something obvious, that I missed, that causes the arrows not to appear in the TimeGraph?

 

Best regards,

Lea

 

 

[1] https://github.com/tuxology/tracevizlab/tree/master/labs/204-scripted-analysis-for-custom-instrumentation


Back to the top