commit: r1759 - in neon/trunk/test: . common

joe at manyfish.co.uk joe at manyfish.co.uk
Mon Dec 14 16:41:24 EST 2009


Author: joe
Date: Mon Dec 14 13:41:24 2009
New Revision: 1759

Modified:
   neon/trunk/test/common/child.c
   neon/trunk/test/common/child.h
   neon/trunk/test/socket.c
   neon/trunk/test/utils.c

Log:
* test/common/child.c (new_spawn_server): Take 'repeat' argument.

* test/socket.c, test/utils.c: Adjust accordingly.


Modified: neon/trunk/test/common/child.c
==============================================================================
--- neon/trunk/test/common/child.c	(original)
+++ neon/trunk/test/common/child.c	Mon Dec 14 13:41:24 2009
@@ -315,7 +315,8 @@
     return OK;
 }
 
-int new_spawn_server(server_fn fn, void *userdata, unsigned int *port)
+int new_spawn_server(int count, server_fn fn, void *userdata,
+                     unsigned int *port)
 {
     struct sockaddr_in sa;
     socklen_t salen = sizeof sa;
@@ -338,20 +339,29 @@
     ONN("failed to fork server", child == -1);
 
     if (child == 0) {
-        ne_socket *sock = ne_sock_create();
-        int ret;
+        int ret, iter = 1;
         
         in_child();
 
-        if (ne_sock_accept(sock, ls)) {
-            t_context("Server child could not accept connection: %s", 
-                      ne_sock_error(sock));
-            exit(FAIL);
-        }
+        do {
+            ne_socket *sock = ne_sock_create();
+            
+            NE_DEBUG(NE_DBG_HTTP, "child iteration #%d (of %d), "
+                     "awaiting connection...\n", iter, count);
+
+            if (ne_sock_accept(sock, ls)) {
+                t_context("Server child could not accept connection: %s", 
+                          ne_sock_error(sock));
+                exit(FAIL);
+            }
+
+            NE_DEBUG(NE_DBG_HTTP, "child got connection, invoking server\n");
+            ret = fn(sock, userdata);
+            NE_DEBUG(NE_DBG_HTTP, "child iteration #%d returns %d\n",
+                     iter, ret);
 
-        ret = fn(sock, userdata);
-
-        close_socket(sock);
+            close_socket(sock);
+        } while (ret == 0 && ++iter <= count);
 
         NE_DEBUG(NE_DBG_HTTP, "child terminating with %d\n", ret);
         exit(ret);

Modified: neon/trunk/test/common/child.h
==============================================================================
--- neon/trunk/test/common/child.h	(original)
+++ neon/trunk/test/common/child.h	Mon Dec 14 13:41:24 2009
@@ -66,7 +66,8 @@
 /* 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. */
-int new_spawn_server(server_fn fn, void *userdata, unsigned int *port);
+int new_spawn_server(int count, server_fn fn, void *userdata, 
+                     unsigned int *port);
 
 /* Blocks until child process exits, and gives return code of 'fn'. */
 int await_server(void);

Modified: neon/trunk/test/socket.c
==============================================================================
--- neon/trunk/test/socket.c	(original)
+++ neon/trunk/test/socket.c	Mon Dec 14 13:41:24 2009
@@ -171,7 +171,7 @@
     unsigned int port;
     pair.fn = fn;
     pair.userdata = ud;
-    CALL(new_spawn_server(wrap_serve, &pair, &port));
+    CALL(new_spawn_server(1, wrap_serve, &pair, &port));
     CALL(do_connect(sock, localhost, port));
     ONV(ne_sock_connect_ssl(*sock, client_ctx, NULL),
 	("SSL negotation failed: %s", ne_sock_error(*sock)));
@@ -183,7 +183,7 @@
 static int begin(ne_socket **sock, server_fn fn, void *ud)
 {
     unsigned int port;
-    CALL(new_spawn_server(fn, ud, &port));
+    CALL(new_spawn_server(1, fn, ud, &port));
     return do_connect(sock, localhost, port);
 }
 #endif
@@ -406,7 +406,7 @@
     ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
     ONN("ne_iaddr_make returned NULL", ia == NULL);
     
-    CALL(new_spawn_server(serve_close, NULL, &port));
+    CALL(new_spawn_server(1, serve_close, NULL, &port));
     ONN("could not connect", ne_sock_connect(sock, ia, port));
     ne_sock_close(sock);
     CALL(await_server());
@@ -425,7 +425,7 @@
     ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
     ONN("ne_iaddr_make returned NULL", ia == NULL);
     
-    CALL(new_spawn_server(serve_close, NULL, &realport));
+    CALL(new_spawn_server(1, serve_close, NULL, &realport));
     ONN("could not connect", ne_sock_connect(sock, ia, realport));
 
     ia2 = ne_sock_peer(sock, &port);
@@ -1199,7 +1199,7 @@
     ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
     ONN("ne_iaddr_make returned NULL", ia == NULL);
     
-    CALL(new_spawn_server(serve_ppeer, NULL, &srvport));
+    CALL(new_spawn_server(1, serve_ppeer, NULL, &srvport));
 
     ne_sock_prebind(sock, addr ? ia : NULL, port ? 7778 : 0);
 
@@ -1299,7 +1299,7 @@
     srv->server = server;
     srv->userdata = userdata;
     srv->say_hello = 1;
-    CALL(new_spawn_server(socks_server, srv, &port));
+    CALL(new_spawn_server(1, socks_server, srv, &port));
     return do_connect(sock, localhost, port);
 }
 

Modified: neon/trunk/test/utils.c
==============================================================================
--- neon/trunk/test/utils.c	(original)
+++ neon/trunk/test/utils.c	Mon Dec 14 13:41:24 2009
@@ -178,7 +178,7 @@
 {
     unsigned int port;
     
-    CALL(new_spawn_server(fn, userdata, &port));
+    CALL(new_spawn_server(1, fn, userdata, &port));
     
     *sess = ne_session_create("http", "localhost", port);
 
@@ -191,7 +191,7 @@
 {
     unsigned int port;
     
-    CALL(new_spawn_server(fn, userdata, &port));
+    CALL(new_spawn_server(1, fn, userdata, &port));
     
     *sess = ne_session_create(scheme, host, fakeport);
 



More information about the neon-commits mailing list