Renamed files for sort tests.
[idzebra-moved-to-github.git] / test / api / t15.c
index 99b2a63..b0e93ad 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: t15.c,v 1.7 2006-08-14 10:40:22 adam Exp $
-   Copyright (C) 2004-2006
-   Index Data ApS
-
-This file is part of the Zebra server.
+/* This file is part of the Zebra server.
+   Copyright (C) 1995-2008 Index Data
 
 Zebra is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -32,6 +29,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
+#if HAVE_SYS_UTSNAME_H
+#include <sys/utsname.h>
+#endif
+
+#include <string.h>
 
 #include "testlib.h"
 
@@ -42,7 +44,6 @@ static void update_process(ZebraService zs, int iter)
     {
        const char *rec = "<gils><title>some</title></gils>";
        ZebraHandle zh = zebra_open(zs, 0);
-       // printf("update_record i=%d\n", i);
        zebra_add_record(zh, rec, strlen(rec));
        if ((i % 30) == 0 || i == iter-1)
            zebra_commit(zh);
@@ -109,23 +110,36 @@ static void tst(int argc, char **argv)
 
 #if HAVE_SYS_WAIT_H
 #if HAVE_UNISTD_H
+#if HAVE_SYS_UTSNAME_H
+
     if (1)
     {
+        int tst_with_fork = 1;
        int status[3];
        pid_t pids[3];
-
-       pids[0] = fork_service(zs, 200, search_process);
-       pids[1] = fork_service(zs, 20, update_process);
-       pids[2] = fork_service(zs, 20, update_process);
-       waitpid(pids[0], &status[0], 0);
-       YAZ_CHECK(status[0] == 0);
-       waitpid(pids[1], &status[1], 0);
-       YAZ_CHECK(status[1] == 0);
-       waitpid(pids[2], &status[2], 0);
-       YAZ_CHECK(status[2] == 0);
+        struct utsname s;
+        uname(&s);
+        if (!strcmp(s.sysname, "FreeBSD"))
+            tst_with_fork = 0;
+
+        yaz_log(YLOG_LOG, "s.sysname=%s tst_with_fork=%d", s.sysname,
+            tst_with_fork);
+        if (tst_with_fork)
+        {
+           pids[0] = fork_service(zs, 200, search_process);
+           pids[1] = fork_service(zs, 20, update_process);
+           pids[2] = fork_service(zs, 20, update_process);
+           waitpid(pids[0], &status[0], 0);
+           YAZ_CHECK(status[0] == 0);
+           waitpid(pids[1], &status[1], 0);
+           YAZ_CHECK(status[1] == 0);
+           waitpid(pids[2], &status[2], 0);
+           YAZ_CHECK(status[2] == 0);
+        }
     }
 #endif
 #endif
+#endif
     YAZ_CHECK(tl_close_down(0, zs));
 }