diff options
author | Muxi Yan <mxyan@google.com> | 2017-12-06 22:02:08 -0800 |
---|---|---|
committer | Muxi Yan <mxyan@google.com> | 2017-12-06 22:02:08 -0800 |
commit | fc38142db69cd8c95f3c55a296b4e73b04c720c3 (patch) | |
tree | 8287e97154a1edcd764585623aa6cda08439159b /test/core/memory_usage/memory_usage_test.cc | |
parent | a4839e7aea1bd1ae057584a5cdf125541ef11016 (diff) | |
parent | e52772451a7bbf4f3f7b72cfc369781fd74a6930 (diff) |
Merge commit 'b0bad8f^' into fix-stream-compression-config-interface
Diffstat (limited to 'test/core/memory_usage/memory_usage_test.cc')
-rw-r--r-- | test/core/memory_usage/memory_usage_test.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/core/memory_usage/memory_usage_test.cc b/test/core/memory_usage/memory_usage_test.cc new file mode 100644 index 0000000000..58e31c9531 --- /dev/null +++ b/test/core/memory_usage/memory_usage_test.cc @@ -0,0 +1,78 @@ +/* + * + * Copyright 2015 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include <stdio.h> +#include <string.h> + +#include <grpc/support/alloc.h> +#include <grpc/support/host_port.h> +#include <grpc/support/string_util.h> +#include <grpc/support/subprocess.h> +#include "src/core/lib/support/string.h" +#include "test/core/util/port.h" + +int main(int argc, char** argv) { + char* me = argv[0]; + char* lslash = strrchr(me, '/'); + char root[1024]; + int port = grpc_pick_unused_port_or_die(); + char* args[10]; + int status; + gpr_subprocess *svr, *cli; + /* figure out where we are */ + if (lslash) { + memcpy(root, me, (size_t)(lslash - me)); + root[lslash - me] = 0; + } else { + strcpy(root, "."); + } + /* start the server */ + gpr_asprintf(&args[0], "%s/memory_profile_server%s", root, + gpr_subprocess_binary_extension()); + args[1] = const_cast<char*>("--bind"); + gpr_join_host_port(&args[2], "::", port); + args[3] = const_cast<char*>("--no-secure"); + svr = gpr_subprocess_create(4, (const char**)args); + gpr_free(args[0]); + gpr_free(args[2]); + + /* start the client */ + gpr_asprintf(&args[0], "%s/memory_profile_client%s", root, + gpr_subprocess_binary_extension()); + args[1] = const_cast<char*>("--target"); + gpr_join_host_port(&args[2], "127.0.0.1", port); + args[3] = const_cast<char*>("--warmup=1000"); + args[4] = const_cast<char*>("--benchmark=9000"); + cli = gpr_subprocess_create(5, (const char**)args); + gpr_free(args[0]); + gpr_free(args[2]); + + /* wait for completion */ + printf("waiting for client\n"); + if ((status = gpr_subprocess_join(cli))) { + gpr_subprocess_destroy(cli); + gpr_subprocess_destroy(svr); + return status; + } + gpr_subprocess_destroy(cli); + + gpr_subprocess_interrupt(svr); + status = gpr_subprocess_join(svr); + gpr_subprocess_destroy(svr); + return status; +} |