]> code.delx.au - pulseaudio/blobdiff - src/tests/thread-test.c
tests: More useful output of make check
[pulseaudio] / src / tests / thread-test.c
index a93ac1e4ae632398cf3ae7b4582f0f1b02fa6770..6441dc7e08bf8768876b4ab1254d71b36bcc06bd 100644 (file)
@@ -1,18 +1,16 @@
-/* $Id$ */
-
 /***
   This file is part of PulseAudio.
+
   PulseAudio is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published
-  by the Free Software Foundation; either version 2 of the License,
+  by the Free Software Foundation; either version 2.1 of the License,
   or (at your option) any later version.
+
   PulseAudio is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   General Public License for more details.
+
   You should have received a copy of the GNU Lesser General Public License
   along with PulseAudio; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 #include <config.h>
 #endif
 
-#include <sched.h>
-
+#include <pulse/xmalloc.h>
 #include <pulsecore/thread.h>
+#include <pulsecore/macro.h>
 #include <pulsecore/mutex.h>
+#include <pulsecore/once.h>
 #include <pulsecore/log.h>
 #include <pulsecore/core-util.h>
-#include <pulse/xmalloc.h>
 
 static pa_mutex *mutex = NULL;
 static pa_cond *cond1 = NULL, *cond2 = NULL;
@@ -39,26 +37,32 @@ static int magic_number = 0;
 
 #define THREADS_MAX 20
 
+static void once_func(void) {
+    pa_log("once!");
+}
+
+static pa_once once = PA_ONCE_INIT;
+
 static void thread_func(void *data) {
     pa_tls_set(tls, data);
 
-    pa_log("thread_func() for %s starting...", (char*) pa_tls_get(tls));
-    
+    pa_log_info("thread_func() for %s starting...", (char*) pa_tls_get(tls));
+
     pa_mutex_lock(mutex);
 
     for (;;) {
         int k, n;
 
-        pa_log("%s waiting ...", (char*) pa_tls_get(tls));
+        pa_log_info("%s waiting ...", (char*) pa_tls_get(tls));
 
         for (;;) {
-            
+
             if (magic_number < 0)
                 goto quit;
 
             if (magic_number != 0)
                 break;
-            
+
             pa_cond_wait(cond1, mutex);
         }
 
@@ -67,49 +71,52 @@ static void thread_func(void *data) {
 
         pa_mutex_unlock(mutex);
 
+        pa_run_once(&once, once_func);
+
         pa_cond_signal(cond2, 0);
-        
-        pa_log("%s got number %i", (char*) pa_tls_get(tls), k);
-        
+
+        pa_log_info("%s got number %i", (char*) pa_tls_get(tls), k);
+
         /* Spin! */
         for (n = 0; n < k; n++)
-            sched_yield();
-        
+            pa_thread_yield();
+
         pa_mutex_lock(mutex);
     }
 
 quit:
-        
+
     pa_mutex_unlock(mutex);
 
-    pa_log("thread_func() for %s done...", (char*) pa_tls_get(tls));
+    pa_log_info("thread_func() for %s done...", (char*) pa_tls_get(tls));
 }
 
 int main(int argc, char *argv[]) {
     int i, k;
     pa_thread* t[THREADS_MAX];
 
-    mutex = pa_mutex_new(0);
+    if (!getenv("MAKE_CHECK"))
+        pa_log_set_level(PA_LOG_DEBUG);
+
+    mutex = pa_mutex_new(FALSE, FALSE);
     cond1 = pa_cond_new();
     cond2 = pa_cond_new();
     tls = pa_tls_new(pa_xfree);
-    
+
     for (i = 0; i < THREADS_MAX; i++) {
-        t[i] = pa_thread_new(thread_func, pa_sprintf_malloc("Thread #%i", i+1));
-        assert(t[i]);
+        pa_assert_se(t[i] = pa_thread_new("test", thread_func, pa_sprintf_malloc("Thread #%i", i+1)));
     }
 
     pa_mutex_lock(mutex);
-    
+
     pa_log("loop-init");
 
     for (k = 0; k < 100; k++) {
-        assert(magic_number == 0);
+        pa_assert(magic_number == 0);
 
-        
         magic_number = (int) rand() % 0x10000;
 
-        pa_log("iteration %i (%i)", k, magic_number);
+        pa_log_info("iteration %i (%i)", k, magic_number);
 
         pa_cond_signal(cond1, 0);
 
@@ -117,10 +124,10 @@ int main(int argc, char *argv[]) {
     }
 
     pa_log("loop-exit");
-    
+
     magic_number = -1;
     pa_cond_signal(cond1, 1);
-    
+
     pa_mutex_unlock(mutex);
 
     for (i = 0; i < THREADS_MAX; i++)