Skip to content

Commit d722586

Browse files
committed
Add ITs for long lists, byte arrays and strings
1 parent e691bef commit d722586

File tree

3 files changed

+60
-16
lines changed

3 files changed

+60
-16
lines changed

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.io.IOException;
2626
import java.util.HashMap;
27+
import java.util.List;
2728
import java.util.Map;
2829
import java.util.concurrent.ThreadLocalRandom;
2930

@@ -35,11 +36,15 @@
3536
import org.neo4j.driver.v1.exceptions.ClientException;
3637
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
3738
import org.neo4j.driver.v1.util.TestNeo4jSession;
39+
import org.neo4j.driver.v1.util.TestUtil;
3840

41+
import static java.util.Collections.singletonMap;
42+
import static java.util.stream.Collectors.toList;
3943
import static org.hamcrest.CoreMatchers.containsString;
4044
import static org.hamcrest.CoreMatchers.equalTo;
4145
import static org.hamcrest.CoreMatchers.instanceOf;
4246
import static org.hamcrest.MatcherAssert.assertThat;
47+
import static org.junit.Assert.assertArrayEquals;
4348
import static org.junit.Assert.fail;
4449
import static org.junit.Assume.assumeFalse;
4550
import static org.junit.Assume.assumeTrue;
@@ -52,6 +57,8 @@
5257

5358
public class ParametersIT
5459
{
60+
private static final int LONG_VALUE_SIZE = 1_000_000;
61+
5562
@Rule
5663
public TestNeo4jSession session = new TestNeo4jSession();
5764

@@ -451,6 +458,35 @@ public void shouldNotBePossibleToUsePathAsParameterViaMapValue()
451458
expectIOExceptionWithMessage( mapValue, "Unknown type: PATH" );
452459
}
453460

461+
@Test
462+
public void shouldSendAndReceiveLongString()
463+
{
464+
String string = TestUtil.randomString( LONG_VALUE_SIZE );
465+
testSendAndReceiveValue( string );
466+
}
467+
468+
@Test
469+
public void shouldSendAndReceiveLongListOfLongs()
470+
{
471+
List<Long> longs = ThreadLocalRandom.current()
472+
.longs( LONG_VALUE_SIZE )
473+
.boxed()
474+
.collect( toList() );
475+
476+
testSendAndReceiveValue( longs );
477+
}
478+
479+
@Test
480+
public void shouldSendAndReceiveLongArrayOfBytes()
481+
{
482+
assumeTrue( supportsBytes() );
483+
484+
byte[] bytes = new byte[LONG_VALUE_SIZE];
485+
ThreadLocalRandom.current().nextBytes( bytes );
486+
487+
testSendAndReceiveValue( bytes );
488+
}
489+
454490
private void testBytesProperty( byte[] array )
455491
{
456492
assumeTrue( supportsBytes() );
@@ -509,4 +545,11 @@ private void expectIOExceptionWithMessage( Value value, String message )
509545
fail( "Expecting a ServiceUnavailableException but got " + e );
510546
}
511547
}
548+
549+
private void testSendAndReceiveValue( Object value )
550+
{
551+
StatementResult result = session.run( "RETURN $value", singletonMap( "value", value ) );
552+
Object receivedValue = result.single().get( 0 ).asObject();
553+
assertArrayEquals( new Object[]{value}, new Object[]{receivedValue} );
554+
}
512555
}

driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceSteps.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import java.util.HashMap;
3030
import java.util.List;
3131
import java.util.Map;
32-
import java.util.Random;
3332

3433
import org.neo4j.driver.v1.Record;
3534
import org.neo4j.driver.v1.Session;
@@ -39,11 +38,12 @@
3938
import org.neo4j.driver.v1.tck.tck.util.runners.CypherStatementRunner;
4039
import org.neo4j.driver.v1.tck.tck.util.runners.StatementRunner;
4140
import org.neo4j.driver.v1.tck.tck.util.runners.StringRunner;
41+
import org.neo4j.driver.v1.util.TestUtil;
4242

4343
import static org.hamcrest.core.IsEqual.equalTo;
4444
import static org.junit.Assert.assertThat;
45-
import static org.neo4j.driver.v1.tck.Environment.driver;
4645
import static org.neo4j.driver.v1.Values.parameters;
46+
import static org.neo4j.driver.v1.tck.Environment.driver;
4747
import static org.neo4j.driver.v1.tck.Environment.expectedBoltValue;
4848
import static org.neo4j.driver.v1.tck.Environment.expectedJavaValue;
4949
import static org.neo4j.driver.v1.tck.Environment.listOfObjects;
@@ -77,9 +77,9 @@ public void a_value( String value ) throws Throwable
7777
}
7878

7979
@Given( "^a String of size (\\d+)$" )
80-
public void a_String_of_size( long size ) throws Throwable
80+
public void a_String_of_size( int size ) throws Throwable
8181
{
82-
expectedJavaValue = getRandomString( size );
82+
expectedJavaValue = TestUtil.randomString( size );
8383
expectedBoltValue = Values.value( expectedJavaValue );
8484
}
8585

@@ -191,18 +191,6 @@ public void result_should_be_equal_to_a_single_Type_of_Input() throws Throwable
191191
}
192192
}
193193

194-
public String getRandomString( long size )
195-
{
196-
StringBuilder stringBuilder = new StringBuilder();
197-
String alphabet = "abcdefghijklmnopqrstuvwxyz";
198-
Random random = new Random();
199-
while ( size-- > 0 )
200-
{
201-
stringBuilder.append( alphabet.charAt( random.nextInt( alphabet.length() ) ) );
202-
}
203-
return stringBuilder.toString();
204-
}
205-
206194
public List<Object> getListOfRandomsOfTypes( Type type, long size )
207195
{
208196
List<Object> list = new ArrayList<>();

driver/src/test/java/org/neo4j/driver/v1/util/TestUtil.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.concurrent.CompletionStage;
3030
import java.util.concurrent.ExecutionException;
3131
import java.util.concurrent.Future;
32+
import java.util.concurrent.ThreadLocalRandom;
3233
import java.util.concurrent.TimeUnit;
3334
import java.util.concurrent.TimeoutException;
3435
import java.util.function.BooleanSupplier;
@@ -57,6 +58,7 @@
5758
public final class TestUtil
5859
{
5960
private static final long DEFAULT_WAIT_TIME_MS = MINUTES.toMillis( 1 );
61+
private static final String ALPHANUMERICS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789";
6062

6163
private TestUtil()
6264
{
@@ -257,6 +259,17 @@ public static void awaitCondition( BooleanSupplier condition, long value, TimeUn
257259
}
258260
}
259261

262+
public static String randomString( int size )
263+
{
264+
StringBuilder sb = new StringBuilder( size );
265+
ThreadLocalRandom random = ThreadLocalRandom.current();
266+
for ( int i = 0; i < size; i++ )
267+
{
268+
sb.append( ALPHANUMERICS.charAt( random.nextInt( ALPHANUMERICS.length() ) ) );
269+
}
270+
return sb.toString();
271+
}
272+
260273
private static void setupSuccessfulPullAll( Connection connection, String statement )
261274
{
262275
doAnswer( invocation ->

0 commit comments

Comments
 (0)