]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test_filejournal: adjust corrupt entry tests to force header write
authorSamuel Just <sam.just@inktank.com>
Tue, 23 Apr 2013 19:08:14 +0000 (12:08 -0700)
committerSamuel Just <sam.just@inktank.com>
Tue, 23 Apr 2013 19:28:36 +0000 (12:28 -0700)
The journal no longer assumes corruption if it finds a valid entry
after an inavlid entry.  Instead, these tests will exercise the
corruption detection via the header committed_up_to member.

Fixes: #4792
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
src/test/test_filejournal.cc

index d07b8aefd79a89ec25a12fecb2ad15981e7c3732..7365e97dec0a923f60b4e46c6b6e6667132c6f2f 100644 (file)
@@ -1,3 +1,4 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
 #include <gtest/gtest.h>
 #include <stdlib.h>
 #include <limits.h>
@@ -394,6 +395,7 @@ TEST(TestFileJournal, WriteTrimSmall) {
 
 TEST(TestFileJournal, ReplayDetectCorruptFooterMagic) {
   g_ceph_context->_conf->set_val("journal_ignore_corruption", "true");
+  g_ceph_context->_conf->set_val("journal_write_header_frequency", "1");
   g_ceph_context->_conf->apply_changes(NULL);
 
   fsid.generate_random();
@@ -404,18 +406,19 @@ TEST(TestFileJournal, ReplayDetectCorruptFooterMagic) {
   C_GatherBuilder gb(g_ceph_context, new C_SafeCond(&lock, &cond, &done));
 
   const char *needle =    "i am a needle";
-  bufferlist bl;
-  bl.append(needle);
-  j.submit_entry(1, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(2, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(3, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(4, bl, 0, gb.new_sub());
+  for (unsigned i = 1; i <= 4; ++i) {
+    bufferlist bl;
+    bl.append(needle);
+    j.submit_entry(i, bl, 0, gb.new_sub());
+  }
   gb.activate();
   wait();
 
+  bufferlist bl;
+  bl.append("needle");
+  j.submit_entry(5, bl, 0, new C_SafeCond(&lock, &cond, &done));
+  wait();
+
   j.close();
   int fd = open(path, O_WRONLY);
 
@@ -442,6 +445,7 @@ TEST(TestFileJournal, ReplayDetectCorruptFooterMagic) {
 
 TEST(TestFileJournal, ReplayDetectCorruptPayload) {
   g_ceph_context->_conf->set_val("journal_ignore_corruption", "true");
+  g_ceph_context->_conf->set_val("journal_write_header_frequency", "1");
   g_ceph_context->_conf->apply_changes(NULL);
 
   fsid.generate_random();
@@ -452,18 +456,19 @@ TEST(TestFileJournal, ReplayDetectCorruptPayload) {
   C_GatherBuilder gb(g_ceph_context, new C_SafeCond(&lock, &cond, &done));
 
   const char *needle =    "i am a needle";
-  bufferlist bl;
-  bl.append(needle);
-  j.submit_entry(1, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(2, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(3, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(4, bl, 0, gb.new_sub());
+  for (unsigned i = 1; i <= 4; ++i) {
+    bufferlist bl;
+    bl.append(needle);
+    j.submit_entry(i, bl, 0, gb.new_sub());
+  }
   gb.activate();
   wait();
 
+  bufferlist bl;
+  bl.append("needle");
+  j.submit_entry(5, bl, 0, new C_SafeCond(&lock, &cond, &done));
+  wait();
+
   j.close();
   int fd = open(path, O_WRONLY);
 
@@ -490,6 +495,7 @@ TEST(TestFileJournal, ReplayDetectCorruptPayload) {
 
 TEST(TestFileJournal, ReplayDetectCorruptHeader) {
   g_ceph_context->_conf->set_val("journal_ignore_corruption", "true");
+  g_ceph_context->_conf->set_val("journal_write_header_frequency", "1");
   g_ceph_context->_conf->apply_changes(NULL);
 
   fsid.generate_random();
@@ -500,18 +506,19 @@ TEST(TestFileJournal, ReplayDetectCorruptHeader) {
   C_GatherBuilder gb(g_ceph_context, new C_SafeCond(&lock, &cond, &done));
 
   const char *needle =    "i am a needle";
-  bufferlist bl;
-  bl.append(needle);
-  j.submit_entry(1, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(2, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(3, bl, 0, gb.new_sub());
-  bl.append(needle);
-  j.submit_entry(4, bl, 0, gb.new_sub());
+  for (unsigned i = 1; i <= 4; ++i) {
+    bufferlist bl;
+    bl.append(needle);
+    j.submit_entry(i, bl, 0, gb.new_sub());
+  }
   gb.activate();
   wait();
 
+  bufferlist bl;
+  bl.append("needle");
+  j.submit_entry(5, bl, 0, new C_SafeCond(&lock, &cond, &done));
+  wait();
+
   j.close();
   int fd = open(path, O_WRONLY);