Ok, I think I have cracked it I added:

        test_results_parser = LineConsumerLogObserver(self.logConsumer)
        self.addLogObserver('stdio', test_results_parser)

into my __init__ method.  The logConsumer method just scans through the log 
line by line and looks for information which works fine.

I also added

        rc = cmd.results()
        if rc == results.SUCCESS:
            if self._total is not None and self._failed == 0 and self._total > 
                rc = results.SUCCESS
                rc = results.FAILURE


to the bottom of my run method.  This appears to work as expected.

Please let me know if I have made any mistakes.


From: users <users-boun...@buildbot.net> on behalf of Hugh Sorby 
Sent: Tuesday, February 20, 2018 9:27 AM
To: Pierre Tardy
Cc: users@buildbot.net
Subject: [FORGED] Re: [us...@bb.net] Help with new buildstep.


Ok, I have seen this class but how does it fit into the code?  I can only see 
examples of using this class with the old-style steps which use the 'start' 

From: Pierre Tardy <tar...@gmail.com>
Sent: Monday, February 19, 2018 11:26 PM
To: Hugh Sorby
Cc: users@buildbot.net
Subject: Re: [us...@bb.net] Help with new buildstep.

What you need is a logobserver.

There is a LineConsumerLogObserver which can be used to read the logs one line 
by one line.
This component is optimised to manage the data on the flow, and avoid consuming 
lots of memory by loading the log in memory.


On Mon, Feb 19, 2018 at 3:54 AM Hugh Sorby 
<h.so...@auckland.ac.nz<mailto:h.so...@auckland.ac.nz>> wrote:

Hi All,

I'm trying to update an old buildstep to the 'new-style'.  What I used to do 
was pass the stdio log line by line looking for a matching string.  Now using 
the 'run' method I have

    def run(self):
        command = self.command

        cmd = yield self.makeRemoteShellCommand(command=command, 
collectStdout=True, stdioLogName="stdoutLog")

        yield self.runCommand(cmd)


but I'm unsure of how or when I should parse the log and set the result.  I 
don't actually think I need to collect stdout but I have left it in here as I 
was testing out some ideas.

Many thanks for any help or pointers,

users mailing list
users mailing list

Reply via email to