Add distributed snapshot recovery test

Summary:
Test to check that the recovery works even if the snapshot is corrupted
in distributed.

Depends on D1930

Reviewers: vkasljevic, mferencevic

Reviewed By: mferencevic

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1950
This commit is contained in:
Matija Santl 2019-01-14 14:41:48 +01:00
parent ad0d9e1f87
commit 67ff1cdce3

View File

@ -3,9 +3,10 @@
#include "distributed_common.hpp"
#include "database/distributed/graph_db_accessor.hpp"
#include "durability/distributed/paths.hpp"
#include "durability/distributed/snapshooter.hpp"
#include "durability/distributed/version.hpp"
#include "durability/distributed/paths.hpp"
#include "utils/file.hpp"
#include "utils/string.hpp"
std::vector<fs::path> DirFiles(fs::path dir) {
@ -196,6 +197,27 @@ TEST_F(DistributedDurability, RecoveryFailure) {
EXPECT_DEATH(RestartWithRecovery(), "worker failed to recover");
}
TEST_F(DistributedDurability, InvalidSnapshotRecovery) {
{
auto dba = master().Access();
// Make sure we first create a valid snapshot to ensure valid dir structure.
master().MakeSnapshot(*dba);
auto path = durability::MakeSnapshotPath(
GetDurabilityDirectory(0), master().WorkerId(), dba->transaction_id());
// Create a fake snapshot.
utils::LogFile snapshot;
snapshot.Open(path);
snapshot.Write("This is not the snapshot you're looking for");
snapshot.Sync();
}
// We expect that the db doesn't crash on the next line.
RestartWithRecovery();
// Make sure we didn't recover anything from the corrupted snapshot.
CheckVertices(0);
}
TEST_F(DistributedDurability, WalWrite) {
{
CleanDurability();