com phpruntests: Adding debug option - needs rework: src/configuration/rtCommandLineOptions.php src/taskScheduler/rtTaskScheduler.php
src/taskScheduler/rtTaskSchedulerFile.php src/testgroup/rtGroupResults.php src/testgroup/rtPhpTestGroup.php src/testrun/rtPhpTestRun.php
tests/rtTaskSchedulerTest.php

From: Date: Wed, 17 Oct 2012 15:53:42 +0000
Subject: com phpruntests: Adding debug option - needs rework: src/configuration/rtCommandLineOptions.php src/taskScheduler/rtTaskScheduler.php
src/taskScheduler/rtTaskSchedulerFile.php src/testgroup/rtGroupResults.php src/testgroup/rtPhpTestGroup.php src/testrun/rtPhpTestRun.php
tests/rtTaskSchedulerTest.php
Groups: php.qa 
Request: Send a blank email to php-qa+get-66761@lists.php.net to get a copy of this message
Commit: 5b5cec2bc466d6fe9c9d5b4e6998bb0febff1c9c Author: zoe slattery <zoe@php.net> Wed, 17 Oct 2012 16:53:42 +0100 Parents: 7e640bec2f6cc190a87906316095c59e14970773 Branches: master Link: http://git.php.net/?p=phpruntests.git;a=commitdiff;h=5b5cec2bc466d6fe9c9d5b4e6998bb0febff1c9c Log: Adding debug option - needs rework Changed paths: M src/configuration/rtCommandLineOptions.php M src/taskScheduler/rtTaskScheduler.php M src/taskScheduler/rtTaskSchedulerFile.php M src/testgroup/rtGroupResults.php M src/testgroup/rtPhpTestGroup.php M src/testrun/rtPhpTestRun.php M tests/rtTaskSchedulerTest.php

