if (!isset($suiteName)) { require_once HASHMARK_ROOT_DIR . '/Test/AllTests.php'; $suiteName = 'Hashmark_AllTests'; } /** * For Hashmark_TestListener_Benchmark static data/methods. */ require_once HASHMARK_ROOT_DIR . '/Test/Listener/Benchmark.php'; define('HASHMARK_BENCHMARK_PRECISION', 4); define('HASHMARK_BENCHMARK_RANKLIMIT', 15); $suite = new PHPUnit_Framework_TestSuite('Hashmark Test Benchmark'); $suite->addTestSuite($suiteName); $result = new PHPUnit_Framework_TestResult(); $result->addListener(new Hashmark_TestListener_Benchmark()); $suite->run($result); $results = Hashmark_TestListener_Benchmark::getResults(); $totalTime = 0; $sortedSuites = array(); foreach ($results['suites'] as $name => $stats) { // Skip wrappers. if ($name != 'Hashmark Test Benchmark' && false === strpos($name, '::suite')) { // Use average for tests are ran on multiple implementation classes. $sortedSuites[$name] = $stats['totalTime'] / $stats['runs']; $totalTime += $stats['totalTime']; } } arsort($sortedSuites); echo "\nTop Suites\n\n"; foreach (array_slice($sortedSuites, 0, HASHMARK_BENCHMARK_RANKLIMIT) as $name => $avg) { $avg = sprintf('%0.' . HASHMARK_BENCHMARK_PRECISION . 'f', round($avg, HASHMARK_BENCHMARK_PRECISION)); echo "{$name}: {$avg}\n";