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

Reply via email to