aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-01-21 12:29:41 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-01-21 13:53:16 -0800
commit8a84be382ad937c7227505ba5516363f82c5f59e (patch)
treefde77354aba9911cfe48e67f9bfa072a029cf214 /test
parentc50e398d6582da7d2bbe2484201ef4900b68e0d1 (diff)
Echo server gets security
Diffstat (limited to 'test')
-rw-r--r--test/core/echo/server.c45
1 files changed, 36 insertions, 9 deletions
diff --git a/test/core/echo/server.c b/test/core/echo/server.c
index 35f118dc9b..590cb681ac 100644
--- a/test/core/echo/server.c
+++ b/test/core/echo/server.c
@@ -32,6 +32,7 @@
*/
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
#include <signal.h>
#include <stdio.h>
@@ -41,11 +42,13 @@
#include "test/core/util/test_config.h"
#include <grpc/support/alloc.h>
+#include <grpc/support/cmdline.h>
#include <grpc/support/host_port.h>
#include <grpc/support/log.h>
#include <grpc/support/string.h>
#include <grpc/support/time.h>
#include "test/core/util/port.h"
+#include "test/core/end2end/data/ssl_test_data.h"
static grpc_completion_queue *cq;
static grpc_server *server;
@@ -83,29 +86,53 @@ static void sigint_handler(int x) { got_sigint = 1; }
int main(int argc, char **argv) {
grpc_event *ev;
- char *addr;
call_state *s;
+ char *addr_buf = NULL;
+ gpr_cmdline *cl;
int shutdown_started = 0;
int shutdown_finished = 0;
- grpc_test_init(argc, argv);
+ int secure = 0;
+ char *addr = NULL;
+
+ char *fake_argv[1];
+
+ GPR_ASSERT(argc >= 1);
+ fake_argv[0] = argv[0];
+ grpc_test_init(1, fake_argv);
grpc_init();
srand(clock());
- if (argc == 2) {
- addr = gpr_strdup(argv[1]);
- } else {
- gpr_join_host_port(&addr, "::", grpc_pick_unused_port_or_die());
+ cl = gpr_cmdline_create("echo server");
+ gpr_cmdline_add_string(cl, "bind", "Bind host:port", &addr);
+ gpr_cmdline_add_flag(cl, "secure", "Run with security?", &secure);
+ gpr_cmdline_parse(cl, argc, argv);
+ gpr_cmdline_destroy(cl);
+
+ if (addr == NULL) {
+ gpr_join_host_port(&addr_buf, "::", grpc_pick_unused_port_or_die());
+ addr = addr_buf;
}
gpr_log(GPR_INFO, "creating server on: %s", addr);
cq = grpc_completion_queue_create();
- server = grpc_server_create(cq, NULL);
- GPR_ASSERT(grpc_server_add_http2_port(server, addr));
- gpr_free(addr);
+ if (secure) {
+ grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(
+ NULL, 0, test_server1_key, test_server1_key_size, test_server1_cert,
+ test_server1_cert_size);
+ server = grpc_secure_server_create(ssl_creds, cq, NULL);
+ GPR_ASSERT(grpc_server_add_secure_http2_port(server, addr));
+ grpc_server_credentials_release(ssl_creds);
+ } else {
+ server = grpc_server_create(cq, NULL);
+ GPR_ASSERT(grpc_server_add_http2_port(server, addr));
+ }
grpc_server_start(server);
+ gpr_free(addr_buf);
+ addr = addr_buf = NULL;
+
request_call();
signal(SIGINT, sigint_handler);