]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Added regression test for Boost.Threads.
authorBart Van Assche <bvanassche@acm.org>
Mon, 10 Nov 2008 18:54:46 +0000 (18:54 +0000)
committerBart Van Assche <bvanassche@acm.org>
Mon, 10 Nov 2008 18:54:46 +0000 (18:54 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8763

drd/tests/Makefile.am
drd/tests/boost_threads.cpp [new file with mode: 0644]
drd/tests/boost_threads.stderr.exp [new file with mode: 0644]
drd/tests/boost_threads.vgtest [new file with mode: 0644]

index 82c129f26b8a9c5b0bbbec1c0f1683d2624fa673..168daebb285ae4495edc91aa859e06129d141e25 100644 (file)
@@ -20,6 +20,8 @@ EXTRA_DIST =                                        \
        atomic_var.stderr.exp-with-atomic-builtins    \
        atomic_var.stderr.exp-without-atomic-builtins \
        atomic_var.vgtest                           \
+       boost_threads.stderr.exp                    \
+       boost_threads.vgtest                        \
        drd_bitmap_test.stderr.exp                  \
        drd_bitmap_test.stdout.exp                  \
        drd_bitmap_test.vgtest                      \
@@ -247,14 +249,18 @@ check_PROGRAMS =      \
   tc24_nonzero_sem    \
   trylock
 
-if HAVE_QTCORE
-check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore
+if HAVE_BOOST_1_35
+check_PROGRAMS += boost_threads
 endif
 
 if HAVE_OPENMP
 check_PROGRAMS += omp_matinv omp_prime omp_printf
 endif
 
+if HAVE_QTCORE
+check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore
+endif
+
 
 atomic_var_SOURCES          = atomic_var.c
 atomic_var_LDADD            = -lpthread
@@ -331,20 +337,6 @@ pth_inconsistent_cond_wait_LDADD   = -lpthread
 pth_spinlock_SOURCES        = pth_spinlock.c
 pth_spinlock_LDADD          = -lpthread
 
-if HAVE_QTCORE
-qt4_mutex_SOURCES           = qt4_mutex.cpp
-qt4_mutex_CXXFLAGS          = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_mutex_LDADD             = $(QTCORE_LIBS)
-
-qt4_rwlock_SOURCES          = qt4_rwlock.cpp
-qt4_rwlock_CXXFLAGS         = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_rwlock_LDADD            = $(QTCORE_LIBS)
-
-qt4_semaphore_SOURCES       = qt4_semaphore.cpp
-qt4_semaphore_CXXFLAGS      = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_semaphore_LDADD         = $(QTCORE_LIBS)
-endif
-
 recursive_mutex_SOURCES     = recursive_mutex.c
 recursive_mutex_LDADD       = -lpthread
 
@@ -432,6 +424,12 @@ tc24_nonzero_sem_LDADD      = -lpthread
 trylock_SOURCES             = trylock.c
 trylock_LDADD               = -lpthread -lrt
 
+if HAVE_BOOST_1_35
+boost_threads_SOURCES       = boost_threads.cpp
+boost_threads_CXXFLAGS      = $(AM_CXXFLAGS) $(BOOST_CFLAGS)
+boost_threads_LDADD         = $(BOOST_LIBS)
+endif
+
 if HAVE_OPENMP
 omp_matinv_SOURCES          = omp_matinv.c
 omp_matinv_CFLAGS           = $(AM_CFLAGS) -fopenmp
@@ -448,3 +446,17 @@ omp_printf_CFLAGS           = $(AM_CFLAGS) -fopenmp
 omp_printf_LDFLAGS          = -fopenmp
 omp_printf_LDADD            = -lm
 endif
+
+if HAVE_QTCORE
+qt4_mutex_SOURCES           = qt4_mutex.cpp
+qt4_mutex_CXXFLAGS          = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
+qt4_mutex_LDADD             = $(QTCORE_LIBS)
+
+qt4_rwlock_SOURCES          = qt4_rwlock.cpp
+qt4_rwlock_CXXFLAGS         = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
+qt4_rwlock_LDADD            = $(QTCORE_LIBS)
+
+qt4_semaphore_SOURCES       = qt4_semaphore.cpp
+qt4_semaphore_CXXFLAGS      = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
+qt4_semaphore_LDADD         = $(QTCORE_LIBS)
+endif
diff --git a/drd/tests/boost_threads.cpp b/drd/tests/boost_threads.cpp
new file mode 100644 (file)
index 0000000..8560cd9
--- /dev/null
@@ -0,0 +1,30 @@
+#include <boost/thread/condition.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <iostream>
+
+
+static boost::condition s_cva;
+static boost::mutex s_m;
+
+
+static void thread_func(void)
+{
+  std::cerr << "Thread 2.\n";
+  boost::mutex::scoped_lock sl(s_m);
+  s_cva.notify_all();
+  s_cva.wait(sl);
+}
+
+int main(int argc, char** argv)
+{
+  std::cerr << "Thread 1.\n";
+  boost::mutex::scoped_lock sl(s_m);
+  boost::thread t(thread_func);
+  s_cva.wait(sl);
+  s_cva.notify_all();
+  sl.unlock();
+  t.join();
+  std::cerr << "Finished.\n";
+  return 0;
+}
diff --git a/drd/tests/boost_threads.stderr.exp b/drd/tests/boost_threads.stderr.exp
new file mode 100644 (file)
index 0000000..78d8647
--- /dev/null
@@ -0,0 +1,6 @@
+
+Thread 1.
+Thread 2.
+Finished.
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/drd/tests/boost_threads.vgtest b/drd/tests/boost_threads.vgtest
new file mode 100644 (file)
index 0000000..cb5f1b6
--- /dev/null
@@ -0,0 +1,3 @@
+prereq: test -e boost_threads
+vgopts: --var-info=yes
+prog: boost_threads