test/librados_test_stub/TestIoCtxImpl.h
noinst_LTLIBRARIES += librados_test_stub.la
-ceph_test_librbd_SOURCES = \
+librbd_test_la_SOURCES = \
test/librbd/test_fixture.cc \
test/librbd/test_librbd.cc \
test/librbd/test_ImageWatcher.cc \
- test/librbd/test_internal.cc
-ceph_test_librbd_LDADD = \
- librbd_api.la librbd_internal.la \
+ test/librbd/test_internal.cc \
+ test/librbd/test_main.cc
+librbd_test_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+noinst_LTLIBRARIES += librbd_test.la
+
+unittest_librbd_SOURCES =
+nodist_EXTRA_unittest_librbd_SOURCES = dummy.cc
+unittest_librbd_LDADD = \
+ librbd_test.la librbd_api.la librbd_internal.la \
libcls_rbd_client.la libcls_lock_client.la \
+ librados_test_stub.la librados_internal.la \
+ $(LIBOSDC) $(UNITTEST_LDADD) \
+ $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+check_PROGRAMS += unittest_librbd
+
+ceph_test_librbd_SOURCES =
+nodist_EXTRA_ceph_test_librbd_SOURCES = dummy.cc
+ceph_test_librbd_LDADD = \
+ librbd_test.la librbd_api.la librbd_internal.la \
+ libcls_rbd_client.la libcls_lock_client.la \
librados_api.la $(LIBRADOS_DEPS) $(UNITTEST_LDADD) \
$(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
bin_DEBUGPROGRAMS += ceph_test_librbd
if WITH_LTTNG
+unittest_librbd_LDADD += $(LIBRBD_TP)
ceph_test_librbd_LDADD += $(LIBRBD_TP)
endif
using namespace ceph;
+void register_test_image_watcher() {
+}
+
class TestImageWatcher : public TestFixture {
public:
ASSERT_EQ(0, register_image_watch(*ictx));
m_notify_acks = boost::assign::list_of(
- std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist()))(
- std::make_pair(NOTIFY_OP_RELEASED_LOCK, bufferlist()));
+ std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist()));
RWLock::WLocker l(ictx->owner_lock);
ASSERT_EQ(0, ictx->image_watcher->try_lock());
- ASSERT_EQ(0, ictx->image_watcher->unlock());
+ ASSERT_TRUE(wait_for_notifies(*ictx));
+ m_notify_acks = boost::assign::list_of(
+ std::make_pair(NOTIFY_OP_RELEASED_LOCK, bufferlist()));
+ ASSERT_EQ(0, ictx->image_watcher->unlock());
ASSERT_TRUE(wait_for_notifies(*ictx));
+
ASSERT_TRUE(m_notify_acks.empty());
NotifyOpPayloads expected_notify_ops = boost::assign::list_of(
std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist()))(
#include <utility>
#include <vector>
+void register_test_internal() {
+}
+
class TestInternal : public TestFixture {
public:
ASSERT_TRUE(passed); \
} while(0)
+void register_test_librbd() {
+}
+
static int get_features(bool *old_format, uint64_t *features)
{
const char *c = getenv("RBD_FEATURES");
rados_ioctx_destroy(ioctx);
}
-
-int main(int argc, char **argv)
-{
- ::testing::InitGoogleTest(&argc, argv);
-
- vector<const char*> args;
- argv_to_vec(argc, (const char **)argv, args);
-
- global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
- common_init_finish(g_ceph_context);
-
- return RUN_ALL_TESTS();
-}
--- /dev/null
+// -*- mode:C; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "gtest/gtest.h"
+#include "common/ceph_argparse.h"
+#include "global/global_context.h"
+#include "global/global_init.h"
+#include <vector>
+
+extern void register_test_image_watcher();
+extern void register_test_internal();
+extern void register_test_librbd();
+
+int main(int argc, char **argv)
+{
+ register_test_image_watcher();
+ register_test_internal();
+ register_test_librbd();
+
+ ::testing::InitGoogleTest(&argc, argv);
+
+ vector<const char*> args;
+ argv_to_vec(argc, (const char **)argv, args);
+
+ global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+ common_init_finish(g_ceph_context);
+
+ return RUN_ALL_TESTS();
+}