public static function generate_result_file_graphs($test_results_identifier, $save_to_dir = false, $extra_attributes = null) { if ($save_to_dir) { if (pts_file_io::mkdir($save_to_dir . '/result-graphs') == false) { // Directory must exist, so remove any old graph files first foreach (pts_file_io::glob($save_to_dir . '/result-graphs/*') as $old_file) { unlink($old_file); } } } if ($test_results_identifier instanceof pts_result_file) { $result_file =& $test_results_identifier; } else { $result_file = new pts_result_file($test_results_identifier); } $generated_graphs = array(); $generated_graph_tables = false; // Render overview chart if ($save_to_dir) { $chart = new pts_ResultFileTable($result_file); $chart->renderChart($save_to_dir . '/result-graphs/overview.BILDE_EXTENSION'); $intent = -1; if (($intent = pts_result_file_analyzer::analyze_result_file_intent($result_file, $intent, true)) || $result_file->get_system_count() == 1) { $chart = new pts_ResultFileCompactSystemsTable($result_file, $intent); } else { $chart = new pts_ResultFileSystemsTable($result_file); } $chart->renderChart($save_to_dir . '/result-graphs/systems.BILDE_EXTENSION'); unset($chart); if ($intent && is_dir($save_to_dir . '/system-logs/')) { $chart = new pts_DetailedSystemComponentTable($result_file, $save_to_dir . '/system-logs/', $intent); if ($chart) { $chart->renderChart($save_to_dir . '/result-graphs/detailed_component.BILDE_EXTENSION'); } } } $result_objects = $result_file->get_result_objects(); $test_titles = array(); foreach ($result_objects as &$result_object) { array_push($test_titles, $result_object->test_profile->get_title()); } $offset = 0; foreach ($result_objects as $key => &$result_object) { $save_to = $save_to_dir; $offset++; if ($save_to_dir && is_dir($save_to_dir)) { $save_to .= '/result-graphs/' . $offset . '.BILDE_EXTENSION'; if (PTS_IS_CLIENT) { if ($result_file->is_multi_way_comparison(null, $extra_attributes) || pts_client::read_env('GRAPH_GROUP_SIMILAR')) { $table_keys = array(); foreach ($test_titles as $this_title_index => $this_title) { if (isset($test_titles[$key]) && $this_title == $test_titles[$key]) { array_push($table_keys, $this_title_index); } } } else { $table_keys = $key; } $chart = new pts_ResultFileTable($result_file, null, $table_keys); $chart->renderChart($save_to_dir . '/result-graphs/' . $offset . '_table.BILDE_EXTENSION'); unset($chart); $generated_graph_tables = true; } } $graph = pts_render::render_graph($result_object, $result_file, $save_to, $extra_attributes); array_push($generated_graphs, $graph); } // Generate mini / overview graphs if ($save_to_dir) { $graph = new pts_OverviewGraph($result_file); if ($graph->doSkipGraph() == false) { $graph->renderGraph(); // Check to see if skip_graph was realized during the rendering process if ($graph->doSkipGraph() == false) { $graph->svg_dom->output($save_to_dir . '/result-graphs/visualize.BILDE_EXTENSION'); } } unset($graph); $graph = new pts_RadarOverviewGraph($result_file); if ($graph->doSkipGraph() == false) { $graph->renderGraph(); // Check to see if skip_graph was realized during the rendering process if ($graph->doSkipGraph() == false) { $graph->svg_dom->output($save_to_dir . '/result-graphs/radar.BILDE_EXTENSION'); } } unset($graph); } // Save XSL if (count($generated_graphs) > 0 && $save_to_dir) { file_put_contents($save_to_dir . '/pts-results-viewer.xsl', pts_client::xsl_results_viewer_graph_template($generated_graph_tables)); } return $generated_graphs; }
public static function generate_overview_object(&$overview_table, $overview_type) { switch ($overview_type) { case 'GEOMETRIC_MEAN': $title = 'Geometric Mean'; $math_call = array('pts_math', 'geometric_mean'); break; case 'HARMONIC_MEAN': $title = 'Harmonic Mean'; $math_call = array('pts_math', 'harmonic_mean'); break; case 'AGGREGATE_SUM': $title = 'Aggregate Sum'; $math_call = 'array_sum'; break; default: return false; } $result_buffer = new pts_test_result_buffer(); if ($overview_table instanceof pts_result_file) { list($days_keys1, $days_keys, $shred) = pts_ResultFileTable::result_file_to_result_table($overview_table); foreach ($shred as $system_key => &$system) { $to_show = array(); foreach ($system as &$days) { $days = $days->get_value(); } array_push($to_show, pts_math::set_precision(call_user_func($math_call, $system), 2)); $result_buffer->add_test_result($system_key, implode(',', $to_show), null); } } else { $days_keys = null; foreach ($overview_table as $system_key => &$system) { if ($days_keys == null) { // TODO: Rather messy and inappropriate way of getting the days keys $days_keys = array_keys($system); break; } } foreach ($overview_table as $system_key => &$system) { $to_show = array(); foreach ($system as &$days) { array_push($to_show, call_user_func($math_call, $days)); } $result_buffer->add_test_result($system_key, implode(',', $to_show), null); } } $test_profile = new pts_test_profile(null, null, false); $test_profile->set_test_title($title); $test_profile->set_result_scale($title); $test_profile->set_display_format('BAR_GRAPH'); $test_result = new pts_test_result($test_profile); $test_result->set_used_arguments_description('Analytical Overview'); $test_result->set_test_result_buffer($result_buffer); return $test_result; }
public static function locate_interesting_results(&$result_file, &$flagged_results = null) { $result_objects = array(); if (!is_array($flagged_results)) { $flagged_results = array(); $system_id_keys = null; $result_object_index = -1; pts_ResultFileTable::result_file_to_result_table($result_file, $system_id_keys, $result_object_index, $flagged_results); } if (count($flagged_results) > 0) { asort($flagged_results); $flagged_results = array_slice(array_keys($flagged_results), -6); $flag_delta_objects = $result_file->get_result_objects($flagged_results); for ($i = 0; $i < count($flagged_results); $i++) { $result_objects[$flagged_results[$i]] = $flag_delta_objects[$i]; unset($flag_delta_objects[$i]); } } return $result_objects; }