public static void TransactionUserCodeErrorSomeDataSavedTest() { // User Code Error (Autoreverted), some data saved var itself = _constants.Itself; TempLinksTestScope lastScope = null; try { ulong l1; ulong l2; using (var scope = new TempLinksTestScope(useLog: true)) { var links = scope.Links; l1 = links.CreateAndUpdate(itself, itself); l2 = links.CreateAndUpdate(itself, itself); l2 = links.Update(l2, l2, l1, l2); links.CreateAndUpdate(l2, itself); links.CreateAndUpdate(l2, itself); links.Unsync.DisposeIfPossible(); Global.Trash = FileHelpers.ReadAll <UInt64LinksTransactionsLayer.Transition>(scope.TempTransactionLogFilename); } using (var scope = lastScope = new TempLinksTestScope(deleteFiles: false, useLog: true)) { var links = scope.Links; var transactionsLayer = (UInt64LinksTransactionsLayer)links.Unsync; using (var transaction = transactionsLayer.BeginTransaction()) { l2 = links.Update(l2, l1); links.Delete(l2); ExceptionThrower(); transaction.Commit(); } Global.Trash = links.Count(); } } catch { Assert.False(lastScope == null); Global.Trash = FileHelpers.ReadAll <UInt64LinksTransactionsLayer.Transition>(lastScope.TempTransactionLogFilename); lastScope.DeleteFiles(); } }
public static void TransactionUserCodeErrorNoDataSavedTest() { // User Code Error (Autoreverted), no data saved var itself = _constants.Itself; TempLinksTestScope lastScope = null; try { using (var scope = lastScope = new TempLinksTestScope(deleteFiles: false, useLog: true)) { var links = scope.Links; var transactionsLayer = (UInt64LinksTransactionsLayer)((LinksDisposableDecoratorBase <ulong>)links.Unsync).Links; using (var transaction = transactionsLayer.BeginTransaction()) { var l1 = links.CreateAndUpdate(itself, itself); var l2 = links.CreateAndUpdate(itself, itself); l2 = links.Update(l2, l2, l1, l2); links.CreateAndUpdate(l2, itself); links.CreateAndUpdate(l2, itself); //Global.Trash = FileHelpers.ReadAll<UInt64LinksTransactionsLayer.Transition>(scope.TempTransactionLogFilename); l2 = links.Update(l2, l1); links.Delete(l2); ExceptionThrower(); transaction.Commit(); } Global.Trash = links.Count(); } } catch { Assert.False(lastScope == null); var transitions = FileHelpers.ReadAll <UInt64LinksTransactionsLayer.Transition>(lastScope.TempTransactionLogFilename); Assert.True(transitions.Length == 1 && transitions[0].Before.IsNull() && transitions[0].After.IsNull()); lastScope.DeleteFiles(); } }