Yaffs site version 1.1
[yaffs-website] / vendor / gabordemooij / redbean / testing / cli / runperf.php
diff --git a/vendor/gabordemooij/redbean/testing/cli/runperf.php b/vendor/gabordemooij/redbean/testing/cli/runperf.php
new file mode 100644 (file)
index 0000000..1d584d5
--- /dev/null
@@ -0,0 +1,96 @@
+<?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;
+                       }
+}
\ No newline at end of file