$deadline) { break; } if ($client_connection = socket_accept($socket)) { // there is an incoming request, respond with qps metrics $input = socket_read($client_connection, 1024); $qps = round($count / ($current_time - $start_time)); socket_write($client_connection, "qps: $qps"); socket_close($client_connection); } else { // do actual work, run one interop test case $args['test_case'] = $args['test_cases'][mt_rand(0, $num_test_cases - 1)]; $stub = @interop_main($args, $stub); ++$count; } } socket_close($socket); echo "Number of interop tests run in $args[test_duration_secs] ". "seconds: $count.\n"; } // process command line arguments $raw_args = getopt('', ['server_addresses::', 'test_cases:', 'metrics_port::', 'test_duration_secs::', 'num_channels_per_server::', 'num_stubs_per_channel::', ]); $args = []; if (empty($raw_args['server_addresses'])) { $args['server_host'] = 'localhost'; $args['server_port'] = '8080'; } else { $parts = explode(':', $raw_args['server_addresses']); $args['server_host'] = $parts[0]; $args['server_port'] = (count($parts) == 2) ? $parts[1] : ''; } $args['metrics_port'] = empty($raw_args['metrics_port']) ? '8081' : $raw_args['metrics_port']; $args['test_duration_secs'] = empty($raw_args['test_duration_secs']) || $raw_args['test_duration_secs'] == -1 ? false : $raw_args['test_duration_secs']; $test_cases = []; $test_case_strs = explode(',', $raw_args['test_cases']); foreach ($test_case_strs as $test_case_str) { $parts = explode(':', $test_case_str); $test_cases = array_merge($test_cases, array_fill(0, $parts[1], $parts[0])); } $args['test_cases'] = $test_cases; stress_main($args);