<?php 
 
chdir( '..' ); 
 
require 'testcontainer/rb.phar'; 
 
//load core classes 
require 'RedUNIT.php'; 
require 'RedUNIT/Base.php'; 
require 'RedUNIT/Base/Performance.php'; 
 
error_reporting( E_ALL ); 
 
//Load configuration file 
if ( file_exists( 'config/test.ini' ) ) { 
    $ini = parse_ini_file( "config/test.ini", TRUE ); 
} else { 
    die( 'Cant find configuration file.' ); 
} 
 
//Configure the databases 
if ( isset( $ini['mysql'] ) ) { 
    $dsn = "mysql:host={$ini['mysql']['host']};dbname={$ini['mysql']['schema']}"; 
 
    R::addDatabase( 'mysql', $dsn, $ini['mysql']['user'], $ini['mysql']['pass'], FALSE ); 
 
    R::selectDatabase( 'mysql' ); 
 
    R::exec( ' SET GLOBAL sql_mode="" ' ); 
} 
 
if ( isset( $ini['pgsql'] ) ) { 
    $dsn = "pgsql:host={$ini['pgsql']['host']};dbname={$ini['pgsql']['schema']}"; 
 
    R::addDatabase( 'pgsql', $dsn, $ini['pgsql']['user'], $ini['pgsql']['pass'], FALSE ); 
} 
 
if ( isset( $ini['sqlite'] ) ) { 
    R::addDatabase( 'sqlite', 'sqlite:' . $ini['sqlite']['file'], NULL, NULL, FALSE ); 
    R::selectDatabase( 'sqlite' ); 
} 
 
 
// Function to activate a driver 
function activate_driver( $d ) 
{ 
    R::selectDatabase( $d ); 
} 
$test = new \RedUNIT\Base\Performance(); 
 
$drivers       = $test->getTargetDrivers(); 
 
foreach ( $drivers as $driver ) { 
 
            if ( !isset( $ini[$driver] ) ) continue; 
            if ( !isset( $_SERVER['argv'][1])) die('Missing parameter. Usage: php runperf.php <testname> <TIMES> '); 
 
            $method = $_SERVER['argv'][1]; 
 
            if ($method === 'setup') { 
 
                echo 'Setup...'.PHP_EOL; 
 
                $test->$method(); 
 
                echo 'READY'.PHP_EOL; 
 
            } else { 
 
                $times = 100; 
                if (isset($_SERVER['argv'][2])) { 
                    $times = (int) $_SERVER['argv'][2]; 
                } 
 
                echo "Performing test: $method with driver $driver ".PHP_EOL; 
 
                for ($j=0; $j<$times; $j++) { 
 
                    $t1 = microtime( TRUE ); 
 
                    $test->$method(); 
 
                    $t2 = microtime( TRUE ); 
 
                    $d[] = ($t2 - $t1); 
 
                } 
 
                $s = array_sum($d); 
                $a = ($s / $times); 
                $mx = max($d); 
                $mn = min($d); 
 
                echo PHP_EOL."AVG: $a, MAX: $mx, MIN: $mn, TOTAL: $s, TIMES: $times ".PHP_EOL; 
            } 
} 
 
 |