private CorruptedMemosDbRecovery MarkFailureAndTryRecover() { BuildXLContext context; IConfiguration configuration; CreateContextAndConfiguration(out context, out configuration); WriteFakeMemosDb(context, configuration); FailureRecoveryAggregator recovery = FailureRecoveryFactory.Create(LoggingContext, context.PathTable, configuration); bool markFailure = recovery.TryMarkFailure(new BuildXLException(string.Empty), ExceptionRootCause.CorruptedCache); XAssert.IsTrue(markFailure); var corruptedMemosDbRecovery = new CorruptedMemosDbRecovery(context.PathTable, configuration); XAssert.IsTrue(corruptedMemosDbRecovery.ShouldRecover()); CreateContextAndConfiguration(out context, out configuration); recovery = FailureRecoveryFactory.Create(LoggingContext, context.PathTable, configuration); bool tryRecover = recovery.TryRecoverIfNeeded(); XAssert.IsTrue(tryRecover); corruptedMemosDbRecovery = new CorruptedMemosDbRecovery(context.PathTable, configuration); XAssert.IsFalse(File.Exists(GetMemosDbPath(context, configuration))); return(corruptedMemosDbRecovery); }
public void TestCorruptedMemosDbRecoveryMultipleTimes() { CorruptedMemosDbRecovery corruptedMemosDbRecovery = null; for (int i = 0; i < 10; ++i) { corruptedMemosDbRecovery = MarkFailureAndTryRecover(); } XAssert.AreEqual(5, corruptedMemosDbRecovery.GetAllCorruptedMemosDb().Count()); }
public void TestCorruptedMemosDbRecovery() { CorruptedMemosDbRecovery corruptedMemosDbRecovery = MarkFailureAndTryRecover(); XAssert.AreEqual(1, corruptedMemosDbRecovery.GetAllCorruptedMemosDb().Count()); }