diff --git a/tests/qps/Logging/LoggingClientCrossTests.php b/tests/qps/Logging/LoggingClientCrossTests.php new file mode 100644 index 0000000000..845edf2fb8 --- /dev/null +++ b/tests/qps/Logging/LoggingClientCrossTests.php @@ -0,0 +1,96 @@ + [ + 'transport' => 'grpc' + ], + 'batchOptions' => ['batchSize' => 1] + ] + ); + + $restLogger = LoggingClient::psrBatchLogger( + 'perf-rest', + [ + 'clientConfig' => [ + 'transport' => 'rest' + ], + 'batchOptions' => ['batchSize' => 1] + ] + ); + + $warm_up_time = $arg_warm_up; + $benchmark_time = $arg_benchmark; + + $benchmark_count = 0; + $rest_latency_array = array(); + $grpc_latency_array = array(); + for ($i = 0; $i < count($payload); $i++) { + $rest_latency_array[$i] = array(); + $grpc_latency_array[$i] = array(); + } + + // Warm up + $start_time = microtime(true); + echo "Start warmup...". PHP_EOL; + while(1) { + if (microtime(true) - $start_time > $warm_up_time) { + break; + } + $grpcLogger->info('a'); + $restLogger->info('a'); + } + // Benchmark + echo "Start benchmark...". PHP_EOL; + $start_time = microtime(true); + while(1) { + if (microtime(true) - $start_time > $benchmark_time) { + break; + } + $benchmark_count += 1; + for ($i = 0; $i < count($payload); $i++) { + $payload_size = $payload[$i]; + $msg_grpc = generate_string($payload_size); + $msg_rest = generate_string($payload_size); + + $grpc_start_time = microtime(true); + $grpcLogger->info($msg_grpc); + array_push($grpc_latency_array[$i], microtime(true) - $grpc_start_time); + + $rest_start_time = microtime(true); + $restLogger->info($msg_rest); + array_push($rest_latency_array[$i], microtime(true) - $rest_start_time); + } + } + + for ($i = 0; $i < count($payload); $i++) { + echo "=====================". PHP_EOL; + echo "payload: ". $payload[$i]. PHP_EOL; + echo "gRPC transport qps: " . ($benchmark_count / array_sum($grpc_latency_array[$i])) . PHP_EOL; + sort($grpc_latency_array[$i]); + print_stats("gRPC", $grpc_latency_array[$i]); + + echo "rest transport qps: " . ($benchmark_count / array_sum($rest_latency_array[$i])) . PHP_EOL; + sort($rest_latency_array[$i]); + print_stats("REST", $rest_latency_array[$i]); + } +} + +$arg_warmup = !empty($argv[1]) ? $argv[1] : 2; +$arg_benchmark = !empty($argv[2]) ? $argv[2] : 40; +$payload = array(); +if(!empty($argv[3])) { + $payload = array_map('intval', explode(',', $argv[3])); +} else { + $payload = array(1, 10, 100, 1024, 10240); +} +qps_client_main($arg_warmup, $arg_benchmark, $payload); + diff --git a/tests/qps/Logging/logging_grpc.php b/tests/qps/Logging/logging_grpc.php new file mode 100644 index 0000000000..3870af8595 --- /dev/null +++ b/tests/qps/Logging/logging_grpc.php @@ -0,0 +1,22 @@ + [ + 'transport' => 'grpc' + ], + 'batchOptions' => ['batchSize' => 1] + ] +); + +$grpcLogger->info('s'); +$first_latency = microtime(true) - $start_time; +echo "rest latency for first RPC:". $first_latency. PHP_EOL; +file_put_contents('logs_grpc.txt', $first_latency.PHP_EOL , FILE_APPEND | LOCK_EX); + diff --git a/tests/qps/Logging/logging_rest.php b/tests/qps/Logging/logging_rest.php new file mode 100644 index 0000000000..97595350a7 --- /dev/null +++ b/tests/qps/Logging/logging_rest.php @@ -0,0 +1,21 @@ + [ + 'transport' => 'rest' + ], + 'batchOptions' => ['batchSize' => 1] + ] +); + +$restLogger->info('e'); +$first_latency = microtime(true) - $start_time; +echo "rest latency for first RPC:". $first_latency. PHP_EOL; +file_put_contents('logs_rest.txt', $first_latency.PHP_EOL , FILE_APPEND | LOCK_EX); diff --git a/tests/qps/benchmark.php b/tests/qps/benchmark.php new file mode 100644 index 0000000000..7a12e994e4 --- /dev/null +++ b/tests/qps/benchmark.php @@ -0,0 +1,24 @@ +