#include "journal/JournalMetadata.h"
#include "journal/ReplayHandler.h"
#include "include/stringify.h"
-#include "common/Cond.h"
-#include "common/Mutex.h"
+#include "common/ceph_mutex.h"
#include "gtest/gtest.h"
#include "test/journal/RadosTestFixture.h"
#include <list>
static const uint64_t max_fetch_bytes = T::max_fetch_bytes;
struct ReplayHandler : public journal::ReplayHandler {
- Mutex lock;
- Cond cond;
+ ceph::mutex lock = ceph::make_mutex("lock");
+ ceph::condition_variable cond;
bool entries_available;
bool complete;
int complete_result;
ReplayHandler()
- : lock("lock"), entries_available(false), complete(false),
+ : entries_available(false), complete(false),
complete_result(0) {}
- void get() override {}
- void put() override {}
-
void handle_entries_available() override {
- Mutex::Locker locker(lock);
+ std::lock_guard locker{lock};
entries_available = true;
- cond.Signal();
+ cond.notify_all();
}
void handle_complete(int r) override {
- Mutex::Locker locker(lock);
+ std::lock_guard locker{lock};
complete = true;
complete_result = r;
- cond.Signal();
+ cond.notify_all();
}
};
RadosTestFixture::TearDown();
}
- journal::JournalMetadataPtr create_metadata(const std::string &oid) {
+ auto create_metadata(const std::string &oid) {
return RadosTestFixture::create_metadata(oid, "client", 0.1,
max_fetch_bytes);
}
}
journal::JournalPlayer *create_player(const std::string &oid,
- const journal::JournalMetadataPtr &metadata) {
+ const ceph::ref_t<journal::JournalMetadata>& metadata) {
journal::JournalPlayer *player(new journal::JournalPlayer(
- m_ioctx, oid + ".", metadata, &m_replay_hander));
+ m_ioctx, oid + ".", metadata, &m_replay_hander, nullptr));
m_players.push_back(player);
return player;
}
break;
}
- Mutex::Locker locker(m_replay_hander.lock);
+ std::unique_lock locker{m_replay_hander.lock};
if (m_replay_hander.entries_available) {
m_replay_hander.entries_available = false;
- } else if (m_replay_hander.cond.WaitInterval(
- m_replay_hander.lock, utime_t(10, 0)) != 0) {
+ } else if (m_replay_hander.cond.wait_for(locker, 10s) ==
+ std::cv_status::timeout) {
break;
}
}
}
bool wait_for_complete(journal::JournalPlayer *player) {
- Mutex::Locker locker(m_replay_hander.lock);
+ std::unique_lock locker{m_replay_hander.lock};
while (!m_replay_hander.complete) {
journal::Entry entry;
uint64_t commit_tid;
player->try_pop_front(&entry, &commit_tid);
- if (m_replay_hander.cond.WaitInterval(
- m_replay_hander.lock, utime_t(10, 0)) != 0) {
+ if (m_replay_hander.cond.wait_for(locker, 10s) ==
+ std::cv_status::timeout) {
return false;
}
}
typedef ::testing::Types<TestJournalPlayerParams<0>,
TestJournalPlayerParams<16> > TestJournalPlayerTypes;
-TYPED_TEST_CASE(TestJournalPlayer, TestJournalPlayerTypes);
+TYPED_TEST_SUITE(TestJournalPlayer, TestJournalPlayerTypes);
TYPED_TEST(TestJournalPlayer, Prefetch) {
std::string oid = this->get_temp_oid();
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
ASSERT_EQ(0, metadata->set_active_set(2));
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
ASSERT_EQ(0, metadata->set_active_set(2));
metadata->set_minimum_set(2);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, commit_position));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, {}));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);
ASSERT_EQ(0, this->client_register(oid));
ASSERT_EQ(0, this->client_commit(oid, {}));
- journal::JournalMetadataPtr metadata = this->create_metadata(oid);
+ auto metadata = this->create_metadata(oid);
ASSERT_EQ(0, this->init_metadata(metadata));
journal::JournalPlayer *player = this->create_player(oid, metadata);