Skip to content

Commit 42f7248

Browse files
authored
Merge pull request #215 from zhenlineo/1.0-fix-session-leak-msg
Fix session leak in tests by using trying with resources
2 parents 7fad13b + b5fbefb commit 42f7248

File tree

6 files changed

+100
-91
lines changed

6 files changed

+100
-91
lines changed

driver/src/test/java/org/neo4j/driver/v1/integration/CredentialsIT.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,13 @@ public void basicCredentialsShouldWork() throws Throwable
5656
String password = "secret";
5757
enableAuth( password );
5858

59-
Driver driver = GraphDatabase.driver( neo4j.address(),
60-
basic("neo4j", password ) );
61-
62-
// When
63-
Session session = driver.session();
64-
Value single = session.run( "RETURN 1" ).single().get(0);
65-
66-
// Then
67-
assertThat( single.asLong(), equalTo( 1L ) );
59+
// When & Then
60+
try( Driver driver = GraphDatabase.driver( neo4j.address(), basic("neo4j", password ) );
61+
Session session = driver.session() )
62+
{
63+
Value single = session.run( "RETURN 1" ).single().get( 0 );
64+
assertThat( single.asLong(), equalTo( 1L ) );
65+
}
6866
}
6967

7068
@Test
@@ -79,7 +77,8 @@ public void shouldGetHelpfulErrorOnInvalidCredentials() throws Throwable
7977
exception.expectMessage( "The client is unauthorized due to authentication failure." );
8078

8179
// When
82-
GraphDatabase.driver( neo4j.address(), basic("thisisnotthepassword", password ) ).session();
80+
try( Driver driver = GraphDatabase.driver( neo4j.address(), basic("thisisnotthepassword", password ) );
81+
Session session = driver.session() ) {}
8382
}
8483

8584
private void enableAuth( String password ) throws Exception
@@ -88,15 +87,15 @@ private void enableAuth( String password ) throws Exception
8887
.updateWith( Neo4jSettings.AUTH_ENABLED, "true" )
8988
.updateWith( Neo4jSettings.DATA_DIR, tempDir.getRoot().getAbsolutePath().replace("\\", "/") ));
9089

91-
Driver setPassword = GraphDatabase.driver( neo4j.address(), new InternalAuthToken(
92-
parameters(
90+
try ( Driver setPassword =
91+
GraphDatabase.driver( neo4j.address(), new InternalAuthToken( parameters(
9392
"scheme", "basic",
9493
"principal", "neo4j",
9594
"credentials", "neo4j",
9695
"new_credentials", password ).asMap( ofValue()) ) );
97-
Session sess = setPassword.session();
98-
sess.run( "RETURN 1" ).consume();
99-
sess.close();
100-
setPassword.close();
96+
Session sess = setPassword.session() )
97+
{
98+
sess.run( "RETURN 1" ).consume();
99+
}
101100
}
102101
}

driver/src/test/java/org/neo4j/driver/v1/integration/ErrorIT.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.neo4j.driver.v1.Config;
2828
import org.neo4j.driver.v1.Driver;
2929
import org.neo4j.driver.v1.GraphDatabase;
30+
import org.neo4j.driver.v1.Session;
3031
import org.neo4j.driver.v1.StatementResult;
3132
import org.neo4j.driver.v1.Transaction;
3233
import org.neo4j.driver.v1.exceptions.ClientException;
@@ -118,10 +119,8 @@ public void shouldExplainConnectionError() throws Throwable
118119
"and that there is a working network connection to it." );
119120

120121
// When
121-
try ( Driver driver = GraphDatabase.driver( "bolt://localhost:7777" ) )
122-
{
123-
driver.session();
124-
}
122+
try ( Driver driver = GraphDatabase.driver( "bolt://localhost:7777" );
123+
Session session = driver.session()) {}
125124
}
126125

