Skip to content

Dispose session in cascade tests #2007

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
232 changes: 111 additions & 121 deletions src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,14 @@


using System;
using System.Collections;
using System.Linq;
using NHibernate.Engine;
using NHibernate.Test;
using NUnit.Framework;

namespace NHibernate.Test.Cascade.Circle
{
using System.Threading.Tasks;
using System.Threading;

/**
* The test case uses the following model:
*
Expand All @@ -42,7 +39,7 @@ namespace NHibernate.Test.Cascade.Circle
*
* @author Pavol Zibrita, Gail Badner
*/

[TestFixture]
public class MultiPathCircleCascadeTestAsync : TestCase
{
Expand Down Expand Up @@ -81,7 +78,7 @@ public async Task MergeEntityWithNonNullableTransientEntityAsync()
routeNew.Nodes.Add(node);
node.Route = routeNew;

using (ISession session = base.OpenSession())
using (ISession session = OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
try
Expand All @@ -100,10 +97,6 @@ public async Task MergeEntityWithNonNullableTransientEntityAsync()
// assertTrue( ex instanceof JDBCException );
// }
}
finally
{
await (transaction.RollbackAsync());
}
}
}

Expand All @@ -115,7 +108,7 @@ public async Task MergeEntityWithNonNullableEntityNullAsync()
route.Nodes.Remove(node);
node.Route = null;

using (ISession session = base.OpenSession())
using (ISession session = OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
try
Expand All @@ -134,10 +127,6 @@ public async Task MergeEntityWithNonNullableEntityNullAsync()
// assertTrue( ex instanceof JDBCException );
// }
}
finally
{
await (transaction.RollbackAsync());
}
}
}

Expand All @@ -147,7 +136,7 @@ public async Task MergeEntityWithNonNullableEntityNullAsync()
Node node = route.Nodes.First();
node.Name = null;

using (ISession session = base.OpenSession())
using (ISession session = OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
try
Expand All @@ -167,113 +156,114 @@ public async Task MergeEntityWithNonNullableEntityNullAsync()
// assertTrue( ex instanceof JDBCException );
// }
}
finally
{
await (transaction.RollbackAsync(cancellationToken));
}
}
}

[Test]
public async Task MergeRouteAsync()
{
Route route = await (this.GetUpdatedDetachedEntityAsync());

ClearCounts();

ISession s = base.OpenSession();
s.BeginTransaction();
await (s.MergeAsync(route));
await (s.Transaction.CommitAsync());
s.Close();


using (ISession s = OpenSession())
using (s.BeginTransaction())
{
await (s.MergeAsync(route));
await (s.Transaction.CommitAsync());
}

AssertInsertCount(4);
AssertUpdateCount(1);

s = base.OpenSession();
s.BeginTransaction();
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, true);
await (s.Transaction.CommitAsync());
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, true);
await (s.Transaction.CommitAsync());
}
}

[Test]
public async Task MergePickupNodeAsync()
{
Route route = await (GetUpdatedDetachedEntityAsync());

ClearCounts();

ISession s = OpenSession();
s.BeginTransaction();

Node pickupNode = route.Nodes.First(n => n.Name == "pickupNodeB");
pickupNode = (Node)await (s.MergeAsync(pickupNode));

await (s.Transaction.CommitAsync());
s.Close();
using (var s = OpenSession())
using (s.BeginTransaction())
{
Node pickupNode = route.Nodes.First(n => n.Name == "pickupNodeB");
pickupNode = (Node) await (s.MergeAsync(pickupNode));

await (s.Transaction.CommitAsync());
}

AssertInsertCount(4);
AssertUpdateCount(0);

s = OpenSession();
s.BeginTransaction();
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
s.Close();

using (var s = OpenSession())
using (s.BeginTransaction())
{
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
}
}

[Test]
public async Task MergeDeliveryNodeAsync()
{
Route route = await (GetUpdatedDetachedEntityAsync());

ClearCounts();

ISession s = OpenSession();
s.BeginTransaction();

Node deliveryNode = route.Nodes.First(n => n.Name == "deliveryNodeB");
deliveryNode = (Node)await (s.MergeAsync(deliveryNode));

await (s.Transaction.CommitAsync());
s.Close();
using (ISession s = OpenSession())
using (s.BeginTransaction())
{
Node deliveryNode = route.Nodes.First(n => n.Name == "deliveryNodeB");
deliveryNode = (Node) await (s.MergeAsync(deliveryNode));
await (s.Transaction.CommitAsync());
}

AssertInsertCount(4);
AssertUpdateCount(0);

s = OpenSession();
s.BeginTransaction();
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
}
}

[Test]
public async Task MergeTourAsync()
{
Route route = await (GetUpdatedDetachedEntityAsync());

ClearCounts();

ISession s = OpenSession();
s.BeginTransaction();
Tour tour = (Tour)await (s.MergeAsync(route.Nodes.First().Tour));
await (s.Transaction.CommitAsync());
s.Close();


using (ISession s = OpenSession())
using (s.BeginTransaction())
{
Tour tour = await (s.MergeAsync(route.Nodes.First().Tour));
await (s.Transaction.CommitAsync());
}

AssertInsertCount(4);
AssertUpdateCount(0);

s = OpenSession();
s.BeginTransaction();
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
}
}

[Test]
Expand All @@ -282,46 +272,46 @@ public async Task MergeTransportAsync()
Route route = await (GetUpdatedDetachedEntityAsync());

ClearCounts();
ISession s = OpenSession();
s.BeginTransaction();

Node node = route.Nodes.First();
Transport transport = null;
if (node.PickupTransports.Count == 1)
transport = node.PickupTransports.First();
else
transport = node.DeliveryTransports.First();
transport = (Transport)await (s.MergeAsync(transport));
await (s.Transaction.CommitAsync());
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
Node node = route.Nodes.First();
Transport transport = null;

if (node.PickupTransports.Count == 1)
transport = node.PickupTransports.First();
else
transport = node.DeliveryTransports.First();

transport = (Transport) await (s.MergeAsync(transport));

await (s.Transaction.CommitAsync());
}

AssertInsertCount(4);
AssertUpdateCount(0);

s = OpenSession();
s.BeginTransaction();
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
route = await (s.GetAsync<Route>(route.RouteId));
CheckResults(route, false);
await (s.Transaction.CommitAsync());
}
}

private async Task<Route> GetUpdatedDetachedEntityAsync(CancellationToken cancellationToken = default(CancellationToken))
{
ISession s = OpenSession();
s.BeginTransaction();

Route route = new Route();
route.Name = "routeA";

await (s.SaveAsync(route, cancellationToken));
await (s.Transaction.CommitAsync(cancellationToken));
s.Close();

using (ISession s = OpenSession())
using (s.BeginTransaction())
{
route.Name = "routeA";

await (s.SaveAsync(route, cancellationToken));
await (s.Transaction.CommitAsync(cancellationToken));
}
route.Name = "new routeA";
route.TransientField = "sfnaouisrbn";

Expand Down Expand Up @@ -423,7 +413,7 @@ private void CheckResults(Route route, bool isRouteUpdated)

protected override void OnTearDown()
{
using (ISession session = base.OpenSession())
using (ISession session = OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.CreateQuery("delete from Transport").ExecuteUpdate();
Expand Down Expand Up @@ -455,4 +445,4 @@ protected void AssertDeleteCount(long expected)
Assert.That(Sfi.Statistics.EntityDeleteCount, Is.EqualTo(expected), "unexpected delete count");
}
}
}
}
Loading