Revision: 3116
Author: jussi.ao.malinen
Date: Mon May 3 02:45:26 2010
Log: Issue 108 tests.
http://code.google.com/p/robotframework/source/detail?r=3116
Added:
/trunk/atest/robot/running/JavaStarter.py
/trunk/atest/robot/running/ProcessManager.py
Modified:
/trunk/atest/robot/running/stopping_with_signal.txt
/trunk/atest/testdata/running/stopping_with_signal/keyword-timeout.txt
/trunk/atest/testdata/running/stopping_with_signal/run_keyword.txt
/trunk/atest/testdata/running/stopping_with_signal/test-timeout.txt
/trunk/atest/testdata/running/stopping_with_signal/without_any_timeout.txt
=======================================
--- /dev/null
+++ /trunk/atest/robot/running/JavaStarter.py Mon May 3 02:45:26 2010
@@ -0,0 +1,28 @@
+import subprocess
+import os
+import signal
+
+class JavaStarter(object):
+
+ def __init__(self):
+ self._jython_home = os.getenv('JYTHON_HOME')
+ if not self._jython_home:
+ return
+ jython_jar = os.path.join(self._jython_home, 'jython.jar')
+ self._classpath = jython_jar + os.pathsep +
os.getenv('CLASSPATH','')
+ java_home = os.getenv('JAVA_HOME')
+ self._java = os.path.join(java_home, 'java') if java_home
else 'java'
+
+ def get_jython_path(self):
+ if not self._jython_home:
+ raise RuntimeError('This test requires JYTHON_HOME environment
variable to be set.')
+ return '%s -Dpython.home=%s -classpath %s
org.python.util.jython' % (self._java,self._jython_home,self._classpath)
+
+
+# CP="/home/peke/Prog/jython2.2/jython.jar"
+# if [ ! -z "$CLASSPATH" ]
+# then
+# CP=$CP:$CLASSPATH
+# fi
+# "/usr/bin/java" -Dpython.home="/home/peke/Prog/jython2.2" -classpath
+# "$CP" org.python.util.jython "$@"
=======================================
--- /dev/null
+++ /trunk/atest/robot/running/ProcessManager.py Mon May 3 02:45:26 2010
@@ -0,0 +1,37 @@
+import subprocess
+import os
+import signal
+
+class ProcessManager(object):
+
+ def __init__(self):
+ self._current_running_process = None
+
+ def start_process(self,*args):
+ self._current_running_process = subprocess.Popen(args, shell=True,
stderr=subprocess.PIPE,
+
stdout=subprocess.PIPE)
+ self._output = ''
+ self._err = ''
+
+ def returncode(self):
+ self._current_running_process.poll()
+ return self._current_running_process.returncode
+
+ def send_terminate(self, signal_):
+ pid = self._current_running_process.pid
+ os.kill(pid, getattr(signal, signal_))
+
+ def get_stdout(self):
+ self._output += self._current_running_process.stdout.read()
+ return self._output
+
+ def get_stderr(self):
+ self._err += self._current_running_process.stderr.read()
+ return self._err
+
+ def wait_until_finished(self):
+ self._current_running_process.wait()
+
+ def wait_until_err_contains(self, search):
+ while not search in self.get_stderr():
+ pass
=======================================
--- /trunk/atest/robot/running/stopping_with_signal.txt Wed Apr 28 02:45:48
2010
+++ /trunk/atest/robot/running/stopping_with_signal.txt Mon May 3 02:45:26
2010
@@ -1,27 +1,101 @@
*** Settings ***
-Force Tags not-ready
+Force Tags regression
Default Tags pybot jybot
Resource atest_resource.txt
+Library ProcessManager.py
+Library JavaStarter.py
*** Test Cases ***
SIGINT Signal Should Stop Test Execution Gracefully
- Start Test Execution
+ Start And Send Signal without_any_timeout.txt One Signal SIGINT
+ Process Output For Graceful Shutdown
+ Check Test Cases Have Failed Correctly
SIGTERM Signal Should Stop Test Execution Gracefully
-
-One Signal Should Stop Test Execution Gracefully When Run Keyword Is Used
+ Start And Send Signal without_any_timeout.txt One Signal SIGTERM
+ Process Output For Graceful Shutdown
+ Check Test Cases Have Failed Correctly
+
+One Signal Should Stop Test Execution Gracefully When Run Keyword Is Used
+ Start And Send Signal run_keyword.txt One Signal SIGTERM
+ Process Output For Graceful Shutdown
+ Check Test Cases Have Failed Correctly
One Signal Should Stop Test Execution Gracefully When Test Timeout Is Used
+ Start And Send Signal test-timeout.txt One Signal SIGTERM
+ Process Output For Graceful Shutdown
+ Check Test Cases Have Failed Correctly
One Signal Should Stop Test Execution Gracefully When Keyword Timeout Is
Used
+ Start And Send Signal keyword-timeout.txt One Signal SIGTERM
+ Process Output For Graceful Shutdown
+ Check Test Cases Have Failed Correctly
Two SIGINT Signals Should Stop Test Execution Forcefully
+ Start And Send Signal without_any_timeout.txt Two Signals SIGINT
+ Check Tests Have Been Forced To Shutdown
Two SIGTERM Signals Should Stop Test Execution Forcefully
+ Start And Send Signal without_any_timeout.txt Two Signals SIGTERM
+ Check Tests Have Been Forced To Shutdown
Two Signals Should Stop Test Execution Forcefully When Run Keyword Is Used
+ Start And Send Signal run_keyword.txt Two Signals SIGINT
+ Check Tests Have Been Forced To Shutdown
Two Signals Should Stop Test Execution Forcefully When Test Timeout Is Used
+ Start And Send Signal test-timeout.txt Two Signals SIGINT
+ Check Tests Have Been Forced To Shutdown
Two Signals Should Stop Test Execution Forcefully When Keyword Timeout Is
Used
-
+ Start And Send Signal keyword-timeout.txt Two Signals SIGINT
+ Check Tests Have Been Forced To Shutdown
+
+*** Key Words ***
+Start And Send Signal
+ [arguments] ${testcase file} ${signal method} ${signal}
+ Remove File ${TEMPDIR}/robot_signal_test_started.txt
+ ${is_jython_in_use} = Running On Jython ${INTERPRETER}
+ Run Keyword unless ${is_jython_in_use} Start Running Robot
running/stopping_with_signal/${testcase file}
+ Run Keyword if ${is_jython_in_use} Start Running jybot
running/stopping_with_signal/${testcase file}
+ Wait Until Created ${TEMPDIR}/robot_signal_test_started.txt
+ Run Keyword ${signal method} ${signal}
+ wait until finished
+
+Start Running Robot
+ [arguments] ${datasource}
+ Set Runners
+ ${path to datasource} = Set Variables And Get Datasources
${datasource}
+ ProcessManager.start process ${ROBOT} --output ${OUTFILE} --report
None --log None ${path to datasource}
+
+Start Running Jybot
+ [arguments] ${datasource}
+ ${jybot} = Get Jython Path
+ Set Runners
+ ${path to datasource} = Set Variables And Get Datasources
${datasource}
+ ${robot_jybot} = Join Path ${ROBOTPATH} runner.py
+ log ${jybot} ${robot_jybot} --output ${OUTFILE} --report None --log
None ${path to datasource}
+ ProcessManager.start process ${jybot} ${robot_jybot} --output
${OUTFILE} --report None --log None ${path to datasource}
+
+Check Test Cases Have Failed Correctly
+ Check Test Case Test FAIL Execution terminated by signal
+ Check Test Case Test2 FAIL Test execution is stopped due to a fatal
error
+
+Check Tests Have Been Forced To Shutdown
+ ${stderr string} ProcessManager.Get Stderr
+ Should Contain ${stderr string} Execution forcefully stopped
+
+Process Output For Graceful Shutdown
+ Wait Until Created ${OUTFILE}
+ Process Output ${OUTFILE}
+
+One Signal
+ [arguments] ${signal}
+ send terminate ${signal}
+
+Two Signals
+ [arguments] ${signal}
+ send terminate ${signal}
+ ${is_jython_in_use} = Running On Jython ${INTERPRETER}
+ Run Keyword if ${is_jython_in_use} sleep 0.1s
+ send terminate ${signal}
=======================================
--- /trunk/atest/testdata/running/stopping_with_signal/keyword-timeout.txt
Wed Apr 28 02:45:48 2010
+++ /trunk/atest/testdata/running/stopping_with_signal/keyword-timeout.txt
Mon May 3 02:45:26 2010
@@ -1,9 +1,12 @@
*** Settings ***
Library Library.py
+Library OperatingSystem
*** Test Case ***
Test
+ Create File ${TEMPDIR}/robot_signal_test_started.txt
Timeout In UK
+ No operation
Test 2
No operation
@@ -12,4 +15,5 @@
Timeout In UK
[Timeout] 3 seconds
My Sleep 2
-
+ No operation
+
=======================================
--- /trunk/atest/testdata/running/stopping_with_signal/run_keyword.txt Wed
Apr 28 02:45:48 2010
+++ /trunk/atest/testdata/running/stopping_with_signal/run_keyword.txt Mon
May 3 02:45:26 2010
@@ -1,9 +1,11 @@
*** Settings ***
Library Library.py
+Library OperatingSystem
*** Test Case ***
Test
- Run Keyword My Sleep 5
+ Create File ${TEMPDIR}/robot_signal_test_started.txt
+ Run Keyword My Sleep 2
No Operation
Test 2
=======================================
--- /trunk/atest/testdata/running/stopping_with_signal/test-timeout.txt Wed
Apr 28 02:45:48 2010
+++ /trunk/atest/testdata/running/stopping_with_signal/test-timeout.txt Mon
May 3 02:45:26 2010
@@ -1,8 +1,10 @@
*** Settings ***
Library Library.py
+Library OperatingSystem
*** Test Case ***
Test [timeout] 3 Seconds
+ Create File ${TEMPDIR}/robot_signal_test_started.txt
My Sleep 2
No Operation
=======================================
---
/trunk/atest/testdata/running/stopping_with_signal/without_any_timeout.txt
Wed Apr 28 02:45:48 2010
+++
/trunk/atest/testdata/running/stopping_with_signal/without_any_timeout.txt
Mon May 3 02:45:26 2010
@@ -1,8 +1,10 @@
*** Settings ***
Library Library.py
+Library OperatingSystem
*** Test Case ***
Test
+ Create File ${TEMPDIR}/robot_signal_test_started.txt
My Sleep 2
No Operation