Best Phoronix-test-suite code snippet using pts_test_result.get_result_first
pts_result_file_analyzer.php
Source:pts_result_file_analyzer.php  
...455			{456				continue;457			}458			$tests_counted++;459			$winner = $result->get_result_first();460			$loser = $result->get_result_last();461			if(!isset($wins[$winner]))462			{463				$wins[$winner] = 1;464			}465			else466			{467				$wins[$winner]++;468			}469			if(!isset($losses[$loser]))470			{471				$losses[$loser] = 1;472			}473			else474			{475				$losses[$loser]++;476			}477		}478		if(empty($wins) || empty($losses))479		{480			return;481		}482		arsort($wins);483		arsort($losses);484		$test_profile = new pts_test_profile();485		$test_result = new pts_test_result($test_profile);486		$test_result->test_profile->set_test_title('Number Of First Place Finishes');487		$test_result->test_profile->set_identifier(null);488		$test_result->test_profile->set_version(null);489		$test_result->test_profile->set_result_proportion(null);490		$test_result->test_profile->set_display_format('PIE_CHART');491		$test_result->test_profile->set_result_scale('Wins');492		///$test_result->test_profile->set_result_proportion('HIB');493		$test_result->set_used_arguments_description('Wins - ' . $tests_counted . ' Tests');494		//$test_result->set_used_arguments('Geometric-Mean');495		$test_result->test_result_buffer = new pts_test_result_buffer();496		$test_result->dynamically_generated = true;497		foreach($wins as $identifier => $count)498		{499			$test_result->test_result_buffer->add_test_result($identifier, $count);500		}501		if($only_wins)502		{503			return count($wins) > 1 ? $test_result : null;504		}505		if(count($wins) > 1)506		{507			$results[] = $test_result;508		}509		$test_profile = new pts_test_profile();510		$test_result = new pts_test_result($test_profile);511		$test_result->test_profile->set_test_title('Number Of Last Place Finishes');512		$test_result->test_profile->set_identifier(null);513		$test_result->test_profile->set_version(null);514		$test_result->test_profile->set_result_proportion(null);515		$test_result->test_profile->set_display_format('PIE_CHART');516		$test_result->test_profile->set_result_scale('Losses');517		///$test_result->test_profile->set_result_proportion('HIB');518		$test_result->set_used_arguments_description('Losses - ' . $tests_counted . ' Tests');519		//$test_result->set_used_arguments('Geometric-Mean');520		$test_result->test_result_buffer = new pts_test_result_buffer();521		$test_result->dynamically_generated = true;522		foreach($losses as $identifier => $count)523		{524			$test_result->test_result_buffer->add_test_result($identifier, $count);525		}526		if(count($losses) > 1)527		{528			$results[] = $test_result;529		}530		return $results;531	}532	public static function generate_geometric_mean_result_for_suites_in_result_file(&$result_file, $allow_partial = true, $upper_limit = 0)533	{534		if($result_file->get_system_count() < 2)535		{536			return array();537		}538		$geo_mean_results = array();539		$suites_in_result_file = pts_test_suites::suites_in_result_file($result_file, $allow_partial, $upper_limit);540		if(empty($suites_in_result_file))541		{542			return array();543		}544		ksort($suites_in_result_file);545		foreach($suites_in_result_file as $suite_identifier => &$s)546		{547			list($suite, $contained_tests) = $s;548			$geo_mean = pts_result_file_analyzer::generate_geometric_mean_result($result_file, true, $contained_tests);549			if($geo_mean)550			{551				$geo_mean->test_profile->set_test_title('Geometric Mean Of ' . $suite->get_title() . (stripos($suite->get_title(), 'Test') === false ? ' Tests' : null));552				$geo_mean->normalize_buffer_values();553				$geo_mean->set_annotation('Geometric mean based upon tests: ' . pts_arrays::implode_list($contained_tests));554				$geo_mean_results[] = $geo_mean;555			}556		}557		return $geo_mean_results;558	}559	public static function generate_geometric_mean_result($result_file, $do_sort = false, $limit_to = false, $best_is_last = false)560	{561		$results = array();562		$system_count = $result_file->get_system_count();563		foreach($result_file->get_result_objects() as $result)564		{565			if($result->test_profile->get_identifier() == null || $result->test_profile->get_display_format() != 'BAR_GRAPH' || $system_count > $result->test_result_buffer->get_count())566			{567				// Skip data where it's not a proper test, not a singular data value, or not all systems ran within the result file568				continue;569			}570			if($limit_to)571			{572				if(is_array($limit_to))573				{574					if(!in_array($result->test_profile->get_identifier(), $limit_to) && !in_array($result->test_profile->get_identifier(false), $limit_to))575					{576						continue;577					}578				}579				else580				{581					if($limit_to != $result->test_profile->get_identifier())582					{583						continue;584					}585				}586			}587			foreach($result->test_result_buffer->get_buffer_items() as $buffer_item)588			{589				$r = $buffer_item->get_result_value();590				if(!is_numeric($r) || $r == 0)591				{592					continue;593				}594				if($result->test_profile->get_result_proportion() == 'LIB')595				{596					// convert to HIB597					$r = (1 / $r) * 100;598				}599				$ri = $buffer_item->get_result_identifier();600				if(!isset($results[$ri]))601				{602					$results[$ri] = array();603				}604				$results[$ri][] = $r;605			}606		}607		foreach($results as $identifier => $values)608		{609			if(count($values) < 2)610			{611				// If small result file with not a lot of data, don't bother showing...612				unset($results[$identifier]);613			}614		}615		if(!empty($results))616		{617			$test_profile = new pts_test_profile();618			$test_result = new pts_test_result($test_profile);619			$test_result->test_profile->set_test_title('Geometric Mean Of ' . ($limit_to && !is_array($limit_to) ? $limit_to : 'All Test Results'));620			$test_result->test_profile->set_identifier(null);621			$test_result->test_profile->set_version(null);622			$test_result->test_profile->set_result_proportion(null);623			$test_result->test_profile->set_display_format('BAR_GRAPH');624			$test_result->test_profile->set_result_scale('Geometric Mean');625			$test_result->test_profile->set_result_proportion('HIB');626			$test_result->set_used_arguments_description('Result Composite');627			$test_result->set_used_arguments('Geometric-Mean');628			$test_result->test_result_buffer = new pts_test_result_buffer();629			foreach($results as $identifier => $values)630			{631				if(count($values) < 2)632				{633					return false;634				}635				$values = pts_math::geometric_mean($values);636				$test_result->test_result_buffer->add_test_result($identifier, pts_math::set_precision($values, 3));637			}638			if(!$result_file->is_multi_way_comparison() && $do_sort)639			{640				$test_result->sort_results_by_performance();641				if($best_is_last)642				{643					$test_result->test_result_buffer->buffer_values_reverse();644				}645			}646			$test_result->dynamically_generated = true;647			return $test_result;648		}649		return false;650	}651	public static function generate_geometric_mean_result_per_test($result_file, $do_sort = false, $selector = null, $best_is_last = false)652	{653		$geo_results = array();654		$results = array();655		$system_count = $result_file->get_system_count();656		foreach($result_file->get_result_objects() as $result)657		{658			if(($selector == null && $result->test_profile->get_identifier() == null) || $result->test_profile->get_display_format() != 'BAR_GRAPH' || $system_count > $result->test_result_buffer->get_count())659			{660				// Skip data where it's not a proper test, not a singular data value, or not all systems ran within the result file661				continue;662			}663			if($selector != null && strpos($result->get_arguments_description(), $selector) === false && strpos($result->test_profile->get_title(), $selector) === false && strpos($result->test_profile->get_result_scale(), $selector) === false)664			{665				continue;666			}667			foreach($result->test_result_buffer->get_buffer_items() as $buffer_item)668			{669				$r = $buffer_item->get_result_value();670				if(!is_numeric($r) || $r == 0)671				{672					continue;673				}674				if($result->test_profile->get_result_proportion() == 'LIB')675				{676					// convert to HIB677					$r = (1 / $r) * 100;678				}679				$ri = $buffer_item->get_result_identifier();680				if(!isset($results[$result->test_profile->get_title()]))681				{682					$results[$result->test_profile->get_title()] = array();683				}684				if(!isset($results[$result->test_profile->get_title()][$ri]))685				{686					$results[$result->test_profile->get_title()][$ri] = array();687				}688				$results[$result->test_profile->get_title()][$ri][] = $r;689			}690		}691		if(count($results) < 2)692		{693			return array();694		}695		foreach($results as $test => $test_results)696		{697			foreach($test_results as $identifier => $values)698			{699				if(false && count($values) < 4)700				{701					// If small result file with not a lot of data, don't bother showing...702					unset($results[$test][$identifier]);703				}704			}705			if(empty($results[$test]))706			{707				unset($results[$test]);708			}709		}710		foreach($results as $test_title => $test_results)711		{712			$test_profile = new pts_test_profile();713			$test_result = new pts_test_result($test_profile);714			$test_result->test_profile->set_test_title($test_title);715			$test_result->test_profile->set_identifier(null);716			$test_result->test_profile->set_version(null);717			$test_result->test_profile->set_result_proportion(null);718			$test_result->test_profile->set_display_format('BAR_GRAPH');719			$test_result->test_profile->set_result_scale('Geometric Mean');720			$test_result->test_profile->set_result_proportion('HIB');721			$test_result->set_used_arguments_description(($selector ? $selector . ' ' : null) . 'Geometric Mean');722			$test_result->set_used_arguments('Geometric-Mean');723			$test_result->test_result_buffer = new pts_test_result_buffer();724			foreach($test_results as $identifier => $values)725			{726				$values = pts_math::geometric_mean($values);727				$precised = pts_math::set_precision($values, 3);728				if($values != 0 && $precised == 0)729				{730					// Don't use precision if it ends up rounding result too small in certain situations731					$precised = $values;732				}733				$test_result->test_result_buffer->add_test_result($identifier, $precised);734			}735			if(!$result_file->is_multi_way_comparison() || $do_sort)736			{737				$test_result->sort_results_by_performance();738				if($best_is_last)739				{740					$test_result->test_result_buffer->buffer_values_reverse();741				}742			}743			$test_result->dynamically_generated = true;744			$geo_results[] = $test_result;745		}746		return $geo_results;747	}748	public static function generate_harmonic_mean_result($result_file, $do_sort = false, $best_is_last = false)749	{750		$results = array();751		$system_count = $result_file->get_system_count();752		foreach($result_file->get_result_objects() as $result)753		{754			if($result->test_profile->get_identifier() == null || $result->test_profile->get_display_format() != 'BAR_GRAPH' || $result->test_profile->get_result_proportion() == 'LIB' || $system_count > $result->test_result_buffer->get_count())755			{756				// Skip data where it's not a proper test, not a singular data value, or not all systems ran within the result file, or lower is better for results757				continue;758			}759			$rs = $result->test_profile->get_result_scale();760			if(strpos($rs, '/') === false && stripos($rs, ' per ') === false && stripos($rs, 'FPS') === false && stripos($rs, 'bps') === false && stripos($rs, 'iops') === false)761			{762				// Harmonic mean is relevant for tests of rates, MB/s, FPS, ns/day, etc.763				continue;764			}765			foreach($result->test_result_buffer->get_buffer_items() as $buffer_item)766			{767				$ri = $buffer_item->get_result_identifier();768				if(!isset($results[$rs][$ri]))769				{770					$results[$rs][$ri] = array();771				}772				$results[$rs][$ri][] = $buffer_item->get_result_value();773			}774		}775		foreach($results as $result_scale => $group)776		{777			foreach($group as $identifier => $values)778			{779				if(count($values) < 4)780				{781					// If small result file with not a lot of data, don't bother showing...782					unset($results[$result_scale][$identifier]);783				}784			}785		}786		if(!empty($results))787		{788			$test_results = array();789			foreach($results as $result_scale => $group)790			{791				$parsed = array();792				foreach($group as $identifier => $values)793				{794					$parsed[$identifier] = pts_math::harmonic_mean($values);795				}796				if(empty($parsed) || count($parsed) < 2)797				{798					continue;799				}800				$test_profile = new pts_test_profile();801				$test_result = new pts_test_result($test_profile);802				$test_result->test_profile->set_test_title('Harmonic Mean Of ' . $result_scale . ' Test Results');803				$test_result->test_profile->set_identifier(null);804				$test_result->test_profile->set_version(null);805				$test_result->test_profile->set_result_proportion(null);806				$test_result->test_profile->set_display_format('BAR_GRAPH');807				$test_result->test_profile->set_result_scale($result_scale);808				$test_result->test_profile->set_result_proportion('HIB');809				$test_result->set_used_arguments_description('Harmonic Mean');810				$test_result->set_used_arguments('Harmonic-Mean - ' . $result_scale);811				$test_result->test_result_buffer = new pts_test_result_buffer();812				foreach($parsed as $identifier => $values)813				{814					$test_result->test_result_buffer->add_test_result($identifier, pts_math::set_precision($values, 3));815				}816				if(!$result_file->is_multi_way_comparison() || $do_sort)817				{818					$test_result->sort_results_by_performance();819					if($best_is_last)820					{821						$test_result->test_result_buffer->buffer_values_reverse();822					}823				}824				$test_result->dynamically_generated = true;825				$test_results[] = $test_result;826			}827			return $test_results;828		}829		return array();830	}831	public static function display_result_file_stats_pythagorean_means($result_file, $highlight_identifier = null)832	{833		$ret = null;834		foreach(pts_result_file_analyzer::generate_harmonic_mean_result($result_file, true, true) as $harmonic_mean_result)835		{836			$ret .= pts_result_file_output::test_result_to_text($harmonic_mean_result, pts_client::terminal_width(), true, $highlight_identifier, true) . PHP_EOL;837		}838		$geometric_mean = pts_result_file_analyzer::generate_geometric_mean_result($result_file, true, false, true);839		if($geometric_mean)840		{841			$ret .= pts_result_file_output::test_result_to_text($geometric_mean, pts_client::terminal_width(), true, $highlight_identifier, true);842		}843		if($ret != null)844		{845			$ret .= PHP_EOL;846		}847		return $ret;848	}849	public static function display_results_wins_losses($result_file, $highlight_result_identifier = null, $prepend_lines = '   ')850	{851		$output = null;852		$result_file_identifiers_count = $result_file->get_system_count();853		$wins = array();854		$losses = array();855		$tests_counted = 0;856		$possible_evaluate_result_count = 0;857		foreach($result_file->get_result_objects() as $result)858		{859			if($result->test_profile->get_identifier() == null)860			{861				continue;862			}863			$possible_evaluate_result_count++;864			if($result->test_result_buffer->get_count() < 2 || $result->test_result_buffer->get_count() < floor($result_file_identifiers_count / 2))865			{866				continue;867			}868			$tests_counted++;869			$winner = $result->get_result_first();870			$loser = $result->get_result_last();871			if(!isset($wins[$winner]))872			{873				$wins[$winner] = 1;874			}875			else876			{877				$wins[$winner]++;878			}879			if(!isset($losses[$loser]))880			{881				$losses[$loser] = 1;882			}883			else...pts_test_result.php
Source:pts_test_result.php  
...191			}192		}193		return $largest_variation;194	}195	public function get_result_first($return_identifier = true)196	{197		// a.k.a. the result winner198		$winner = null;199		if($this->test_profile->get_result_proportion() == 'LIB')200		{201			$winner = $this->test_result_buffer->get_min_value($return_identifier);202		}203		else if($this->test_profile->get_result_proportion() == 'HIB')204		{205			$winner = $this->test_result_buffer->get_max_value($return_identifier);206		}207		return $winner;208	}209	public function get_result_last($return_identifier = true)210	{211		// a.k.a. the result loser212		$winner = null;213		if($this->test_profile->get_result_proportion() == 'HIB')214		{215			$winner = $this->test_result_buffer->get_min_value($return_identifier);216		}217		else if($this->test_profile->get_result_proportion() == 'LIB')218		{219			$winner = $this->test_result_buffer->get_max_value($return_identifier);220		}221		return $winner;222	}223	public function get_spread()224	{225		if($this->has_noisy_result())226		{227			return -1;228		}229		$best = $this->get_result_first(false);230		$worst = $this->get_result_last(false);231		if(!is_numeric($best) || !is_numeric($worst))232		{233			return -1;234		}235		$spread = $best / $worst;236		if($this->test_profile->get_result_proportion() == 'LIB')237		{238			$spread = 1 / $spread;239		}240		return $spread;241	}242	public function normalize_buffer_values($normalize_against = false, $extra_attributes = null)243	{...get_result_first
Using AI Code Generation
1$test_result = new pts_test_result('test.xml');2$test_result->get_result_first();3$test_result = new pts_test_result('test.xml');4$test_result->get_result_last();5$test_result = new pts_test_result('test.xml');6$test_result->get_result_average();7$test_result = new pts_test_result('test.xml');8$test_result->get_result_median();9$test_result = new pts_test_result('test.xml');10$test_result->get_result_geometric_mean();11$test_result = new pts_test_result('test.xml');12$test_result->get_result_maximum();13$test_result = new pts_test_result('test.xml');14$test_result->get_result_minimum();15$test_result = new pts_test_result('test.xml');16$test_result->get_result_standard_deviation();17$test_result = new pts_test_result('test.xml');18$test_result->get_result_variance();19$test_result = new pts_test_result('test.xml');20$test_result->get_result_standard_error_of_mean();21$test_result = new pts_test_result('test.xml');22$test_result->get_result_standard_error_of_median();23$test_result = new pts_test_result('test.xml');24$test_result->get_result_standard_error_of_geometric_mean();25$test_result = new pts_test_result('test.xml');26$test_result->get_result_standard_error_of_minimum();27$test_result = new pts_test_result('test.xml');get_result_first
Using AI Code Generation
1require_once('pts_test_result.php');2$test_result = new pts_test_result('2.xml');3$test_result->get_result_first();4require_once('pts_test_result.php');5$test_result = new pts_test_result('2.xml');6$test_result->get_result_last();7require_once('pts_test_result.php');8$test_result = new pts_test_result('2.xml');9$test_result->get_result_median();10require_once('pts_test_result.php');11$test_result = new pts_test_result('2.xml');12$test_result->get_result_maximum();13require_once('pts_test_result.php');14$test_result = new pts_test_result('2.xml');15$test_result->get_result_minimum();16require_once('pts_test_result.php');17$test_result = new pts_test_result('2.xml');18$test_result->get_result_standard_deviation();19require_once('pts_test_result.php');20$test_result = new pts_test_result('2.xml');21$test_result->get_result_variance();22require_once('pts_test_result.php');23$test_result = new pts_test_result('2.xml');24$test_result->get_result_geometric_mean();25require_once('pts_test_result.php');26$test_result = new pts_test_result('2.xml');27$test_result->get_result_arithmetic_mean();28require_once('pts_test_result.php');29$test_result = new pts_test_result('2.xml');30$test_result->get_result_harmonic_mean();get_result_first
Using AI Code Generation
1include_once('pts_test_result.php');2$test = new pts_test_result();3$test->get_result_first('test.xml');4echo $test->get_result();5echo $test->get_result_json();6{"test_run":3.4}get_result_first
Using AI Code Generation
1$test_result = new pts_test_result('test_result_file.xml');2echo $test_result->get_result_first();3Method 3: get_result_last()4get_result_last()5$test_result = new pts_test_result('test_result_file.xml');6echo $test_result->get_result_last();7Method 4: get_result_median()8get_result_median()9$test_result = new pts_test_result('test_result_file.xml');10echo $test_result->get_result_median();11Method 5: get_result_min()12get_result_min()13$test_result = new pts_test_result('test_result_file.xml');14echo $test_result->get_result_min();15Method 6: get_result_max()16get_result_max()17$test_result = new pts_test_result('test_result_file.xml');18echo $test_result->get_result_max();19Method 7: get_result_deviation()20get_result_deviation()Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with get_result_first on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!
