public void TestNoRecoverAfterFailOnTransactionWhenLogWriteFails() { // Test initialize - Fills in DB with data to send. PrepareDatabase(); string newConnectionUri = connectionUri + "?nms.RecoveryPolicy.RecoveryLoggerType=harness" + "&nms.configuredResourceManagerId=" + dtcFactory.ConfiguredResourceManagerId; dtcFactory = new NetTxConnectionFactory(ReplaceEnvVar(newConnectionUri)); using (INetTxConnection connection = dtcFactory.CreateNetTxConnection()) { IRecoveryLogger logger = (connection as NetTxConnection).RecoveryPolicy.RecoveryLogger; Assert.IsNotNull(logger); RecoveryLoggerHarness harness = logger as RecoveryLoggerHarness; Assert.IsNotNull(harness); harness.PreLogRecoveryInfoEvent += FailOnPreLogRecoveryHook; connection.ExceptionListener += this.OnException; connection.Start(); ReadFromDbAndProduceToQueueWithCommit(connection); Thread.Sleep(2000); } // verify sql server has not commited the transaction VerifyDatabaseTableIsFull(); // check messages are not present in the queue VerifyNoMessagesInQueue(); }
public RecoveryLoggerHarness() { this.containedLogger = new RecoveryFileLogger(); }