X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Flibrados%2Flock.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Flibrados%2Flock.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=1a7c58380004646c8fc5192709520bd8a456daf7;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/test/librados/lock.cc b/src/ceph/src/test/librados/lock.cc deleted file mode 100644 index 1a7c583..0000000 --- a/src/ceph/src/test/librados/lock.cc +++ /dev/null @@ -1,374 +0,0 @@ -#include "include/rados/librados.h" -#include "include/rados/librados.hpp" -#include "test/librados/test.h" -#include "test/librados/TestCase.h" -#include "cls/lock/cls_lock_client.h" - -#include -#include -#include "gtest/gtest.h" -#include - -using namespace librados; - -typedef RadosTest LibRadosLock; -typedef RadosTestPP LibRadosLockPP; -typedef RadosTestEC LibRadosLockEC; -typedef RadosTestECPP LibRadosLockECPP; - -TEST_F(LibRadosLock, LockExclusive) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockPP, LockExclusivePP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLock, LockShared) { - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockPP, LockSharedPP) { - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLock, LockExclusiveDur) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockPP, LockExclusiveDurPP) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLock, LockSharedDur) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockPP, LockSharedDurPP) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLock, LockRenew) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, LOCK_FLAG_RENEW)); -} - -TEST_F(LibRadosLockPP, LockRenewPP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, LOCK_FLAG_RENEW)); -} - -TEST_F(LibRadosLock, Unlock) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, rados_unlock(ioctx, "foo", "TestLock", "Cookie")); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockPP, UnlockPP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, ioctx.unlock("foo", "TestLock", "Cookie")); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLock, ListLockers) { - int exclusive; - char tag[1024]; - char clients[1024]; - char cookies[1024]; - char addresses[1024]; - size_t tag_len = 1024; - size_t clients_len = 1024; - size_t cookies_len = 1024; - size_t addresses_len = 1024; - std::stringstream sstm; - sstm << "client." << rados_get_instance_id(cluster); - std::string me = sstm.str(); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(0, rados_unlock(ioctx, "foo", "TestLock", "Cookie")); - ASSERT_EQ(0, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-34, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - tag_len = 1024; - clients_len = 1024; - cookies_len = 1024; - addresses_len = 1024; - ASSERT_EQ(1, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(0, exclusive); - ASSERT_EQ(0, strcmp(tag, "Tag")); - ASSERT_EQ(strlen("Tag") + 1, tag_len); - ASSERT_EQ(0, strcmp(me.c_str(), clients)); - ASSERT_EQ(me.size() + 1, clients_len); - ASSERT_EQ(0, strcmp(cookies, "Cookie")); - ASSERT_EQ(strlen("Cookie") + 1, cookies_len); -} - -TEST_F(LibRadosLockPP, ListLockersPP) { - std::stringstream sstm; - sstm << "client." << cluster.get_instance_id(); - std::string me = sstm.str(); - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(0, ioctx.unlock("foo", "TestLock", "Cookie")); - { - int exclusive; - std::string tag; - std::list lockers; - ASSERT_EQ(0, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - } - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - { - int exclusive; - std::string tag; - std::list lockers; - ASSERT_EQ(1, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - std::list::iterator it = lockers.begin(); - ASSERT_FALSE(lockers.end() == it); - ASSERT_EQ(me, it->client); - ASSERT_EQ("Cookie", it->cookie); - } -} - -TEST_F(LibRadosLock, BreakLock) { - int exclusive; - char tag[1024]; - char clients[1024]; - char cookies[1024]; - char addresses[1024]; - size_t tag_len = 1024; - size_t clients_len = 1024; - size_t cookies_len = 1024; - size_t addresses_len = 1024; - std::stringstream sstm; - sstm << "client." << rados_get_instance_id(cluster); - std::string me = sstm.str(); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(1, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(1, exclusive); - ASSERT_EQ(0, strcmp(tag, "")); - ASSERT_EQ(1U, tag_len); - ASSERT_EQ(0, strcmp(me.c_str(), clients)); - ASSERT_EQ(me.size() + 1, clients_len); - ASSERT_EQ(0, strcmp(cookies, "Cookie")); - ASSERT_EQ(strlen("Cookie") + 1, cookies_len); - ASSERT_EQ(0, rados_break_lock(ioctx, "foo", "TestLock", clients, "Cookie")); -} - -TEST_F(LibRadosLockPP, BreakLockPP) { - int exclusive; - std::string tag; - std::list lockers; - std::stringstream sstm; - sstm << "client." << cluster.get_instance_id(); - std::string me = sstm.str(); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(1, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - std::list::iterator it = lockers.begin(); - ASSERT_FALSE(lockers.end() == it); - ASSERT_EQ(me, it->client); - ASSERT_EQ("Cookie", it->cookie); - ASSERT_EQ(0, ioctx.break_lock("foo", "TestLock", it->client, "Cookie")); -} - -// EC testing -TEST_F(LibRadosLockEC, LockExclusive) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockECPP, LockExclusivePP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockEC, LockShared) { - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockECPP, LockSharedPP) { - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockEC, LockExclusiveDur) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockECPP, LockExclusiveDurPP) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockEC, LockSharedDur) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockECPP, LockSharedDurPP) { - struct timeval tv; - tv.tv_sec = 1; - tv.tv_usec = 0; - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", &tv, 0)); - sleep(1); - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); -} - -TEST_F(LibRadosLockEC, LockRenew) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, LOCK_FLAG_RENEW)); -} - -TEST_F(LibRadosLockECPP, LockRenewPP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(-EEXIST, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, LOCK_FLAG_RENEW)); -} - -TEST_F(LibRadosLockEC, Unlock) { - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, rados_unlock(ioctx, "foo", "TestLock", "Cookie")); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockECPP, UnlockPP) { - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(0, ioctx.unlock("foo", "TestLock", "Cookie")); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); -} - -TEST_F(LibRadosLockEC, ListLockers) { - int exclusive; - char tag[1024]; - char clients[1024]; - char cookies[1024]; - char addresses[1024]; - size_t tag_len = 1024; - size_t clients_len = 1024; - size_t cookies_len = 1024; - size_t addresses_len = 1024; - std::stringstream sstm; - sstm << "client." << rados_get_instance_id(cluster); - std::string me = sstm.str(); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(0, rados_unlock(ioctx, "foo", "TestLock", "Cookie")); - ASSERT_EQ(0, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(0, rados_lock_shared(ioctx, "foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(-34, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - tag_len = 1024; - clients_len = 1024; - cookies_len = 1024; - addresses_len = 1024; - ASSERT_EQ(1, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(0, exclusive); - ASSERT_EQ(0, strcmp(tag, "Tag")); - ASSERT_EQ(strlen("Tag") + 1, tag_len); - ASSERT_EQ(0, strcmp(me.c_str(), clients)); - ASSERT_EQ(me.size() + 1, clients_len); - ASSERT_EQ(0, strcmp(cookies, "Cookie")); - ASSERT_EQ(strlen("Cookie") + 1, cookies_len); -} - -TEST_F(LibRadosLockECPP, ListLockersPP) { - std::stringstream sstm; - sstm << "client." << cluster.get_instance_id(); - std::string me = sstm.str(); - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - ASSERT_EQ(0, ioctx.unlock("foo", "TestLock", "Cookie")); - { - int exclusive; - std::string tag; - std::list lockers; - ASSERT_EQ(0, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - } - ASSERT_EQ(0, ioctx.lock_shared("foo", "TestLock", "Cookie", "Tag", "", NULL, 0)); - { - int exclusive; - std::string tag; - std::list lockers; - ASSERT_EQ(1, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - std::list::iterator it = lockers.begin(); - ASSERT_FALSE(lockers.end() == it); - ASSERT_EQ(me, it->client); - ASSERT_EQ("Cookie", it->cookie); - } -} - -TEST_F(LibRadosLockEC, BreakLock) { - int exclusive; - char tag[1024]; - char clients[1024]; - char cookies[1024]; - char addresses[1024]; - size_t tag_len = 1024; - size_t clients_len = 1024; - size_t cookies_len = 1024; - size_t addresses_len = 1024; - std::stringstream sstm; - sstm << "client." << rados_get_instance_id(cluster); - std::string me = sstm.str(); - ASSERT_EQ(0, rados_lock_exclusive(ioctx, "foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(1, rados_list_lockers(ioctx, "foo", "TestLock", &exclusive, tag, &tag_len, clients, &clients_len, cookies, &cookies_len, addresses, &addresses_len )); - ASSERT_EQ(1, exclusive); - ASSERT_EQ(0, strcmp(tag, "")); - ASSERT_EQ(1U, tag_len); - ASSERT_EQ(0, strcmp(me.c_str(), clients)); - ASSERT_EQ(me.size() + 1, clients_len); - ASSERT_EQ(0, strcmp(cookies, "Cookie")); - ASSERT_EQ(strlen("Cookie") + 1, cookies_len); - ASSERT_EQ(0, rados_break_lock(ioctx, "foo", "TestLock", clients, "Cookie")); -} - -TEST_F(LibRadosLockECPP, BreakLockPP) { - int exclusive; - std::string tag; - std::list lockers; - std::stringstream sstm; - sstm << "client." << cluster.get_instance_id(); - std::string me = sstm.str(); - ASSERT_EQ(0, ioctx.lock_exclusive("foo", "TestLock", "Cookie", "", NULL, 0)); - ASSERT_EQ(1, ioctx.list_lockers("foo", "TestLock", &exclusive, &tag, &lockers)); - std::list::iterator it = lockers.begin(); - ASSERT_FALSE(lockers.end() == it); - ASSERT_EQ(me, it->client); - ASSERT_EQ("Cookie", it->cookie); - ASSERT_EQ(0, ioctx.break_lock("foo", "TestLock", it->client, "Cookie")); -}