Skip to content

Commit d0af606

Browse files
author
Zhen Li
authored
Merge pull request #308 from lutovich/1.1-cc-stress-it
Add basic causal clustering stress test
2 parents 688c803 + d2950c6 commit d0af606

File tree

11 files changed

+672
-55
lines changed

11 files changed

+672
-55
lines changed

driver/src/main/java/org/neo4j/driver/internal/logging/DevNullLogger.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,36 +22,35 @@
2222

2323
public class DevNullLogger implements Logger
2424
{
25-
public static final DevNullLogger DEV_NULL_LOGGER = new DevNullLogger();
25+
public static final Logger DEV_NULL_LOGGER = new DevNullLogger();
26+
27+
private DevNullLogger()
28+
{
29+
}
2630

2731
@Override
2832
public void error( String message, Throwable cause )
2933
{
30-
3134
}
3235

3336
@Override
3437
public void info( String message, Object... params )
3538
{
36-
3739
}
3840

3941
@Override
4042
public void warn( String message, Object... params )
4143
{
42-
4344
}
4445

4546
@Override
4647
public void debug( String message, Object... params )
4748
{
48-
4949
}
5050

5151
@Override
5252
public void trace( String message, Object... params )
5353
{
54-
5554
}
5655

5756
@Override
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright (c) 2002-2017 "Neo Technology,"
3+
* Network Engine for Objects in Lund AB [http://neotechnology.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
*/
19+
package org.neo4j.driver.internal.logging;
20+
21+
import org.neo4j.driver.v1.Logger;
22+
import org.neo4j.driver.v1.Logging;
23+
24+
public class DevNullLogging implements Logging
25+
{
26+
public static final Logging DEV_NULL_LOGGING = new DevNullLogging();
27+
28+
private DevNullLogging()
29+
{
30+
}
31+
32+
@Override
33+
public Logger getLog( String name )
34+
{
35+
return DevNullLogger.DEV_NULL_LOGGER;
36+
}
37+
}

driver/src/test/java/org/neo4j/driver/internal/net/LoggingResponseHandlerTest.java

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020

2121
import org.junit.Rule;
2222
import org.junit.Test;
23+
import org.junit.rules.ExpectedException;
24+
import org.mockito.invocation.InvocationOnMock;
25+
import org.mockito.stubbing.Answer;
2326

27+
import java.util.Arrays;
2428
import java.util.HashMap;
2529

26-
import org.junit.rules.ExpectedException;
27-
import org.neo4j.driver.internal.logging.DevNullLogger;
2830
import org.neo4j.driver.internal.messaging.DiscardAllMessage;
2931
import org.neo4j.driver.internal.messaging.FailureMessage;
3032
import org.neo4j.driver.internal.messaging.IgnoredMessage;
@@ -40,24 +42,17 @@
4042
import org.neo4j.driver.v1.Value;
4143

4244
import static org.junit.Assert.assertEquals;
43-
import static org.mockito.Mockito.doThrow;
45+
import static org.mockito.Matchers.anyString;
46+
import static org.mockito.Matchers.anyVararg;
47+
import static org.mockito.Mockito.doAnswer;
4448
import static org.mockito.Mockito.mock;
45-
import static org.mockito.Mockito.verify;
46-
import static org.neo4j.driver.v1.Values.parameters;
4749
import static org.neo4j.driver.v1.Values.ofValue;
50+
import static org.neo4j.driver.v1.Values.parameters;
4851

4952
public class LoggingResponseHandlerTest
5053
{
51-
5254
private String log;
53-
private Logger debugLogger = new DevNullLogger()
54-
{
55-
@Override
56-
public void debug( String message, Object... params )
57-
{
58-
log = String.format( message, params );
59-
}
60-
};
55+
private Logger debugLogger = newCapturingLogger();
6156

6257
@Rule
6358
public ExpectedException exception = ExpectedException.none();
@@ -176,7 +171,8 @@ public void shouldLogMessageWhenHandleMessageThrowsError() throws Throwable
176171
SocketResponseHandler handler = new LoggingResponseHandler( debugLogger )
177172
{
178173
@Override
179-
public void handleIgnoredMessage() {
174+
public void handleIgnoredMessage()
175+
{
180176
throw new RuntimeException( "This will not stop logging" );
181177
}
182178
};
@@ -195,4 +191,24 @@ private String format( Message message )
195191
{
196192
return String.format( "S: %s", message );
197193
}
194+
195+
private Logger newCapturingLogger()
196+
{
197+
Logger logger = mock( Logger.class );
198+
199+
doAnswer( new Answer<Void>()
200+
{
201+
@Override
202+
public Void answer( InvocationOnMock invocation ) throws Throwable
203+
{
204+
Object[] arguments = invocation.getArguments();
205+
String message = ((String) arguments[0]);
206+
Object[] params = Arrays.copyOfRange( arguments, 1, arguments.length );
207+
LoggingResponseHandlerTest.this.log = String.format( message, params );
208+
return null;
209+
}
210+
} ).when( logger ).debug( anyString(), anyVararg() );
211+
212+
return logger;
213+
}
198214
}

driver/src/test/java/org/neo4j/driver/internal/net/SocketClientTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.util.ArrayList;
3131
import java.util.List;
3232

33-
import org.neo4j.driver.internal.logging.DevNullLogger;
3433
import org.neo4j.driver.internal.security.SecurityPlan;
3534
import org.neo4j.driver.v1.exceptions.ClientException;
3635
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
@@ -39,6 +38,7 @@
3938
import static org.hamcrest.MatcherAssert.assertThat;
4039
import static org.mockito.Mockito.mock;
4140
import static org.mockito.Mockito.when;
41+
import static org.neo4j.driver.internal.logging.DevNullLogger.DEV_NULL_LOGGER;
4242
import static org.neo4j.driver.internal.net.BoltServerAddress.LOCAL_DEFAULT;
4343

4444
public class SocketClientTest
@@ -59,7 +59,7 @@ public void testNetworkTimeout() throws Throwable
5959
BoltServerAddress address = new BoltServerAddress( "localhost", server.getLocalPort() );
6060

6161
SecurityPlan securityPlan = SecurityPlan.insecure();
62-
SocketClient client = new SocketClient( address, securityPlan, CONNECTION_TIMEOUT, new DevNullLogger() );
62+
SocketClient client = new SocketClient( address, securityPlan, CONNECTION_TIMEOUT, DEV_NULL_LOGGER );
6363

6464
// Expect
6565
exception.expect( ClientException.class );
@@ -71,7 +71,7 @@ public void testNetworkTimeout() throws Throwable
7171

7272
private SocketClient dummyClient()
7373
{
74-
return new SocketClient( LOCAL_DEFAULT, SecurityPlan.insecure(), CONNECTION_TIMEOUT, new DevNullLogger() );
74+
return new SocketClient( LOCAL_DEFAULT, SecurityPlan.insecure(), CONNECTION_TIMEOUT, DEV_NULL_LOGGER );
7575
}
7676

7777
@Test

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.LinkedList;
2929
import java.util.Queue;
3030

31-
import org.neo4j.driver.internal.logging.DevNullLogger;
3231
import org.neo4j.driver.internal.messaging.InitMessage;
3332
import org.neo4j.driver.internal.messaging.Message;
3433
import org.neo4j.driver.internal.net.SocketClient;
@@ -45,6 +44,7 @@
4544
import static org.mockito.Mockito.times;
4645
import static org.mockito.Mockito.verify;
4746
import static org.mockito.Mockito.when;
47+
import static org.neo4j.driver.internal.logging.DevNullLogger.DEV_NULL_LOGGER;
4848
import static org.neo4j.driver.v1.Values.ofValue;
4949
import static org.neo4j.driver.v1.Values.parameters;
5050

@@ -59,7 +59,7 @@ public class SocketClientIT
5959
public void setup() throws GeneralSecurityException, IOException
6060
{
6161
SecurityPlan securityPlan = SecurityPlan.insecure();
62-
client = new SocketClient( neo4j.address(), securityPlan, 42, new DevNullLogger() );
62+
client = new SocketClient( neo4j.address(), securityPlan, 42, DEV_NULL_LOGGER );
6363
}
6464

6565
@After

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

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,22 @@
2727
import java.io.File;
2828
import java.io.FileWriter;
2929
import java.io.IOException;
30-
import java.net.InetAddress;
3130
import java.net.InetSocketAddress;
32-
import java.net.URI;
3331
import java.nio.channels.SocketChannel;
3432
import java.security.cert.X509Certificate;
3533
import javax.net.ssl.SSLHandshakeException;
3634

37-
import org.neo4j.driver.internal.logging.DevNullLogger;
35+
import org.neo4j.driver.internal.net.BoltServerAddress;
3836
import org.neo4j.driver.internal.security.SecurityPlan;
3937
import org.neo4j.driver.internal.security.TLSSocketChannel;
40-
import org.neo4j.driver.internal.net.BoltServerAddress;
41-
import org.neo4j.driver.v1.*;
4238
import org.neo4j.driver.internal.util.CertificateTool;
43-
39+
import org.neo4j.driver.v1.Config;
40+
import org.neo4j.driver.v1.Driver;
41+
import org.neo4j.driver.v1.GraphDatabase;
42+
import org.neo4j.driver.v1.Logger;
43+
import org.neo4j.driver.v1.Logging;
44+
import org.neo4j.driver.v1.Session;
45+
import org.neo4j.driver.v1.StatementResult;
4446
import org.neo4j.driver.v1.util.CertificateToolTest;
4547
import org.neo4j.driver.v1.util.Neo4jRunner;
4648
import org.neo4j.driver.v1.util.Neo4jSettings;
@@ -56,6 +58,7 @@
5658
import static org.mockito.Mockito.mock;
5759
import static org.mockito.Mockito.verify;
5860
import static org.mockito.Mockito.when;
61+
import static org.neo4j.driver.internal.logging.DevNullLogger.DEV_NULL_LOGGER;
5962
import static org.neo4j.driver.internal.security.TrustOnFirstUseTrustManager.fingerprint;
6063

6164
public class TLSSocketChannelIT
@@ -182,7 +185,7 @@ public void shouldFailTLSHandshakeDueToWrongCertInKnownCertsFile() throws Throwa
182185
createFakeServerCertPairInKnownCerts( address, knownCerts );
183186

184187
// When & Then
185-
SecurityPlan securityPlan = SecurityPlan.forTrustOnFirstUse( knownCerts, address, new DevNullLogger() );
188+
SecurityPlan securityPlan = SecurityPlan.forTrustOnFirstUse( knownCerts, address, DEV_NULL_LOGGER );
186189
TLSSocketChannel sslChannel = null;
187190
try
188191
{
@@ -266,7 +269,6 @@ public void shouldPerformTLSHandshakeWithTheSameTrustedServerCert() throws Throw
266269
channel.connect( address.toSocketAddress() );
267270

268271
// When
269-
URI url = URI.create( "localhost:7687" );
270272
SecurityPlan securityPlan = SecurityPlan.forCustomCASignedCertificates( Neo4jSettings.DEFAULT_TLS_CERT_FILE );
271273
TLSSocketChannel sslChannel = TLSSocketChannel.create( address, securityPlan, channel, logger );
272274
sslChannel.close();
@@ -331,7 +333,7 @@ private void performTLSHandshakeUsingKnownCerts( File knownCerts ) throws Throwa
331333

332334
// When
333335

334-
SecurityPlan securityPlan = SecurityPlan.forTrustOnFirstUse( knownCerts, address, new DevNullLogger() );
336+
SecurityPlan securityPlan = SecurityPlan.forTrustOnFirstUse( knownCerts, address, DEV_NULL_LOGGER );
335337
TLSSocketChannel sslChannel =
336338
TLSSocketChannel.create( address, securityPlan, channel, logger );
337339
sslChannel.close();
@@ -364,20 +366,4 @@ private File installRootCertificate() throws Exception
364366
neo4j.updateEncryptionKeyAndCert( key, cert );
365367
return rootCert;
366368
}
367-
368-
private void createFakeServerCertPairInKnownCerts( String host, int port, File knownCerts )
369-
throws Throwable
370-
{
371-
String ip = InetAddress.getByName( host ).getHostAddress(); // localhost -> 127.0.0.1
372-
String serverId = ip + ":" + port;
373-
374-
X509Certificate cert = CertificateToolTest.generateSelfSignedCertificate();
375-
String certStr = fingerprint( cert );
376-
377-
BufferedWriter writer = new BufferedWriter( new FileWriter( knownCerts, true ) );
378-
writer.write( serverId + "," + certStr );
379-
writer.newLine();
380-
writer.close();
381-
}
382-
383369
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@
3030
import javax.net.ssl.SSLEngine;
3131
import javax.net.ssl.SSLServerSocketFactory;
3232

33-
import org.neo4j.driver.internal.logging.DevNullLogger;
3433
import org.neo4j.driver.internal.security.TLSSocketChannel;
3534

3635
import static org.hamcrest.core.IsEqual.equalTo;
3736
import static org.junit.Assert.assertThat;
37+
import static org.neo4j.driver.internal.logging.DevNullLogger.DEV_NULL_LOGGER;
3838

3939
/**
4040
* This tests that the TLSSocketChannel handles every combination of network buffer sizes that we
@@ -75,7 +75,7 @@ protected void testForBufferSizes( int blobOfDataSize, int networkFrameSize, int
7575
ByteChannel ch = SocketChannel.open( new InetSocketAddress( server.getInetAddress(), server.getLocalPort() ) );
7676
ch = new LittleAtATimeChannel( ch, networkFrameSize );
7777

78-
try ( TLSSocketChannel channel = new TLSSocketChannel( ch, new DevNullLogger(), engine ) )
78+
try ( TLSSocketChannel channel = new TLSSocketChannel( ch, DEV_NULL_LOGGER, engine ) )
7979
{
8080
ByteBuffer readBuffer = ByteBuffer.allocate( blobOfData.length );
8181
while ( readBuffer.position() < readBuffer.capacity() )

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@
3333
import javax.net.ssl.SSLEngine;
3434
import javax.net.ssl.SSLServerSocketFactory;
3535

36-
import org.neo4j.driver.internal.logging.DevNullLogger;
3736
import org.neo4j.driver.internal.security.TLSSocketChannel;
3837

3938
import static org.hamcrest.core.IsEqual.equalTo;
4039
import static org.junit.Assert.assertThat;
40+
import static org.neo4j.driver.internal.logging.DevNullLogger.DEV_NULL_LOGGER;
4141

4242
/**
4343
* This tests that the TLSSocketChannel handles every combination of network buffer sizes that we
@@ -84,7 +84,7 @@ protected void testForBufferSizes( int blobOfDataSize, int networkFrameSize, int
8484
ByteChannel ch = SocketChannel.open( new InetSocketAddress( server.getInetAddress(), server.getLocalPort() ) );
8585
ch = new LittleAtATimeChannel( ch, networkFrameSize );
8686

87-
try ( TLSSocketChannel channel = new TLSSocketChannel( ch, new DevNullLogger(), engine ) )
87+
try ( TLSSocketChannel channel = new TLSSocketChannel( ch, DEV_NULL_LOGGER, engine ) )
8888
{
8989
ByteBuffer writeBuffer = ByteBuffer.wrap( blob );
9090
while ( writeBuffer.position() < writeBuffer.capacity() )

0 commit comments

Comments
 (0)