From 5b53921a81b3e5444358c12ab5f7d945b1b5a1c6 Mon Sep 17 00:00:00 2001 From: joe Date: Mon, 24 Sep 2018 15:41:13 +0000 Subject: * test/utils.c (multi_session_server): Add helper. * test/common/child.c (spawn_server_repeat): Remove function. * test/ssl.c (session_cache): Switch to multi_session_server. git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@2023 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845 --- test/common/child.c | 72 ----------------------------------------------------- test/common/child.h | 5 ---- test/ssl.c | 9 +++---- test/utils.c | 13 +++++++--- test/utils.h | 8 ++++++ 5 files changed, 22 insertions(+), 85 deletions(-) diff --git a/test/common/child.c b/test/common/child.c index 0798c93..a27eed4 100644 --- a/test/common/child.c +++ b/test/common/child.c @@ -248,78 +248,6 @@ int spawn_server_addr(int bind_local, int port, server_fn fn, void *ud) } } -int spawn_server_repeat(int port, server_fn fn, void *userdata, int n) -{ - int fds[2]; - -#ifdef USE_PIPE - if (pipe(fds)) { - perror("spawn_server: pipe"); - return FAIL; - } -#else - /* avoid using uninitialized variable. */ - fds[0] = fds[1] = 0; -#endif - - child = fork(); - - if (child == 0) { - /* this is the child. */ - int listener, count = 0; - - in_child(); - - listener = do_listen(lh_addr, port); - -#ifdef USE_PIPE - if (write(fds[1], "Z", 1) != 1) abort(); -#endif - - close(fds[1]); - close(fds[0]); - - /* Loop serving requests. */ - while (++count < n) { - ne_socket *sock = ne_sock_create(); - int ret; - - NE_DEBUG(NE_DBG_HTTP, "child awaiting connection #%d.\n", count); - ONN("accept failed", ne_sock_accept(sock, listener)); - ret = fn(sock, userdata); - NE_DEBUG(NE_DBG_HTTP, "child handled connection, %d.\n", ret); - close_socket(sock); - if (ret) { - printf("server child failed (%s, iteration %d/%d): %s\n", - tests[test_num].name, count, n, test_context); - exit(-1); - } - /* don't send back notification to parent more than - * once. */ - } - - NE_DEBUG(NE_DBG_HTTP, "child aborted.\n"); - close(listener); - - exit(-1); - - } else { - char ch; - /* this is the parent. wait for the child to get ready */ -#ifdef USE_PIPE - if (read(fds[0], &ch, 1) < 0) - perror("parent read"); - - close(fds[0]); - close(fds[1]); -#else - minisleep(); -#endif - } - - return OK; -} - int new_spawn_server(int count, server_fn fn, void *userdata, unsigned int *port) { diff --git a/test/common/child.h b/test/common/child.h index 432fb6c..17719b9 100644 --- a/test/common/child.h +++ b/test/common/child.h @@ -58,11 +58,6 @@ int spawn_server(int port, server_fn fn, void *userdata); * beforehand). */ int spawn_server_addr(int bind_local, int port, server_fn fn, void *userdata); -/* Like spawn server except will continue accepting connections and - * processing requests, up to 'n' times. If 'n' is reached, then the - * child process exits with a failure status. */ -int spawn_server_repeat(int port, server_fn fn, void *userdata, int n); - /* Forks a server child process running 'fn(userdata)' on an * unspecified port. Sets test suite error on failure; on success, * sets *port to bound port number. */ diff --git a/test/ssl.c b/test/ssl.c index 63c2c42..da2af47 100644 --- a/test/ssl.c +++ b/test/ssl.c @@ -1023,15 +1023,14 @@ static int fail_ca_notyetvalid(void) static int session_cache(void) { struct ssl_server_args args = {0}; - ne_session *sess = ne_session_create("https", "localhost", 7777); - + ne_session *sess; + args.cert = SERVER_CERT; args.cache = 1; - ne_ssl_trust_cert(sess, def_ca_cert); + CALL(multi_session_server(&sess, "https", "localhost", 4, ssl_server, &args)); - /* have spawned server listen for several connections. */ - CALL(spawn_server_repeat(7777, ssl_server, &args, 4)); + ne_ssl_trust_cert(sess, def_ca_cert); ONREQ(any_request(sess, "/req1")); ONREQ(any_request(sess, "/req2")); diff --git a/test/utils.c b/test/utils.c index 3addbe1..e12a46f 100644 --- a/test/utils.c +++ b/test/utils.c @@ -175,17 +175,24 @@ int full_write(ne_socket *sock, const char *data, size_t len) return OK; } -int session_server(ne_session **sess, server_fn fn, void *userdata) +int multi_session_server(ne_session **sess, + const char *scheme, const char *hostname, + int count, server_fn fn, void *userdata) { unsigned int port; - CALL(new_spawn_server(1, fn, userdata, &port)); + CALL(new_spawn_server(count, fn, userdata, &port)); - *sess = ne_session_create("http", "127.0.0.1", port); + *sess = ne_session_create(scheme, hostname, port); return OK; } +int session_server(ne_session **sess, server_fn fn, void *userdata) +{ + return multi_session_server(sess, "http", "127.0.0.1", 1, fn, userdata); +} + int proxied_session_server(ne_session **sess, const char *scheme, const char *host, unsigned int fakeport, server_fn fn, void *userdata) diff --git a/test/utils.h b/test/utils.h index 21cea13..aa1b6eb 100644 --- a/test/utils.h +++ b/test/utils.h @@ -115,6 +115,14 @@ int full_write(ne_socket *sock, const char *data, size_t len); * on success. Uses an unspecified hostname/port for the server. */ int session_server(ne_session **sess, server_fn fn, void *userdata); +/* Create a session for scheme with server process running count + * multiple iterations fn(userdata). Sets test suite error on + * failure; initializes *sess with a new session on success. Uses an + * unspecified hostname/port for the server. */ +int multi_session_server(ne_session **sess, const char *scheme, + const char *hostname, + int count, server_fn fn, void *userdata); + /* Create a session with server process running fn(userdata). Sets * test suite error on failure; initializes *sess with a new session * on success. Uses an unspecified hostname/port for the server; -- cgit v1.2.1