g2 Wed Jul 8 19:23:23 2009 UTC Added files: /phpruntests/src rtException.php
Modified files: /phpruntests/src rtClassMap.php /phpruntests/src/testcase/sections/executablesections rtCleanSection.php rtFileSection.php rtSkipIfSection.php /phpruntests/src/testcase rtPhpRunner.php /phpruntests/src/taskScheduler rtTaskSchedulerFile.php Log: phpruntests - moved rtException in root, replaced PhpRunnerException - added singal-handler to taskSchedulerFile
http://cvs.php.net/viewvc.cgi/phpruntests/src/rtClassMap.php?r1=1.15&r2=1.16&diff_format=u Index: phpruntests/src/rtClassMap.php diff -u phpruntests/src/rtClassMap.php:1.15 phpruntests/src/rtClassMap.php:1.16 --- phpruntests/src/rtClassMap.php:1.15 Sun Jun 28 09:47:37 2009 +++ phpruntests/src/rtClassMap.php Wed Jul 8 19:23:23 2009 @@ -8,7 +8,6 @@ */ $rtClassMap = array( 'rtEnvironmentException' => 'configuration/exceptions/rtEnvironmentException.php', - 'rtException' => 'configuration/exceptions/rtException.php', 'rtMissingArgumentException' => 'configuration/exceptions/rtMissingArgumentException.php', 'rtUnknownIniSettingException' => 'configuration/exceptions/rtUnknownIniSettingException.php', 'rtUnknownOptionException' => 'configuration/exceptions/rtUnknownOptionException.php', @@ -46,6 +45,7 @@ 'rtAutoload' => 'rtAutoload.php', 'rtClassMap' => 'rtClassMap.php', 'rtDirectoryList' => 'rtDirectoryList.php', + 'rtException' => 'rtException.php', 'rtPhptFilterIterator' => 'rtPhptFilterIterator.php', 'rtText' => 'rtText.php', 'rtUtil' => 'rtUtil.php', @@ -55,7 +55,6 @@ 'rtTaskSchedulerFile' => 'taskScheduler/rtTaskSchedulerFile.php', 'rtTaskSchedulerMsgQ' => 'taskScheduler/rtTaskSchedulerMsgQ.php', 'rtTaskTestGroup' => 'taskScheduler/rtTaskTestGroup.php', - 'rtCodeRunnerException' => 'testcase/exceptions/rtCodeRunnerException.php', 'rtPhpRunnerException' => 'testcase/exceptions/rtPhpRunnerException.php', 'rtTestOutputWriterCSV' => 'testcase/output/rtTestOutputWriterCSV.php', 'rtTestOutputWriterList' => 'testcase/output/rtTestOutputWriterList.php', http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/sections/executablesections/rtCleanSection.php?r1=1.5&r2=1.6&diff_format=u Index: phpruntests/src/testcase/sections/executablesections/rtCleanSection.php diff -u phpruntests/src/testcase/sections/executablesections/rtCleanSection.php:1.5 phpruntests/src/testcase/sections/executablesections/rtCleanSection.php:1.6 --- phpruntests/src/testcase/sections/executablesections/rtCleanSection.php:1.5 Tue Jun 2 19:12:08 2009 +++ phpruntests/src/testcase/sections/executablesections/rtCleanSection.php Wed Jul 8 19:23:23 2009 @@ -43,7 +43,7 @@ $testStatus->setMessage('fail_clean','Execution of clean section failed: '.trim($this->output) ); } - } catch (rtPhpRunnerException $e) { + } catch (rtException $e) { $testStatus->setTrue('fail_clean'); $testStatus->setMessage('fail_clean',$e->getMessage); } http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/sections/executablesections/rtFileSection.php?r1=1.13&r2=1.14&diff_format=u Index: phpruntests/src/testcase/sections/executablesections/rtFileSection.php diff -u phpruntests/src/testcase/sections/executablesections/rtFileSection.php:1.13 phpruntests/src/testcase/sections/executablesections/rtFileSection.php:1.14 --- phpruntests/src/testcase/sections/executablesections/rtFileSection.php:1.13 Tue Jun 2 19:12:08 2009 +++ phpruntests/src/testcase/sections/executablesections/rtFileSection.php Wed Jul 8 19:23:23 2009 @@ -67,7 +67,7 @@ } - } catch (rtPhpRunnerException $e) { + } catch (rtException $e) { $testStatus->setTrue('fail'); $testStatus->setMessage('fail', $e->getMessage() ); } http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php?r1=1.5&r2=1.6&diff_format=u Index: phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php diff -u phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php:1.5 phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php:1.6 --- phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php:1.5 Tue Jun 2 19:12:08 2009 +++ phpruntests/src/testcase/sections/executablesections/rtSkipIfSection.php Wed Jul 8 19:23:23 2009 @@ -51,7 +51,7 @@ $testStatus->setMessage('warn', $matches[1]); } } - } catch (rtPhpRunnerException $e) { + } catch (rtException $e) { $testStatus->setTrue('fail_skip'); $testStatus->setMessage('fail_skip', 'Failed to execute skipif section' . $e->getMessage()); } http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtPhpRunner.php?r1=1.3&r2=1.4&diff_format=u Index: phpruntests/src/testcase/rtPhpRunner.php diff -u phpruntests/src/testcase/rtPhpRunner.php:1.3 phpruntests/src/testcase/rtPhpRunner.php:1.4 --- phpruntests/src/testcase/rtPhpRunner.php:1.3 Mon May 25 12:28:40 2009 +++ phpruntests/src/testcase/rtPhpRunner.php Wed Jul 8 19:23:23 2009 @@ -58,6 +58,8 @@ fclose($pipes[0]); + $counter = 0; + while (true) { /* hide errors from interrupted syscalls */ $r = $pipes; @@ -67,14 +69,19 @@ $n = @stream_select($r, $w, $e, $this->timeOut); if ($n === false) { - throw new rtPhpRunnerException('Stream select failure in rtPhpRunner'); + throw new rtException('Stream select failure in rtPhpRunner'); } else if ($n === 0) { proc_terminate($proc); - throw new rtPhpRunnerException ('The process running test code has timed out in rtPhpRunner'); + throw new rtException('The process running test code has timed out in rtPhpRunner'); } else if ($n > 0) { - $line = fread($pipes[1], 8192); + $counter++; + if ($counter > 10) { + proc_terminate($proc); + throw new rtException('The process running test code has timed out in rtPhpRunner'); + } + $line = fread($pipes[1], 8192); if (strlen($line) == 0) { - /* EOF */ + // EOF break; } $data .= (binary) $line; http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskSchedulerFile.php?r1=1.5&r2=1.6&diff_format=u Index: phpruntests/src/taskScheduler/rtTaskSchedulerFile.php diff -u phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.5 phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.6 --- phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.5 Sun Jul 5 20:51:15 2009 +++ phpruntests/src/taskScheduler/rtTaskSchedulerFile.php Wed Jul 8 19:23:23 2009 @@ -21,6 +21,18 @@ private $groupTasks = false; // are the tasks stored in groups? + /** + * the signal-handler is called by the interrupt- or quit-signal. this is + * necessary to cleanup the tmp files and terminate the script correct. + * + * @param int $signal + */ + public static function signalHandler($signal) + { + exit(0); + } + + /** * sets the task-list which has to be an array of task-objects. * it's also possible to use a multidimensional array. in this case the @@ -76,6 +88,8 @@ if ($this->processCount > sizeof($this->taskList)) { $this->processCount = sizeof($this->taskList); } + + // distribute the task to the children $this->distributeTasks(); @@ -99,7 +113,13 @@ break; } } + + + // register signal-handler + pcntl_signal(SIGINT, "rtTaskSchedulerFile::signalHandler"); + pcntl_signal(SIGQUIT, "rtTaskSchedulerFile::signalHandler"); + // wait until all child-processes are terminated for ($i=0; $i<$this->processCount; $i++) { pcntl_waitpid($this->pidStore[$i], $status); @@ -174,6 +194,8 @@ unlink(self::TMP_FILE.$cid); } + + $this->pidStore = array(); } http://cvs.php.net/viewvc.cgi/phpruntests/src/rtException.php?view=markup&rev=1.1 Index: phpruntests/src/rtException.php +++ phpruntests/src/rtException.php <?php class rtException extends RuntimeException { public function __toString() { $r = "\n--------------------------------------------------------------------------------\n"; $r .= "RUN-TESTS EXCEPTION\n"; $r .= $this->getMessage()." (CODE ".$this->getCode().")\n"; $r .= $this->getFile().":".$this->getLine()."\n\n"; $r .= $this->getTraceAsString(); $r .= "\n--------------------------------------------------------------------------------\n"; return $r; } } ?>
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php