Overview

Namespaces

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

Classes

  • Convertor
  • HtmlConvertorDriver
  • Merger
  • Printer
  • Report

Interfaces

  • IConvertorDriver
  • 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\Reports;
 11: 
 12: require_once ROOT . '/Exceptions.php';
 13: require_once ROOT . '/Microtime.php';
 14: 
 15: use XSLTBenchmarking\Microtime;
 16: 
 17: /**
 18:  * Class for collect report information about one test
 19:  *
 20:  * @author Viktor Mašíček <viktor@masicek.net>
 21:  */
 22: class Report
 23: {
 24: 
 25: 
 26:     /**
 27:      * Name of the reported test
 28:      *
 29:      * @var sring
 30:      */
 31:     private $testName;
 32: 
 33:     /**
 34:      * Path of the XSLT template of the reported test
 35:      *
 36:      * @var string
 37:      */
 38:     private $temaplatePath;
 39: 
 40:     /**
 41:      * List of reported values
 42:      *
 43:      * @var array
 44:      */
 45:     private $records = array();
 46: 
 47: 
 48:     /**
 49:      * Set common setting of the test for reporting
 50:      *
 51:      * @param string $testName Name of the reported test
 52:      * @param string $templatePath Path of the XSLT template of the reported test
 53:      */
 54:     public function __construct($testName, $templatePath)
 55:     {
 56:         $this->testName = $testName;
 57:         $this->temaplatePath = $templatePath;
 58:     }
 59: 
 60: 
 61:     /**
 62:      * Add report of one runnig transformation
 63:      *
 64:      * @param string $processorName Short name of selected processor
 65:      * @param string $xmlInputPath Path of XML input file
 66:      * @param string $expectedOutputPath Path of file with expected output
 67:      * @param string $outputPath Path of file with generated output
 68:      * @param string $success 'OK' or error message
 69:      * @param bool $correctness Flag of correcness transformation
 70:      * @param array $spendTimes Spended times by transformations
 71:      * @param array $memoryUsage
 72:      * @param int $repeating Number of repeating tranformation
 73:      *
 74:      * @return void
 75:      */
 76:     public function addRecord(
 77:         $processorName,
 78:         $xmlInputPath,
 79:         $expectedOutputPath,
 80:         $outputPath,
 81:         $success,
 82:         $correctness,
 83:         array $spendTimes,
 84:         array $memoryUsage,
 85:         $repeating
 86:     )
 87:     {
 88:         $record = array();
 89: 
 90:         $record['input'] = $xmlInputPath;
 91:         $record['expectedOutput'] = $expectedOutputPath;
 92:         $record['output'] = $outputPath;
 93:         $record['success'] = $success;
 94:         $record['correctness'] = $correctness;
 95:         $record['repeating'] = $repeating;
 96: 
 97:         // times
 98:         if (count($spendTimes) > 0)
 99:         {
100:             $record['sumTime'] = Microtime::sum($spendTimes);
101:             $record['avgTime'] = Microtime::divide($record['sumTime'], count($spendTimes));
102:         }
103:         else
104:         {
105:             $record['sumTime'] = '';
106:             $record['avgTime'] = '';
107:         }
108: 
109:         // memory usage
110:         // HACK - using Microtime instead of class with another name
111:         if (count($memoryUsage) > 0)
112:         {
113:             $record['sumMemory'] = Microtime::sum($memoryUsage, 0);
114:             $record['avgMemory'] = Microtime::divide($record['sumMemory'], count($memoryUsage), 0);
115:         }
116:         else
117:         {
118:             $record['sumMemory'] = '';
119:             $record['avgMemory'] = '';
120:         }
121: 
122:         if (!isset($this->records[$processorName]))
123:         {
124:             $this->records[$processorName] = array();
125:         }
126: 
127:         $this->records[$processorName][] = $record;
128:     }
129: 
130: 
131:     /**
132:      * Return name of the reported test
133:      *
134:      * @return string
135:      */
136:     public function getTestName()
137:     {
138:         return $this->testName;
139:     }
140: 
141: 
142:     /**
143:      * Retun path of the XSLT template of the reported test
144:      *
145:      * @return string
146:      */
147:     public function getTemplatePath()
148:     {
149:         return $this->temaplatePath;
150:     }
151: 
152: 
153:     /**
154:      * Return list of processors used in all reports
155:      *
156:      * @return array
157:      */
158:     public function getProcessors()
159:     {
160:         return array_keys($this->records);
161:     }
162: 
163: 
164:     /**
165:      * Return reports for the selected processor
166:      *
167:      * @param string $processorName Name of processor
168:      *
169:      * @return array
170:      */
171:     public function getInputs($processorName)
172:     {
173:         if (!isset($this->records[$processorName]))
174:         {
175:             throw new \XSLTBenchmarking\InvalidArgumentException('Unknown processor "' . $processorName . '"');
176:         }
177: 
178:         return $this->records[$processorName];
179:     }
180: 
181: 
182: }
183: 
XSTL Benchmarking API documentation generated by ApiGen.
Generated using the TokenReflection library.