127126
@Test
@@ -156,16 +155,18 @@ public void shouldGetHelpfulErrorWhenTryingToConnectToHttpPort() throws Throwabl
156155
// Given
157156
//the http server needs some time to start up
158157
Thread.sleep( 2000 );
159-
Driver driver = GraphDatabase.driver( "bolt://localhost:7474", Config.build().withEncryptionLevel(
160-
Config.EncryptionLevel.NONE ).toConfig());
161-
162-
// Expect
163-
exception.expect( ClientException.class );
164-
exception.expectMessage( "Server responded HTTP. Make sure you are not trying to connect to the http endpoint " +
165-
"(HTTP defaults to port 7474 whereas BOLT defaults to port 7687)" );
166-
167-
// When
168-
driver.session();
158+
try( Driver driver = GraphDatabase.driver( "bolt://localhost:7474",
159+
Config.build().withEncryptionLevel( Config.EncryptionLevel.NONE ).toConfig() ) )
160+
{
161+
// Expect
162+
exception.expect( ClientException.class );
163+
exception.expectMessage(
164+
"Server responded HTTP. Make sure you are not trying to connect to the http endpoint " +
165+
"(HTTP defaults to port 7474 whereas BOLT defaults to port 7687)" );
166+
167+
// When
168+
try(Session session = driver.session() ){}
169+
}
169170
}
170171

171172
}

driver/src/test/java/org/neo4j/driver/v1/integration/LoadCSVIT.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,24 +44,27 @@ public class LoadCSVIT
4444
public void shouldLoadCSV() throws Throwable
4545
{
4646
// Given
47-
Driver driver = GraphDatabase.driver( neo4j.address() );
48-
Session session = driver.session();
49-
String csvFileUrl = createLocalIrisData( session );
50-
51-
// When
52-
StatementResult result = session.run(
53-
"USING PERIODIC COMMIT 40\n" +
54-
"LOAD CSV WITH HEADERS FROM {csvFileUrl} AS l\n" +
55-
"MATCH (c:Class {name: l.class_name})\n" +
56-
"CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width})\n" +
57-
"CREATE (c)<-[:HAS_CLASS]-(s) " +
58-
"RETURN count(*) AS c",
59-
parameters( "csvFileUrl", csvFileUrl ) );
60-
61-
62-
// Then
63-
assertThat( result.next().get( "c" ).asInt(), equalTo( 150 ) );
64-
assertFalse( result.hasNext() );
47+
try( Driver driver = GraphDatabase.driver( neo4j.address() );
48+
Session session = driver.session() )
49+
{
50+
String csvFileUrl = createLocalIrisData( session );
51+
52+
// When
53+
StatementResult result = session.run(
54+
"USING PERIODIC COMMIT 40\n" +
55+
"LOAD CSV WITH HEADERS FROM {csvFileUrl} AS l\n" +
56+
"MATCH (c:Class {name: l.class_name})\n" +
57+
"CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width})\n" +
58+
59+
"CREATE (c)<-[:HAS_CLASS]-(s) " +
60+
"RETURN count(*) AS c",
61+
parameters( "csvFileUrl", csvFileUrl ) );
62+
63+
64+
// Then
65+
assertThat( result.next().get( "c" ).asInt(), equalTo( 150 ) );
66+
assertFalse( result.hasNext() );
67+
}
6568
}
6669

6770
private String createLocalIrisData( Session session ) throws IOException

driver/src/test/java/org/neo4j/driver/v1/integration/LoggingIT.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@
1818
*/
1919
package org.neo4j.driver.v1.integration;
2020

21-
import java.net.URI;
22-
2321
import org.junit.Rule;
2422
import org.junit.Test;
2523

26-
import org.neo4j.driver.v1.Logger;
27-
import org.neo4j.driver.v1.Logging;
24+
import java.net.URI;
25+
2826
import org.neo4j.driver.v1.Config;
2927
import org.neo4j.driver.v1.Driver;
3028
import org.neo4j.driver.v1.GraphDatabase;
29+
import org.neo4j.driver.v1.Logger;
30+
import org.neo4j.driver.v1.Logging;
3131
import org.neo4j.driver.v1.Session;
3232
import org.neo4j.driver.v1.util.Neo4jRunner;
3333
import org.neo4j.driver.v1.util.TestNeo4j;
@@ -49,19 +49,20 @@ public void logShouldRecordDebugAndTraceInfo() throws Exception
4949
// Given
5050
Logging logging = mock( Logging.class );
5151
Logger logger = mock( Logger.class );
52-
Driver driver = GraphDatabase.driver(
53-
URI.create( Neo4jRunner.DEFAULT_URL ),
54-
Config.build().withLogging( logging ).toConfig() );
5552

