mirror of https://github.com/grpc/grpc.git
parent
acae9fe6e7
commit
55643fee6b
3 changed files with 228 additions and 121 deletions
@ -0,0 +1,17 @@ |
||||
<?php |
||||
|
||||
$args = getopt('', ['metric_server_address:', 'total_only::']); |
||||
$parts = explode(':', $args['metric_server_address']); |
||||
$server_host = $parts[0]; |
||||
$server_port = (count($parts) == 2) ? $parts[1] : ''; |
||||
|
||||
$socket = socket_create(AF_INET, SOCK_STREAM, 0); |
||||
if (@!socket_connect($socket, $server_host, $server_port)) { |
||||
echo "Cannot connect to merics server...\n"; |
||||
exit(1); |
||||
} |
||||
socket_write($socket, 'qps'); |
||||
while ($out = socket_read($socket, 1024)) { |
||||
echo "$out\n"; |
||||
} |
||||
socket_close($socket); |
@ -0,0 +1,83 @@ |
||||
<?php |
||||
|
||||
include_once('interop_client.php'); |
||||
|
||||
function stress_main($args) { |
||||
mt_srand(); |
||||
set_time_limit(0); |
||||
|
||||
// open socket to listen as metrics server |
||||
$socket = socket_create(AF_INET, SOCK_STREAM, 0); |
||||
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1); |
||||
if (@!socket_bind($socket, 'localhost', $args['metrics_port'])) { |
||||
echo "Cannot create socket for metrics server...\n"; |
||||
exit(1); |
||||
} |
||||
socket_listen($socket); |
||||
socket_set_nonblock($socket); |
||||
|
||||
$start_time = microtime(true); |
||||
$count = 0; |
||||
$deadline = $args['test_duration_secs'] ? |
||||
($start_time + $args['test_duration_secs']) : false; |
||||
$num_test_cases = count($args['test_cases']); |
||||
|
||||
while (true) { |
||||
$current_time = microtime(true); |
||||
if ($deadline && $current_time > $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)]; |
||||
@interop_main($args); |
||||
$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' : $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); |
Loading…
Reference in new issue