public void TestCleanUpOldFilesPolicy() { // some log files... Add(20); // 1st log file - 0001.commandlog CrashRecover(); Add(30); // 2nd log file - 0002.commandlog _engine.TakeSnapshot(); // 1st snapshot - 0002.snapshot Thread.Sleep(TimeSpan.FromMilliseconds(2500)); Add(10); // 3rd log file - 0003.commandlog // remove files older than 2 seconds... ICleanUpPolicy policy = new OldFilesCleanUpPolicy(TimeSpan.FromSeconds(2)); SnapshotTaker taker = new SnapshotTaker(_engine, TimeSpan.FromMilliseconds(250), policy); Thread.Sleep(TimeSpan.FromMilliseconds(400)); // 2nd snasphot taken - 0003.snapshot taker.Dispose(); FileInfo[] files = _engine.PrevalenceBase.GetFiles("*.*"); Array.Sort(files, FileNameComparer.Default); AssertEquals(2, files.Length); AssertEquals("3rd command log", FormatCommandLogName(3), files[0].Name); AssertEquals("2nd snapshot", FormatSnapshotName(3), files[1].Name); // sanity check CrashRecover(); AssertTotal(60); }
public void TestSnapshotTaker() { // create some logs... Add(30); _engine.HandsOffOutputLog(); Add(20); TimeSpan period = TimeSpan.FromSeconds(3); SnapshotTaker taker = new SnapshotTaker(_engine, period); // Let's wait for a snapshot to be taken Thread.Sleep(TimeSpan.FromSeconds(5)); AssertEquals(1, _engine.PrevalenceBase.GetFiles("*.snapshot").Length); // more log files... Add(20); // a second snapshot... Thread.Sleep(TimeSpan.FromSeconds(2)); // ok, we're done. taker.Dispose(); // Let's make sure no more snapshots will be // taken... Thread.Sleep(period + TimeSpan.FromSeconds(1)); AssertEquals(2, _engine.PrevalenceBase.GetFiles("*.snapshot").Length); // sanity check CrashRecover(); AssertTotal(70); }
public void TestCleanUpAllFilesPolicy() { // some log files... Add(20); // 1st log file CrashRecover(); Add(30); // 2nd log file _engine.TakeSnapshot(); // 1st snapshot Add(10); // 3rd log file _engine.TakeSnapshot(); // 2nd snapshot Add(20); // 4rd log file FileInfo[] files = CleanUpAllFilesPolicy.Default.SelectFiles(_engine); AssertEquals(4, files.Length); AssertEquals(FormatCommandLogName(1), files[0].Name); AssertEquals(FormatCommandLogName(2), files[1].Name); AssertEquals(FormatSnapshotName(2), files[2].Name); AssertEquals(FormatCommandLogName(3), files[3].Name); SnapshotTaker taker = new SnapshotTaker(_engine, TimeSpan.FromMilliseconds(200), CleanUpAllFilesPolicy.Default); Thread.Sleep(300); taker.Dispose(); // sanity check CrashRecover(); AssertTotal(80); }
/// <summary></summary> public void Stop() { try { engine.HandsOffOutputLog(); taker.Dispose(); if (Directory.Exists(dataDir)) { Directory.Delete(dataDir, true); } } catch { // not a big deal, probably a permissions issue } }