Overview

Namespaces

  • PHP
  • XSLTBenchmarking
    • Reports
    • RunnerConsole
    • TestsGenerator
    • TestsRunner

Classes

  • AMemoryUsageDriver
  • AProcessorDriver
  • Controlor
  • Libxslt1123phpProcessorDriver
  • Libxslt1126phpProcessorDriver
  • LinuxMemoryUsageDriver
  • MemoryUsage
  • MSXML30ProcessorDriver
  • MSXML60ProcessorDriver
  • Params
  • Processor
  • Runner
  • Sablotron103cmdProcessorDriver
  • Saxon655ProcessorDriver
  • SaxonHE9402ProcessorDriver
  • Test
  • TestRunner
  • WindowsMemoryUsageDriver
  • Xalan271ProcessorDriver
  • XmlParamsDriver
  • Xsltproc1123ProcessorDriver
  • Xsltproc1126ProcessorDriver
  • XT20051206ProcessorDriver

Interfaces

  • IParamsDriver
  • Overview
  • Namespace
  • Class
  • Tree
  • Todo
  1: <?php
  2: 
  3: /**
  4:  * XSLT Benchmarking
  5:  * @link https://github.com/masicek/XSLT-Benchmarking
  6:  * @author Viktor Mašíček <viktor@masicek.net>
  7:  * @license "New" BSD License
  8:  */
  9: 
 10: namespace XSLTBenchmarking\TestsRunner;
 11: 
 12: require_once LIBS . '/PhpPath/PhpPath.min.php';
 13: require_once ROOT . '/Exceptions.php';
 14: require_once ROOT . '/Printer.php';
 15: 
 16: use PhpPath\P;
 17: use XSLTBenchmarking\Printer;
 18: 
 19: /**
 20:  * Runner
 21:  *
 22:  * @author Viktor Mašíček <viktor@masicek.net>
 23:  */
 24: class Runner
 25: {
 26: 
 27: 
 28:     /**
 29:      * Factory class for making new objects
 30:      *
 31:      * @var \XSLTBenchmarking\Factory
 32:      */
 33:     private $factory;
 34: 
 35:     /**
 36:      * Object for reading params of tests
 37:      *
 38:      * @var \XSLTBenchmarking\TestsRunner\Params
 39:      */
 40:     private $params;
 41: 
 42:     /**
 43:      * Object for runnig one test on all processors
 44:      *
 45:      * @var \XSLTBenchmarking\TestsRunner\TestRunner
 46:      */
 47:     private $testRunner;
 48: 
 49:     /**
 50:      * Object for printing reports
 51:      *
 52:      * @var \XSLTBenchmarking\Reports\Printer
 53:      */
 54:     private $reportsPrinter;
 55: 
 56:     /**
 57:      * Root directory of generated tests
 58:      *
 59:      * @var string
 60:      */
 61:     private $testsDirectory;
 62: 
 63:     /**
 64:      * Tests for generating
 65:      *
 66:      * @var array of Test
 67:      */
 68:     private $tests = array();
 69: 
 70: 
 71:     /**
 72:      * Object configuration
 73:      *
 74:      * @param \XSLTBenchmarking\Factory $factory Factory class for making new objects
 75:      * @param \XSLTBenchmarking\TestsRunner\Params $params Object for reading params of tests
 76:      * @param \XSLTBenchmarking\TestsRunner\TestRunner $testRunner Object for runnig one test on all processors
 77:      * @param type $testsDirectory The root directory of all generated tests
 78:      */
 79:     public function __construct(
 80:         \XSLTBenchmarking\Factory $factory,
 81:         \XSLTBenchmarking\TestsRunner\Params $params,
 82:         \XSLTBenchmarking\TestsRunner\TestRunner $testRunner,
 83:         \XSLTBenchmarking\Reports\Printer $reportPrinter,
 84:         $testsDirectory
 85:     )
 86:     {
 87:         $testsDirectory = P::mcd($testsDirectory);
 88: 
 89:         $this->factory = $factory;
 90:         $this->params = $params;
 91:         $this->testRunner = $testRunner;
 92:         $this->reportsPrinter = $reportPrinter;
 93:         $this->testsDirectory = $testsDirectory;
 94:     }
 95: 
 96: 
 97:     /**
 98:      * Register defined tests for runnig
 99:      *
100:      * @param string $testDirectory The subdirectory of the root directory
101:      * of tests containing test for running
102:      * @param string $paramsFiles File defined test
103:      *
104:      * @return void
105:      */
106:     public function addTest($testDirectory, $testParamsFile = '__params.xml')
107:     {
108:         $testParamsPath = P::mcf($this->testsDirectory, $testDirectory, $testParamsFile);
109: 
110:         $this->params->setFile($testParamsPath);
111:         $name = $this->params->getName();
112: 
113:         if (isset($this->tests[$name]))
114:         {
115:             throw new \XSLTBenchmarking\CollisionException('Duplicate name of test "' . $name . '"');
116:         }
117: 
118:         $test = $this->factory->getTestsRunnerTest($name);
119:         $test->setTemplatePath($this->params->getTemplatePath());
120:         $test->addCouplesPaths($this->params->getCouplesPaths());
121: 
122:         $this->tests[$name] = $test;
123:     }
124: 
125: 
126:     /**
127:      * Return defined tests for running
128:      *
129:      * @return array
130:      */
131:     public function getTests()
132:     {
133:         return $this->tests;
134:     }
135: 
136: 
137:     /**
138:      * Run all added tests and print reports
139:      *
140:      * @param bool $verbose Print information about each run test
141:      *
142:      * @return int Number of run tests
143:      */
144:     public function runAll($verbose = FALSE)
145:     {
146:         $testCount = count($this->tests);
147:         $testsRun = 0;
148:         foreach ($this->tests as $name => $test)
149:         {
150:             $testsRun++;
151:             if ($verbose)
152:             {
153:                 Printer::info($testsRun . '/' . $testCount . ' - Runnig of the test "' . $test->getName() . '"');
154:             }
155:             $report = $this->testRunner->run($test, $verbose);
156:             $this->reportsPrinter->addReport($report);
157:         }
158: 
159:         $reportFilePath = $this->reportsPrinter->printAll();
160: 
161:         return $reportFilePath;
162:     }
163: 
164: 
165: }
166: 
XSTL Benchmarking API documentation generated by ApiGen.
Generated using the TokenReflection library.