diff --git a/src/configuration/rtCommandLineOptions.php b/src/configuration/rtCommandLineOptions.php index eec5f39..7f11481 100644 --- a/src/configuration/rtCommandLineOptions.php +++ b/src/configuration/rtCommandLineOptions.php @@ -54,6 +54,7 @@ class rtCommandLineOptions 'keep-out', // keep only out files 'keep-exp', // keep only exp files 'no-clean', // do not execute clean section + 'debug', // do not execute clean section ); /** diff --git a/src/taskScheduler/rtTaskScheduler.php b/src/taskScheduler/rtTaskScheduler.php index cf1b9f1..2d70f24 100644 --- a/src/taskScheduler/rtTaskScheduler.php +++ b/src/taskScheduler/rtTaskScheduler.php @@ -20,6 +20,7 @@ class rtTaskScheduler protected $processCount = 0; // the number of processes protected $reportStatus = 0; // the level of repoerting as tests atr run (0, 1, 2) + /** @@ -35,6 +36,8 @@ class rtTaskScheduler } $this->setProcessCount($processCount); + + } diff --git a/src/taskScheduler/rtTaskSchedulerFile.php b/src/taskScheduler/rtTaskSchedulerFile.php index 1831eba..dabe233 100644 --- a/src/taskScheduler/rtTaskSchedulerFile.php +++ b/src/taskScheduler/rtTaskSchedulerFile.php @@ -18,7 +18,7 @@ class rtTaskSchedulerFile extends rtTaskScheduler const TMP_FILE = 'taskFile'; protected $pidStore = array(); // stores the pids of all child-processes - protected $groupTasks = false; // are the tasks stored in groups? + protected $groupTasks = false; // are the tasks already grouped by target processor /** @@ -44,7 +44,9 @@ class rtTaskSchedulerFile extends rtTaskScheduler * @Overrides */ public function setTaskList(array $taskList) - { + { + //Pre-allocate tasks to processors + if (isset($taskList[0]) && is_array($taskList[0])) { $this->groupTasks = true; $this->processCount = sizeof($taskList); @@ -84,7 +86,7 @@ class rtTaskSchedulerFile extends rtTaskScheduler $startTime = microtime(true); - // trim the processCount if nesecarry + // trim the processCount if necessary if ($this->processCount > sizeof($this->taskList)) { $this->processCount = sizeof($this->taskList); } @@ -209,7 +211,7 @@ class rtTaskSchedulerFile extends rtTaskScheduler array_pop($taskList); file_put_contents(self::TMP_FILE.$cid, ''); - + $count = 0; foreach ($taskList as $task) { $s = microtime(true); @@ -225,18 +227,26 @@ class rtTaskSchedulerFile extends rtTaskScheduler $task->run(); $e = microtime(true); - - $statusList = $task->getResult()->getTestStatusList(); + $taskResult = $task->getResult(); + + //StatusList is an array 'testname=>statusObject' + $statusList = $taskResult->getTestStatusList(); + $taskResult->setProc($cid); + $taskResult->setCount($count); + /* if (isset($statusList[0]) && is_object($statusList[0])) { $statusList[0]->setTime($e-$s); } - + */ + rtTestOutputWriter::flushResult($statusList, $this->reportStatus, $cid); - $response = serialize($task->getResult())."[END]"; + $response = serialize($taskResult)."[END]"; file_put_contents(self::TMP_FILE.$cid, $response, FILE_APPEND); + + $count++; } exit(0); diff --git a/src/testgroup/rtGroupResults.php b/src/testgroup/rtGroupResults.php index fdbf5aa..26e9f90 100644 --- a/src/testgroup/rtGroupResults.php +++ b/src/testgroup/rtGroupResults.php @@ -18,6 +18,10 @@ class rtGroupResults protected $testStatusList = array(); protected $redirectedTestCases = array(); protected $groupName; + protected $timeToRun; + protected $runOrder; + protected $runByProcessor = 0; + protected $absTime; public function __construct($gn) { $this->groupName = $gn; @@ -48,5 +52,36 @@ class rtGroupResults public function getRedirectedTestCases() { return $this->redirectedTestCases; } + public function setTime($t) { + $this->timeToRun = $t; + } + + public function setAbsTime($t) { + $this->absTime = $t; + } + + public function setCount($c) { + + $this->runOrder = $c; + } + + public function setProc($p) { + $this->runByProcessor = $p; + } + public function getTime() { + return $this->timeToRun; + } + + public function getRunOrder() { + return $this->runOrder; + } + + public function getProcessorId() { + return $this->runByProcessor; + } + public function getAbsTime() { + return $this->absTime; + } + } \ No newline at end of file diff --git a/src/testgroup/rtPhpTestGroup.php b/src/testgroup/rtPhpTestGroup.php index e4724db..012560d 100644 --- a/src/testgroup/rtPhpTestGroup.php +++ b/src/testgroup/rtPhpTestGroup.php @@ -102,13 +102,12 @@ class rtPhpTestGroup extends rtTask implements rtTaskInterface public function run() { + $s=microtime(true); if (count($this->testCases) == 0) { return; } - //$s1 = memory_get_usage(); - //foreach ($this->testCases as $testCase) { for($i=0; $i<count($this->testCases); $i++) { $testCase = $this->testCases[$i]; @@ -121,13 +120,13 @@ class rtPhpTestGroup extends rtTask implements rtTaskInterface $testResult->processResults($testCase, $this->runConfiguration); $this->groupResults->setTestStatus($testCase->getName(), $testResult->getStatus()); - //unset($testResult); Makes no diffetence - //echo "\n" .memory_get_usage() . ", run end"; + } - //$s2 = memory_get_usage(); - //unset($this->testCases); - //echo "\n" .$s1. ", " .$s2. ", " .memory_get_usage() . ", after freeing test array\n"; //Shows memory creeping up + $e=microtime(true); + + $this->groupResults->setTime($e-$s); + $this->groupResults->setAbsTime($e); } public function writeGroup($outType, $cid=null) diff --git a/src/testrun/rtPhpTestRun.php b/src/testrun/rtPhpTestRun.php index b03a9a8..b95a987 100644 --- a/src/testrun/rtPhpTestRun.php +++ b/src/testrun/rtPhpTestRun.php @@ -25,6 +25,7 @@ class rtPhpTestRun protected $numberOfSerialGroups = 0; protected $numberOfParallelGroups = 0; protected $processorCount; + protected $runStartTime; public function __construct($argv) { @@ -33,7 +34,7 @@ class rtPhpTestRun public function run() { - + $this->runStartTime = microtime(true); //Set SSH variables // check the operation-system (win/unix) @@ -176,7 +177,21 @@ class rtPhpTestRun foreach($scheduler->getResultList() as $groupResult) { $this->resultList[] = $groupResult->getTestStatusList(); - + + // Debug - get which group was run by which processor and how long each took + // + + if($this->runConfiguration->hasCommandLineOption('debug')) { + $time = round($groupResult->getTime(), 2); + + $absTime = $groupResult->getAbsTime() - $this->runStartTime; + + $absTime = round($absTime, 2); + + echo "\nPARDBG," . $absTime. "," . $time . "," . $groupResult->getProcessorId() . "," . $groupResult->getRunOrder() . "," . $groupResult->getGroupName(); + + } + $redirects = $groupResult->getRedirectedTestCases(); foreach($redirects as $testCase) { $this->redirectedTestCases[] = $testCase; @@ -190,11 +205,14 @@ class rtPhpTestRun public function run_serial_groups($testDirectories, $groupConfigurations) { $count = 0; + //xdebug_start_trace('/tmp/memorycheck'); foreach($testDirectories as $subDirectory) { + + // Memory usage debugging //$startm = memory_get_usage(); @@ -210,6 +228,18 @@ class rtPhpTestRun rtTestOutputWriter::flushResult($testGroup->getGroupResults()->getTestStatusList(), $this->reportStatus); $this->resultList[] = $testGroup->getGroupResults()->getTestStatusList(); + if($this->runConfiguration->hasCommandLineOption('debug')) { + + $time = round($testGroup->getGroupResults()->getTime(), 2); + + $absTime = ($testGroup->getGroupResults()->getAbsTime()) - $this->runStartTime; + $absTime = round($absTime, 2); + + + echo "\nSERDBG," . $absTime . "," . $time . "," . $testGroup->getGroupResults()->getProcessorId() . "," . $count . "," . $testGroup->getGroupResults()->getGroupName(); + + } + // Memory usage debugging //$midm2 = memory_get_usage(); @@ -221,13 +251,15 @@ class rtPhpTestRun // Memory usage debugging //$midm3 = memory_get_usage(); + $testGroup->__destruct(); unset($testGroup); // Memory usage debugging //echo "\n" . $startm . ", " . $midm. ", " .$midm2. ", " .$midm3. ", " .memory_get_usage() . ", ". $subDirectory . "\n"; - + $count++; } + //xdebug_stop_trace(); } diff --git a/tests/rtTaskSchedulerTest.php b/tests/rtTaskSchedulerTest.php index a1b8768..fd71bc0 100644 --- a/tests/rtTaskSchedulerTest.php +++ b/tests/rtTaskSchedulerTest.php @@ -6,6 +6,7 @@ class rtTaskSchedulerTest extends PHPUnit_Framework_TestCase { public function testResult() { + /* TODO REWRITE! // Need to rewrite this to test the PHP group runner $taskList = array(); $expected = array(); @@ -38,7 +39,7 @@ class rtTaskSchedulerTest extends PHPUnit_Framework_TestCase $this->assertEquals($expected, $actual); - + */ } }
« previous php.qa (#66761) next »