From 9bb465b58e46a666bbba152ef8dc811651cfa342 Mon Sep 17 00:00:00 2001 From: Martin Furmanski Date: Sat, 8 Jul 2017 11:00:35 +0200 Subject: [PATCH] Fix and expand on unavailable test --- .../coreapi/CoreAPIAvailabilityGuard.java | 2 +- .../scenarios/UnavailableIT.java | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/CoreAPIAvailabilityGuard.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/CoreAPIAvailabilityGuard.java index 98c0af3c40a26..16c2d003ee441 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/CoreAPIAvailabilityGuard.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/coreapi/CoreAPIAvailabilityGuard.java @@ -54,7 +54,7 @@ public void assertDatabaseAvailable() { throw new DatabaseShutdownException(); } - throw new org.neo4j.graphdb.TransactionFailureException( e.getMessage() ); + throw new org.neo4j.graphdb.TransactionFailureException( e.getMessage(), e ); } } } diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/UnavailableIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/UnavailableIT.java index 4493e8515a7f9..86d67af1a78b4 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/UnavailableIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/UnavailableIT.java @@ -28,6 +28,7 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.api.exceptions.Status; +import org.neo4j.kernel.internal.GraphDatabaseAPI; import org.neo4j.test.causalclustering.ClusterRule; import static org.junit.Assert.assertEquals; @@ -47,7 +48,7 @@ public void setup() throws Exception } @Test - public void shouldReturnUnavailableStatus() throws Exception + public void shouldReturnUnavailableStatusWhenDoingLongOperation() throws Exception { // given ClusterMember member = cluster.getCoreMemberById( 1 ); @@ -68,6 +69,28 @@ public void shouldReturnUnavailableStatus() throws Exception } } + @Test + public void shouldReturnUnavailableStatusWhenShutdown() throws Exception + { + // given + ClusterMember member = cluster.getCoreMemberById( 1 ); + + // when + GraphDatabaseAPI db = member.database(); + member.shutdown(); + + // then + try ( Transaction tx = db.beginTx() ) + { + tx.success(); + fail(); + } + catch ( Exception e ) + { + assertEquals( Status.General.DatabaseUnavailable, statusCodeOf( e ) ); + } + } + private Status statusCodeOf( Throwable e ) { do