[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] cvs: phpruntests /src/taskScheduler rtTaskSchedulerFile.php rtTaskTestGroup.php  /src/test
From:       "Georg Gradwohl" <g2 () php ! net>
Date:       2009-06-29 22:00:13
Message-ID: cvsg21246312813 () cvsserver
[Download RAW message or body]

g2		Mon Jun 29 22:00:13 2009 UTC

  Modified files:              
    /phpruntests/src/testcase/output	rtTestOutputWriterXML.php 
    /phpruntests/src/testgroup	rtPhpTestGroup.php 
    /phpruntests/src/taskScheduler	rtTaskSchedulerFile.php 
                                  	rtTaskTestGroup.php 
  Log:
  phpruntests - update taskScheduler - fixed out-of-memory-bug while running large \
tests  
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterXML.php?r1=1.4&r2=1.5&diff_format=u
                
Index: phpruntests/src/testcase/output/rtTestOutputWriterXML.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.4 \
                phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.5
--- phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.4	Mon Jun 29 01:34:54 \
                2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterXML.php	Mon Jun 29 22:00:12 \
2009 @@ -52,10 +52,8 @@
 
 
     /**
-     *
-     *
+	 *
      * @param array of rtTestResults
-     *
      */
     public function init (array $testResults)
     {
@@ -103,5 +101,6 @@
     	
     	return null;
     }
+    
 }
-?>
+?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/src/testgroup/rtPhpTestGroup.php?r1=1.11&r2=1.12&diff_format=u
                
Index: phpruntests/src/testgroup/rtPhpTestGroup.php
diff -u phpruntests/src/testgroup/rtPhpTestGroup.php:1.11 \
                phpruntests/src/testgroup/rtPhpTestGroup.php:1.12
--- phpruntests/src/testgroup/rtPhpTestGroup.php:1.11	Mon Jun 29 01:34:54 2009
+++ phpruntests/src/testgroup/rtPhpTestGroup.php	Mon Jun 29 22:00:13 2009
@@ -75,5 +75,12 @@
         $testOutputWriter = rtTestOutputWriter::getInstance($this->results, \
$outType);  $testOutputWriter->write($this->testDirectory, $cid);
     }
+    
+    
+    public function getResults()
+    {
+    	return $this->results;
+    }
+
 }
 ?>
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskSchedulerFile.php?r1=1.3&r2=1.4&diff_format=u
                
Index: phpruntests/src/taskScheduler/rtTaskSchedulerFile.php
diff -u phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.3 \
                phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.4
--- phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.3	Mon Jun 29 01:34:54 \
                2009
+++ phpruntests/src/taskScheduler/rtTaskSchedulerFile.php	Mon Jun 29 22:00:13 2009
@@ -17,11 +17,9 @@
 {
 	const TMP_FILE = 'taskFile';
 	
-	private $inputQueue = NULL;		// the input-queue (only used by the sender)
 	private $pidStore = array(); 	// stores the pids of all child-processes
 	private $groupTasks = false;	// are the tasks stored in groups?
-	
-	private $tmpTaskList = array();
+
 	
 	/**
 	 * the constructor
@@ -59,8 +57,6 @@
 		$this->taskList = $taskList;
 	}
 
-	
-	
 	/**
 	 * sets the number of child-processes.
 	 * in the case of using a multidimensional task-list this parameter is
@@ -76,7 +72,6 @@
 		}
 	}
 
-
 	
 	/**
 	 * starts the sender, the receiver and forks the defined
@@ -98,8 +93,8 @@
 			$this->processCount = sizeof($this->taskList);
 		}
 
+		// distribute the task to the children
 		$this->createTaskFiles();
-		
 
 		// fork the child-processes
 		for ($i=0; $i<$this->processCount; $i++) {
@@ -126,7 +121,7 @@
 			pcntl_waitpid($this->pidStore[$i], $status);
 		}
 		
-		// ensure that the tmp-files are completly written
+		// ensure that the tmp-files are completely written
 		sleep(1);
 		
 		// collecting the results
@@ -137,8 +132,7 @@
 
 		return;
 	}
-	
-	
+
 	
 	/**
 	 * creates a temporary file for each child which stores the allocated 
@@ -180,8 +174,9 @@
 	}
 
 	
-	
 	/**
+	 * 
+	 * 
 	 * @return void
 	 */
 	private function receiver()
@@ -202,7 +197,7 @@
 				}
 
 				$index = $task->getIndex();
