Hello,
Currently all Robot Framework code runs in a single thread (and does
not try to monitor any other threads). This of course doesn't mean
that the symptoms you see wouldn't be caused by RF.
A simple example of this behavior would of course be really sweet,
because otherwise I have no idea how to proceed in debugging.
thanks,
__j
There is one exception to this rule: timeouts. As Bulkan investigated
some time ago, they may cause performance problems in some cases due
to the GIL:
http://code.google.com/p/robotframework/issues/detail?id=497
> A simple example of this behavior would of course be really sweet,
> because otherwise I have no idea how to proceed in debugging.
Exactly.
Cheers,
.peke
--
Agile Tester/Developer/Consultant :: http://eliga.fi
Lead Developer of Robot Framework :: http://robotframework.org
Have you set the test library scope? Be default a new instance of the
test library is created for every test case, and thus changes you do
the library state in a suite setup aren't visible for test cases. As
explained in the User Guide, you can easily change the scope by
setting `ROBOT_LIBRARY_SCOPE` attribute:
http://robotframework.googlecode.com/svn/tags/robotframework-2.5/doc/userguide/RobotFrameworkUserGuide.html#test-library-scope
> Also, is there any way to log ALL Python "print" output, regardless of
> source? I note that only prints from the function directly called are
> logged -- NOT the prints from any sub-functions called (to say nothing
> of another thread's prints.)
There should be no difference is output printed by your keyword
directly or by a sub function it uses. If you use threads that stay
alive between keyword calls thinks are different, though, because the
framework intercepts the standard output and error streams before
running a keyword and releases them afterwards. In these cases you
can, for example, write the outputs to an external text file.
I'm happy to hear it was a false alarm. =)
> On an unrelated note, I'm curious how you guys handled the problem with
> signals in Python (for cleanly stopping test execution). AFAIK as soon as
> you start using multiple threads in Python, you can't use signal handlers at
> all. This means that as soon as I added a timeout to a test, the signaling
> would cease to work.
The signal handler code is visible at [1] and you can search in the
code base for those few places where this handler is called. As you
can read from [2], signals and threads work well in Python as long as
you do the main signal operations (such as setting signal handlers) in
the main thread.
[1] http://code.google.com/p/robotframework/source/browse/trunk/src/robot/running/signalhandler.py
[2] http://docs.python.org/library/signal.html
just
ROBOT_LIBRARY_SCOPE = "GLOBAL"
is enough with Python classes. "public static final" is for Java.
hth,
__j