]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
TestPGLog: add test for 11358
authorSamuel Just <sjust@redhat.com>
Thu, 9 Apr 2015 22:01:41 +0000 (15:01 -0700)
committerLoic Dachary <ldachary@redhat.com>
Tue, 28 Jul 2015 13:32:58 +0000 (15:32 +0200)
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit b61e5aef15d7448d24b713d13dce77697bc0af74)

src/test/osd/TestPGLog.cc

index c88bc989038edbc609cf9a4d531afc42bf3d569a..5ea7158e451d2f40c7cf4a04f9b3ea35423ae78d 100644 (file)
@@ -139,6 +139,14 @@ public:
       fullauth.index();
       fulldiv.index();
     }
+    void set_div_bounds(eversion_t head, eversion_t tail) {
+      fulldiv.tail = divinfo.log_tail = tail;
+      fulldiv.head = divinfo.last_update = head;
+    }
+    void set_auth_bounds(eversion_t head, eversion_t tail) {
+      fullauth.tail = authinfo.log_tail = tail;
+      fullauth.head = authinfo.last_update = head;
+    }
     const IndexedLog &get_fullauth() const { return fullauth; }
     const IndexedLog &get_fulldiv() const { return fulldiv; }
     const pg_info_t &get_authinfo() const { return authinfo; }
@@ -236,6 +244,8 @@ public:
     proc_replica_log(
        t, oinfo, olog, omissing, pg_shard_t(1, shard_id_t(0)));
 
+    assert(oinfo.last_update >= log.tail);
+
     if (!tcase.base.empty()) {
       ASSERT_EQ(tcase.base.rbegin()->version, oinfo.last_update);
     }
@@ -1863,6 +1873,20 @@ TEST_F(PGLogTest, merge_log_prior_version_have) {
   run_test_case(t);
 }
 
+TEST_F(PGLogTest, merge_log_split_missing_entries_at_head) {
+  TestCase t;
+  t.auth.push_back(mk_ple_mod_rb(mk_obj(1), mk_evt(10, 100), mk_evt(8, 70)));
+  t.auth.push_back(mk_ple_mod_rb(mk_obj(1), mk_evt(15, 150), mk_evt(10, 100)));
+
+  t.div.push_back(mk_ple_mod(mk_obj(1), mk_evt(8, 70), mk_evt(8, 65)));
+
+  t.setup();
+  t.set_div_bounds(mk_evt(9, 79), mk_evt(8, 69));
+  t.set_auth_bounds(mk_evt(10, 160), mk_evt(9, 77));
+  t.final.add(mk_obj(1), mk_evt(15, 150), mk_evt(8, 70));
+  run_test_case(t);
+}
+
 TEST_F(PGLogTest, filter_log_1) {
   {
     clear();