r6563: - fixed the local messaging torture test not to fork, as this causes
authorAndrew Tridgell <tridge@samba.org>
Sun, 1 May 2005 18:51:16 +0000 (18:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:16:26 +0000 (13:16 -0500)
  trouble with the epoll() based event handling

- changes the test to use a local directory instead of the prefix lock
  directory, so the LOCAL-MESSAGING test can run as non-root even when
  the lock directory is not writeable

source/torture/local/messaging.c

index f12f3f6bdf837498bd767f394ac4d13bbd11a7c8..75e51fb53441ea8a7efa47213d41eae82bac6460 100644 (file)
@@ -55,27 +55,26 @@ static void exit_message(struct messaging_context *msg, void *private,
 */
 static BOOL test_ping_speed(TALLOC_CTX *mem_ctx)
 {
-       struct event_context *ev = event_context_init(mem_ctx);
+       struct event_context *ev;
        struct messaging_context *msg_ctx;
+       struct messaging_context *msg_ctx2;
        int ping_count = 0;
        int pong_count = 0;
        BOOL ret = True;
        struct timeval tv;
 
-       if (fork() == 0) {
-               struct messaging_context *msg_ctx2 = messaging_init(mem_ctx, 1, ev);
+       lp_set_cmdline("lock dir", "lockdir.tmp");
+
+       ev = event_context_init(mem_ctx);
+
+       msg_ctx2 = messaging_init(mem_ctx, 1, ev);
        
-               if (!msg_ctx2) {
-                       exit(1);
-               }
-               
-               messaging_register(msg_ctx2, NULL, MY_PING, ping_message);
-               messaging_register(msg_ctx2, mem_ctx, MY_EXIT, exit_message);
-               event_loop_wait(ev);
-               exit(0);
+       if (!msg_ctx2) {
+               exit(1);
        }
-
-       sleep(2);
+               
+       messaging_register(msg_ctx2, NULL, MY_PING, ping_message);
+       messaging_register(msg_ctx2, mem_ctx, MY_EXIT, exit_message);
 
        msg_ctx = messaging_init(mem_ctx, 2, ev);
 
@@ -124,7 +123,8 @@ static BOOL test_ping_speed(TALLOC_CTX *mem_ctx)
        messaging_send(msg_ctx, 1, MY_EXIT, NULL);
 
        if (ping_count != pong_count) {
-               printf("ping test failed! received %d, sent %d\n", pong_count, ping_count);
+               printf("ping test failed! received %d, sent %d\n", 
+                      pong_count, ping_count);
                ret = False;
        }
 
@@ -134,6 +134,7 @@ static BOOL test_ping_speed(TALLOC_CTX *mem_ctx)
        talloc_free(msg_ctx);
 
        talloc_free(ev);
+
        return ret;
 }