public void CommitTransaction(IConnectionManager connection) { //Arrange TwoColumnsTableFixture s2c = new TwoColumnsTableFixture(connection, "TransactionSource"); s2c.InsertTestData(); TwoColumnsTableFixture d2c = new TwoColumnsTableFixture(connection, "TransactionDest"); DbSource <MySimpleRow> source = new DbSource <MySimpleRow>(connection, "TransactionSource"); DbDestination <MySimpleRow> dest = new DbDestination <MySimpleRow>(connection, "TransactionDest", batchSize: 2); //Act & Assert connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); source.LinkTo(dest); source.Execute(); dest.Wait(); //Assert if (connection.GetType() == typeof(SqlConnectionManager)) { Assert.Equal(3, RowCountTask.Count(connection.Clone(), "TransactionDest", RowCountOptions.NoLock)); } connection.CommitTransaction(); Assert.Equal(3, RowCountTask.Count(connection, "TransactionDest")); Assert.Equal(3, RowCountTask.Count(connection.Clone(), "TransactionDest")); //Assert Connections are closed Assert.True(dest.BulkInsertConnectionManager.State == null); Assert.True(connection.State == null); }
public void TwoTransactionsAndParallelWriting(IConnectionManager connection) { if (connection.ConnectionManagerType == ConnectionManagerType.SQLite) { return; } //Arrange var concopy = connection.Clone(); TwoColumnsTableFixture s2c = new TwoColumnsTableFixture(connection, "TransactionSourceParallelWrite"); s2c.InsertTestData(); TwoColumnsTableFixture d2c1 = new TwoColumnsTableFixture(connection, "TransactionDest1"); TwoColumnsTableFixture d2c2 = new TwoColumnsTableFixture(connection, "TransactionDest2"); DbSource <MySimpleRow> source = new DbSource <MySimpleRow>(connection, "TransactionSourceParallelWrite"); DbDestination <MySimpleRow> dest1 = new DbDestination <MySimpleRow>(connection, "TransactionDest1", batchSize: 2); DbDestination <MySimpleRow> dest2 = new DbDestination <MySimpleRow>(concopy, "TransactionDest2", batchSize: 2); Multicast <MySimpleRow> multicast = new Multicast <MySimpleRow>(); //Act & Assert connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); concopy.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); source.LinkTo(multicast); multicast.LinkTo(dest1); multicast.LinkTo(dest2); source.Execute(); dest1.Wait(); dest2.Wait(); connection.CommitTransaction(); concopy.CommitTransaction(); Assert.Equal(3, RowCountTask.Count(connection, "TransactionDest1")); Assert.Equal(3, RowCountTask.Count(connection, "TransactionDest2")); }