pattern = re.compile('-rf')
... but this doesn't:
pattern = re.compile('-rf.?*')
This code is in the
runTestSuite() method, which is called by TestRunner.__call__. This is executed by every Grinder worker thread. It fails with the following error message:23/11/11 10:03:34 (thread 0 run 0): Aborted run due to Jython exception: <type 'exceptions.ValueError'>: ('unsupported operand type', 'any') [calling TestRunner]
The reason for this is that each thread must import the
re module separately. One way to get around the error is to compile the regular expression in a helper method outside any Grinder worker thread, and invoke the helper method from worker threads:
# compile regular expression
def getRfRe():
import re
return re.compile(r"-rf.*?\s")
# use it from within runTestSuite() or any other worker thread
match = getRfRe().search(req)
if match:
value = match.group(0)
Here is a link to the section in the Grinder FAQ that describes this in more detail: http://grinder.sourceforge.net/faq.html#re-problems