Best Phoronix-test-suite code snippet using pts_stress_run_manager.stress_print_and_log
pts_stress_run_manager.php
Source:pts_stress_run_manager.php  
...175			pcntl_signal(SIGINT, array($this, 'sig_handler'));176		}177		else178		{179			$this->stress_print_and_log('PHP PCNTL support is needed if wishing to gracefully interrupt testing with signals.' . PHP_EOL);180		}181		// SENSOR SETUP WORK182		$sensor_interval_frequency = is_numeric($total_loop_time) && $total_loop_time > 1 ? max($total_loop_time / 1000, 3) : 6;183		$sensor_time_since_last_poll = time();184		foreach(phodevi::supported_sensors(array('cpu_temp', 'cpu_usage', 'gpu_usage', 'gpu_temp', 'hdd_read_speed', 'hdd_write_speed', 'memory_usage', 'swap_usage', 'sys_temp')) as $sensor)185		{186			$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));187			if($supported_devices === NULL)188			{189				$supported_devices = array(null);190			}191			foreach($supported_devices as $device)192			{193				$sensor_object = new $sensor[2](0, $device);194				if(phodevi::read_sensor($sensor_object) != -1)195				{196					array_push($this->sensors_to_monitor, $sensor_object);197					$this->sensor_data_archived[phodevi::sensor_object_name($sensor_object)] = array();198					$this->sensor_data_archived_units[phodevi::sensor_object_name($sensor_object)] = phodevi::read_sensor_object_unit($sensor_object);199					$this->sensor_data_archived_identifiers[phodevi::sensor_object_name($sensor_object)] = phodevi::sensor_object_identifier($sensor_object);200				}201			}202		}203		$table = array();204		foreach(phodevi::system_hardware(false) as $component => $value)205		{206			$table[] = array($component . ': ', $value);207		}208		foreach(phodevi::system_software(false) as $component => $value)209		{210			$table[] = array($component . ': ', $value);211		}212		$this->stress_print_and_log('SYSTEM INFORMATION: ' . PHP_EOL . phodevi::system_centralized_view() . PHP_EOL . PHP_EOL);213		if(!function_exists('pcntl_waitpid'))214		{215			$this->stress_print_and_log('PHP PCNTL support is to run stress tests.' . PHP_EOL);216			return false;217		}218		pts_module_manager::module_process('__pre_run_process', $this);219		// BEGIN THE LOOP220		while(!empty($possible_tests_to_run))221		{222			if($continue_test_flag == false)223				break;224			if(($time_report_counter + $report_counter_frequency) <= time() && count(pts_file_io::glob($this->thread_collection_dir . '*')) > 0)225			{226				// ISSUE STATUS REPORT227				$this->stress_print_and_log($this->stress_status_report());228				$time_report_counter = time();229			}230			$this->stress_subsystems_active = array();231			$test_identifiers_active = array();232			while(($waited_pid = pcntl_waitpid(-1, $status, WNOHANG)) > 0)233			{234				pts_file_io::unlink($this->thread_collection_dir . $waited_pid);235			}236			foreach(pts_file_io::glob($this->thread_collection_dir . '*') as $pid_file)237			{238				$pid = basename($pid_file);239				$waited_pid = pcntl_waitpid($pid, $status, WNOHANG);240				if(!file_exists('/proc/' . $pid))241				{242					unlink($pid_file);243					continue;244				}245				$test = new pts_test_profile(file_get_contents($pid_file));246				// Count the number of tests per stress subsystems active247				if(!isset($this->stress_subsystems_active[$test->get_test_hardware_type()]))248				{249					$this->stress_subsystems_active[$test->get_test_hardware_type()] = 1;250				}251				else252				{253					$this->stress_subsystems_active[$test->get_test_hardware_type()] += 1;254				}255				if(!in_array($test->get_identifier(), $test_identifiers_active))256				{257					$test_identifiers_active[] = $test->get_identifier();258				}259			}260			if(!empty($possible_tests_to_run) && count(pts_file_io::glob($this->thread_collection_dir . '*')) < $this->multi_test_stress_run && (!$total_loop_time || $total_loop_time == 'infinite' || $this->loop_until_time > time()))261			{262				shuffle($possible_tests_to_run);263				$test_to_run = false;264				$test_run_index = -1;265				if(getenv('DONT_BALANCE_TESTS_FOR_SUBSYSTEMS') == false)266				{267					// Try to pick a test for a hardware subsystem not yet being explicitly utilized268					foreach($possible_tests_to_run as $i => $test)269					{270						$hw_subsystem_type = $test->test_profile->get_test_hardware_type();271						if(!isset($this->stress_subsystems_active[$hw_subsystem_type]) && !$this->skip_test_check($test))272						{273							$test_run_index = $i;274							$test_to_run = $test;275							break;276						}277					}278				}279				if($test_run_index == -1 && getenv('DONT_TRY_TO_ENSURE_TESTS_ARE_UNIQUE') == false)280				{281					// Try to pick a test from a test profile not currently active282					foreach($possible_tests_to_run as $i => $test)283					{284						if(!in_array($test->test_profile->get_identifier(), $test_identifiers_active) && !$this->skip_test_check($test))285						{286							$test_run_index = $i;287							$test_to_run = $test;288							break;289						}290					}291				}292				if($test_run_index == -1)293				{294					// Last resort, just randomly pick a true "random" test295					$test_run_index = array_rand(array_keys($possible_tests_to_run));296					$test_to_run = $possible_tests_to_run[$test_run_index];297					if($this->skip_test_check($test_to_run))298					{299						continue;300					}301				}302				$pid = pcntl_fork();303				if($pid == -1)304				{305					$this->stress_print_and_log('Forking Failure.');306				}307				if($pid)308				{309					// parent310					$test_identifier = $test_to_run->test_profile->get_identifier();311					file_put_contents($this->thread_collection_dir . $pid, $test_identifier);312					if(!isset($this->stress_tests_executed[$test_identifier]))313					{314						$this->stress_tests_executed[$test_identifier] = 1;315					}316					else317					{318						$this->stress_tests_executed[$test_identifier]++;319					}320				}321				else322				{323					// child324					$this->stress_child_thread = true;325					//echo PHP_EOL . pts_client::cli_colored_text('Starting: ', 'green', true) . $test_to_run->test_profile->get_identifier() . ($test_to_run->get_arguments_description() != null ? ' [' . $test_to_run->get_arguments_description()  . ']' : null) . PHP_EOL;326					$continue_test_flag = $this->process_test_run_request($test_to_run);327					//echo PHP_EOL . pts_client::cli_colored_text('Ended: ', 'red', true) . $test_to_run->test_profile->get_identifier() . ($test_to_run->get_arguments_description() != null ? ' [' . $test_to_run->get_arguments_description()  . ']' : null) . PHP_EOL;328					pts_file_io::unlink($this->thread_collection_dir . getmypid());329					//echo PHP_EOL;330					exit(0);331				}332				if($total_loop_time == false)333				{334					unset($possible_tests_to_run[$test_run_index]);335				}336				else if($total_loop_time == 'infinite')337				{338					//$this->stress_print_and_log('Continuing to test indefinitely' . PHP_EOL);339				}340				else341				{342					if($this->loop_until_time > time())343					{344						$time_left = ceil(($this->loop_until_time - time()) / 60);345					//	echo 'Continuing to test for ' . $time_left . ' more minutes' . PHP_EOL;346					}347				}348			}349			if(is_numeric($this->loop_until_time) && $this->loop_until_time < time())350			{351				// Time to Quit352				$this->stress_print_and_log('TEST TIME EXPIRED; NO NEW TESTS WILL EXECUTE; CURRENT TESTS WILL FINISH' . PHP_EOL);353				// This halt-testing touch will let tests exit early (i.e. between multiple run steps)354				file_put_contents(PTS_USER_PATH . 'halt-testing', 'stress-run is done... This text really is not important, just checking for file presence.');355				// Final report356				$this->stress_print_and_log($this->final_stress_report());357				break;358			}359			if($sensor_time_since_last_poll + $sensor_interval_frequency < time())360			{361				// Time to do a sensor reading362				foreach($this->sensors_to_monitor as &$sensor_object)363				{364					$this->sensor_data_archived[phodevi::sensor_object_name($sensor_object)][] = phodevi::read_sensor($sensor_object);365				}366				$sensor_time_since_last_poll = time();367			}368		}369		pts_module_manager::module_process('__post_run_process', $this);370		putenv('FORCE_TIMES_TO_RUN');371		pts_file_io::delete($this->thread_collection_dir, null, true);372		foreach($this->get_tests_to_run() as $run_request)373		{374			// Remove cache shares375			foreach(pts_file_io::glob($run_request->test_profile->get_install_dir() . 'cache-share-*.pt2so') as $cache_share_file)376			{377				unlink($cache_share_file);378			}379		}380		// Wait for child processes to complete381		//pcntl_waitpid(-1, $status);382		// Restore default handlers383		pcntl_signal(SIGTERM, SIG_DFL);384		pcntl_signal(SIGINT, SIG_DFL);385		pcntl_signal(SIGHUP, SIG_DFL);386		return true;387	}388	public function is_interactive_mode()389	{390		return false;391	}392	protected function skip_test_check(&$test)393	{394		$hw_subsystem_type = $test->test_profile->get_test_hardware_type();395		$subsystem_limit_check = getenv('LIMIT_STRESS_' . strtoupper($hw_subsystem_type) . '_TESTS_COUNT');396		if(isset($this->stress_subsystems_active[$hw_subsystem_type]) && $subsystem_limit_check && $subsystem_limit_check <= $this->stress_subsystems_active[$hw_subsystem_type])397		{398			// e.g. LIMIT_STRESS_GRAPHICS_TESTS_COUNT=2, don't want more than that number per subsystem concurrently399			return true;400		}401		return false;402	}403	public function action_on_stress_log_set($call)404	{405		if(is_callable($call))406		{407			$this->stress_log_event_call = $call;408		}409	}410	protected function stress_print_and_log($msg)411	{412		if($this->stress_logger && $msg != null)413		{414			echo $msg;415			$this->stress_logger->log($msg, false);416		}417		if($this->stress_log_event_call)418		{419			call_user_func($this->stress_log_event_call, $this->stress_logger->get_clean_log());420		}421	}422	public function get_stress_log()423	{424		return $this->stress_logger->get_clean_log();425	}426	public function sig_handler($signo)427	{428		// Time to Quit429		// This halt-testing touch will let tests exit early (i.e. between multiple run steps)430		file_put_contents(PTS_USER_PATH . 'halt-testing', 'stress-run is done... This text really is not important, just checking for file presence.');431		if($this->stress_child_thread == false)432		{433			$this->stress_print_and_log('SIGNAL RECEIVED; QUITTING...' . PHP_EOL);434			// Final report435			$this->stress_print_and_log($this->final_stress_report());436		}437		exit();438	}439	protected function stress_status_report()440	{441		return $this->final_stress_report(false);442	}443	protected function final_stress_report($is_final = true)444	{445		if(!$is_final)446		{447			$report_buffer = PHP_EOL . '###### STRESS RUN INTERIM REPORT ####' . PHP_EOL;448		}449		else...stress_print_and_log
Using AI Code Generation
1$stress_test_manager = new pts_stress_run_manager();2$stress_test_manager->stress_print_and_log('Hello World');3$stress_test_manager = new pts_stress_run_manager();4$stress_test_manager->stress_print_and_log('Hello World');5$stress_test_manager = new pts_stress_run_manager();6$stress_test_manager->stress_print_and_log('Hello World');7$stress_test_manager = new pts_stress_run_manager();8$stress_test_manager->stress_print_and_log('Hello World');9$stress_test_manager = new pts_stress_run_manager();10$stress_test_manager->stress_print_and_log('Hello World');11$stress_test_manager = new pts_stress_run_manager();12$stress_test_manager->stress_print_and_log('Hello World');13$stress_test_manager = new pts_stress_run_manager();14$stress_test_manager->stress_print_and_log('Hello World');15$stress_test_manager = new pts_stress_run_manager();16$stress_test_manager->stress_print_and_log('Hello World');17$stress_test_manager = new pts_stress_run_manager();18$stress_test_manager->stress_print_and_log('Hello World');19$stress_test_manager = new pts_stress_run_manager();20$stress_test_manager->stress_print_and_log('Hello World');stress_print_and_log
Using AI Code Generation
1$stress_run_manager = new pts_stress_run_manager();2$stress_run_manager->stress_print_and_log("2.php", "2.php output");3$stress_run_manager = new pts_stress_run_manager();4$stress_run_manager->stress_print_and_log("3.php", "3.php output");5$stress_run_manager = new pts_stress_run_manager();6$stress_run_manager->stress_print_and_log("4.php", "4.php output");7$stress_run_manager = new pts_stress_run_manager();8$stress_run_manager->stress_print_and_log("5.php", "5.php output");9$stress_run_manager = new pts_stress_run_manager();10$stress_run_manager->stress_print_and_log("6.php", "6.php output");11$stress_run_manager = new pts_stress_run_manager();12$stress_run_manager->stress_print_and_log("7.php", "7.php output");13$stress_run_manager = new pts_stress_run_manager();14$stress_run_manager->stress_print_and_log("8.php", "8.php output");15$stress_run_manager = new pts_stress_run_manager();16$stress_run_manager->stress_print_and_log("9.php", "9.php output");stress_print_and_log
Using AI Code Generation
1require_once('pts-core.php');2$stress_run_manager = new pts_stress_run_manager();3$stress_run_manager->stress_print_and_log("This is a test message");4require_once('pts-core.php');5$stress_run_manager = new pts_stress_run_manager();6for($i=0;$i<=100;$i++)7{8$stress_run_manager->stress_print_and_log("Progress: ".$i."%");9sleep(1);10}11require_once('pts-core.php');12$stress_run_manager = new pts_stress_run_manager();13for($i=0;$i<=100;$i++)14{15$stress_run_manager->stress_print_and_log("Progress: ".$i."%");16sleep(1);17}18require_once('pts-core.php');19$stress_run_manager = new pts_stress_run_manager();20for($i=0;$i<=100;$i++)21{22$stress_run_manager->stress_print_and_log("Progress: ".$i."%");23sleep(1);24}25require_once('pts-core.php');stress_print_and_log
Using AI Code Generation
1$stress_run_manager->stress_print_and_log("Test Results");2$stress_run_manager->stress_print_and_log("Test 1: PASS");3$stress_run_manager->stress_print_and_log("Test 2: FAIL");4$stress_run_manager->stress_print_and_log("Test 3: PASS");5$stress_run_manager->stress_print_and_log("Test 4: PASS");6$stress_run_manager->stress_print_and_log("Test 5: PASS");7$stress_run_manager->stress_print_and_log("Test 6: PASS");8$stress_run_manager->stress_print_and_log("Test 7: PASS");9$stress_run_manager->stress_print_and_log("Test 8: PASS");10$stress_run_manager->stress_print_and_log("Test 9: PASS");11$stress_run_manager->stress_print_and_log("Test 10: PASS");12$stress_run_manager->stress_test_result("Test Results");13$stress_run_manager->stress_test_result("Test 1: PASS");14$stress_run_manager->stress_test_result("Test 2: FAIL");15$stress_run_manager->stress_test_result("Test 3: PASS");16$stress_run_manager->stress_test_result("Test 4: PASS");17$stress_run_manager->stress_test_result("Test 5: PASS");18$stress_run_manager->stress_test_result("Test 6: PASS");19$stress_run_manager->stress_test_result("Test 7: PASS");20$stress_run_manager->stress_test_result("Test 8: PASS");21$stress_run_manager->stress_test_result("Test 9: PASS");22$stress_run_manager->stress_test_result("Test 10: PASS");23$stress_run_manager->stress_test_result("Test Results");24$stress_run_manager->stress_test_result("Test 1: PASS");25$stress_run_manager->stress_test_result("Test 2: FAIL");26$stress_run_manager->stress_test_result("Test 3: PASS");27$stress_run_manager->stress_test_result("Test 4: PASS");28$stress_run_manager->stress_test_result("Test 5: PASS");29$stress_run_manager->stress_test_result("Test 6: PASS");stress_print_and_log
Using AI Code Generation
1$stress_run_manager->stress_print_and_log("Hello World");2$stress_run_manager->stress_print_and_log("Hello World");3$stress_run_manager->stress_print_and_log("Hello World");4$stress_run_manager->stress_print_and_log("Hello World");5$stress_run_manager->stress_print_and_log("Hello World");6$stress_run_manager->stress_print_and_log("Hello World");7$stress_run_manager->stress_print_and_log("Hello World");8$stress_run_manager->stress_print_and_log("Hello World");9$stress_run_manager->stress_print_and_log("Hello World");10$stress_run_manager->stress_print_and_log("Hello World");stress_print_and_log
Using AI Code Generation
1$stress_manager->stress_print_and_log('2.php: This is the second script');2$stress_manager->stress_print_and_log('3.php: This is the third script');3$stress_manager->stress_print_and_log('4.php: This is the fourth script');4$stress_manager->stress_print_and_log('5.php: This is the fifth script');5$stress_manager->stress_print_and_log('6.php: This is the sixth script');6$stress_manager->stress_print_and_log('7.php: This is the seventh script');7$stress_manager->stress_print_and_log('8.php: This is the eighth script');8$stress_manager->stress_print_and_log('9.php: This is the ninth script');9$stress_manager->stress_print_and_log('10.php: This is the tenth script');stress_print_and_log
Using AI Code Generation
1$stress_manager->stress_print_and_log("2.php: This is a stress test");2$stress_manager->stress_print_and_log("3.php: This is a stress test");3$stress_manager->stress_print_and_log("4.php: This is a stress test");4$stress_manager->stress_print_and_log("5.php: This is a stress test");5$stress_manager->stress_print_and_log("6.php: This is a stress test");6$stress_manager->stress_print_and_log("7.php: This is a stress test");7$stress_manager->stress_print_and_log("8.php: This is a stress test");8$stress_manager->stress_print_and_log("9.php: This is a stress test");9$stress_manager->stress_print_and_log("10.php: ThisLearn 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 stress_print_and_log 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!!
