I have put my first patch on Mozilla’s Bugzilla for timestamps. This is the option for changing the code to do timing information. Again, the other option is to modify buildbot. This patch would still require a change to insert machine information into the log file, so we can figure out which machines are failing. I am at a crossroads and I need to decide if I am going to do this with a buildbot specific approach or modify the actual testing infrastructure.
My options include:
1) In BuildBot Subclass LogFile to TimedLogFile:
This option involves subclassing LogFile to a specialized LogFile which will implement the timing steps. Rather than adding this in the initial LogFile implementation, the subclassing removes the breakage of parallel, multi-line build task output. This subclass would only be used by specialized build steps.
2) In BuildBot Subclass LogFile to DatabaseLogFile:
This option involves intercepting LogFile addStdout() calls and sending them straight to a database. This has the disadvantage of requiring DB libraries on the client machines. I don’t know if it would be possible to route the database connection through the slaveport or not, so it might even require a second socket connection. This option has the [advantage|disadvantage] of not changing the actual build output. This could also lead to simpler parser writing because the parser would only need to know where the database is, no files
3) Modify test harnesses:
This is what I have started doing with my patch. It requires a lot of changes all over the place so it might be hard to get landed. This also changes the build output for everyone. It also requires that one timestamp format/option is used, so one format must be used in C, JS and Py.
4) Investigate pymake. This is not really an option until pymake is more mainstream.
I need to pick one of these methods very soon but I would like to get someone else’s opinion on this first.