+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
#include <gtest/gtest.h>
#include <stdlib.h>
#include <limits.h>
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();
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);
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();
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);
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();
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);