56-
// When
57-
when( logging.getLog( anyString() ) ).thenReturn( logger );
58-
when( logger.isDebugEnabled() ).thenReturn( true );
59-
when( logger.isTraceEnabled() ).thenReturn( true );
60-
Session session = driver.session();
61-
session.run( "CREATE (a {name:'Cat'})" );
53+
try( Driver driver = GraphDatabase.driver( URI.create( Neo4jRunner.DEFAULT_URL ),
54+
Config.build().withLogging( logging ).toConfig() ) )
55+
{
56+
// When
57+
when( logging.getLog( anyString() ) ).thenReturn( logger );
58+
when( logger.isDebugEnabled() ).thenReturn( true );
59+
when( logger.isTraceEnabled() ).thenReturn( true );
6260

63-
session.close();
64-
driver.close();
61+
try( Session session = driver.session() )
62+
{
63+
session.run( "CREATE (a {name:'Cat'})" );
64+
}
65+
}
6566

6667
// Then
6768
verify( logger, atLeastOnce() ).debug( anyString() );

driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,28 +39,32 @@ public class SessionIT
3939
public void shouldKnowSessionIsClosed() throws Throwable
4040
{
4141
// Given
42-
Driver driver = GraphDatabase.driver( neo4j.address() );
43-
Session session = driver.session();
42+
try( Driver driver = GraphDatabase.driver( neo4j.address() ) )
43+
{
44+
Session session = driver.session();
4445

45-
// When
46-
session.close();
46+
// When
47+
session.close();
4748

48-
// Then
49-
assertFalse( session.isOpen() );
49+
// Then
50+
assertFalse( session.isOpen() );
51+
}
5052
}
5153

5254
@Test
5355
public void shouldHandleNullConfig() throws Throwable
5456
{
5557
// Given
56-
Driver driver = GraphDatabase.driver( neo4j.address(), AuthTokens.none(), null );
57-
Session session = driver.session();
58+
try( Driver driver = GraphDatabase.driver( neo4j.address(), AuthTokens.none(), null ) )
59+
{
60+
Session session = driver.session();
5861

59-
// When
60-
session.close();
62+
// When
63+
session.close();
6164

62-
// Then
63-
assertFalse( session.isOpen() );
65+
// Then
66+
assertFalse( session.isOpen() );
67+
}
6468
}
6569

6670
@SuppressWarnings( "ConstantConditions" )
@@ -69,13 +73,15 @@ public void shouldHandleNullAuthToken() throws Throwable
6973
{
7074
// Given
7175
AuthToken token = null;
72-
Driver driver = GraphDatabase.driver( neo4j.address(), token);
73-
Session session = driver.session();
76+
try ( Driver driver = GraphDatabase.driver( neo4j.address(), token ) )
77+
{
78+
Session session = driver.session();
7479

75-
// When
76-
session.close();
80+
// When
81+
session.close();
7782

78-
// Then
79-
assertFalse( session.isOpen() );
83+
// Then
84+
assertFalse( session.isOpen() );
85+
}
8086
}
8187
}

driver/src/test/java/org/neo4j/driver/v1/integration/TLSSocketChannelIT.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@
3535
import javax.net.ssl.SSLHandshakeException;
3636

3737
import org.neo4j.driver.internal.connector.socket.TLSSocketChannel;
38-
import org.neo4j.driver.v1.Logger;
3938
import org.neo4j.driver.internal.util.CertificateTool;
4039
import org.neo4j.driver.v1.Config;
4140
import org.neo4j.driver.v1.Driver;
4241
import org.neo4j.driver.v1.GraphDatabase;
42+
import org.neo4j.driver.v1.Logger;
43+
import org.neo4j.driver.v1.Session;
4344
import org.neo4j.driver.v1.StatementResult;
4445
import org.neo4j.driver.v1.util.CertificateToolTest;
4546
import org.neo4j.driver.v1.util.Neo4jRunner;
@@ -254,14 +255,12 @@ public void shouldEstablishTLSConnection() throws Throwable
254255

255256
Config config = Config.build().withEncryptionLevel( Config.EncryptionLevel.REQUIRED ).toConfig();
256257

257-
Driver driver = GraphDatabase.driver(
258-
URI.create( Neo4jRunner.DEFAULT_URL ),
259-
config );
260-
261-
StatementResult result = driver.session().run( "RETURN 1" );
262-
assertEquals( 1, result.next().get( 0 ).asInt() );
263-
assertFalse( result.hasNext() );
264-
265-
driver.close();
258+
try( Driver driver = GraphDatabase.driver( URI.create( Neo4jRunner.DEFAULT_URL ), config );
259+
Session session = driver.session() )
260+
{
261+
StatementResult result = session.run( "RETURN 1" );
262+
assertEquals( 1, result.next().get( 0 ).asInt() );
263+
assertFalse( result.hasNext() );
264+
}
266265
}
267266
}

0 commit comments

Comments
 (0)