]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: Crashed on shutdown if connect was never called.
authorTommi Virtanen <tommi.virtanen@dreamhost.com>
Mon, 28 Feb 2011 21:04:00 +0000 (13:04 -0800)
committerTommi Virtanen <tommi.virtanen@dreamhost.com>
Tue, 1 Mar 2011 00:00:03 +0000 (16:00 -0800)
Add a trivial unit test to trigger this.

src/Makefile.am
src/librados.cc
src/test/librados.cc [new file with mode: 0644]

index 0b4d18c10b402c78d42702534e73b51679e04938..c9c9799ab50cb5dd47b530616f1077aad6659cb8 100644 (file)
@@ -370,6 +370,13 @@ unittest_signals_LDADD = libceph.la ${UNITTEST_LDADD}
 unittest_signals_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
 check_PROGRAMS += unittest_signals
 
+unittest_librados_SOURCES = test/librados.cc
+unittest_librados_LDFLAGS = -pthread ${AM_LDFLAGS}
+unittest_librados_LDADD = librados.la \
+                       ${UNITTEST_LDADD}
+unittest_librados_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+check_PROGRAMS += unittest_librados
+
 # shell scripts
 editpaths = sed \
        -e 's|@bindir[@]|$(bindir)|g' \
index dc8039f8d9c64abd31c97f692e14008655cbe589..a6a3e7f682ee1bb04a01b7b3fc4dd37ab3e94ec3 100644 (file)
@@ -574,8 +574,10 @@ shutdown()
   objecter->shutdown();
   timer.shutdown();
   lock.Unlock();
-  messenger->shutdown();
-  messenger->wait();
+  if (messenger) {
+    messenger->shutdown();
+    messenger->wait();
+  }
   dout(1) << "shutdown" << dendl;
 }
 
diff --git a/src/test/librados.cc b/src/test/librados.cc
new file mode 100644 (file)
index 0000000..c688724
--- /dev/null
@@ -0,0 +1,13 @@
+//#include "common/config.h"
+#include "include/rados/librados.h"
+
+#include "gtest/gtest.h"
+
+TEST(Librados, CreateShutdown) {
+  rados_t cluster;
+  int err;
+  err = rados_create(&cluster, "someid");
+  EXPECT_EQ(err, 0);
+
+  rados_shutdown(cluster);
+}