summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2018-09-24 15:41:13 +0000
committerjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2018-09-24 15:41:13 +0000
commit5b53921a81b3e5444358c12ab5f7d945b1b5a1c6 (patch)
treee43f8dc3f450948ec94266d5a6a581b0dc1ee916
parent5b20f717d71b4813ea1c2af0c88a9bac3b92dd87 (diff)
downloadneon-5b53921a81b3e5444358c12ab5f7d945b1b5a1c6.tar.gz
* 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
-rw-r--r--test/common/child.c72
-rw-r--r--test/common/child.h5
-rw-r--r--test/ssl.c9
-rw-r--r--test/utils.c13
-rw-r--r--test/utils.h8
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;