]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tests: update journal tests based on API changes
authorJason Dillaman <dillaman@redhat.com>
Wed, 15 Jul 2015 23:31:38 +0000 (19:31 -0400)
committerJason Dillaman <dillaman@redhat.com>
Fri, 6 Nov 2015 01:42:42 +0000 (20:42 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/test/journal/RadosTestFixture.cc
src/test/journal/RadosTestFixture.h
src/test/journal/test_FutureImpl.cc
src/test/journal/test_JournalMetadata.cc
src/test/journal/test_JournalPlayer.cc
src/test/journal/test_JournalRecorder.cc
src/test/journal/test_JournalTrimmer.cc
src/test/journal/test_Journaler.cc
src/test/journal/test_ObjectPlayer.cc
src/test/journal/test_ObjectRecorder.cc

index 2dbea5c0f145d285af765e95b81510307cfa0a74..2a6634baf8f5e08406a75b2246460352958c2e43 100644 (file)
@@ -69,6 +69,12 @@ bufferlist RadosTestFixture::create_payload(const std::string &payload) {
   return bl;
 }
 
+int RadosTestFixture::init_metadata(journal::JournalMetadataPtr metadata) {
+  C_SaferCond cond;
+  metadata->init(&cond);
+  return cond.wait();
+}
+
 bool RadosTestFixture::wait_for_update(journal::JournalMetadataPtr metadata) {
   Mutex::Locker locker(m_listener.mutex);
   while (m_listener.updates[metadata.get()] == 0) {
index c980bb8963f96b5487d86142184ad99ddacbbc5d..3b05a7024da9f43ad79c238b3f4ccf90f8862aba 100644 (file)
@@ -45,6 +45,8 @@ public:
     }
   };
 
+  int init_metadata(journal::JournalMetadataPtr metadata);
+
   bool wait_for_update(journal::JournalMetadataPtr metadata);
 
   static std::string _pool_name;
index 021e8adbbbd562f541ca1a7db2fc7709be54ac98..370bf740a87c2a5ce56655c1c7f837b240ac3975 100644 (file)
@@ -3,12 +3,21 @@
 
 #include "journal/FutureImpl.h"
 #include "common/Cond.h"
+#include "common/Finisher.h"
 #include "common/Mutex.h"
 #include "gtest/gtest.h"
+#include "test/journal/RadosTestFixture.h"
 
-class TestFutureImpl : public ::testing::Test {
+class TestFutureImpl : public RadosTestFixture {
 public:
 
+  TestFutureImpl() : m_finisher(NULL) {
+  }
+  ~TestFutureImpl() {
+    m_finisher->stop();
+    delete m_finisher;
+  }
+
   struct FlushHandler : public journal::FutureImpl::FlushHandler {
     uint64_t refs;
     uint64_t flushes;
@@ -25,10 +34,17 @@ public:
     }
   };
 
+  void SetUp() {
+    RadosTestFixture::SetUp();
+    m_finisher = new Finisher(reinterpret_cast<CephContext*>(m_ioctx.cct()));
+    m_finisher->start();
+  }
+
   journal::FutureImplPtr create_future(const std::string &tag, uint64_t tid,
                                        const journal::FutureImplPtr &prev =
                                          journal::FutureImplPtr()) {
-    journal::FutureImplPtr future(new journal::FutureImpl(tag, tid));
+    journal::FutureImplPtr future(new journal::FutureImpl(*m_finisher,
+                                                          tag, tid));
     future->init(prev);
     return future;
   }
@@ -36,6 +52,8 @@ public:
   void flush(const journal::FutureImplPtr &future) {
   }
 
+  Finisher *m_finisher;
+
   FlushHandler m_flush_handler;
 };
 
index 6a39ef8b19812bb822f3f4adc0c9b5e1630ccc42..1852718cad9f39eee9a6a801b739669f74076bba 100644 (file)
@@ -23,7 +23,7 @@ TEST_F(TestJournalMetadata, JournalDNE) {
   std::string oid = get_temp_oid();
 
   journal::JournalMetadataPtr metadata1 = create_metadata(oid, "client1");
-  ASSERT_EQ(-ENOENT, metadata1->init());
+  ASSERT_EQ(-ENOENT, init_metadata(metadata1));
 }
 
 TEST_F(TestJournalMetadata, ClientDNE) {
@@ -33,10 +33,10 @@ TEST_F(TestJournalMetadata, ClientDNE) {
   ASSERT_EQ(0, client_register(oid, "client1", ""));
 
   journal::JournalMetadataPtr metadata1 = create_metadata(oid, "client1");
-  ASSERT_EQ(0, metadata1->init());
+  ASSERT_EQ(0, init_metadata(metadata1));
 
   journal::JournalMetadataPtr metadata2 = create_metadata(oid, "client2");
-  ASSERT_EQ(-ENOENT, metadata2->init());
+  ASSERT_EQ(-ENOENT, init_metadata(metadata2));
 }
 
 TEST_F(TestJournalMetadata, SetCommitPositions) {
@@ -46,10 +46,10 @@ TEST_F(TestJournalMetadata, SetCommitPositions) {
   ASSERT_EQ(0, client_register(oid, "client1", ""));
 
   journal::JournalMetadataPtr metadata1 = create_metadata(oid, "client1");
-  ASSERT_EQ(0, metadata1->init());
+  ASSERT_EQ(0, init_metadata(metadata1));
 
   journal::JournalMetadataPtr metadata2 = create_metadata(oid, "client1");
-  ASSERT_EQ(0, metadata2->init());
+  ASSERT_EQ(0, init_metadata(metadata2));
   ASSERT_TRUE(wait_for_update(metadata2));
 
   journal::JournalMetadata::ObjectSetPosition commit_position;
@@ -78,7 +78,7 @@ TEST_F(TestJournalMetadata, UpdateActiveObject) {
   ASSERT_EQ(0, client_register(oid, "client1", ""));
 
   journal::JournalMetadataPtr metadata1 = create_metadata(oid, "client1");
-  ASSERT_EQ(0, metadata1->init());
+  ASSERT_EQ(0, init_metadata(metadata1));
   ASSERT_TRUE(wait_for_update(metadata1));
 
   ASSERT_EQ(0U, metadata1->get_active_set());
index c0b06a828d9083fa17d5566fd909412c0bc786b9..cd640575f9d30825c87f14832ef8536e68d09ec3 100644 (file)
@@ -21,10 +21,12 @@ public:
     Mutex lock;
     Cond cond;
     bool entries_available;
-    bool error_occurred;
+    bool complete;
+    int complete_result;
 
     ReplayHandler()
-      : lock("lock"), entries_available(false), error_occurred(false) {}
+      : lock("lock"), entries_available(false), complete(false),
+        complete_result(0) {}
 
     virtual bool filter_entry(const std::string &tag) {
       return false;
@@ -36,8 +38,11 @@ public:
       cond.Signal();
     }
 
-    virtual void handle_error(int r) {
-      error_occurred = true;
+    virtual void handle_complete(int r) {
+      Mutex::Locker locker(lock);
+      complete = true;
+      complete_result = r;
+      cond.Signal();
     }
   };
 
@@ -99,6 +104,23 @@ public:
     return entries->size() == count;
   }
 
+  bool wait_for_complete(journal::JournalPlayerPtr player) {
+    journal::Entry entry;
+    journal::JournalPlayer::ObjectSetPosition object_set_position;
+    player->try_pop_front(&entry, &object_set_position);
+
+    Mutex::Locker locker(m_replay_hander.lock);
+    while (!m_replay_hander.complete) {
+      if (m_replay_hander.cond.WaitInterval(
+            reinterpret_cast<CephContext*>(m_ioctx.cct()),
+            m_replay_hander.lock, utime_t(10, 0)) != 0) {
+        return false;
+      }
+    }
+    m_replay_hander.complete = false;
+    return true;
+  }
+
   int write_entry(const std::string &oid, uint64_t object_num,
                   const std::string &tag, uint64_t tid) {
     bufferlist bl;
@@ -122,7 +144,7 @@ TEST_F(TestJournalPlayer, Prefetch) {
   ASSERT_EQ(0, client_commit(oid, commit_position));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalPlayerPtr player = create_player(oid, metadata);
 
@@ -135,6 +157,7 @@ TEST_F(TestJournalPlayer, Prefetch) {
 
   Entries entries;
   ASSERT_TRUE(wait_for_entries(player, 3, &entries));
+  ASSERT_TRUE(wait_for_complete(player));
 
   Entries expected_entries;
   expected_entries = boost::assign::list_of(
@@ -158,7 +181,7 @@ TEST_F(TestJournalPlayer, PrefetchWithoutCommit) {
   ASSERT_EQ(0, client_commit(oid, commit_position));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalPlayerPtr player = create_player(oid, metadata);
 
@@ -169,6 +192,7 @@ TEST_F(TestJournalPlayer, PrefetchWithoutCommit) {
 
   Entries entries;
   ASSERT_TRUE(wait_for_entries(player, 2, &entries));
+  ASSERT_TRUE(wait_for_complete(player));
 
   Entries expected_entries;
   expected_entries = boost::assign::list_of(
@@ -191,7 +215,7 @@ TEST_F(TestJournalPlayer, PrefetchMultipleTags) {
   ASSERT_EQ(0, client_commit(oid, commit_position));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalPlayerPtr player = create_player(oid, metadata);
 
@@ -208,6 +232,7 @@ TEST_F(TestJournalPlayer, PrefetchMultipleTags) {
 
   Entries entries;
   ASSERT_TRUE(wait_for_entries(player, 3, &entries));
+  ASSERT_TRUE(wait_for_complete(player));
 
   uint64_t last_tid;
   ASSERT_TRUE(metadata->get_last_allocated_tid("tag1", &last_tid));
@@ -226,7 +251,7 @@ TEST_F(TestJournalPlayer, PrefetchCorruptSequence) {
   ASSERT_EQ(0, client_commit(oid, commit_position));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalPlayerPtr player = create_player(oid, metadata);
 
@@ -242,7 +267,8 @@ TEST_F(TestJournalPlayer, PrefetchCorruptSequence) {
   journal::Entry entry;
   cls::journal::ObjectSetPosition object_set_position;
   ASSERT_FALSE(player->try_pop_front(&entry, &object_set_position));
-  ASSERT_TRUE(m_replay_hander.error_occurred);
+  ASSERT_TRUE(wait_for_complete(player));
+  ASSERT_NE(0, m_replay_hander.complete_result);
 }
 
 TEST_F(TestJournalPlayer, PrefetchAndWatch) {
@@ -258,7 +284,7 @@ TEST_F(TestJournalPlayer, PrefetchAndWatch) {
   ASSERT_EQ(0, client_commit(oid, commit_position));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalPlayerPtr player = create_player(oid, metadata);
 
index 9a2d44b27d6e19d99558aa8e514e910282493628..73b3f35b2d1ca9d3c081d88fd2d2e1e22229c615 100644 (file)
@@ -46,7 +46,7 @@ TEST_F(TestJournalRecorder, Append) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalRecorder *recorder = create_recorder(oid, metadata);
 
@@ -63,7 +63,7 @@ TEST_F(TestJournalRecorder, AppendKnownOverflow) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_EQ(0U, metadata->get_active_set());
 
   journal::JournalRecorder *recorder = create_recorder(oid, metadata);
@@ -84,7 +84,7 @@ TEST_F(TestJournalRecorder, AppendDelayedOverflow) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_EQ(0U, metadata->get_active_set());
 
   journal::JournalRecorder *recorder1 = create_recorder(oid, metadata);
@@ -108,7 +108,7 @@ TEST_F(TestJournalRecorder, FutureFlush) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalRecorder *recorder = create_recorder(oid, metadata);
 
@@ -128,18 +128,20 @@ TEST_F(TestJournalRecorder, Flush) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
 
   journal::JournalRecorder *recorder = create_recorder(oid, metadata);
 
   journal::Future future1 = recorder->append("tag1", create_payload("payload1"));
   journal::Future future2 = recorder->append("tag1", create_payload("payload2"));
 
-  recorder->flush();
+  C_SaferCond cond1;
+  recorder->flush(&cond1);
+  ASSERT_EQ(0, cond1.wait());
 
-  C_SaferCond cond;
-  future2.wait(&cond);
-  ASSERT_EQ(0, cond.wait());
+  C_SaferCond cond2;
+  future2.wait(&cond2);
+  ASSERT_EQ(0, cond2.wait());
   ASSERT_TRUE(future1.is_complete());
   ASSERT_TRUE(future2.is_complete());
 }
index b027e4e5785a3d2a44baec6aaed2c51b97169d3b..80226df835279ccacb67b469d2d2f0d1a5bdf386 100644 (file)
@@ -53,7 +53,7 @@ TEST_F(TestJournalTrimmer, UpdateCommitPosition) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_TRUE(wait_for_update(metadata));
 
   metadata->set_active_set(10);
@@ -87,14 +87,14 @@ TEST_F(TestJournalTrimmer, ConcurrentUpdateCommitPosition) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata1 = create_metadata(oid);
-  ASSERT_EQ(0, metadata1->init());
+  ASSERT_EQ(0, init_metadata(metadata1));
   ASSERT_TRUE(wait_for_update(metadata1));
 
   metadata1->set_active_set(10);
   ASSERT_TRUE(wait_for_update(metadata1));
 
   journal::JournalMetadataPtr metadata2 = create_metadata(oid);
-  ASSERT_EQ(0, metadata2->init());
+  ASSERT_EQ(0, init_metadata(metadata2));
 
   ASSERT_EQ(0, append(oid + ".0", create_payload("payload")));
   ASSERT_EQ(0, append(oid + ".2", create_payload("payload")));
@@ -131,7 +131,7 @@ TEST_F(TestJournalTrimmer, UpdateCommitPositionWithOtherClient) {
   ASSERT_EQ(0, client_register(oid, "client2", "slow client"));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_TRUE(wait_for_update(metadata));
 
   metadata->set_active_set(10);
@@ -162,7 +162,7 @@ TEST_F(TestJournalTrimmer, RemoveObjects) {
   ASSERT_EQ(0, client_register(oid));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_TRUE(wait_for_update(metadata));
 
   metadata->set_active_set(10);
@@ -191,7 +191,7 @@ TEST_F(TestJournalTrimmer, RemoveObjectsWithOtherClient) {
   ASSERT_EQ(0, client_register(oid, "client2", "other client"));
 
   journal::JournalMetadataPtr metadata = create_metadata(oid);
-  ASSERT_EQ(0, metadata->init());
+  ASSERT_EQ(0, init_metadata(metadata));
   ASSERT_TRUE(wait_for_update(metadata));
 
   journal::JournalTrimmer *trimmer = create_trimmer(oid, metadata);
index 1086c720ff679df210d653312a010e1b4a9be0d2..41b3071761fd6a5576c2fbe030e33b2a94983355 100644 (file)
@@ -6,14 +6,15 @@
 #include "gtest/gtest.h"
 #include "test/librados/test.h"
 #include "test/journal/RadosTestFixture.h"
+#include "include/stringify.h"
 
 class TestJournaler : public RadosTestFixture {
 public:
 
   static const std::string CLIENT_ID;
 
-  static uint64_t get_temp_journal_id() {
-    return ++_journal_id;
+  static std::string get_temp_journal_id() {
+    return stringify(++_journal_id);
   }
 
   virtual void SetUp() {
@@ -32,6 +33,12 @@ public:
     return m_journaler->create(order, splay_width);
   }
 
+  int init_journaler() {
+    C_SaferCond cond;
+    m_journaler->init(&cond);
+    return cond.wait();
+  }
+
   int register_client(const std::string &client_id, const std::string &desc) {
     journal::Journaler journaler(m_ioctx, m_ioctx, m_journal_id, client_id);
     return journaler.register_client(desc);
@@ -39,7 +46,7 @@ public:
 
   static uint64_t _journal_id;
 
-  uint64_t m_journal_id;
+  std::string m_journal_id;
   journal::Journaler *m_journaler;
 };
 
@@ -64,11 +71,11 @@ TEST_F(TestJournaler, CreateInvalidParams) {
 TEST_F(TestJournaler, Init) {
   ASSERT_EQ(0, create_journal(12, 8));
   ASSERT_EQ(0, register_client(CLIENT_ID, "foo"));
-  ASSERT_EQ(0, m_journaler->init());
+  ASSERT_EQ(0, init_journaler());
 }
 
 TEST_F(TestJournaler, InitDNE) {
-  ASSERT_EQ(-ENOENT, m_journaler->init());
+  ASSERT_EQ(-ENOENT, init_journaler());
 }
 
 TEST_F(TestJournaler, RegisterClientDuplicate) {
index 2a32d0019c4dab371bb43d3aa694139e680f9547..5ec7f6997043459b64800fbabfc5a2f785e21c46 100644 (file)
@@ -40,7 +40,7 @@ TEST_F(TestObjectPlayer, Fetch) {
 
   C_SaferCond cond;
   object->fetch(&cond);
-  ASSERT_EQ(0, cond.wait());
+  ASSERT_LE(0, cond.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -67,7 +67,7 @@ TEST_F(TestObjectPlayer, FetchLarge) {
 
   C_SaferCond cond;
   object->fetch(&cond);
-  ASSERT_EQ(0, cond.wait());
+  ASSERT_LE(0, cond.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -93,7 +93,7 @@ TEST_F(TestObjectPlayer, FetchDeDup) {
 
   C_SaferCond cond;
   object->fetch(&cond);
-  ASSERT_EQ(0, cond.wait());
+  ASSERT_LE(0, cond.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -170,7 +170,7 @@ TEST_F(TestObjectPlayer, FetchAppend) {
 
   C_SaferCond cond1;
   object->fetch(&cond1);
-  ASSERT_EQ(0, cond1.wait());
+  ASSERT_LE(0, cond1.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -186,7 +186,7 @@ TEST_F(TestObjectPlayer, FetchAppend) {
 
   C_SaferCond cond2;
   object->fetch(&cond2);
-  ASSERT_EQ(0, cond2.wait());
+  ASSERT_LE(0, cond2.wait());
 
   object->get_entries(&entries);
   ASSERT_EQ(2U, entries.size());
@@ -210,7 +210,7 @@ TEST_F(TestObjectPlayer, PopEntry) {
 
   C_SaferCond cond;
   object->fetch(&cond);
-  ASSERT_EQ(0, cond.wait());
+  ASSERT_LE(0, cond.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -239,7 +239,7 @@ TEST_F(TestObjectPlayer, Watch) {
   bufferlist bl;
   ::encode(entry1, bl);
   ASSERT_EQ(0, append(get_object_name(oid), bl));
-  ASSERT_EQ(0, cond1.wait());
+  ASSERT_LE(0, cond1.wait());
 
   journal::ObjectPlayer::Entries entries;
   object->get_entries(&entries);
@@ -255,7 +255,7 @@ TEST_F(TestObjectPlayer, Watch) {
   bl.clear();
   ::encode(entry2, bl);
   ASSERT_EQ(0, append(get_object_name(oid), bl));
-  ASSERT_EQ(0, cond2.wait());
+  ASSERT_LE(0, cond2.wait());
 
   object->get_entries(&entries);
   ASSERT_EQ(2U, entries.size());
index 88972069d7290205bf45428ff5348f60e97f6e30..e1ffb29bb23dad48040b24ecbda9e7ef7b42d070 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "journal/ObjectRecorder.h"
 #include "common/Cond.h"
+#include "common/Finisher.h"
 #include "common/Mutex.h"
 #include "common/Timer.h"
 #include "gtest/gtest.h"
@@ -16,10 +17,16 @@ public:
   TestObjectRecorder()
     : m_flush_interval(std::numeric_limits<uint32_t>::max()),
       m_flush_bytes(std::numeric_limits<uint64_t>::max()),
-      m_flush_age(600)
+      m_flush_age(600),
+      m_finisher(NULL)
   {
   }
 
+  ~TestObjectRecorder() {
+    m_finisher->stop();
+    delete m_finisher;
+  }
+
   struct OverflowHandler : public journal::ObjectRecorder::OverflowHandler {
     Mutex lock;
     Cond cond;
@@ -42,6 +49,14 @@ public:
   double m_flush_age;
   OverflowHandler m_overflow_handler;
 
+  Finisher *m_finisher;
+
+  void SetUp() {
+    RadosTestFixture::SetUp();
+    m_finisher = new Finisher(reinterpret_cast<CephContext*>(m_ioctx.cct()));
+    m_finisher->start();
+  }
+
   inline void set_flush_interval(uint32_t i) {
     m_flush_interval = i;
   }
@@ -55,7 +70,8 @@ public:
   journal::AppendBuffer create_append_buffer(const std::string &tag,
                                              uint64_t tid,
                                              const std::string &payload) {
-    journal::FutureImplPtr future(new journal::FutureImpl(tag, tid));
+    journal::FutureImplPtr future(new journal::FutureImpl(*m_finisher,
+                                                          tag, tid));
     future->init(journal::FutureImplPtr());
 
     bufferlist bl;
@@ -202,11 +218,13 @@ TEST_F(TestObjectRecorder, Flush) {
   ASSERT_FALSE(object->append(append_buffers));
   ASSERT_EQ(1U, object->get_pending_appends());
 
-  object->flush();
+  C_SaferCond cond1;
+  object->flush(&cond1);
+  ASSERT_EQ(0, cond1.wait());
 
-  C_SaferCond cond;
-  append_buffer1.first->wait(&cond);
-  ASSERT_EQ(0, cond.wait());
+  C_SaferCond cond2;
+  append_buffer1.first->wait(&cond2);
+  ASSERT_EQ(0, cond2.wait());
   ASSERT_EQ(0U, object->get_pending_appends());
 }