Closed
Bug 913975
Opened 11 years ago
Closed 11 years ago
[mozprocess] _processOutput should call self.processOutputLine one more time on timeout (I think)
Categories
(Testing :: Mozbase, defect)
Testing
Mozbase
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: k0scist, Assigned: ahal)
References
Details
Attachments
(1 file, 2 obsolete files)
1.58 KB,
patch
|
ahal
:
review+
|
Details | Diff | Splinter Review |
automation.py.in logs a line, potentially, on timeout: http://mxr.mozilla.org/mozilla-central/source/build/automation.py.in#760 759 if didTimeout: 760 if line: 761 self.log.info(line.rstrip().decode("UTF-8", "ignore")) 762 self.log.info("TEST-UNEXPECTED-FAIL | %s | application timed out after %d seconds with no output", self.lastTestSeen, int(timeout)) 763 if browserProcessId == -1: 764 browserProcessId = proc.pid 765 self.killAndGetStack(browserProcessId, utilityPath, debuggerInfo) mozprocess, on the other hand, does not: https://github.com/mozilla/mozbase/blob/master/mozprocess/mozprocess/processhandler.py#L699 (line, self.didTimeout) = self.readWithTimeout(logsource, lineReadTimeout) while line != "" and not self.didTimeout: self.processOutputLine(line.rstrip()) if timeout: lineReadTimeout = timeout - (datetime.now() - self.startTime).seconds (line, self.didTimeout) = self.readWithTimeout(logsource, lineReadTimeout) I'm not sure what, if any, the circumstances are where there will be a final unlogged line here, but if there is such a line...mozprocess should be calling processOutputLine on it.
Reporter | ||
Comment 1•11 years ago
|
||
potentially related? https://bugzilla.mozilla.org/show_bug.cgi?id=932382
Assignee | ||
Comment 2•11 years ago
|
||
I see what you mean. I think this patch will do what we want, though I haven't tested on try yet. I don't remember how you feel about while/else clauses, so if you want me to make it more readable, I can.
Assignee | ||
Comment 3•11 years ago
|
||
Comment on attachment 824215 [details] [diff] [review] 0001-Bug-913975-processOutputLine-should-be-called-with-l.patch Oops, this is wrong anyway. Here onTimeout only gets called if there *is* still output. New patch coming shortly.
Attachment #824215 -
Attachment is obsolete: true
Attachment #824215 -
Flags: review?(jhammel)
Reporter | ||
Comment 4•11 years ago
|
||
Comment on attachment 824215 [details] [diff] [review] 0001-Bug-913975-processOutputLine-should-be-called-with-l.patch Review of attachment 824215 [details] [diff] [review]: ----------------------------------------------------------------- I quite like while: else: and think this is an elegant solution :) r+ That said, whether what is in mozprocess currently or what i noted from automation.py is "correct" (and why) is a bit hard to ascertain. Still, I'd rather land this as A. it *could* help; and B. there are a number of bugs that point to problems with output that are more concrete in manifestation if more abstract to diagnose and fix.
Attachment #824215 -
Attachment is obsolete: false
Reporter | ||
Comment 5•11 years ago
|
||
Comment on attachment 824215 [details] [diff] [review] 0001-Bug-913975-processOutputLine-should-be-called-with-l.patch Review of attachment 824215 [details] [diff] [review]: ----------------------------------------------------------------- Somehow the r+ got swallowed
Attachment #824215 -
Flags: review+
Assignee | ||
Comment 6•11 years ago
|
||
Attachment #824215 -
Attachment is obsolete: true
Attachment #824238 -
Flags: review?(jhammel)
Assignee | ||
Comment 7•11 years ago
|
||
Gah, that was the same patch, cwd fail. Sorry for the bugspam.
Attachment #824238 -
Attachment is obsolete: true
Attachment #824238 -
Flags: review?(jhammel)
Attachment #824240 -
Flags: review?(jhammel)
Assignee | ||
Comment 8•11 years ago
|
||
Comment on attachment 824240 [details] [diff] [review] Patch 1.0 - make sure processOutputLine called with last line of output Review of attachment 824240 [details] [diff] [review]: ----------------------------------------------------------------- Sorry jhammel, I didn't notice you were being quick on your reviews when I was uploading my patches. The first patch failed one of the mozprocess tests (hooray for unittests!) because it doesn't execute the onTimeout callback if line=="" and didTimeout == True. This patch seems to pass without problems.
Attachment #824240 -
Flags: review?(jhammel) → review+
Reporter | ||
Comment 9•11 years ago
|
||
Coolz; shall we check in?
Assignee | ||
Comment 10•11 years ago
|
||
Actually I'm not sure this is going to do anything. If you look at the _readWithTimeout function, anywhere we return "True" for timeout, we also explicitly return an empty string: https://github.com/mozilla/mozbase/blob/master/mozprocess/mozprocess/processhandler.py#L787 So this patch might future proof a bit in case that changes, but I don't think it will fix any problems. Up to you if you want to take it anyway?
Reporter | ||
Comment 11•11 years ago
|
||
In reply to Andrew Halberstadt [:ahal] from comment #10) > Actually I'm not sure this is going to do anything. If you look at the > _readWithTimeout function, anywhere we return "True" for timeout, we also > explicitly return an empty string: > https://github.com/mozilla/mozbase/blob/master/mozprocess/mozprocess/ > processhandler.py#L787 > > So this patch might future proof a bit in case that changes, but I don't > think it will fix any problems. Up to you if you want to take it anyway? I'm not entirely convinced it will do anything either. The real goal, which is beyond the title/scope of the bug, is to ensure that the buffer is completely eaten on timeout. I don't necessarily think this will do that, but A. it doesn't hurt; and B. it gives parity to ancient undocumented automation.py code.
Summary: [mozprocess] _processOutput should call self.processOutputLine one more time one timeout (I think) → [mozprocess] _processOutput should call self.processOutputLine one more time on timeout (I think)
Reporter | ||
Comment 12•11 years ago
|
||
pushed: https://github.com/mozilla/mozbase/commit/36c8a63f04d1098d76d1ccbec8440c6ebe3164af
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•