-				$task->finish($cid);
+				$task->evaluate($cid);
 				
 				if ($this->groupTasks == true) { 
 					
@@ -219,10 +214,12 @@
 		
 		return;		
 	}
-	
 
 	
 	/**
+	 * executes the assigned tasks and stores the serialized task-object in
+	 * the task-file. 
+	 * 
 	 * @param  int	$cid	the child-id
 	 * @return void
 	 */
@@ -231,24 +228,26 @@
 		$indexList = file_get_contents(self::TMP_FILE.$cid);
 		$indexList = explode(';', $indexList);
 		array_pop($indexList);
-		
-		$response = '';
+
+		file_put_contents(self::TMP_FILE.$cid, '');
 
 		foreach ($indexList as $index) {
 
 			if ($this->groupTasks == true) { 
-				$task = $this->taskList[$cid][$index]; 
+				$task = $this->taskList[$cid][$index];
 			} else {
 				$task = $this->taskList[$index];
 			}
 
 			$task->run();
 			$task->setIndex($index);
-
-			$response .= serialize($task)."[END-TEST-OBJECT]";
+			
+			print "$cid - ".$task->getDir()." - ".round(memory_get_usage()/1024, 2)."\n";
+			flush();
+			
+			$response = serialize($task)."[END-TEST-OBJECT]";
+			file_put_contents(self::TMP_FILE.$cid, $response, FILE_APPEND);
 		}
-		
-		file_put_contents(self::TMP_FILE.$cid, $response);
 
 		exit(0);
 	}
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskTestGroup.php?r1=1.4&r2=1.5&diff_format=u
                
Index: phpruntests/src/taskScheduler/rtTaskTestGroup.php
diff -u phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.4 \
                phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.5
--- phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.4	Mon Jun 29 01:34:54 2009
+++ phpruntests/src/taskScheduler/rtTaskTestGroup.php	Mon Jun 29 22:00:13 2009
@@ -15,35 +15,58 @@
 {
 	private $runConfiguration;
 	private $subDirectory;
-	private $testGroup;
+	private $results;
+
 	
 	public function __construct($runConfiguration, $subDirectory)
 	{
 		$this->runConfiguration = $runConfiguration;
 		$this->subDirectory = $subDirectory;
 	}
-		
+	
+	
+	/**
+	 * called by the child-process
+	 * executes the the test-group
+	 */
 	public function run()
 	{
-		$this->testGroup = new rtPhpTestGroup($this->runConfiguration, \
                $this->subDirectory);
-		$this->testGroup->runGroup($this->runConfiguration);
-		
+		$testGroup = new rtPhpTestGroup($this->runConfiguration, $this->subDirectory);
+		$testGroup->runGroup($this->runConfiguration);
+        $this->results = $testGroup->getResults();
 		return true;
 	}
 	
-	public function finish($cid=null) {
-
-		if (!is_null($cid)) {
-			print "\n$cid - ".$this->subDirectory."\n";
-		}
-		
+	
+	/**
+	 * called by the receiver (parent-process)
+	 * writes the results to the OutputWriter
+	 * 
+	 * @param $cid	the child-id
+	 */
+	public function evaluate($cid=null)
+	{
 		$outType = 'list';
         if ($this->runConfiguration->hasCommandLineOption('o')) {           		
         	$outType = $this->runConfiguration->getCommandLineOption('o');
         } 
-		
-        $this->testGroup->writeGroup($outType, $cid);
+
+    	$testOutputWriter = rtTestOutputWriter::getInstance($this->results, $outType);
+        $testOutputWriter->write($this->subDirectory, $cid);
 	}
+	
+	
+	public function getDir()
+	{
+		return $this->subDirectory;
+	}
+	
+	
+    public function getResults()
+    {
+    	return $this->results;
+    }
+    
 }
 
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic