/** * returns a BenchmarkArchiver object based on command line arguments * @return BenchmarkArchiver */ public static function &getArchiver() { $archiver = NULL; $options = parse_args(array('store:', 'store_container:', 'store_endpoint:', 'store_insecure', 'store_key:', 'store_prefix:', 'store_public', 'store_region:', 'store_secret:', 'v' => 'verbose'), NULL, 'save_'); merge_options_with_config($options, BenchmarkDb::BENCHMARK_DB_CONFIG_FILE); $impl = 'BenchmarkArchiver'; switch ($options['store']) { case 'azure': $impl .= 'Azure'; break; case 'google': $impl .= 'Google'; break; case 's3': $impl .= 'S3'; break; default: $err = '--store ' . $options['store'] . ' is not valid'; break; } // invalid --store argument if (isset($err)) { print_msg($err, isset($options['verbose']), __FILE__, __LINE__, TRUE); return $archiver; } require_once sprintf('%s/%s.php', dirname(__FILE__), $impl); $archiver = new $impl($options); $archiver->options = $options; if (!$archiver->validate()) { $archiver = NULL; } return $archiver; }
/** * returns a BenchmarkDb object based on command line arguments. returns NULL * if there are any problems with the command line arguments * @return BenchmarkDb */ public static function &getDb() { $db = NULL; $options = parse_args(array('db:', 'db_and_csv:', 'db_callback_header:', 'db_host:', 'db_librato_aggregate', 'db_librato_color:', 'db_librato_count:', 'db_librato_description:', 'db_librato_display_max:', 'db_librato_display_min:', 'db_librato_display_name:', 'db_librato_display_units_long:', 'db_librato_display_units_short:', 'db_librato_display_stacked', 'db_librato_display_transform:', 'db_librato_max:', 'db_librato_min:', 'db_librato_measure_time:', 'db_librato_name:', 'db_librato_period:', 'db_librato_source:', 'db_librato_sum:', 'db_librato_summarize_function:', 'db_librato_sum_squares:', 'db_librato_type:', 'db_librato_value:', 'db_mysql_engine:', 'db_name:', 'db_port:', 'db_pswd:', 'db_prefix:', 'db_suffix:', 'db_user:'******'output:', 'params_file:', 'remove:', 'skip_validations', 'store:', 'v' => 'verbose'), $aparams = array('db_librato_aggregate', 'db_librato_color', 'db_librato_count', 'db_librato_description', 'db_librato_display_max', 'db_librato_display_min', 'db_librato_display_name', 'db_librato_display_units_long', 'db_librato_display_units_short', 'db_librato_display_stacked', 'db_librato_display_transform', 'db_librato_max', 'db_librato_min', 'db_librato_measure_time', 'db_librato_name', 'db_librato_period', 'db_librato_source', 'db_librato_sum', 'db_librato_summarize_function', 'db_librato_sum_squares', 'db_librato_type', 'db_librato_value', 'remove'), 'save_'); // merge settings with config file $cfile = BenchmarkDb::BENCHMARK_DB_CONFIG_FILE; if (isset($options['params_file']) && !file_exists($options['params_file']) && !file_exists($options['params_file'] = trim(shell_exec('pwd')) . '/' . $options['params_file'])) { print_msg(sprintf('--params_file %s is not a valid file', $options['params_file']), TRUE, __FILE__, __LINE__, TRUE); } else { if (isset($options['params_file'])) { $cfile = $options['params_file']; } } merge_options_with_config($options, $cfile); // convert array parameters found in config file foreach ($aparams as $aparam) { if (isset($options[$aparam]) && !is_array($options[$aparam])) { $p = array(); foreach (explode(',', $options[$aparam]) as $v) { if (preg_match('/^"(.*)"$/', $v) || preg_match("/^'(.*)'\$/", $v)) { $p[] = strip_quotes($v); } else { foreach (explode(' ', trim($v)) as $v) { $p[] = trim($v); } } } $options[$aparam] = $p; } } if (!isset($options['remove'])) { $options['remove'] = array(); } // output directory if (!isset($options['output'])) { $options['output'] = trim(shell_exec('pwd')); } // default table suffix if (!isset($options['db_suffix']) && ($ini = get_benchmark_ini()) && isset($ini['meta-version'])) { $options['db_suffix'] = '_' . str_replace('.', '_', $ini['meta-version']); } $impl = 'BenchmarkDb'; if (isset($options['db'])) { switch ($options['db']) { case 'bigquery': $impl .= 'BigQuery'; break; case 'callback': $impl .= 'Callback'; break; case 'librato': $impl .= 'Librato'; break; case 'mysql': $impl .= 'MySql'; break; case 'postgresql': $impl .= 'PostgreSql'; break; default: $err = '--db ' . $options['db'] . ' is not valid'; break; } // invalid --db argument if (isset($err)) { print_msg($err, isset($options['verbose']), __FILE__, __LINE__, TRUE); return $db; } } if ($impl != 'BenchmarkDb') { require_once sprintf('%s/%s.php', dirname(__FILE__), $impl); } $db = new $impl($options); $db->options = $options; $db->dir = $options['output']; if (!$db->validateDependencies()) { $db = NULL; } else { if (!isset($options['skip_validations']) && !$db->validate()) { $db = NULL; } } if ($db && isset($options['store'])) { require_once 'BenchmarkArchiver.php'; $db->archiver =& BenchmarkArchiver::getArchiver(); if (!$db->archiver) { $db = NULL; } } return $db; }