diff --git a/driver/src/test/java/org/neo4j/driver/AuthTokensTest.java b/driver/src/test/java/org/neo4j/driver/AuthTokensTest.java index bdc6c27ee8..339bd8f94a 100644 --- a/driver/src/test/java/org/neo4j/driver/AuthTokensTest.java +++ b/driver/src/test/java/org/neo4j/driver/AuthTokensTest.java @@ -38,9 +38,9 @@ class AuthTokensTest { @Test void basicAuthWithoutRealm() { - InternalAuthToken basic = (InternalAuthToken) basic("foo", "bar"); + var basic = (InternalAuthToken) basic("foo", "bar"); - Map map = basic.toMap(); + var map = basic.toMap(); assertThat(map.size(), equalTo(3)); assertThat(map.get("scheme"), equalTo((Value) new StringValue("basic"))); @@ -50,9 +50,9 @@ void basicAuthWithoutRealm() { @Test void basicAuthWithRealm() { - InternalAuthToken basic = (InternalAuthToken) basic("foo", "bar", "baz"); + var basic = (InternalAuthToken) basic("foo", "bar", "baz"); - Map map = basic.toMap(); + var map = basic.toMap(); assertThat(map.size(), equalTo(4)); assertThat(map.get("scheme"), equalTo((Value) new StringValue("basic"))); @@ -63,9 +63,9 @@ void basicAuthWithRealm() { @Test void customAuthWithoutParameters() { - InternalAuthToken basic = (InternalAuthToken) custom("foo", "bar", "baz", "my_scheme"); + var basic = (InternalAuthToken) custom("foo", "bar", "baz", "my_scheme"); - Map map = basic.toMap(); + var map = basic.toMap(); assertThat(map.size(), equalTo(4)); assertThat(map.get("scheme"), equalTo((Value) new StringValue("my_scheme"))); @@ -76,13 +76,13 @@ void customAuthWithoutParameters() { @Test void customAuthParameters() { - HashMap parameters = new HashMap<>(); + var parameters = new HashMap(); parameters.put("list", asList(1, 2, 3)); - InternalAuthToken basic = (InternalAuthToken) custom("foo", "bar", "baz", "my_scheme", parameters); + var basic = (InternalAuthToken) custom("foo", "bar", "baz", "my_scheme", parameters); Map expectedParameters = new HashMap<>(); expectedParameters.put("list", new ListValue(values(1, 2, 3))); - Map map = basic.toMap(); + var map = basic.toMap(); assertThat(map.size(), equalTo(5)); assertThat(map.get("scheme"), equalTo((Value) new StringValue("my_scheme"))); @@ -95,13 +95,13 @@ void customAuthParameters() { @Test void shouldSupportBearerAuth() { // GIVEN - String tokenStr = "token"; + var tokenStr = "token"; // WHEN - InternalAuthToken token = (InternalAuthToken) AuthTokens.bearer(tokenStr); + var token = (InternalAuthToken) AuthTokens.bearer(tokenStr); // THEN - Map map = token.toMap(); + var map = token.toMap(); assertThat(map.size(), equalTo(2)); assertThat(map.get("scheme"), equalTo(new StringValue("bearer"))); assertThat(map.get("credentials"), equalTo(new StringValue(tokenStr))); @@ -109,8 +109,8 @@ void shouldSupportBearerAuth() { @Test void basicKerberosAuthWithRealm() { - InternalAuthToken token = (InternalAuthToken) AuthTokens.kerberos("base64"); - Map map = token.toMap(); + var token = (InternalAuthToken) AuthTokens.kerberos("base64"); + var map = token.toMap(); assertThat(map.size(), equalTo(3)); assertThat(map.get("scheme"), equalTo((Value) new StringValue("kerberos"))); @@ -120,20 +120,20 @@ void basicKerberosAuthWithRealm() { @Test void shouldNotAllowBasicAuthTokenWithNullUsername() { - NullPointerException e = assertThrows(NullPointerException.class, () -> AuthTokens.basic(null, "password")); + var e = assertThrows(NullPointerException.class, () -> AuthTokens.basic(null, "password")); assertEquals("Username can't be null", e.getMessage()); } @Test void shouldNotAllowBasicAuthTokenWithNullPassword() { - NullPointerException e = assertThrows(NullPointerException.class, () -> AuthTokens.basic("username", null)); + var e = assertThrows(NullPointerException.class, () -> AuthTokens.basic("username", null)); assertEquals("Password can't be null", e.getMessage()); } @Test void shouldAllowBasicAuthTokenWithNullRealm() { - AuthToken token = AuthTokens.basic("username", "password", null); - Map map = ((InternalAuthToken) token).toMap(); + var token = AuthTokens.basic("username", "password", null); + var map = ((InternalAuthToken) token).toMap(); assertEquals(3, map.size()); assertEquals("basic", map.get("scheme").asString()); @@ -143,34 +143,33 @@ void shouldAllowBasicAuthTokenWithNullRealm() { @Test void shouldNotAllowBearerAuthTokenWithNullToken() { - NullPointerException e = assertThrows(NullPointerException.class, () -> AuthTokens.bearer(null)); + var e = assertThrows(NullPointerException.class, () -> AuthTokens.bearer(null)); assertEquals("Token can't be null", e.getMessage()); } @Test void shouldNotAllowKerberosAuthTokenWithNullTicket() { - NullPointerException e = assertThrows(NullPointerException.class, () -> AuthTokens.kerberos(null)); + var e = assertThrows(NullPointerException.class, () -> AuthTokens.kerberos(null)); assertEquals("Ticket can't be null", e.getMessage()); } @Test void shouldNotAllowCustomAuthTokenWithNullPrincipal() { - NullPointerException e = assertThrows( + var e = assertThrows( NullPointerException.class, () -> AuthTokens.custom(null, "credentials", "realm", "scheme")); assertEquals("Principal can't be null", e.getMessage()); } @Test void shouldNotAllowCustomAuthTokenWithNullCredentials() { - NullPointerException e = - assertThrows(NullPointerException.class, () -> AuthTokens.custom("principal", null, "realm", "scheme")); + var e = assertThrows(NullPointerException.class, () -> AuthTokens.custom("principal", null, "realm", "scheme")); assertEquals("Credentials can't be null", e.getMessage()); } @Test void shouldAllowCustomAuthTokenWithNullRealm() { - AuthToken token = AuthTokens.custom("principal", "credentials", null, "scheme"); - Map map = ((InternalAuthToken) token).toMap(); + var token = AuthTokens.custom("principal", "credentials", null, "scheme"); + var map = ((InternalAuthToken) token).toMap(); assertEquals(3, map.size()); assertEquals("scheme", map.get("scheme").asString()); @@ -180,7 +179,7 @@ void shouldAllowCustomAuthTokenWithNullRealm() { @Test void shouldNotAllowCustomAuthTokenWithNullScheme() { - NullPointerException e = assertThrows( + var e = assertThrows( NullPointerException.class, () -> AuthTokens.custom("principal", "credentials", "realm", null)); assertEquals("Scheme can't be null", e.getMessage()); } diff --git a/driver/src/test/java/org/neo4j/driver/ConfigTest.java b/driver/src/test/java/org/neo4j/driver/ConfigTest.java index 0d0b56ed8f..d563940093 100644 --- a/driver/src/test/java/org/neo4j/driver/ConfigTest.java +++ b/driver/src/test/java/org/neo4j/driver/ConfigTest.java @@ -33,8 +33,6 @@ import java.io.File; import java.io.IOException; import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.logging.Level; @@ -56,10 +54,10 @@ class ConfigTest { @Test void shouldDefaultToKnownCerts() { // Given - Config config = Config.defaultConfig(); + var config = Config.defaultConfig(); // When - Config.TrustStrategy authConfig = config.trustStrategy(); + var authConfig = config.trustStrategy(); // Then assertEquals(authConfig.strategy(), Config.TrustStrategy.Strategy.TRUST_SYSTEM_CA_SIGNED_CERTIFICATES); @@ -68,13 +66,13 @@ void shouldDefaultToKnownCerts() { @Test void shouldChangeToTrustedCert() { // Given - File trustedCert = new File("trusted_cert"); - Config config = Config.builder() + var trustedCert = new File("trusted_cert"); + var config = Config.builder() .withTrustStrategy(Config.TrustStrategy.trustCustomCertificateSignedBy(trustedCert)) .build(); // When - Config.TrustStrategy authConfig = config.trustStrategy(); + var authConfig = config.trustStrategy(); // Then assertEquals(authConfig.strategy(), Config.TrustStrategy.Strategy.TRUST_CUSTOM_CA_SIGNED_CERTIFICATES); @@ -84,7 +82,7 @@ void shouldChangeToTrustedCert() { @Test void shouldSupportLivenessCheckTimeoutSetting() { - Config config = Config.builder() + var config = Config.builder() .withConnectionLivenessCheckTimeout(42, TimeUnit.SECONDS) .build(); @@ -93,7 +91,7 @@ void shouldSupportLivenessCheckTimeoutSetting() { @Test void shouldAllowZeroConnectionLivenessCheckTimeout() { - Config config = Config.builder() + var config = Config.builder() .withConnectionLivenessCheckTimeout(0, TimeUnit.SECONDS) .build(); @@ -102,7 +100,7 @@ void shouldAllowZeroConnectionLivenessCheckTimeout() { @Test void shouldAllowNegativeConnectionLivenessCheckTimeout() { - Config config = Config.builder() + var config = Config.builder() .withConnectionLivenessCheckTimeout(-42, TimeUnit.SECONDS) .build(); @@ -116,7 +114,7 @@ void shouldHaveCorrectMaxConnectionLifetime() { @Test void shouldSupportMaxConnectionLifetimeSetting() { - Config config = + var config = Config.builder().withMaxConnectionLifetime(42, TimeUnit.SECONDS).build(); assertEquals(TimeUnit.SECONDS.toMillis(42), config.maxConnectionLifetimeMillis()); @@ -124,7 +122,7 @@ void shouldSupportMaxConnectionLifetimeSetting() { @Test void shouldAllowZeroConnectionMaxConnectionLifetime() { - Config config = + var config = Config.builder().withMaxConnectionLifetime(0, TimeUnit.SECONDS).build(); assertEquals(0, config.maxConnectionLifetimeMillis()); @@ -132,7 +130,7 @@ void shouldAllowZeroConnectionMaxConnectionLifetime() { @Test void shouldAllowNegativeConnectionMaxConnectionLifetime() { - Config config = Config.builder() + var config = Config.builder() .withMaxConnectionLifetime(-42, TimeUnit.SECONDS) .build(); @@ -150,34 +148,32 @@ void shouldTurnOnLeakedSessionsLogging() { @Test void shouldHaveDefaultConnectionTimeout() { - Config defaultConfig = Config.defaultConfig(); + var defaultConfig = Config.defaultConfig(); assertEquals(TimeUnit.SECONDS.toMillis(30), defaultConfig.connectionTimeoutMillis()); } @Test void shouldRespectConfiguredConnectionTimeout() { - Config config = - Config.builder().withConnectionTimeout(42, TimeUnit.HOURS).build(); + var config = Config.builder().withConnectionTimeout(42, TimeUnit.HOURS).build(); assertEquals(TimeUnit.HOURS.toMillis(42), config.connectionTimeoutMillis()); } @Test void shouldAllowConnectionTimeoutOfZero() { - Config config = - Config.builder().withConnectionTimeout(0, TimeUnit.SECONDS).build(); + var config = Config.builder().withConnectionTimeout(0, TimeUnit.SECONDS).build(); assertEquals(0, config.connectionTimeoutMillis()); } @Test void shouldThrowForNegativeConnectionTimeout() { - Config.ConfigBuilder builder = Config.builder(); + var builder = Config.builder(); assertThrows(IllegalArgumentException.class, () -> builder.withConnectionTimeout(-42, TimeUnit.SECONDS)); } @Test void shouldThrowForTooLargeConnectionTimeout() { - Config.ConfigBuilder builder = Config.builder(); + var builder = Config.builder(); assertThrows( IllegalArgumentException.class, @@ -186,14 +182,14 @@ void shouldThrowForTooLargeConnectionTimeout() { @Test void shouldNotAllowNegativeMaxRetryTimeMs() { - Config.ConfigBuilder builder = Config.builder(); + var builder = Config.builder(); assertThrows(IllegalArgumentException.class, () -> builder.withMaxTransactionRetryTime(-42, TimeUnit.SECONDS)); } @Test void shouldAllowZeroMaxRetryTimeMs() { - Config config = Config.builder() + var config = Config.builder() .withMaxTransactionRetryTime(0, TimeUnit.SECONDS) .build(); @@ -202,7 +198,7 @@ void shouldAllowZeroMaxRetryTimeMs() { @Test void shouldAllowPositiveRetryAttempts() { - Config config = Config.builder() + var config = Config.builder() .withMaxTransactionRetryTime(42, TimeUnit.SECONDS) .build(); @@ -216,21 +212,21 @@ void shouldHaveCorrectDefaultMaxConnectionPoolSize() { @Test void shouldAllowPositiveMaxConnectionPoolSize() { - Config config = Config.builder().withMaxConnectionPoolSize(42).build(); + var config = Config.builder().withMaxConnectionPoolSize(42).build(); assertEquals(42, config.maxConnectionPoolSize()); } @Test void shouldAllowNegativeMaxConnectionPoolSize() { - Config config = Config.builder().withMaxConnectionPoolSize(-42).build(); + var config = Config.builder().withMaxConnectionPoolSize(-42).build(); assertEquals(Integer.MAX_VALUE, config.maxConnectionPoolSize()); } @Test void shouldDisallowZeroMaxConnectionPoolSize() { - IllegalArgumentException e = assertThrows( + var e = assertThrows( IllegalArgumentException.class, () -> Config.builder().withMaxConnectionPoolSize(0).build()); assertEquals("Zero value is not supported", e.getMessage()); @@ -243,7 +239,7 @@ void shouldHaveCorrectDefaultConnectionAcquisitionTimeout() { @Test void shouldAllowPositiveConnectionAcquisitionTimeout() { - Config config = Config.builder() + var config = Config.builder() .withConnectionAcquisitionTimeout(42, TimeUnit.SECONDS) .build(); @@ -252,7 +248,7 @@ void shouldAllowPositiveConnectionAcquisitionTimeout() { @Test void shouldAllowNegativeConnectionAcquisitionTimeout() { - Config config = Config.builder() + var config = Config.builder() .withConnectionAcquisitionTimeout(-42, TimeUnit.HOURS) .build(); @@ -261,7 +257,7 @@ void shouldAllowNegativeConnectionAcquisitionTimeout() { @Test void shouldAllowConnectionAcquisitionTimeoutOfZero() { - Config config = Config.builder() + var config = Config.builder() .withConnectionAcquisitionTimeout(0, TimeUnit.DAYS) .build(); @@ -270,7 +266,7 @@ void shouldAllowConnectionAcquisitionTimeoutOfZero() { @Test void shouldEnableAndDisableHostnameVerificationOnTrustStrategy() { - Config.TrustStrategy trustStrategy = Config.TrustStrategy.trustSystemCertificates(); + var trustStrategy = Config.TrustStrategy.trustSystemCertificates(); assertTrue(trustStrategy.isHostnameVerificationEnabled()); assertSame(trustStrategy, trustStrategy.withHostnameVerification()); @@ -282,7 +278,7 @@ void shouldEnableAndDisableHostnameVerificationOnTrustStrategy() { @Test void shouldEnableAndDisableCertificateRevocationChecksOnTestStrategy() { - Config.TrustStrategy trustStrategy = Config.TrustStrategy.trustSystemCertificates(); + var trustStrategy = Config.TrustStrategy.trustSystemCertificates(); assertEquals(NO_CHECKS, trustStrategy.revocationCheckingStrategy()); assertSame(trustStrategy, trustStrategy.withoutCertificateRevocationChecks()); @@ -297,8 +293,8 @@ void shouldEnableAndDisableCertificateRevocationChecksOnTestStrategy() { @Test void shouldAllowToConfigureResolver() { - ServerAddressResolver resolver = mock(ServerAddressResolver.class); - Config config = Config.builder().withResolver(resolver).build(); + var resolver = mock(ServerAddressResolver.class); + var config = Config.builder().withResolver(resolver).build(); assertEquals(resolver, config.resolver()); } @@ -310,14 +306,14 @@ void shouldNotAllowNullResolver() { @Test void shouldDefaultToDefaultFetchSize() { - Config config = Config.defaultConfig(); + var config = Config.defaultConfig(); assertEquals(DEFAULT_FETCH_SIZE, config.fetchSize()); } @ParameterizedTest @ValueSource(longs = {100, 1, 1000, Long.MAX_VALUE, -1}) void shouldChangeFetchSize(long value) { - Config config = Config.builder().withFetchSize(value).build(); + var config = Config.builder().withFetchSize(value).build(); assertEquals(value, config.fetchSize()); } @@ -332,7 +328,7 @@ void shouldErrorWithIllegalFetchSize(long value) { @ParameterizedTest @ValueSource(ints = {100, 1, 1000, Integer.MAX_VALUE}) void shouldChangeEventLoopThreads(int value) { - Config config = Config.builder().withEventLoopThreads(value).build(); + var config = Config.builder().withEventLoopThreads(value).build(); assertEquals(value, config.eventLoopThreads()); } @@ -346,7 +342,7 @@ void shouldErrorWithIllegalEventLoopThreadsSize(int value) { @Test void shouldChangeUserAgent() { - Config config = Config.builder().withUserAgent("AwesomeDriver").build(); + var config = Config.builder().withUserAgent("AwesomeDriver").build(); assertEquals("AwesomeDriver", config.userAgent()); } @@ -362,8 +358,8 @@ void shouldErrorWithInvalidUserAgent() { @Test void shouldNotHaveMeterRegistryByDefault() { - Config config = Config.builder().build(); - MetricsAdapter metricsAdapter = config.metricsAdapter(); + var config = Config.builder().build(); + var metricsAdapter = config.metricsAdapter(); assertEquals(MetricsAdapter.DEV_NULL, metricsAdapter); assertFalse(config.isMetricsEnabled()); @@ -371,15 +367,14 @@ void shouldNotHaveMeterRegistryByDefault() { @Test void shouldNotAcceptNullMeterRegistry() { - Config.ConfigBuilder builder = Config.builder(); + var builder = Config.builder(); assertThrows(NullPointerException.class, () -> builder.withMetricsAdapter(null)); } @Test void shouldSetMetricsAdapter() { - Config config = - Config.builder().withMetricsAdapter(MetricsAdapter.DEFAULT).build(); - MetricsAdapter metricsAdapter = config.metricsAdapter(); + var config = Config.builder().withMetricsAdapter(MetricsAdapter.DEFAULT).build(); + var metricsAdapter = config.metricsAdapter(); assertEquals(MetricsAdapter.DEFAULT, metricsAdapter); assertTrue(config.isMetricsEnabled()); @@ -417,7 +412,7 @@ void shouldMaxTransactionRetryTimeMillis() { class SerializationTest { @Test void shouldSerialize() throws Exception { - Config config = Config.builder() + var config = Config.builder() .withMaxConnectionPoolSize(123) .withConnectionTimeout(6543L, TimeUnit.MILLISECONDS) .withConnectionAcquisitionTimeout(5432L, TimeUnit.MILLISECONDS) @@ -439,7 +434,7 @@ void shouldSerialize() throws Exception { Set.of(NotificationCategory.UNSUPPORTED, NotificationCategory.UNRECOGNIZED))) .build(); - Config verify = TestUtil.serializeAndReadBack(config, Config.class); + var verify = TestUtil.serializeAndReadBack(config, Config.class); assertEquals(config.maxConnectionPoolSize(), verify.maxConnectionPoolSize()); assertEquals(config.connectionTimeoutMillis(), verify.connectionTimeoutMillis()); @@ -476,15 +471,15 @@ void shouldSerialize() throws Exception { @Test void shouldSerializeSerializableLogging() throws IOException, ClassNotFoundException { - Config config = Config.builder() + var config = Config.builder() .withLogging(Logging.javaUtilLogging(Level.ALL)) .build(); - Config verify = TestUtil.serializeAndReadBack(config, Config.class); - Logging logging = verify.logging(); + var verify = TestUtil.serializeAndReadBack(config, Config.class); + var logging = verify.logging(); assertInstanceOf(JULogging.class, logging); - List loggingLevelFields = ReflectionSupport.findFields( + var loggingLevelFields = ReflectionSupport.findFields( JULogging.class, f -> "loggingLevel".equals(f.getName()), HierarchyTraversalMode.TOP_DOWN); assertFalse(loggingLevelFields.isEmpty()); loggingLevelFields.forEach(field -> { diff --git a/driver/src/test/java/org/neo4j/driver/GraphDatabaseTest.java b/driver/src/test/java/org/neo4j/driver/GraphDatabaseTest.java index 7e2ecd5fd7..23e00e2dd7 100644 --- a/driver/src/test/java/org/neo4j/driver/GraphDatabaseTest.java +++ b/driver/src/test/java/org/neo4j/driver/GraphDatabaseTest.java @@ -45,11 +45,11 @@ void throwsWhenBoltSchemeUsedWithRoutingParams() { @Test void shouldRespondToInterruptsWhenConnectingToUnresponsiveServer() throws Exception { - try (ServerSocket serverSocket = new ServerSocket(0)) { + try (var serverSocket = new ServerSocket(0)) { // setup other thread to interrupt current thread when it blocks TestUtil.interruptWhenInWaitingState(Thread.currentThread()); - final Driver driver = GraphDatabase.driver("bolt://localhost:" + serverSocket.getLocalPort()); + final var driver = GraphDatabase.driver("bolt://localhost:" + serverSocket.getLocalPort()); try { assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); } finally { @@ -61,25 +61,23 @@ void shouldRespondToInterruptsWhenConnectingToUnresponsiveServer() throws Except @Test void shouldPrintNiceErrorWhenConnectingToUnresponsiveServer() throws Exception { - int localPort = -1; - try (ServerSocket serverSocket = new ServerSocket(0)) { + var localPort = -1; + try (var serverSocket = new ServerSocket(0)) { localPort = serverSocket.getLocalPort(); } - final Driver driver = GraphDatabase.driver("bolt://localhost:" + localPort, INSECURE_CONFIG); - final ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); + final var driver = GraphDatabase.driver("bolt://localhost:" + localPort, INSECURE_CONFIG); + final var error = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); assertThat(error.getMessage(), containsString("Unable to connect to")); } @Test void shouldPrintNiceRoutingErrorWhenConnectingToUnresponsiveServer() throws Exception { - int localPort = -1; - try (ServerSocket serverSocket = new ServerSocket(0)) { + var localPort = -1; + try (var serverSocket = new ServerSocket(0)) { localPort = serverSocket.getLocalPort(); } - final Driver driver = GraphDatabase.driver("neo4j://localhost:" + localPort, INSECURE_CONFIG); - final ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); + final var driver = GraphDatabase.driver("neo4j://localhost:" + localPort, INSECURE_CONFIG); + final var error = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); assertThat(error.getMessage(), containsString("Unable to connect to")); } @@ -146,19 +144,19 @@ void shouldRejectNullAuthTokenManagerOnFactoryWithUriAndConfig() { } private static void testFailureWhenServerDoesNotRespond(boolean encrypted) throws IOException { - try (ServerSocket server = new ServerSocket(0)) // server that accepts connections but does not reply + try (var server = new ServerSocket(0)) // server that accepts connections but does not reply { - int connectionTimeoutMillis = 1_000; - Config config = createConfig(encrypted, connectionTimeoutMillis); - final Driver driver = GraphDatabase.driver(URI.create("bolt://localhost:" + server.getLocalPort()), config); + var connectionTimeoutMillis = 1_000; + var config = createConfig(encrypted, connectionTimeoutMillis); + final var driver = GraphDatabase.driver(URI.create("bolt://localhost:" + server.getLocalPort()), config); - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); + var e = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); assertEquals(e.getMessage(), "Unable to establish connection in " + connectionTimeoutMillis + "ms"); } } private static Config createConfig(boolean encrypted, int timeoutMillis) { - Config.ConfigBuilder configBuilder = Config.builder() + var configBuilder = Config.builder() .withConnectionTimeout(timeoutMillis, MILLISECONDS) .withLogging(DEV_NULL_LOGGING); diff --git a/driver/src/test/java/org/neo4j/driver/ParametersTest.java b/driver/src/test/java/org/neo4j/driver/ParametersTest.java index d7231b6991..39b2c542b5 100644 --- a/driver/src/test/java/org/neo4j/driver/ParametersTest.java +++ b/driver/src/test/java/org/neo4j/driver/ParametersTest.java @@ -65,7 +65,7 @@ static Stream addressesToParse() { @ParameterizedTest @MethodSource("addressesToParse") void shouldGiveHelpfulMessageOnMisalignedInput(Object obj, String expectedMsg) { - ClientException e = assertThrows(ClientException.class, () -> Values.parameters("1", obj, "2")); + var e = assertThrows(ClientException.class, () -> Values.parameters("1", obj, "2")); assertThat( e.getMessage(), startsWith("Parameters function requires an even number of arguments, alternating key and value.")); @@ -74,17 +74,16 @@ void shouldGiveHelpfulMessageOnMisalignedInput(Object obj, String expectedMsg) { @ParameterizedTest @MethodSource("addressesToParse") void shouldNotBePossibleToUseInvalidParameterTypesViaParameters(Object obj, String expectedMsg) { - Session session = mockedSession(); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN {a}", parameters("a", obj))); + var session = mockedSession(); + var e = assertThrows(ClientException.class, () -> session.run("RETURN {a}", parameters("a", obj))); assertEquals(expectedMsg, e.getMessage()); } @ParameterizedTest @MethodSource("addressesToParse") void shouldNotBePossibleToUseInvalidParametersViaMap(Object obj, String expectedMsg) { - Session session = mockedSession(); - ClientException e = - assertThrows(ClientException.class, () -> session.run("RETURN {a}", singletonMap("a", obj))); + var session = mockedSession(); + var e = assertThrows(ClientException.class, () -> session.run("RETURN {a}", singletonMap("a", obj))); assertEquals(expectedMsg, e.getMessage()); } @@ -93,16 +92,16 @@ void shouldNotBePossibleToUseInvalidParametersViaMap(Object obj, String expected void shouldNotBePossibleToUseInvalidParametersViaRecord(Object obj, String expectedMsg) { assumeTrue(obj instanceof Value); Record record = new InternalRecord(singletonList("a"), new Value[] {(Value) obj}); - Session session = mockedSession(); + var session = mockedSession(); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN {a}", record)); + var e = assertThrows(ClientException.class, () -> session.run("RETURN {a}", record)); assertEquals(expectedMsg, e.getMessage()); } private Session mockedSession() { - ConnectionProvider provider = mock(ConnectionProvider.class); - RetryLogic retryLogic = mock(RetryLogic.class); - NetworkSession session = new NetworkSession( + var provider = mock(ConnectionProvider.class); + var retryLogic = mock(RetryLogic.class); + var session = new NetworkSession( provider, retryLogic, defaultDatabase(), diff --git a/driver/src/test/java/org/neo4j/driver/QueryTest.java b/driver/src/test/java/org/neo4j/driver/QueryTest.java index 41132e46f1..2dbaf6893c 100644 --- a/driver/src/test/java/org/neo4j/driver/QueryTest.java +++ b/driver/src/test/java/org/neo4j/driver/QueryTest.java @@ -31,10 +31,10 @@ class QueryTest { @Test void shouldConstructQueryWithParameters() { // given - String text = "MATCH (n) RETURN n"; + var text = "MATCH (n) RETURN n"; // when - Query query = new Query(text, Values.EmptyMap); + var query = new Query(text, Values.EmptyMap); // then assertThat(query.text(), equalTo(text)); @@ -44,10 +44,10 @@ void shouldConstructQueryWithParameters() { @Test void shouldConstructQueryWithNoParameters() { // given - String text = "MATCH (n) RETURN n"; + var text = "MATCH (n) RETURN n"; // when - Query query = new Query(text); + var query = new Query(text); // then assertThat(query.text(), equalTo(text)); @@ -57,7 +57,7 @@ void shouldConstructQueryWithNoParameters() { @Test void shouldUpdateQueryText() { // when - Query query = new Query("MATCH (n) RETURN n").withText("BOO"); + var query = new Query("MATCH (n) RETURN n").withText("BOO"); // then assertThat(query.text(), equalTo("BOO")); @@ -67,9 +67,9 @@ void shouldUpdateQueryText() { @Test void shouldReplaceQueryParameters() { // when - String text = "MATCH (n) RETURN n"; - Value initialParameters = parameters("a", 1, "b", 2); - Query query = new Query("MATCH (n) RETURN n").withParameters(initialParameters); + var text = "MATCH (n) RETURN n"; + var initialParameters = parameters("a", 1, "b", 2); + var query = new Query("MATCH (n) RETURN n").withParameters(initialParameters); // then assertThat(query.text(), equalTo(text)); @@ -79,10 +79,10 @@ void shouldReplaceQueryParameters() { @Test void shouldReplaceMapParameters() { // when - String text = "MATCH (n) RETURN n"; + var text = "MATCH (n) RETURN n"; Map parameters = new HashMap<>(); parameters.put("a", 1); - Query query = new Query("MATCH (n) RETURN n").withParameters(parameters); + var query = new Query("MATCH (n) RETURN n").withParameters(parameters); // then assertThat(query.text(), equalTo(text)); @@ -92,9 +92,9 @@ void shouldReplaceMapParameters() { @Test void shouldUpdateQueryParameters() { // when - String text = "MATCH (n) RETURN n"; - Value initialParameters = parameters("a", 1, "b", 2, "c", 3); - Query query = new Query("MATCH (n) RETURN n", initialParameters) + var text = "MATCH (n) RETURN n"; + var initialParameters = parameters("a", 1, "b", 2, "c", 3); + var query = new Query("MATCH (n) RETURN n", initialParameters) .withUpdatedParameters(parameters("a", 0, "b", Values.NULL)); // then diff --git a/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java b/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java index 687a72cbff..0a80570268 100644 --- a/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java +++ b/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java @@ -48,7 +48,7 @@ class SessionConfigTest { @Test void shouldReturnDefaultValues() { - SessionConfig config = defaultConfig(); + var config = defaultConfig(); assertEquals(AccessMode.WRITE, config.defaultAccessMode()); assertFalse(config.database().isPresent()); @@ -59,14 +59,14 @@ void shouldReturnDefaultValues() { @ParameterizedTest @EnumSource(AccessMode.class) void shouldChangeAccessMode(AccessMode mode) { - SessionConfig config = builder().withDefaultAccessMode(mode).build(); + var config = builder().withDefaultAccessMode(mode).build(); assertEquals(mode, config.defaultAccessMode()); } @ParameterizedTest @ValueSource(strings = {"foo", "data", "my awesome database", " "}) void shouldChangeDatabaseName(String databaseName) { - SessionConfig config = builder().withDatabase(databaseName).build(); + var config = builder().withDatabase(databaseName).build(); assertTrue(config.database().isPresent()); assertEquals(databaseName, config.database().get()); } @@ -104,56 +104,54 @@ static Stream someConfigs() { @ParameterizedTest @ValueSource(strings = {""}) void shouldForbiddenEmptyStringDatabaseName(String databaseName) { - IllegalArgumentException error = - assertThrows(IllegalArgumentException.class, () -> builder().withDatabase(databaseName)); + var error = assertThrows(IllegalArgumentException.class, () -> builder().withDatabase(databaseName)); assertTrue(error.getMessage().startsWith("Illegal database name ")); } @Test void shouldAcceptNullBookmarks() { - SessionConfig config = builder().withBookmarks((Bookmark[]) null).build(); + var config = builder().withBookmarks((Bookmark[]) null).build(); assertNull(config.bookmarks()); - SessionConfig config2 = builder().withBookmarks((List) null).build(); + var config2 = builder().withBookmarks((List) null).build(); assertNull(config2.bookmarks()); } @Test void shouldAcceptEmptyBookmarks() { - SessionConfig config = builder().withBookmarks().build(); + var config = builder().withBookmarks().build(); assertEquals(emptyList(), config.bookmarks()); - SessionConfig config2 = builder().withBookmarks(emptyList()).build(); + var config2 = builder().withBookmarks(emptyList()).build(); assertEquals(emptyList(), config2.bookmarks()); } @Test void shouldAcceptBookmarks() { - Bookmark one = parse("one"); - Bookmark two = parse("two"); - SessionConfig config = builder().withBookmarks(one, two).build(); + var one = parse("one"); + var two = parse("two"); + var config = builder().withBookmarks(one, two).build(); assertEquals(Arrays.asList(one, two), config.bookmarks()); - SessionConfig config2 = builder().withBookmarks(Arrays.asList(one, two)).build(); + var config2 = builder().withBookmarks(Arrays.asList(one, two)).build(); assertEquals(Arrays.asList(one, two), config2.bookmarks()); } @Test void shouldAcceptNullInBookmarks() { - Bookmark one = parse("one"); - Bookmark two = parse("two"); - SessionConfig config = builder().withBookmarks(one, two, null).build(); + var one = parse("one"); + var two = parse("two"); + var config = builder().withBookmarks(one, two, null).build(); assertEquals(Arrays.asList(one, two, null), config.bookmarks()); - SessionConfig config2 = - builder().withBookmarks(Arrays.asList(one, two, null)).build(); + var config2 = builder().withBookmarks(Arrays.asList(one, two, null)).build(); assertEquals(Arrays.asList(one, two, null), config2.bookmarks()); } @ParameterizedTest @ValueSource(longs = {100, 1, 1000, Long.MAX_VALUE, -1}) void shouldChangeFetchSize(long value) { - SessionConfig config = builder().withFetchSize(value).build(); + var config = builder().withFetchSize(value).build(); assertEquals(Optional.of(value), config.fetchSize()); } @@ -167,8 +165,8 @@ void shouldErrorWithIllegalFetchSize(long value) { @Test void shouldTwoConfigBeEqual() { - SessionConfig config1 = builder().withFetchSize(100).build(); - SessionConfig config2 = builder().withFetchSize(100).build(); + var config1 = builder().withFetchSize(100).build(); + var config2 = builder().withFetchSize(100).build(); assertEquals(config1, config2); } @@ -176,7 +174,7 @@ void shouldTwoConfigBeEqual() { @Test @SuppressWarnings("deprecation") void shouldSerialize() throws Exception { - SessionConfig config = SessionConfig.builder() + var config = SessionConfig.builder() .withBookmarks( Bookmark.from(new HashSet<>(Arrays.asList("bookmarkA", "bookmarkB"))), Bookmark.from(new HashSet<>(Arrays.asList("bookmarkC", "bookmarkD")))) @@ -189,7 +187,7 @@ void shouldSerialize() throws Exception { .disableCategories(Set.of(NotificationCategory.UNSUPPORTED, NotificationCategory.UNRECOGNIZED))) .build(); - SessionConfig verify = TestUtil.serializeAndReadBack(config, SessionConfig.class); + var verify = TestUtil.serializeAndReadBack(config, SessionConfig.class); assertNotNull(verify.bookmarks()); diff --git a/driver/src/test/java/org/neo4j/driver/TransactionConfigTest.java b/driver/src/test/java/org/neo4j/driver/TransactionConfigTest.java index dbbabd00ce..5ba774f222 100644 --- a/driver/src/test/java/org/neo4j/driver/TransactionConfigTest.java +++ b/driver/src/test/java/org/neo4j/driver/TransactionConfigTest.java @@ -72,7 +72,7 @@ void shouldDisallowMetadataWithIllegalValues() { @Test void shouldHaveTimeout() { - TransactionConfig config = + var config = TransactionConfig.builder().withTimeout(Duration.ofSeconds(3)).build(); assertEquals(Duration.ofSeconds(3), config.timeout()); @@ -80,7 +80,7 @@ void shouldHaveTimeout() { @Test void shouldAllowDefaultTimeout() { - TransactionConfig config = TransactionConfig.builder() + var config = TransactionConfig.builder() .withTimeout(Duration.ofSeconds(3)) .withDefaultTimeout() .build(); @@ -90,8 +90,7 @@ void shouldAllowDefaultTimeout() { @Test void shouldAllowZeroTimeout() { - TransactionConfig config = - TransactionConfig.builder().withTimeout(Duration.ZERO).build(); + var config = TransactionConfig.builder().withTimeout(Duration.ZERO).build(); assertEquals(Duration.ZERO, config.timeout()); } @@ -103,9 +102,9 @@ void shouldHaveMetadata() { map.put("key2", true); map.put("key3", 42); - TransactionConfig config = TransactionConfig.builder().withMetadata(map).build(); + var config = TransactionConfig.builder().withMetadata(map).build(); - Map metadata = config.metadata(); + var metadata = config.metadata(); assertEquals(3, metadata.size()); assertEquals(value("value1"), metadata.get("key1")); @@ -121,10 +120,10 @@ void shouldNotModifyMetadataAfterItIsSuppliedToBuilder() { metadata.put("key2", true); metadata.put("key3", 42); - TransactionConfig.Builder builder = TransactionConfig.builder().withMetadata(metadata); + var builder = TransactionConfig.builder().withMetadata(metadata); metadata.put("key4", "what?"); - TransactionConfig config = builder.build(); + var config = builder.build(); assertEquals(3, config.metadata().size()); } @@ -135,12 +134,12 @@ void shouldSerialize() throws Exception { metadata.put("key2", true); metadata.put("key3", 42); - TransactionConfig config = TransactionConfig.builder() + var config = TransactionConfig.builder() .withTimeout(Duration.ofMillis(12345L)) .withMetadata(metadata) .build(); - TransactionConfig verify = TestUtil.serializeAndReadBack(config, TransactionConfig.class); + var verify = TestUtil.serializeAndReadBack(config, TransactionConfig.class); assertEquals(config.timeout(), verify.timeout()); assertEquals(config.metadata(), verify.metadata()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java index 2aefb2ccfd..7b7d6e0288 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java @@ -31,10 +31,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Driver; import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.util.DisabledOnNeo4jWith; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; @@ -75,7 +73,7 @@ void shouldReceiveBookmarkOnSuccessfulCommit() throws Throwable { @SuppressWarnings("deprecation") void shouldReceiveNewBookmarkOnSuccessfulCommit() throws Throwable { // Given - Bookmark initialBookmark = session.lastBookmark(); + var initialBookmark = session.lastBookmark(); assertBookmarkIsEmpty(initialBookmark); // When @@ -88,9 +86,9 @@ void shouldReceiveNewBookmarkOnSuccessfulCommit() throws Throwable { @Test void shouldThrowForInvalidBookmark() { - Bookmark invalidBookmark = parse("hi, this is an invalid bookmark"); + var invalidBookmark = parse("hi, this is an invalid bookmark"); - try (Session session = + try (var session = driver.session(builder().withBookmarks(invalidBookmark).build())) { assertThrows(ClientException.class, session::beginTransaction); } @@ -103,10 +101,10 @@ void bookmarkRemainsAfterRolledBackTx() { createNodeInTx(session); - Bookmark bookmark = session.lastBookmark(); + var bookmark = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark); - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE (a:Person)"); tx.rollback(); } @@ -121,10 +119,10 @@ void bookmarkRemainsAfterTxFailure() { createNodeInTx(session); - Bookmark bookmark = session.lastBookmark(); + var bookmark = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark); - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); assertThrows(ClientException.class, () -> tx.run("RETURN")); assertEquals(bookmark, session.lastBookmark()); @@ -137,7 +135,7 @@ void bookmarkRemainsAfterSuccessfulSessionRun() { createNodeInTx(session); - Bookmark bookmark = session.lastBookmark(); + var bookmark = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark); session.run("RETURN 1").consume(); @@ -152,7 +150,7 @@ void bookmarkRemainsAfterFailedSessionRun() { createNodeInTx(session); - Bookmark bookmark = session.lastBookmark(); + var bookmark = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark); assertThrows(ClientException.class, () -> session.run("RETURN").consume()); @@ -165,15 +163,15 @@ void bookmarkIsUpdatedOnEveryCommittedTx() { assertBookmarkIsEmpty(session.lastBookmark()); createNodeInTx(session); - Bookmark bookmark1 = session.lastBookmark(); + var bookmark1 = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark1); createNodeInTx(session); - Bookmark bookmark2 = session.lastBookmark(); + var bookmark2 = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark2); createNodeInTx(session); - Bookmark bookmark3 = session.lastBookmark(); + var bookmark3 = session.lastBookmark(); assertBookmarkContainsSingleValue(bookmark3); assertBookmarksContainsSingleUniqueValues(bookmark1, bookmark2, bookmark3); @@ -182,8 +180,8 @@ void bookmarkIsUpdatedOnEveryCommittedTx() { @Test @SuppressWarnings("deprecation") void createSessionWithInitialBookmark() { - Bookmark bookmark = parse("TheBookmark"); - try (Session session = driver.session(builder().withBookmarks(bookmark).build())) { + var bookmark = parse("TheBookmark"); + try (var session = driver.session(builder().withBookmarks(bookmark).build())) { assertEquals(bookmark, session.lastBookmark()); } } @@ -191,14 +189,14 @@ void createSessionWithInitialBookmark() { @Test @SuppressWarnings("deprecation") void createSessionWithAccessModeAndInitialBookmark() { - Bookmark bookmark = parse("TheBookmark"); - try (Session session = driver.session(builder().withBookmarks(bookmark).build())) { + var bookmark = parse("TheBookmark"); + try (var session = driver.session(builder().withBookmarks(bookmark).build())) { assertEquals(bookmark, session.lastBookmark()); } } private static void createNodeInTx(Session session) { - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE (a:Person)"); tx.commit(); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/ChannelConnectorImplIT.java b/driver/src/test/java/org/neo4j/driver/integration/ChannelConnectorImplIT.java index c67d1394b0..af2082ab28 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ChannelConnectorImplIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ChannelConnectorImplIT.java @@ -33,14 +33,10 @@ import static org.neo4j.driver.testutil.TestUtil.await; import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelPipeline; import io.netty.handler.ssl.SslHandler; import java.io.IOException; import java.io.UncheckedIOException; import java.net.ServerSocket; -import java.net.Socket; import java.security.GeneralSecurityException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -48,7 +44,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.AuthToken; import org.neo4j.driver.AuthTokenManager; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.RevocationCheckingStrategy; @@ -94,9 +89,9 @@ void tearDown() { void shouldConnect() throws Exception { ChannelConnector connector = newConnector(neo4j.authTokenManager()); - ChannelFuture channelFuture = connector.connect(neo4j.address(), bootstrap); + var channelFuture = connector.connect(neo4j.address(), bootstrap); assertTrue(channelFuture.await(10, TimeUnit.SECONDS)); - Channel channel = channelFuture.channel(); + var channel = channelFuture.channel(); assertNull(channelFuture.get()); assertTrue(channel.isActive()); @@ -106,11 +101,11 @@ void shouldConnect() throws Exception { void shouldSetupHandlers() throws Exception { ChannelConnector connector = newConnector(neo4j.authTokenManager(), trustAllCertificates(), 10_000); - ChannelFuture channelFuture = connector.connect(neo4j.address(), bootstrap); + var channelFuture = connector.connect(neo4j.address(), bootstrap); assertTrue(channelFuture.await(10, TimeUnit.SECONDS)); - Channel channel = channelFuture.channel(); - ChannelPipeline pipeline = channel.pipeline(); + var channel = channelFuture.channel(); + var pipeline = channel.pipeline(); assertTrue(channel.isActive()); assertNotNull(pipeline.get(SslHandler.class)); @@ -121,11 +116,11 @@ void shouldSetupHandlers() throws Exception { void shouldFailToConnectToWrongAddress() throws Exception { ChannelConnector connector = newConnector(neo4j.authTokenManager()); - ChannelFuture channelFuture = connector.connect(new BoltServerAddress("wrong-localhost"), bootstrap); + var channelFuture = connector.connect(new BoltServerAddress("wrong-localhost"), bootstrap); assertTrue(channelFuture.await(10, TimeUnit.SECONDS)); - Channel channel = channelFuture.channel(); + var channel = channelFuture.channel(); - ExecutionException e = assertThrows(ExecutionException.class, channelFuture::get); + var e = assertThrows(ExecutionException.class, channelFuture::get); assertThat(e.getCause(), instanceOf(ServiceUnavailableException.class)); assertThat(e.getCause().getMessage(), startsWith("Unable to connect")); @@ -136,14 +131,14 @@ void shouldFailToConnectToWrongAddress() throws Exception { @DisabledOnNeo4jWith(BOLT_V51) @Test void shouldFailToConnectWithWrongCredentials() throws Exception { - AuthToken authToken = AuthTokens.basic("neo4j", "wrong-password"); + var authToken = AuthTokens.basic("neo4j", "wrong-password"); ChannelConnector connector = newConnector(new StaticAuthTokenManager(authToken)); - ChannelFuture channelFuture = connector.connect(neo4j.address(), bootstrap); + var channelFuture = connector.connect(neo4j.address(), bootstrap); assertTrue(channelFuture.await(10, TimeUnit.SECONDS)); - Channel channel = channelFuture.channel(); + var channel = channelFuture.channel(); - ExecutionException e = assertThrows(ExecutionException.class, channelFuture::get); + var e = assertThrows(ExecutionException.class, channelFuture::get); assertThat(e.getCause(), instanceOf(AuthenticationException.class)); assertFalse(channel.isActive()); } @@ -153,7 +148,7 @@ void shouldEnforceConnectTimeout() throws Exception { ChannelConnector connector = newConnector(neo4j.authTokenManager(), 1000); // try connect to a non-routable ip address 10.0.0.0, it will never respond - ChannelFuture channelFuture = connector.connect(new BoltServerAddress("10.0.0.0"), bootstrap); + var channelFuture = connector.connect(new BoltServerAddress("10.0.0.0"), bootstrap); assertThrows(ServiceUnavailableException.class, () -> await(channelFuture)); } @@ -172,13 +167,13 @@ void shouldFailWhenTLSHandshakeTakesTooLong() throws Exception { @Test void shouldThrowServiceUnavailableExceptionOnFailureDuringConnect() throws Exception { - ServerSocket server = new ServerSocket(0); - BoltServerAddress address = new BoltServerAddress("localhost", server.getLocalPort()); + var server = new ServerSocket(0); + var address = new BoltServerAddress("localhost", server.getLocalPort()); runAsync(() -> { try { // wait for a connection - Socket socket = server.accept(); + var socket = server.accept(); // and terminate it immediately so that client gets a "reset by peer" IOException socket.close(); server.close(); @@ -188,22 +183,22 @@ void shouldThrowServiceUnavailableExceptionOnFailureDuringConnect() throws Excep }); ChannelConnector connector = newConnector(neo4j.authTokenManager()); - ChannelFuture channelFuture = connector.connect(address, bootstrap); + var channelFuture = connector.connect(address, bootstrap); // connect operation should fail with ServiceUnavailableException assertThrows(ServiceUnavailableException.class, () -> await(channelFuture)); } private void testReadTimeoutOnConnect(SecurityPlan securityPlan) throws IOException { - try (ServerSocket server = new ServerSocket(0)) // server that accepts connections but does not reply + try (var server = new ServerSocket(0)) // server that accepts connections but does not reply { - int timeoutMillis = 1_000; - BoltServerAddress address = new BoltServerAddress("localhost", server.getLocalPort()); + var timeoutMillis = 1_000; + var address = new BoltServerAddress("localhost", server.getLocalPort()); ChannelConnector connector = newConnector(neo4j.authTokenManager(), securityPlan, timeoutMillis); - ChannelFuture channelFuture = connector.connect(address, bootstrap); + var channelFuture = connector.connect(address, bootstrap); - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, () -> await(channelFuture)); + var e = assertThrows(ServiceUnavailableException.class, () -> await(channelFuture)); assertEquals(e.getMessage(), "Unable to establish connection in " + timeoutMillis + "ms"); } } @@ -219,7 +214,7 @@ private ChannelConnectorImpl newConnector(AuthTokenManager authTokenManager, int private ChannelConnectorImpl newConnector( AuthTokenManager authTokenManager, SecurityPlan securityPlan, int connectTimeoutMillis) { - ConnectionSettings settings = new ConnectionSettings(authTokenManager, "test", connectTimeoutMillis); + var settings = new ConnectionSettings(authTokenManager, "test", connectTimeoutMillis); return new ChannelConnectorImpl( settings, securityPlan, diff --git a/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java b/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java index 70ab9553dc..886d7c3314 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java @@ -36,7 +36,6 @@ import io.netty.bootstrap.Bootstrap; import java.time.Clock; -import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.atomic.AtomicReference; @@ -54,8 +53,6 @@ import org.neo4j.driver.QueryRunner; import org.neo4j.driver.Record; import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.BoltAgentUtil; import org.neo4j.driver.internal.BoltServerAddress; @@ -72,10 +69,8 @@ import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.spi.ConnectionPool; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; import org.reactivestreams.Publisher; @@ -93,7 +88,7 @@ class ConnectionHandlingIT { @BeforeEach void createDriver() { - DriverFactoryWithConnectionPool driverFactory = new DriverFactoryWithConnectionPool(); + var driverFactory = new DriverFactoryWithConnectionPool(); var authTokenProvider = neo4j.authTokenManager(); driver = driverFactory.newInstance( neo4j.uri(), @@ -113,105 +108,105 @@ void closeDriver() { @Test void connectionUsedForSessionRunReturnedToThePoolWhenResultConsumed() { - Result result = createNodesInNewSession(12); + var result = createNodesInNewSession(12); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); result.consume(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); } @Test void connectionUsedForSessionRunReturnedToThePoolWhenResultSummaryObtained() { - Result result = createNodesInNewSession(5); + var result = createNodesInNewSession(5); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); - ResultSummary summary = result.consume(); + var summary = result.consume(); assertEquals(5, summary.counters().nodesCreated()); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); } @Test void connectionUsedForSessionRunReturnedToThePoolWhenResultFetchedInList() { - Result result = createNodesInNewSession(2); + var result = createNodesInNewSession(2); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); - List records = result.list(); + var records = result.list(); assertEquals(2, records.size()); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); } @Test void connectionUsedForSessionRunReturnedToThePoolWhenSingleRecordFetched() { - Result result = createNodesInNewSession(1); + var result = createNodesInNewSession(1); assertNotNull(result.single()); - Connection connection = connectionPool.lastAcquiredConnectionSpy; + var connection = connectionPool.lastAcquiredConnectionSpy; verify(connection).release(); } @Test void connectionUsedForSessionRunReturnedToThePoolWhenResultFetchedAsIterator() { - Result result = createNodesInNewSession(6); + var result = createNodesInNewSession(6); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); - int seenRecords = 0; + var seenRecords = 0; while (result.hasNext()) { assertNotNull(result.next()); seenRecords++; } assertEquals(6, seenRecords); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); } @Test void connectionUsedForSessionRunReturnedToThePoolOnServerFailure() { - try (Session session = driver.session()) { + try (var session = driver.session()) { // provoke division by zero assertThrows(ClientException.class, () -> session.run( "UNWIND range(10, -1, 0) AS i CREATE (n {index: 10/i}) RETURN n") .consume()); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1).release(); } } @Test void connectionUsedForTransactionReturnedToThePoolWhenTransactionCommitted() { - Session session = driver.session(); + var session = driver.session(); - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); - Result result = createNodes(5, tx); - int size = result.list().size(); + var result = createNodes(5, tx); + var size = result.list().size(); tx.commit(); tx.close(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); @@ -220,19 +215,19 @@ void connectionUsedForTransactionReturnedToThePoolWhenTransactionCommitted() { @Test void connectionUsedForTransactionReturnedToThePoolWhenTransactionRolledBack() { - Session session = driver.session(); + var session = driver.session(); - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); - Result result = createNodes(8, tx); - int size = result.list().size(); + var result = createNodes(8, tx); + var size = result.list().size(); tx.rollback(); tx.close(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1).release(); @@ -241,7 +236,7 @@ void connectionUsedForTransactionReturnedToThePoolWhenTransactionRolledBack() { @Test void connectionUsedForTransactionReturnedToThePoolWhenTransactionFailsToCommitted() { - try (Session session = driver.session()) { + try (var session = driver.session()) { if (neo4j.isNeo4j43OrEarlier()) { session.run("CREATE CONSTRAINT ON (book:Library) ASSERT exists(book.isbn)"); } else { @@ -249,12 +244,12 @@ void connectionUsedForTransactionReturnedToThePoolWhenTransactionFailsToCommitte } } - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, atLeastOnce()).release(); // connection used for constraint creation - Session session = driver.session(); - Transaction tx = session.beginTransaction(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var session = driver.session(); + var tx = session.beginTransaction(); + var connection2 = connectionPool.lastAcquiredConnectionSpy; verify(connection2, never()).release(); // property existence constraints are verified on commit, try to violate it @@ -268,30 +263,30 @@ void connectionUsedForTransactionReturnedToThePoolWhenTransactionFailsToCommitte @Test void connectionUsedForSessionRunReturnedToThePoolWhenSessionClose() { - Session session = driver.session(); + var session = driver.session(); createNodes(12, session); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); session.close(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1, times(2)).release(); } @Test void connectionUsedForBeginTxReturnedToThePoolWhenSessionClose() { - Session session = driver.session(); - Transaction tx = session.beginTransaction(); + var session = driver.session(); + var tx = session.beginTransaction(); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); session.close(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1, times(2)).release(); } @@ -300,19 +295,19 @@ void connectionUsedForBeginTxReturnedToThePoolWhenSessionClose() { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void sessionCloseShouldReleaseConnectionUsedBySessionRun() { - RxSession session = driver.rxSession(); - RxResult res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); + var session = driver.rxSession(); + var res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); // When we only run but not pull StepVerifier.create(Flux.from(res.keys())) .expectNext(singletonList("a")) .verifyComplete(); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); // Then we shall discard all results and commit StepVerifier.create(Mono.from(session.close())).verifyComplete(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1, times(2)).release(); } @@ -321,9 +316,9 @@ void sessionCloseShouldReleaseConnectionUsedBySessionRun() { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void resultRecordsShouldReleaseConnectionUsedBySessionRun() { - RxSession session = driver.rxSession(); - RxResult res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var session = driver.rxSession(); + var res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); + var connection1 = connectionPool.lastAcquiredConnectionSpy; assertNull(connection1); // When we run and pull @@ -332,7 +327,7 @@ void resultRecordsShouldReleaseConnectionUsedBySessionRun() { .expectNext(1, 2, 3, 4) .verifyComplete(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertNotSame(connection1, connection2); verify(connection2).release(); } @@ -341,14 +336,14 @@ void resultRecordsShouldReleaseConnectionUsedBySessionRun() { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void resultSummaryShouldReleaseConnectionUsedBySessionRun() { - RxSession session = driver.rxSession(); - RxResult res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var session = driver.rxSession(); + var res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); + var connection1 = connectionPool.lastAcquiredConnectionSpy; assertNull(connection1); StepVerifier.create(Mono.from(res.consume())).expectNextCount(1).verifyComplete(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertNotSame(connection1, connection2); verify(connection2).release(); } @@ -357,7 +352,7 @@ void resultSummaryShouldReleaseConnectionUsedBySessionRun() { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void txCommitShouldReleaseConnectionUsedByBeginTx() { - AtomicReference connection1Ref = new AtomicReference<>(); + var connection1Ref = new AtomicReference(); Function> sessionToRecordPublisher = (RxSession session) -> Flux.usingWhen( Mono.fromDirect(session.beginTransaction()), @@ -370,11 +365,11 @@ void txCommitShouldReleaseConnectionUsedByBeginTx() { (tx, error) -> tx.rollback(), RxTransaction::rollback); - Flux resultsFlux = Flux.usingWhen( + var resultsFlux = Flux.usingWhen( Mono.fromSupplier(driver::rxSession), sessionToRecordPublisher, session -> { - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1Ref.get(), connection2); verify(connection1Ref.get()).release(); return Mono.empty(); @@ -390,7 +385,7 @@ void txCommitShouldReleaseConnectionUsedByBeginTx() { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void txRollbackShouldReleaseConnectionUsedByBeginTx() { - AtomicReference connection1Ref = new AtomicReference<>(); + var connection1Ref = new AtomicReference(); Function> sessionToRecordPublisher = (RxSession session) -> Flux.usingWhen( Mono.fromDirect(session.beginTransaction()), @@ -403,11 +398,11 @@ void txRollbackShouldReleaseConnectionUsedByBeginTx() { (tx, error) -> tx.rollback(), RxTransaction::rollback); - Flux resultsFlux = Flux.usingWhen( + var resultsFlux = Flux.usingWhen( Mono.fromSupplier(driver::rxSession), sessionToRecordPublisher, session -> { - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1Ref.get(), connection2); verify(connection1Ref.get()).release(); return Mono.empty(); @@ -424,17 +419,17 @@ void txRollbackShouldReleaseConnectionUsedByBeginTx() { @SuppressWarnings("deprecation") void sessionCloseShouldReleaseConnectionUsedByBeginTx() { // Given - RxSession session = driver.rxSession(); - Publisher tx = session.beginTransaction(); + var session = driver.rxSession(); + var tx = session.beginTransaction(); // When we created a tx StepVerifier.create(Mono.from(tx)).expectNextCount(1).verifyComplete(); - Connection connection1 = connectionPool.lastAcquiredConnectionSpy; + var connection1 = connectionPool.lastAcquiredConnectionSpy; verify(connection1, never()).release(); // Then we shall discard all results and commit StepVerifier.create(Mono.from(session.close())).verifyComplete(); - Connection connection2 = connectionPool.lastAcquiredConnectionSpy; + var connection2 = connectionPool.lastAcquiredConnectionSpy; assertSame(connection1, connection2); verify(connection1, times(2)).release(); } @@ -461,14 +456,14 @@ protected ConnectionPool createConnectionPool( Config config, boolean ownsEventLoopGroup, RoutingContext routingContext) { - ConnectionSettings connectionSettings = new ConnectionSettings(authTokenManager, "test", 1000); - PoolSettings poolSettings = new PoolSettings( + var connectionSettings = new ConnectionSettings(authTokenManager, "test", 1000); + var poolSettings = new PoolSettings( config.maxConnectionPoolSize(), config.connectionAcquisitionTimeoutMillis(), config.maxConnectionLifetimeMillis(), config.idleTimeBeforeConnectionTest()); - Clock clock = createClock(); - ChannelConnector connector = super.createConnector( + var clock = createClock(); + var connector = super.createConnector( connectionSettings, securityPlan, config, clock, routingContext, BoltAgentUtil.VALUE); connectionPool = new MemorizingConnectionPool( connector, bootstrap, poolSettings, config.logging(), clock, ownsEventLoopGroup); @@ -496,7 +491,7 @@ void startMemorizing() { @Override public CompletionStage acquire(final BoltServerAddress address, AuthToken overrideAuthToken) { - Connection connection = await(super.acquire(address, overrideAuthToken)); + var connection = await(super.acquire(address, overrideAuthToken)); if (memorize) { // this connection pool returns spies so spies will be returned to the pool diff --git a/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java b/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java index c067de57de..8cf10b3c2d 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java @@ -28,7 +28,6 @@ import static org.junit.jupiter.api.Assertions.fail; import static org.neo4j.driver.internal.util.Matchers.connectionAcquisitionTimeoutError; -import io.netty.channel.Channel; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; @@ -87,11 +86,11 @@ void shouldRecoverFromDownedServer() throws Throwable { @Test void shouldDisposeChannelsBasedOnMaxLifetime() throws Exception { - FakeClock clock = new FakeClock(); - ChannelTrackingDriverFactory driverFactory = new ChannelTrackingDriverFactory(clock); + var clock = new FakeClock(); + var driverFactory = new ChannelTrackingDriverFactory(clock); - int maxConnLifetimeHours = 3; - Config config = Config.builder() + var maxConnLifetimeHours = 3; + var config = Config.builder() .withMaxConnectionLifetime(maxConnLifetimeHours, TimeUnit.HOURS) .build(); driver = driverFactory.newInstance( @@ -101,7 +100,7 @@ void shouldDisposeChannelsBasedOnMaxLifetime() throws Exception { startAndCloseTransactions(driver, 1); // verify that channel was created, it should be open and idle in the pool - List channels1 = driverFactory.channels(); + var channels1 = driverFactory.channels(); assertEquals(1, channels1.size()); assertTrue(channels1.get(0).isActive()); @@ -114,11 +113,11 @@ void shouldDisposeChannelsBasedOnMaxLifetime() throws Exception { startAndCloseTransactions(driver, 1); // old existing channel should not be reused because it is too old - List channels2 = driverFactory.channels(); + var channels2 = driverFactory.channels(); assertEquals(2, channels2.size()); - Channel channel1 = channels2.get(0); - Channel channel2 = channels2.get(1); + var channel1 = channels2.get(0); + var channel2 = channels2.get(1); // old existing should be closed in reasonable time assertTrue(channel1.closeFuture().await(20, SECONDS)); @@ -130,8 +129,8 @@ void shouldDisposeChannelsBasedOnMaxLifetime() throws Exception { @Test void shouldRespectMaxConnectionPoolSize() { - int maxPoolSize = 3; - Config config = Config.builder() + var maxPoolSize = 3; + var config = Config.builder() .withMaxConnectionPoolSize(maxPoolSize) .withConnectionAcquisitionTimeout(542, TimeUnit.MILLISECONDS) .withEventLoopThreads(1) @@ -139,8 +138,7 @@ void shouldRespectMaxConnectionPoolSize() { driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config); - ClientException e = - assertThrows(ClientException.class, () -> startAndCloseTransactions(driver, maxPoolSize + 1)); + var e = assertThrows(ClientException.class, () -> startAndCloseTransactions(driver, maxPoolSize + 1)); assertThat(e, is(connectionAcquisitionTimeoutError(542))); } @@ -149,24 +147,24 @@ private static void startAndCloseTransactions(Driver driver, int txCount) { List transactions = new ArrayList<>(txCount); List results = new ArrayList<>(txCount); try { - for (int i = 0; i < txCount; i++) { - Session session = driver.session(); + for (var i = 0; i < txCount; i++) { + var session = driver.session(); sessions.add(session); - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); transactions.add(tx); - Result result = tx.run("RETURN 1"); + var result = tx.run("RETURN 1"); results.add(result); } } finally { - for (Result result : results) { + for (var result : results) { result.consume(); } - for (Transaction tx : transactions) { + for (var tx : transactions) { tx.commit(); } - for (Session session : sessions) { + for (var session : sessions) { session.close(); } } @@ -174,8 +172,8 @@ private static void startAndCloseTransactions(Driver driver, int txCount) { private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory, long value, TimeUnit unit) throws InterruptedException { - long deadline = System.currentTimeMillis() + unit.toMillis(value); - int activeChannels = -1; + var deadline = System.currentTimeMillis() + unit.toMillis(value); + var activeChannels = -1; while (System.currentTimeMillis() < deadline) { activeChannels = driverFactory.activeChannels(neo4j.address()); if (activeChannels == 0) { @@ -235,7 +233,7 @@ public void run() { } void assertSessionsAvailableWithin(int timeoutSeconds) throws InterruptedException { - long deadline = System.currentTimeMillis() + 1000 * timeoutSeconds; + var deadline = System.currentTimeMillis() + 1000 * timeoutSeconds; while (System.currentTimeMillis() < deadline) { if (sessionsAreAvailable) { // Success! diff --git a/driver/src/test/java/org/neo4j/driver/integration/CredentialsIT.java b/driver/src/test/java/org/neo4j/driver/integration/CredentialsIT.java index b3ee52af7c..c0a1ee0700 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/CredentialsIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/CredentialsIT.java @@ -30,13 +30,9 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.AuthToken; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Session; -import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.AuthenticationException; import org.neo4j.driver.exceptions.SecurityException; import org.neo4j.driver.testutil.DatabaseExtension; @@ -50,19 +46,18 @@ class CredentialsIT { @Test void basicCredentialsShouldWork() { // When & Then - try (Driver driver = GraphDatabase.driver(neo4j.uri(), basic("neo4j", neo4j.adminPassword())); - Session session = driver.session()) { - Value single = session.run("RETURN 1").single().get(0); + try (var driver = GraphDatabase.driver(neo4j.uri(), basic("neo4j", neo4j.adminPassword())); + var session = driver.session()) { + var single = session.run("RETURN 1").single().get(0); assertThat(single.asLong(), equalTo(1L)); } } @Test void shouldGetHelpfulErrorOnInvalidCredentials() { - SecurityException e = assertThrows(SecurityException.class, () -> { - try (Driver driver = - GraphDatabase.driver(neo4j.uri(), basic("thisisnotthepassword", neo4j.adminPassword())); - Session session = driver.session()) { + var e = assertThrows(SecurityException.class, () -> { + try (var driver = GraphDatabase.driver(neo4j.uri(), basic("thisisnotthepassword", neo4j.adminPassword())); + var session = driver.session()) { session.run("RETURN 1"); } }); @@ -72,9 +67,9 @@ void shouldGetHelpfulErrorOnInvalidCredentials() { @Test void shouldBeAbleToProvideRealmWithBasicAuth() { // When & Then - try (Driver driver = GraphDatabase.driver(neo4j.uri(), basic("neo4j", neo4j.adminPassword(), "native")); - Session session = driver.session()) { - Value single = session.run("CREATE () RETURN 1").single().get(0); + try (var driver = GraphDatabase.driver(neo4j.uri(), basic("neo4j", neo4j.adminPassword(), "native")); + var session = driver.session()) { + var single = session.run("CREATE () RETURN 1").single().get(0); assertThat(single.asLong(), equalTo(1L)); } } @@ -82,10 +77,9 @@ void shouldBeAbleToProvideRealmWithBasicAuth() { @Test void shouldBeAbleToConnectWithCustomToken() { // When & Then - try (Driver driver = - GraphDatabase.driver(neo4j.uri(), custom("neo4j", neo4j.adminPassword(), "native", "basic")); - Session session = driver.session()) { - Value single = session.run("CREATE () RETURN 1").single().get(0); + try (var driver = GraphDatabase.driver(neo4j.uri(), custom("neo4j", neo4j.adminPassword(), "native", "basic")); + var session = driver.session()) { + var single = session.run("CREATE () RETURN 1").single().get(0); assertThat(single.asLong(), equalTo(1L)); } } @@ -95,10 +89,10 @@ void shouldBeAbleToConnectWithCustomTokenWithAdditionalParameters() { Map params = singletonMap("secret", 16); // When & Then - try (Driver driver = GraphDatabase.driver( + try (var driver = GraphDatabase.driver( neo4j.uri(), custom("neo4j", neo4j.adminPassword(), "native", "basic", params)); - Session session = driver.session()) { - Value single = session.run("CREATE () RETURN 1").single().get(0); + var session = driver.session()) { + var single = session.run("CREATE () RETURN 1").single().get(0); assertThat(single.asLong(), equalTo(1L)); } } @@ -114,10 +108,10 @@ void routingDriverShouldFailEarlyOnWrongCredentials() { } private void testDriverFailureOnWrongCredentials(String uri) { - Config config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); - AuthToken authToken = AuthTokens.basic("neo4j", "wrongSecret"); + var config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); + var authToken = AuthTokens.basic("neo4j", "wrongSecret"); - final Driver driver = GraphDatabase.driver(uri, authToken, config); + final var driver = GraphDatabase.driver(uri, authToken, config); assertThrows(AuthenticationException.class, driver::verifyConnectivity); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/DirectDriverIT.java b/driver/src/test/java/org/neo4j/driver/integration/DirectDriverIT.java index 43e3fd8bc9..3c77fc697c 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/DirectDriverIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/DirectDriverIT.java @@ -51,8 +51,8 @@ void closeDriver() { @Test void shouldAllowIPv6Address() { // Given - URI uri = URI.create("bolt://[::1]:" + neo4j.boltPort()); - BoltServerAddress address = new BoltServerAddress(uri); + var uri = URI.create("bolt://[::1]:" + neo4j.boltPort()); + var address = new BoltServerAddress(uri); // When driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); @@ -64,19 +64,18 @@ void shouldAllowIPv6Address() { @Test void shouldRejectInvalidAddress() { // Given - URI uri = URI.create("*"); + var uri = URI.create("*"); // When & Then - IllegalArgumentException e = - assertThrows(IllegalArgumentException.class, () -> GraphDatabase.driver(uri, neo4j.authTokenManager())); + var e = assertThrows(IllegalArgumentException.class, () -> GraphDatabase.driver(uri, neo4j.authTokenManager())); assertThat(e.getMessage(), equalTo("Scheme must not be null")); } @Test void shouldRegisterSingleServer() { // Given - URI uri = neo4j.uri(); - BoltServerAddress address = new BoltServerAddress(uri); + var uri = neo4j.uri(); + var address = new BoltServerAddress(uri); // When driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/DriverCloseIT.java b/driver/src/test/java/org/neo4j/driver/integration/DriverCloseIT.java index a5b6b46b72..30c8c69358 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/DriverCloseIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/DriverCloseIT.java @@ -30,7 +30,6 @@ import org.neo4j.driver.Config; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Session; import org.neo4j.driver.internal.spi.ConnectionPool; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -42,7 +41,7 @@ class DriverCloseIT { @Test void isEncryptedThrowsForClosedDriver() { - Driver driver = createDriver(); + var driver = createDriver(); driver.close(); @@ -51,7 +50,7 @@ void isEncryptedThrowsForClosedDriver() { @Test void sessionThrowsForClosedDriver() { - Driver driver = createDriver(); + var driver = createDriver(); driver.close(); @@ -60,7 +59,7 @@ void sessionThrowsForClosedDriver() { @Test void sessionWithModeThrowsForClosedDriver() { - Driver driver = createDriver(); + var driver = createDriver(); driver.close(); @@ -72,7 +71,7 @@ void sessionWithModeThrowsForClosedDriver() { @Test void closeClosedDriver() { - Driver driver = createDriver(); + var driver = createDriver(); driver.close(); driver.close(); @@ -81,8 +80,8 @@ void closeClosedDriver() { @Test void useSessionAfterDriverIsClosed() { - Driver driver = createDriver(); - Session session = driver.session(); + var driver = createDriver(); + var session = driver.session(); driver.close(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/EncryptionIT.java b/driver/src/test/java/org/neo4j/driver/integration/EncryptionIT.java index 99ed11db21..819c7c8cf4 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/EncryptionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/EncryptionIT.java @@ -30,11 +30,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.Scheme; import org.neo4j.driver.testutil.DatabaseExtension; @@ -94,17 +90,17 @@ private void testMatchingEncryption(BoltTlsLevel tlsLevel, boolean driverEncrypt config = newConfig(driverEncrypted); } - URI uri = URI.create(String.format( + var uri = URI.create(String.format( "%s://%s:%s", scheme, neo4j.uri().getHost(), neo4j.uri().getPort())); - try (Driver driver = GraphDatabase.driver(uri, neo4j.authTokenManager(), config)) { + try (var driver = GraphDatabase.driver(uri, neo4j.authTokenManager(), config)) { assertThat(driver.isEncrypted(), equalTo(driverEncrypted)); - try (Session session = driver.session()) { - Result result = session.run("RETURN 1"); + try (var session = driver.session()) { + var result = session.run("RETURN 1"); - Record record = result.next(); - int value = record.get(0).asInt(); + var record = result.next(); + var value = record.get(0).asInt(); assertThat(value, equalTo(1)); } } @@ -114,9 +110,9 @@ private void testMismatchingEncryption(BoltTlsLevel tlsLevel, boolean driverEncr Map tlsConfig = new HashMap<>(); tlsConfig.put(Neo4jSettings.BOLT_TLS_LEVEL, tlsLevel.toString()); neo4j.deleteAndStartNeo4j(tlsConfig); - Config config = newConfig(driverEncrypted); + var config = newConfig(driverEncrypted); - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, () -> GraphDatabase.driver( + var e = assertThrows(ServiceUnavailableException.class, () -> GraphDatabase.driver( neo4j.uri(), neo4j.authTokenManager(), config) .verifyConnectivity()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/EntityTypeIT.java b/driver/src/test/java/org/neo4j/driver/integration/EntityTypeIT.java index ea5af47e0b..6e8e5a072c 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/EntityTypeIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/EntityTypeIT.java @@ -23,12 +23,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Result; import org.neo4j.driver.testutil.ParallelizableIT; import org.neo4j.driver.testutil.SessionExtension; -import org.neo4j.driver.types.Node; -import org.neo4j.driver.types.Path; -import org.neo4j.driver.types.Relationship; @ParallelizableIT class EntityTypeIT { @@ -39,8 +35,8 @@ class EntityTypeIT { @SuppressWarnings("deprecation") void shouldReturnIdentitiesOfNodes() { // When - Result cursor = session.run("CREATE (n) RETURN n"); - Node node = cursor.single().get("n").asNode(); + var cursor = session.run("CREATE (n) RETURN n"); + var node = cursor.single().get("n").asNode(); // Then assertThat(node.id(), greaterThan(-1L)); @@ -50,8 +46,8 @@ void shouldReturnIdentitiesOfNodes() { @SuppressWarnings("deprecation") void shouldReturnIdentitiesOfRelationships() { // When - Result cursor = session.run("CREATE ()-[r:T]->() RETURN r"); - Relationship rel = cursor.single().get("r").asRelationship(); + var cursor = session.run("CREATE ()-[r:T]->() RETURN r"); + var rel = cursor.single().get("r").asRelationship(); // Then assertThat(rel.startNodeId(), greaterThan(-1L)); @@ -63,14 +59,14 @@ void shouldReturnIdentitiesOfRelationships() { @SuppressWarnings("deprecation") void shouldReturnIdentitiesOfPaths() { // When - Result cursor = session.run("CREATE p=()-[r:T]->() RETURN p"); - Path path = cursor.single().get("p").asPath(); + var cursor = session.run("CREATE p=()-[r:T]->() RETURN p"); + var path = cursor.single().get("p").asPath(); // Then assertThat(path.start().id(), greaterThan(-1L)); assertThat(path.end().id(), greaterThan(-1L)); - Path.Segment segment = path.iterator().next(); + var segment = path.iterator().next(); assertThat(segment.start().id(), greaterThan(-1L)); assertThat(segment.relationship().id(), greaterThan(-1L)); diff --git a/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java b/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java index ed9239d539..d8b38b13ce 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java @@ -35,12 +35,10 @@ import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; import static org.neo4j.driver.internal.util.Iterables.single; -import io.netty.channel.Channel; import java.io.IOException; import java.lang.reflect.Method; import java.net.URI; import java.util.Arrays; -import java.util.List; import java.util.Objects; import java.util.UUID; import java.util.function.Consumer; @@ -49,11 +47,8 @@ import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Result; import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.messaging.response.FailureMessage; @@ -72,8 +67,8 @@ class ErrorIT { @Test void shouldThrowHelpfulSyntaxError() { - ClientException e = assertThrows(ClientException.class, () -> { - Result result = session.run("invalid query"); + var e = assertThrows(ClientException.class, () -> { + var result = session.run("invalid query"); result.consume(); }); @@ -83,7 +78,7 @@ void shouldThrowHelpfulSyntaxError() { @Test void shouldNotAllowMoreTxAfterClientException() { // Given - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); // And Given an error has occurred try { @@ -93,8 +88,8 @@ void shouldNotAllowMoreTxAfterClientException() { } // Expect - ClientException e = assertThrows(ClientException.class, () -> { - Result cursor = tx.run("RETURN 1"); + var e = assertThrows(ClientException.class, () -> { + var cursor = tx.run("RETURN 1"); cursor.single().get("1").asInt(); }); assertThat(e.getMessage(), startsWith("Cannot run more queries in this transaction")); @@ -110,8 +105,8 @@ void shouldAllowNewQueryAfterRecoverableError() { } // When - Result cursor = session.run("RETURN 1"); - int val = cursor.single().get("1").asInt(); + var cursor = session.run("RETURN 1"); + var val = cursor.single().get("1").asInt(); // Then assertThat(val, equalTo(1)); @@ -120,16 +115,16 @@ void shouldAllowNewQueryAfterRecoverableError() { @Test void shouldAllowNewTransactionAfterRecoverableError() { // Given an error has occurred in a prior transaction - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("invalid").consume(); } catch (ClientException e) { /*empty*/ } // When - try (Transaction tx = session.beginTransaction()) { - Result cursor = tx.run("RETURN 1"); - int val = cursor.single().get("1").asInt(); + try (var tx = session.beginTransaction()) { + var cursor = tx.run("RETURN 1"); + var val = cursor.single().get("1").asInt(); // Then assertThat(val, equalTo(1)); @@ -138,8 +133,8 @@ void shouldAllowNewTransactionAfterRecoverableError() { @Test void shouldExplainConnectionError() { - final Driver driver = GraphDatabase.driver("bolt://localhost:7777"); - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); + final var driver = GraphDatabase.driver("bolt://localhost:7777"); + var e = assertThrows(ServiceUnavailableException.class, driver::verifyConnectivity); assertEquals( "Unable to connect to localhost:7777, ensure the database is running " @@ -149,7 +144,7 @@ void shouldExplainConnectionError() { @Test void shouldHandleFailureAtRunTime() { - String label = UUID.randomUUID().toString(); // avoid clashes with other tests + var label = UUID.randomUUID().toString(); // avoid clashes with other tests String query; if (session.isNeo4j43OrEarlier()) { @@ -159,15 +154,15 @@ void shouldHandleFailureAtRunTime() { } // given - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run(query); tx.commit(); // and - Transaction anotherTx = session.beginTransaction(); + var anotherTx = session.beginTransaction(); // then expect - ClientException e = assertThrows(ClientException.class, () -> anotherTx.run(query)); + var e = assertThrows(ClientException.class, () -> anotherTx.run(query)); anotherTx.rollback(); assertThat(e.getMessage(), containsString(label)); assertThat(e.getMessage(), containsString("name")); @@ -175,12 +170,12 @@ void shouldHandleFailureAtRunTime() { @Test void shouldGetHelpfulErrorWhenTryingToConnectToHttpPort() { - Config config = Config.builder().withoutEncryption().build(); + var config = Config.builder().withoutEncryption().build(); - URI boltUri = session.uri(); - URI uri = URI.create(String.format("%s://%s:%d", boltUri.getScheme(), boltUri.getHost(), session.httpPort())); - final Driver driver = GraphDatabase.driver(uri, config); - ClientException e = assertThrows(ClientException.class, driver::verifyConnectivity); + var boltUri = session.uri(); + var uri = URI.create(String.format("%s://%s:%d", boltUri.getScheme(), boltUri.getHost(), session.httpPort())); + final var driver = GraphDatabase.driver(uri, config); + var e = assertThrows(ClientException.class, driver::verifyConnectivity); assertEquals( "Server responded HTTP. Make sure you are not trying to connect to the http endpoint " + "(HTTP defaults to port 7474 whereas BOLT defaults to port 7687)", @@ -189,16 +184,16 @@ void shouldGetHelpfulErrorWhenTryingToConnectToHttpPort() { @Test void shouldCloseChannelOnRuntimeExceptionInOutboundMessage() throws InterruptedException { - RuntimeException error = new RuntimeException("Unable to encode message"); - Throwable queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeWriterThrow(error)); + var error = new RuntimeException("Unable to encode message"); + var queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeWriterThrow(error)); assertEquals(error, queryError); } @Test void shouldCloseChannelOnIOExceptionInOutboundMessage() throws InterruptedException { - IOException error = new IOException("Unable to write"); - Throwable queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeWriterThrow(error)); + var error = new IOException("Unable to write"); + var queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeWriterThrow(error)); assertThat(queryError, instanceOf(ServiceUnavailableException.class)); assertEquals("Connection to the database failed", queryError.getMessage()); @@ -207,16 +202,16 @@ void shouldCloseChannelOnIOExceptionInOutboundMessage() throws InterruptedExcept @Test void shouldCloseChannelOnRuntimeExceptionInInboundMessage() throws InterruptedException { - RuntimeException error = new RuntimeException("Unable to decode message"); - Throwable queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderThrow(error)); + var error = new RuntimeException("Unable to decode message"); + var queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderThrow(error)); assertEquals(error, queryError); } @Test void shouldCloseChannelOnIOExceptionInInboundMessage() throws InterruptedException { - IOException error = new IOException("Unable to read"); - Throwable queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderThrow(error)); + var error = new IOException("Unable to read"); + var queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderThrow(error)); assertThat(queryError, instanceOf(ServiceUnavailableException.class)); assertEquals("Connection to the database failed", queryError.getMessage()); @@ -225,11 +220,11 @@ void shouldCloseChannelOnIOExceptionInInboundMessage() throws InterruptedExcepti @Test void shouldCloseChannelOnInboundFatalFailureMessage() throws InterruptedException { - String errorCode = "Neo.ClientError.Request.Invalid"; - String errorMessage = "Very wrong request"; - FailureMessage failureMsg = new FailureMessage(errorCode, errorMessage); + var errorCode = "Neo.ClientError.Request.Invalid"; + var errorMessage = "Very wrong request"; + var failureMsg = new FailureMessage(errorCode, errorMessage); - Throwable queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderFail(failureMsg)); + var queryError = testChannelErrorHandling(messageFormat -> messageFormat.makeReaderFail(failureMsg)); assertThat(queryError, instanceOf(ClientException.class)); assertEquals(((ClientException) queryError).code(), errorCode); @@ -238,11 +233,11 @@ void shouldCloseChannelOnInboundFatalFailureMessage() throws InterruptedExceptio @Test void shouldThrowErrorWithNiceStackTrace(TestInfo testInfo) { - ClientException error = assertThrows( + var error = assertThrows( ClientException.class, () -> session.run("RETURN 10 / 0").consume()); // thrown error should have this class & method in the stacktrace - StackTraceElement[] stackTrace = error.getStackTrace(); + var stackTrace = error.getStackTrace(); assertTrue( Stream.of(stackTrace).anyMatch(element -> testClassAndMethodMatch(testInfo, element)), () -> "Expected stacktrace element is absent:\n" + Arrays.toString(stackTrace)); @@ -253,18 +248,17 @@ void shouldThrowErrorWithNiceStackTrace(TestInfo testInfo) { private Throwable testChannelErrorHandling(Consumer messageFormatSetup) throws InterruptedException { - ChannelTrackingDriverFactoryWithFailingMessageFormat driverFactory = - new ChannelTrackingDriverFactoryWithFailingMessageFormat(new FakeClock()); + var driverFactory = new ChannelTrackingDriverFactoryWithFailingMessageFormat(new FakeClock()); - URI uri = session.uri(); + var uri = session.uri(); var authTokenProvider = session.authTokenManager(); - Config config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); + var config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); Throwable queryError = null; - try (Driver driver = + try (var driver = driverFactory.newInstance(uri, authTokenProvider, config, SecurityPlanImpl.insecure(), null, null)) { driver.verifyConnectivity(); - try (Session session = driver.session()) { + try (var session = driver.session()) { messageFormatSetup.accept(driverFactory.getFailingMessageFormat()); try { @@ -283,15 +277,15 @@ private Throwable testChannelErrorHandling(Consumer messag } private void assertSingleChannelIsClosed(ChannelTrackingDriverFactory driverFactory) throws InterruptedException { - Channel channel = single(driverFactory.channels()); + var channel = single(driverFactory.channels()); assertTrue(channel.closeFuture().await(10, SECONDS)); assertFalse(channel.isActive()); } private void assertNewQueryCanBeExecuted(Session session, ChannelTrackingDriverFactory driverFactory) { assertEquals(42, session.run("RETURN 42").single().get(0).asInt()); - List channels = driverFactory.channels(); - Channel lastChannel = channels.get(channels.size() - 1); + var channels = driverFactory.channels(); + var lastChannel = channels.get(channels.size() - 1); assertTrue(lastChannel.isActive()); } @@ -300,14 +294,14 @@ private static boolean testClassAndMethodMatch(TestInfo testInfo, StackTraceElem } private static boolean testClassMatches(TestInfo testInfo, StackTraceElement element) { - String expectedName = testInfo.getTestClass().map(Class::getName).orElse(""); - String actualName = element.getClassName(); + var expectedName = testInfo.getTestClass().map(Class::getName).orElse(""); + var actualName = element.getClassName(); return Objects.equals(expectedName, actualName); } private static boolean testMethodMatches(TestInfo testInfo, StackTraceElement element) { - String expectedName = testInfo.getTestMethod().map(Method::getName).orElse(""); - String actualName = element.getMethodName(); + var expectedName = testInfo.getTestMethod().map(Method::getName).orElse(""); + var actualName = element.getMethodName(); return Objects.equals(expectedName, actualName); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java b/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java index eda9cb9362..6357604a64 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java @@ -26,9 +26,7 @@ import java.io.IOException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -40,12 +38,12 @@ class LoadCSVIT { @Test void shouldLoadCSV() throws Throwable { - try (Driver driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager()); - Session session = driver.session()) { - String csvFileUrl = createLocalIrisData(session); + try (var driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager()); + var session = driver.session()) { + var csvFileUrl = createLocalIrisData(session); // When - String query = neo4j.isNeo4j44OrEarlier() + var query = neo4j.isNeo4j44OrEarlier() ? "USING PERIODIC COMMIT 40\n" + "LOAD CSV WITH HEADERS FROM $csvFileUrl AS l\n" + "MATCH (c:Class {name: l.class_name})\n" + "CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width})\n" @@ -59,7 +57,7 @@ void shouldLoadCSV() throws Throwable { + "} IN TRANSACTIONS\n" + "RETURN count(*) AS c"; - Result result = session.run(query, parameters("csvFileUrl", csvFileUrl)); + var result = session.run(query, parameters("csvFileUrl", csvFileUrl)); // Then assertThat(result.next().get("c").asInt(), equalTo(150)); @@ -68,7 +66,7 @@ void shouldLoadCSV() throws Throwable { } private String createLocalIrisData(Session session) throws IOException { - for (String className : IRIS_CLASS_NAMES) { + for (var className : IRIS_CLASS_NAMES) { session.run("CREATE (c:Class {name: $className}) RETURN c", parameters("className", className)); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java b/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java index 377082e70a..c71e125d3d 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/LoggingIT.java @@ -28,11 +28,9 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.Logger; import org.neo4j.driver.Logging; -import org.neo4j.driver.Session; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -44,18 +42,18 @@ class LoggingIT { @Test void logShouldRecordDebugAndTraceInfo() { // Given - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); when(logger.isDebugEnabled()).thenReturn(true); when(logger.isTraceEnabled()).thenReturn(true); - Config config = Config.builder().withLogging(logging).build(); + var config = Config.builder().withLogging(logging).build(); - try (Driver driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config)) { + try (var driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config)) { // When - try (Session session = driver.session()) { + try (var session = driver.session()) { session.run("CREATE (a {name:'Cat'})"); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java b/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java index fc6ef46f57..8fa082aabd 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java @@ -22,7 +22,6 @@ import static org.neo4j.driver.Values.parameters; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Test; import org.junit.jupiter.api.AfterEach; @@ -60,13 +59,13 @@ void closeDriver() { @Test void driverMetricsUpdatedWithDriverUse() { - Result result = createNodesInNewSession(12); + var result = createNodesInNewSession(12); // assert in use - Timer acquisitionTimer = + var acquisitionTimer = meterRegistry.get("neo4j.driver.connections.acquisition").timer(); - Timer creationTimer = + var creationTimer = meterRegistry.get("neo4j.driver.connections.creation").timer(); - Timer usageTimer = meterRegistry.get("neo4j.driver.connections.usage").timer(); + var usageTimer = meterRegistry.get("neo4j.driver.connections.usage").timer(); assertEquals(1, acquisitionTimer.count()); assertEquals(1, creationTimer.count()); assertEquals(0, usageTimer.count()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/ParametersIT.java b/driver/src/test/java/org/neo4j/driver/integration/ParametersIT.java index 43e85ae067..a3fc86523e 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ParametersIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ParametersIT.java @@ -37,14 +37,11 @@ import java.io.IOException; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.ServiceUnavailableException; @@ -63,11 +60,11 @@ class ParametersIT { @Test void shouldBeAbleToSetAndReturnBooleanProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", true)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", true)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().BOOLEAN()), equalTo(true)); assertThat(value.asBoolean(), equalTo(true)); } @@ -76,11 +73,11 @@ void shouldBeAbleToSetAndReturnBooleanProperty() { @Test void shouldBeAbleToSetAndReturnByteProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", (byte) 1)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", (byte) 1)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(value.asLong(), equalTo(1L)); } @@ -89,11 +86,11 @@ void shouldBeAbleToSetAndReturnByteProperty() { @Test void shouldBeAbleToSetAndReturnShortProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", (short) 1)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", (short) 1)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(value.asLong(), equalTo(1L)); } @@ -102,11 +99,11 @@ void shouldBeAbleToSetAndReturnShortProperty() { @Test void shouldBeAbleToSetAndReturnIntegerProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 1)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 1)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(value.asLong(), equalTo(1L)); } @@ -115,11 +112,11 @@ void shouldBeAbleToSetAndReturnIntegerProperty() { @Test void shouldBeAbleToSetAndReturnLongProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 1L)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 1L)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(value.asLong(), equalTo(1L)); } @@ -128,11 +125,11 @@ void shouldBeAbleToSetAndReturnLongProperty() { @Test void shouldBeAbleToSetAndReturnDoubleProperty() { // When - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 6.28)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", 6.28)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().FLOAT()), equalTo(true)); assertThat(value.asDouble(), equalTo(6.28)); } @@ -141,8 +138,8 @@ void shouldBeAbleToSetAndReturnDoubleProperty() { @Test void shouldBeAbleToSetAndReturnBytesProperty() { testBytesProperty(new byte[0]); - for (int i = 0; i < 16; i++) { - int length = (int) Math.pow(2, i); + for (var i = 0; i < 16; i++) { + var length = (int) Math.pow(2, i); testBytesProperty(randomByteArray(length)); testBytesProperty(randomByteArray(length - 1)); } @@ -159,15 +156,15 @@ void shouldBeAbleToSetAndReturnStringProperty() { @Test void shouldBeAbleToSetAndReturnBooleanArrayProperty() { // When - boolean[] arrayValue = new boolean[] {true, true, true}; - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); + var arrayValue = new boolean[] {true, true, true}; + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().LIST()), equalTo(true)); assertThat(value.size(), equalTo(3)); - for (Value item : value.asList(ofValue())) { + for (var item : value.asList(ofValue())) { assertThat(item.hasType(getDefault().BOOLEAN()), equalTo(true)); assertThat(item.asBoolean(), equalTo(true)); } @@ -177,15 +174,15 @@ void shouldBeAbleToSetAndReturnBooleanArrayProperty() { @Test void shouldBeAbleToSetAndReturnIntegerArrayProperty() { // When - int[] arrayValue = new int[] {42, 42, 42}; - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); + var arrayValue = new int[] {42, 42, 42}; + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().LIST()), equalTo(true)); assertThat(value.size(), equalTo(3)); - for (Value item : value.asList(ofValue())) { + for (var item : value.asList(ofValue())) { assertThat(item.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(item.asLong(), equalTo(42L)); } @@ -195,15 +192,15 @@ void shouldBeAbleToSetAndReturnIntegerArrayProperty() { @Test void shouldBeAbleToSetAndReturnDoubleArrayProperty() { // When - double[] arrayValue = new double[] {6.28, 6.28, 6.28}; - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); + var arrayValue = new double[] {6.28, 6.28, 6.28}; + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().LIST()), equalTo(true)); assertThat(value.size(), equalTo(3)); - for (Value item : value.asList(ofValue())) { + for (var item : value.asList(ofValue())) { assertThat(item.hasType(getDefault().FLOAT()), equalTo(true)); assertThat(item.asDouble(), equalTo(6.28)); } @@ -217,16 +214,16 @@ void shouldBeAbleToSetAndReturnStringArrayProperty() { } private static void testStringArrayContaining(String str) { - String[] arrayValue = new String[] {str, str, str}; + var arrayValue = new String[] {str, str, str}; - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", arrayValue)); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().LIST()), equalTo(true)); assertThat(value.size(), equalTo(3)); - for (Value item : value.asList(ofValue())) { + for (var item : value.asList(ofValue())) { assertThat(item.hasType(getDefault().STRING()), equalTo(true)); assertThat(item.asString(), equalTo(str)); } @@ -236,18 +233,18 @@ private static void testStringArrayContaining(String str) { @Test void shouldHandleLargeString() { // Given - char[] bigStr = new char[1024 * 10]; - for (int i = 0; i < bigStr.length; i += 4) { + var bigStr = new char[1024 * 10]; + for (var i = 0; i < bigStr.length; i += 4) { bigStr[i] = 'a'; bigStr[i + 1] = 'b'; bigStr[i + 2] = 'c'; bigStr[i + 3] = 'd'; } - String bigString = new String(bigStr); + var bigString = new String(bigStr); // When - Value val = + var val = session.run("RETURN $p AS p", parameters("p", bigString)).peek().get("p"); // Then @@ -257,12 +254,12 @@ void shouldHandleLargeString() { @Test void shouldBeAbleToSetAndReturnBooleanPropertyWithinMap() { // When - Result result = + var result = session.run("CREATE (a {value:$value.v}) RETURN a.value", parameters("value", parameters("v", true))); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().BOOLEAN()), equalTo(true)); assertThat(value.asBoolean(), equalTo(true)); } @@ -271,12 +268,12 @@ void shouldBeAbleToSetAndReturnBooleanPropertyWithinMap() { @Test void shouldBeAbleToSetAndReturnIntegerPropertyWithinMap() { // When - Result result = + var result = session.run("CREATE (a {value:$value.v}) RETURN a.value", parameters("value", parameters("v", 42))); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().INTEGER()), equalTo(true)); assertThat(value.asLong(), equalTo(42L)); } @@ -285,12 +282,12 @@ void shouldBeAbleToSetAndReturnIntegerPropertyWithinMap() { @Test void shouldBeAbleToSetAndReturnDoublePropertyWithinMap() { // When - Result result = + var result = session.run("CREATE (a {value:$value.v}) RETURN a.value", parameters("value", parameters("v", 6.28))); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().FLOAT()), equalTo(true)); assertThat(value.asDouble(), equalTo(6.28)); } @@ -299,12 +296,12 @@ void shouldBeAbleToSetAndReturnDoublePropertyWithinMap() { @Test void shouldBeAbleToSetAndReturnStringPropertyWithinMap() { // When - Result result = session.run( + var result = session.run( "CREATE (a {value:$value.v}) RETURN a.value", parameters("value", parameters("v", "Mjölnir"))); // Then - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().STRING()), equalTo(true)); assertThat(value.asString(), equalTo("Mjölnir")); } @@ -312,15 +309,13 @@ void shouldBeAbleToSetAndReturnStringPropertyWithinMap() { @Test void settingInvalidParameterTypeShouldThrowHelpfulError() { - ClientException e = - assertThrows(ClientException.class, () -> session.run("anything", parameters("k", new Object()))); + var e = assertThrows(ClientException.class, () -> session.run("anything", parameters("k", new Object()))); assertEquals("Unable to convert java.lang.Object to Neo4j Value.", e.getMessage()); } @Test void settingInvalidParameterTypeDirectlyShouldThrowHelpfulError() { - IllegalArgumentException e = - assertThrows(IllegalArgumentException.class, () -> session.run("anything", emptyNodeValue())); + var e = assertThrows(IllegalArgumentException.class, () -> session.run("anything", emptyNodeValue())); assertEquals( "The parameters should be provided as Map type. Unsupported parameters type: NODE", e.getMessage()); } @@ -331,7 +326,7 @@ void shouldNotBePossibleToUseNodeAsParameterInMapValue() { Value node = emptyNodeValue(); Map params = new HashMap<>(); params.put("a", node); - MapValue mapValue = new MapValue(params); + var mapValue = new MapValue(params); // WHEN expectIOExceptionWithMessage(mapValue, "Unknown type: NODE"); @@ -343,7 +338,7 @@ void shouldNotBePossibleToUseRelationshipAsParameterViaMapValue() { Value relationship = emptyRelationshipValue(); Map params = new HashMap<>(); params.put("a", relationship); - MapValue mapValue = new MapValue(params); + var mapValue = new MapValue(params); // WHEN expectIOExceptionWithMessage(mapValue, "Unknown type: RELATIONSHIP"); @@ -355,7 +350,7 @@ void shouldNotBePossibleToUsePathAsParameterViaMapValue() { Value path = filledPathValue(); Map params = new HashMap<>(); params.put("a", path); - MapValue mapValue = new MapValue(params); + var mapValue = new MapValue(params); // WHEN expectIOExceptionWithMessage(mapValue, "Unknown type: PATH"); @@ -363,21 +358,20 @@ void shouldNotBePossibleToUsePathAsParameterViaMapValue() { @Test void shouldSendAndReceiveLongString() { - String string = TestUtil.randomString(LONG_VALUE_SIZE); + var string = TestUtil.randomString(LONG_VALUE_SIZE); testSendAndReceiveValue(string); } @Test void shouldSendAndReceiveLongListOfLongs() { - List longs = - ThreadLocalRandom.current().longs(LONG_VALUE_SIZE).boxed().collect(toList()); + var longs = ThreadLocalRandom.current().longs(LONG_VALUE_SIZE).boxed().collect(toList()); testSendAndReceiveValue(longs); } @Test void shouldSendAndReceiveLongArrayOfBytes() { - byte[] bytes = new byte[LONG_VALUE_SIZE]; + var bytes = new byte[LONG_VALUE_SIZE]; ThreadLocalRandom.current().nextBytes(bytes); testSendAndReceiveValue(bytes); @@ -385,52 +379,51 @@ void shouldSendAndReceiveLongArrayOfBytes() { @Test void shouldAcceptStreamsAsQueryParameters() { - Stream stream = Stream.of(1, 2, 3, 4, 5, 42); + var stream = Stream.of(1, 2, 3, 4, 5, 42); - Result result = session.run("RETURN $value", singletonMap("value", stream)); - Value receivedValue = result.single().get(0); + var result = session.run("RETURN $value", singletonMap("value", stream)); + var receivedValue = result.single().get(0); assertEquals(asList(1, 2, 3, 4, 5, 42), receivedValue.asList(ofInteger())); } private static void testBytesProperty(byte[] array) { - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", array)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", array)); - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().BYTES()), equalTo(true)); assertThat(value.asByteArray(), equalTo(array)); } } private static void testStringProperty(String string) { - Result result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", string)); + var result = session.run("CREATE (a {value:$value}) RETURN a.value", parameters("value", string)); - for (Record record : result.list()) { - Value value = record.get("a.value"); + for (var record : result.list()) { + var value = record.get("a.value"); assertThat(value.hasType(getDefault().STRING()), equalTo(true)); assertThat(value.asString(), equalTo(string)); } } private static byte[] randomByteArray(int length) { - byte[] result = new byte[length]; + var result = new byte[length]; ThreadLocalRandom.current().nextBytes(result); return result; } private static void expectIOExceptionWithMessage(Value value, String message) { - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> session.run("RETURN {a}", value) - .consume()); - Throwable cause = e.getCause(); + var e = assertThrows(ServiceUnavailableException.class, () -> session.run("RETURN {a}", value) + .consume()); + var cause = e.getCause(); assertThat(cause, instanceOf(IOException.class)); assertThat(cause.getMessage(), equalTo(message)); } private static void testSendAndReceiveValue(Object value) { - Result result = session.run("RETURN $value", singletonMap("value", value)); - Object receivedValue = result.single().get(0).asObject(); + var result = session.run("RETURN $value", singletonMap("value", value)); + var receivedValue = result.single().get(0).asObject(); assertArrayEquals(new Object[] {value}, new Object[] {receivedValue}); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/QueryIT.java b/driver/src/test/java/org/neo4j/driver/integration/QueryIT.java index 2fe4ffe8c8..63a42d5759 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/QueryIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/QueryIT.java @@ -26,13 +26,10 @@ import static org.neo4j.driver.testutil.TestUtil.assertNoCircularReferences; import java.util.Collections; -import java.util.Iterator; -import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Record; -import org.neo4j.driver.Result; import org.neo4j.driver.Value; import org.neo4j.driver.Values; import org.neo4j.driver.testutil.ParallelizableIT; @@ -46,7 +43,7 @@ class QueryIT { @Test void shouldRunWithResult() { // When I execute a query that yields a result - List result = session.run("UNWIND [1,2,3] AS k RETURN k").list(); + var result = session.run("UNWIND [1,2,3] AS k RETURN k").list(); // Then the result object should contain the returned values assertThat(result.size(), equalTo(3)); @@ -58,7 +55,7 @@ void shouldRunWithResult() { // And it should allow iteration long expected = 0; - for (Record value : result) { + for (var value : result) { expected += 1; assertThat(value.get("k"), equalTo(Values.value(expected))); } @@ -119,7 +116,7 @@ void shouldRunWithCollectionAsParameter() { @Test void shouldRunWithIteratorAsParameter() { - Iterator values = asList("FOO", "BAR", "BAZ").iterator(); + var values = asList("FOO", "BAR", "BAZ").iterator(); // When session.run("RETURN $param", parameters("param", values)); @@ -137,7 +134,7 @@ void shouldRun() { @Test void shouldRunParameterizedWithResult() { // When - List result = session.run("UNWIND $list AS k RETURN k", parameters("list", asList(1, 2, 3))) + var result = session.run("UNWIND $list AS k RETURN k", parameters("list", asList(1, 2, 3))) .list(); // Then @@ -151,7 +148,7 @@ void shouldRunSimpleQuery() { session.run("CREATE (a {name:'Adam'})"); // And I run a read query - Result result2 = session.run("MATCH (a) RETURN a.name"); + var result2 = session.run("MATCH (a) RETURN a.name"); // Then I expect to get the name back Value name = null; diff --git a/driver/src/test/java/org/neo4j/driver/integration/QueryRunnerCloseIT.java b/driver/src/test/java/org/neo4j/driver/integration/QueryRunnerCloseIT.java index 35ccce6fa8..b26ad2146b 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/QueryRunnerCloseIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/QueryRunnerCloseIT.java @@ -22,18 +22,13 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.neo4j.driver.testutil.TestUtil.await; -import java.util.List; import java.util.concurrent.ExecutorService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Driver; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ResultConsumedException; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -58,7 +53,7 @@ void tearDown() { @Test void shouldErrorToAccessRecordsAfterConsume() { // Given - Result result = neo4j.driver().session().run("UNWIND [1,2] AS a RETURN a"); + var result = neo4j.driver().session().run("UNWIND [1,2] AS a RETURN a"); // When result.consume(); @@ -77,8 +72,8 @@ void shouldErrorToAccessRecordsAfterConsume() { @Test void shouldErrorToAccessRecordsAfterClose() { // Given - Session session = neo4j.driver().session(); - Result result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().session(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When session.close(); @@ -97,15 +92,15 @@ void shouldErrorToAccessRecordsAfterClose() { @Test void shouldAllowConsumeAndKeysAfterConsume() { // Given - Result result = neo4j.driver().session().run("UNWIND [1,2] AS a RETURN a"); - List keys = result.keys(); + var result = neo4j.driver().session().run("UNWIND [1,2] AS a RETURN a"); + var keys = result.keys(); // When - ResultSummary summary = result.consume(); + var summary = result.consume(); // Then - ResultSummary summary1 = result.consume(); - List keys1 = result.keys(); + var summary1 = result.consume(); + var keys1 = result.keys(); assertEquals(summary, summary1); assertEquals(keys, keys1); @@ -114,17 +109,17 @@ void shouldAllowConsumeAndKeysAfterConsume() { @Test void shouldAllowSummaryAndKeysAfterClose() { // Given - Session session = neo4j.driver().session(); - Result result = session.run("UNWIND [1,2] AS a RETURN a"); - List keys = result.keys(); - ResultSummary summary = result.consume(); + var session = neo4j.driver().session(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); + var keys = result.keys(); + var summary = result.consume(); // When session.close(); // Then - ResultSummary summary1 = result.consume(); - List keys1 = result.keys(); + var summary1 = result.consume(); + var keys1 = result.keys(); assertEquals(summary, summary1); assertEquals(keys, keys1); @@ -133,8 +128,8 @@ void shouldAllowSummaryAndKeysAfterClose() { @Test void shouldErrorToAccessRecordsAfterConsumeAsync() { // Given - AsyncSession session = neo4j.driver().session(AsyncSession.class); - ResultCursor result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); + var session = neo4j.driver().session(AsyncSession.class); + var result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); // When await(result.consumeAsync()); @@ -151,8 +146,8 @@ void shouldErrorToAccessRecordsAfterConsumeAsync() { @Test void shouldErrorToAccessRecordsAfterCloseAsync() { // Given - AsyncSession session = neo4j.driver().session(AsyncSession.class); - ResultCursor result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); + var session = neo4j.driver().session(AsyncSession.class); + var result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); // When await(session.closeAsync()); @@ -169,17 +164,17 @@ void shouldErrorToAccessRecordsAfterCloseAsync() { @Test void shouldAllowConsumeAndKeysAfterConsumeAsync() { // Given - AsyncSession session = neo4j.driver().session(AsyncSession.class); - ResultCursor result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); + var session = neo4j.driver().session(AsyncSession.class); + var result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); - List keys = result.keys(); + var keys = result.keys(); // When - ResultSummary summary = await(result.consumeAsync()); + var summary = await(result.consumeAsync()); // Then - ResultSummary summary1 = await(result.consumeAsync()); - List keys1 = result.keys(); + var summary1 = await(result.consumeAsync()); + var keys1 = result.keys(); assertEquals(summary, summary1); assertEquals(keys, keys1); @@ -188,17 +183,17 @@ void shouldAllowConsumeAndKeysAfterConsumeAsync() { @Test void shouldAllowConsumeAndKeysAfterCloseAsync() { // Given - AsyncSession session = neo4j.driver().session(AsyncSession.class); - ResultCursor result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); - List keys = result.keys(); - ResultSummary summary = await(result.consumeAsync()); + var session = neo4j.driver().session(AsyncSession.class); + var result = await(session.runAsync("UNWIND [1,2] AS a RETURN a")); + var keys = result.keys(); + var summary = await(result.consumeAsync()); // When await(session.closeAsync()); // Then - List keys1 = result.keys(); - ResultSummary summary1 = await(result.consumeAsync()); + var keys1 = result.keys(); + var summary1 = await(result.consumeAsync()); assertEquals(summary, summary1); assertEquals(keys, keys1); diff --git a/driver/src/test/java/org/neo4j/driver/integration/ResolverIT.java b/driver/src/test/java/org/neo4j/driver/integration/ResolverIT.java index bfa82dea48..da900bc8c9 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ResolverIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ResolverIT.java @@ -28,7 +28,6 @@ import org.junit.jupiter.api.Test; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.net.ServerAddress; import org.neo4j.driver.net.ServerAddressResolver; @@ -36,17 +35,17 @@ class ResolverIT { @Test void shouldFailInitialDiscoveryWhenConfiguredResolverThrows() { - ServerAddressResolver resolver = mock(ServerAddressResolver.class); + var resolver = mock(ServerAddressResolver.class); when(resolver.resolve(any(ServerAddress.class))).thenThrow(new RuntimeException("Resolution failure!")); - Config config = Config.builder() + var config = Config.builder() .withoutEncryption() .withLogging(none()) .withResolver(resolver) .build(); - final Driver driver = GraphDatabase.driver("neo4j://my.server.com:9001", config); + final var driver = GraphDatabase.driver("neo4j://my.server.com:9001", config); - RuntimeException error = assertThrows(RuntimeException.class, driver::verifyConnectivity); + var error = assertThrows(RuntimeException.class, driver::verifyConnectivity); assertEquals("Resolution failure!", error.getMessage()); verify(resolver).resolve(ServerAddress.of("my.server.com", 9001)); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/ResultStreamIT.java b/driver/src/test/java/org/neo4j/driver/integration/ResultStreamIT.java index dc462d5a48..b8fa6e1b2d 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ResultStreamIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ResultStreamIT.java @@ -32,14 +32,11 @@ import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.IntStream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; import org.neo4j.driver.Result; -import org.neo4j.driver.Transaction; import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.NoSuchRecordException; @@ -54,10 +51,10 @@ class ResultStreamIT { @Test void shouldAllowIteratingOverResultStream() { // When - Result res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); + var res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); // Then I should be able to iterate over the result - int idx = 1; + var idx = 1; while (res.hasNext()) { assertEquals(idx++, res.next().get("a").asLong()); } @@ -66,7 +63,7 @@ void shouldAllowIteratingOverResultStream() { @Test void shouldHaveFieldNamesInResult() { // When - Result res = session.run("CREATE (n:TestNode {name:'test'}) RETURN n"); + var res = session.run("CREATE (n:TestNode {name:'test'}) RETURN n"); // Then assertEquals("[n]", res.keys().toString()); @@ -77,10 +74,10 @@ void shouldHaveFieldNamesInResult() { @Test void shouldGiveHelpfulFailureMessageWhenAccessNonExistingField() { // Given - Result rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); + var rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); // When - Record single = rs.single(); + var single = rs.single(); // Then assertTrue(single.get("m").isNull()); @@ -89,10 +86,10 @@ void shouldGiveHelpfulFailureMessageWhenAccessNonExistingField() { @Test void shouldGiveHelpfulFailureMessageWhenAccessNonExistingPropertyOnNode() { // Given - Result rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); + var rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); // When - Record record = rs.single(); + var record = rs.single(); // Then assertTrue(record.get("n").get("age").isNull()); @@ -101,7 +98,7 @@ void shouldGiveHelpfulFailureMessageWhenAccessNonExistingPropertyOnNode() { @Test void shouldNotReturnNullKeysOnEmptyResult() { // Given - Result rs = session.run("CREATE (n:Person {name:$name})", parameters("name", "Tom Hanks")); + var rs = session.run("CREATE (n:Person {name:$name})", parameters("name", "Tom Hanks")); // THEN assertNotNull(rs.keys()); @@ -113,7 +110,7 @@ void shouldBeAbleToReuseSessionAfterFailure() { assertThrows(Exception.class, () -> session.run("INVALID")); // When - Result res2 = session.run("RETURN 1"); + var res2 = session.run("RETURN 1"); // Then assertTrue(res2.hasNext()); @@ -122,28 +119,28 @@ void shouldBeAbleToReuseSessionAfterFailure() { @Test void shouldBeAbleToAccessSummaryAfterTransactionFailure() { - AtomicReference resultRef = new AtomicReference<>(); + var resultRef = new AtomicReference(); assertThrows(ClientException.class, () -> { - try (Transaction tx = session.beginTransaction()) { - Result result = tx.run("UNWIND [1,2,0] AS x RETURN 10/x"); + try (var tx = session.beginTransaction()) { + var result = tx.run("UNWIND [1,2,0] AS x RETURN 10/x"); resultRef.set(result); tx.commit(); } }); - Result result = resultRef.get(); + var result = resultRef.get(); assertNotNull(result); assertEquals(0, result.consume().counters().nodesCreated()); } @Test void shouldConvertEmptyResultToStream() { - long count = session.run("MATCH (n:WrongLabel) RETURN n").stream().count(); + var count = session.run("MATCH (n:WrongLabel) RETURN n").stream().count(); assertEquals(0, count); - Optional anyRecord = + var anyRecord = session.run("MATCH (n:OtherWrongLabel) RETURN n").stream().findAny(); assertFalse(anyRecord.isPresent()); @@ -151,7 +148,7 @@ void shouldConvertEmptyResultToStream() { @Test void shouldConvertResultToStream() { - List receivedList = session.run("UNWIND range(1, 10) AS x RETURN x").stream() + var receivedList = session.run("UNWIND range(1, 10) AS x RETURN x").stream() .map(record -> record.get(0)) .map(Value::asInt) .collect(toList()); @@ -163,7 +160,7 @@ void shouldConvertResultToStream() { void shouldConvertImmediatelyFailingResultToStream() { List seen = new ArrayList<>(); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN 10 / 0").stream() + var e = assertThrows(ClientException.class, () -> session.run("RETURN 10 / 0").stream() .forEach(record -> seen.add(record.get(0).asInt()))); assertThat(e.getMessage(), containsString("/ by zero")); @@ -175,7 +172,7 @@ void shouldConvertImmediatelyFailingResultToStream() { void shouldConvertEventuallyFailingResultToStream() { List seen = new ArrayList<>(); - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> session.run("CYPHER runtime=interpreted UNWIND range(5, 0, -1) AS x RETURN x / x").stream() .forEach(record -> seen.add(record.get(0).asInt()))); @@ -188,7 +185,7 @@ void shouldConvertEventuallyFailingResultToStream() { @Test void shouldEmptyResultWhenConvertedToStream() { - Result result = session.run("UNWIND range(1, 10) AS x RETURN x"); + var result = session.run("UNWIND range(1, 10) AS x RETURN x"); assertTrue(result.hasNext()); assertEquals(1, result.next().get(0).asInt()); @@ -196,8 +193,7 @@ void shouldEmptyResultWhenConvertedToStream() { assertTrue(result.hasNext()); assertEquals(2, result.next().get(0).asInt()); - List list = - result.stream().map(record -> record.get(0).asInt()).collect(toList()); + var list = result.stream().map(record -> record.get(0).asInt()).collect(toList()); assertEquals(asList(3, 4, 5, 6, 7, 8, 9, 10), list); assertFalse(result.hasNext()); @@ -208,13 +204,13 @@ void shouldEmptyResultWhenConvertedToStream() { @Test void shouldConsumeLargeResultAsParallelStream() { - List receivedList = session.run("UNWIND range(1, 200000) AS x RETURN 'value-' + x").stream() + var receivedList = session.run("UNWIND range(1, 200000) AS x RETURN 'value-' + x").stream() .parallel() .map(record -> record.get(0)) .map(Value::asString) .collect(toList()); - List expectedList = + var expectedList = IntStream.range(1, 200001).mapToObj(i -> "value-" + i).collect(toList()); assertEquals(expectedList, receivedList); diff --git a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java index 20ab833c1d..9eda6125b4 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java @@ -27,10 +27,7 @@ import org.hamcrest.CoreMatchers; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.internal.util.Neo4jFeature; import org.neo4j.driver.testutil.DatabaseExtension; @@ -44,27 +41,27 @@ class RoutingDriverIT { @Test void shouldBeAbleToConnectSingleInstanceWithNeo4jScheme() throws Throwable { - URI uri = URI.create(String.format( + var uri = URI.create(String.format( "neo4j://%s:%s", neo4j.uri().getHost(), neo4j.uri().getPort())); - try (Driver driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); - Session session = driver.session()) { + try (var driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); + var session = driver.session()) { assertThat(driver, is(clusterDriver())); - Result result = session.run("RETURN 1"); + var result = session.run("RETURN 1"); assertThat(result.single().get(0).asInt(), CoreMatchers.equalTo(1)); } } @Test void shouldBeAbleToRunQueryOnNeo4j() throws Throwable { - URI uri = URI.create(String.format( + var uri = URI.create(String.format( "neo4j://%s:%s", neo4j.uri().getHost(), neo4j.uri().getPort())); - try (Driver driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); - Session session = driver.session(forDatabase("neo4j"))) { + try (var driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); + var session = driver.session(forDatabase("neo4j"))) { assertThat(driver, is(clusterDriver())); - Result result = session.run("RETURN 1"); + var result = session.run("RETURN 1"); assertThat(result.single().get(0).asInt(), CoreMatchers.equalTo(1)); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java b/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java index d8c02409b9..8b535f0b5a 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java @@ -35,7 +35,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.neo4j.driver.Result; import org.neo4j.driver.Value; import org.neo4j.driver.Values; import org.neo4j.driver.internal.value.ListValue; @@ -68,7 +67,7 @@ static Stream typesToTest() { @MethodSource("typesToTest") void shouldHandleType(String query, Value expectedValue) { // When - Result cursor = session.run(query); + var cursor = session.run(query); // Then assertThat(cursor.single().get("v"), equalTo(expectedValue)); @@ -88,10 +87,10 @@ static Stream collectionItems() { void shouldEchoVeryLongMap(Value collectionItem) { // Given Map input = new HashMap<>(); - for (int i = 0; i < 1000; i++) { + for (var i = 0; i < 1000; i++) { input.put(String.valueOf(i), collectionItem); } - MapValue mapValue = new MapValue(input); + var mapValue = new MapValue(input); // When & Then verifyCanEncodeAndDecode(mapValue); @@ -101,11 +100,11 @@ void shouldEchoVeryLongMap(Value collectionItem) { @MethodSource("collectionItems") void shouldEchoVeryLongList(Value collectionItem) { // Given - Value[] input = new Value[1000]; - for (int i = 0; i < 1000; i++) { + var input = new Value[1000]; + for (var i = 0; i < 1000; i++) { input[i] = collectionItem; } - ListValue listValue = new ListValue(input); + var listValue = new ListValue(input); // When & Then verifyCanEncodeAndDecode(listValue); @@ -114,10 +113,10 @@ void shouldEchoVeryLongList(Value collectionItem) { @Test void shouldEchoVeryLongString() { // Given - char[] chars = new char[10000]; + var chars = new char[10000]; Arrays.fill(chars, '*'); - String longText = new String(chars); - StringValue input = new StringValue(longText); + var longText = new String(chars); + var input = new StringValue(longText); // When & Then verifyCanEncodeAndDecode(input); @@ -176,7 +175,7 @@ void shouldEchoList(Value input) { @Test void shouldEchoNestedList() throws Throwable { - Value input = Values.value(toValueStream(listToTest())); + var input = Values.value(toValueStream(listToTest())); // When & Then assertTrue(input instanceof ListValue); @@ -203,7 +202,7 @@ void shouldEchoMap(Value input) { @Test void shouldEchoNestedMap() throws Throwable { - MapValue input = new MapValue( + var input = new MapValue( toValueStream(mapToTest()).collect(Collectors.toMap(Object::toString, Function.identity()))); // When & Then @@ -212,7 +211,7 @@ void shouldEchoNestedMap() throws Throwable { private Stream toValueStream(Stream arguments) { return arguments.map(arg -> { - Object obj = arg.get()[0]; + var obj = arg.get()[0]; assertTrue(obj instanceof Value); return (Value) obj; }); @@ -220,7 +219,7 @@ private Stream toValueStream(Stream arguments) { private void verifyCanEncodeAndDecode(Value input) { // When - Result cursor = session.run("RETURN $x as y", parameters("x", input)); + var cursor = session.run("RETURN $x as y", parameters("x", input)); // Then assertThat(cursor.single().get("y"), equalTo(input)); diff --git a/driver/src/test/java/org/neo4j/driver/integration/ServerKilledIT.java b/driver/src/test/java/org/neo4j/driver/integration/ServerKilledIT.java index 08a8708ecd..e24be86cce 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ServerKilledIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ServerKilledIT.java @@ -23,7 +23,6 @@ import static org.neo4j.driver.Config.TrustStrategy.trustCustomCertificateSignedBy; import java.time.Clock; -import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Stream; import org.junit.jupiter.api.extension.RegisterExtension; @@ -33,8 +32,6 @@ import org.neo4j.driver.Config; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Record; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.DriverFactory; import org.neo4j.driver.internal.security.SecurityPlanImpl; @@ -66,7 +63,7 @@ private static Stream data() { @MethodSource("data") void shouldRecoverFromServerRestart(String name, Config.ConfigBuilder configBuilder) { // Given config with sessionLivenessCheckTimeout not set, i.e. turned off - try (Driver driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), configBuilder.build())) { + try (var driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), configBuilder.build())) { acquireAndReleaseConnections(4, driver); // When @@ -74,9 +71,9 @@ void shouldRecoverFromServerRestart(String name, Config.ConfigBuilder configBuil neo4j.startProxy(); // Then we should be able to start using sessions again, at most O(numSessions) session calls later - int toleratedFailures = 4; - for (int i = 0; i < 10; i++) { - try (Session s = driver.session()) { + var toleratedFailures = 4; + for (var i = 0; i < 10; i++) { + try (var s = driver.session()) { s.run("RETURN 'Hello, world!'"); } catch (ServiceUnavailableException e) { if (toleratedFailures-- == 0) { @@ -92,12 +89,12 @@ void shouldRecoverFromServerRestart(String name, Config.ConfigBuilder configBuil @MethodSource("data") void shouldDropBrokenOldSessions(String name, Config.ConfigBuilder configBuilder) { // config with set liveness check timeout - int livenessCheckTimeoutMinutes = 10; + var livenessCheckTimeoutMinutes = 10; configBuilder.withConnectionLivenessCheckTimeout(livenessCheckTimeoutMinutes, TimeUnit.MINUTES); - FakeClock clock = new FakeClock(); + var clock = new FakeClock(); - try (Driver driver = createDriver(clock, configBuilder.build())) { + try (var driver = createDriver(clock, configBuilder.build())) { acquireAndReleaseConnections(5, driver); // restart database access to invalidate all idle connections in the pool @@ -108,8 +105,8 @@ void shouldDropBrokenOldSessions(String name, Config.ConfigBuilder configBuilder // now all idle connections should be considered too old and will be verified during acquisition // they will appear broken because of the database restart and new valid connection will be created - try (Session session = driver.session()) { - List records = session.run("RETURN 1").list(); + try (var session = driver.session()) { + var records = session.run("RETURN 1").list(); assertEquals(1, records.size()); assertEquals(1, records.get(0).get(0).asInt()); } @@ -118,7 +115,7 @@ void shouldDropBrokenOldSessions(String name, Config.ConfigBuilder configBuilder private static void acquireAndReleaseConnections(int count, Driver driver) { if (count > 0) { - Session session = driver.session(); + var session = driver.session(); session.run("RETURN 1"); acquireAndReleaseConnections(count - 1, driver); session.close(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java index 496065b0ba..4f2816f263 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java @@ -35,34 +35,25 @@ import static org.neo4j.driver.testutil.TestUtil.TX_TIMEOUT_TEST_TIMEOUT; import static org.neo4j.driver.testutil.TestUtil.await; -import io.netty.channel.Channel; import java.time.LocalDate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletionStage; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Bookmark; -import org.neo4j.driver.Driver; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.TransientException; -import org.neo4j.driver.internal.messaging.Message; import org.neo4j.driver.internal.messaging.request.GoodbyeMessage; import org.neo4j.driver.internal.messaging.request.HelloMessage; import org.neo4j.driver.internal.security.SecurityPlanImpl; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.internal.util.MessageRecordingDriverFactory; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DriverExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -88,11 +79,10 @@ void shouldSetTransactionMetadata() { metadata.put("b", LocalDate.now()); metadata.put("c", driver.isNeo4j43OrEarlier() ? asList(true, false, true) : false); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - Result result = driver.session().run(showTxMetadata, config); - Map receivedMetadata = result.single().get("metaData").asMap(); + var result = driver.session().run(showTxMetadata, config); + var receivedMetadata = result.single().get("metaData").asMap(); assertEquals(metadata, receivedMetadata); } @@ -103,10 +93,9 @@ void shouldSetTransactionMetadataAsync() { metadata.put("key1", "value1"); metadata.put("key2", 42L); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - CompletionStage> metadataFuture = driver.asyncSession() + var metadataFuture = driver.asyncSession() .runAsync(showTxMetadata, config) .thenCompose(ResultCursor::singleAsync) .thenApply(record -> record.get("metaData").asMap()); @@ -117,22 +106,21 @@ void shouldSetTransactionMetadataAsync() { @Test void shouldSetTransactionTimeout() { // create a dummy node - Session session = driver.session(); + var session = driver.session(); session.run("CREATE (:Node)").consume(); - try (Session otherSession = driver.driver().session()) { - try (Transaction otherTx = otherSession.beginTransaction()) { + try (var otherSession = driver.driver().session()) { + try (var otherTx = otherSession.beginTransaction()) { // lock dummy node but keep the transaction open otherTx.run("MATCH (n:Node) SET n.prop = 1").consume(); assertTimeoutPreemptively(TX_TIMEOUT_TEST_TIMEOUT, () -> { - TransactionConfig config = + var config = TransactionConfig.builder().withTimeout(ofMillis(1)).build(); // run a query in an auto-commit transaction with timeout and try to update the locked dummy node - Exception error = - assertThrows(Exception.class, () -> session.run("MATCH (n:Node) SET n.prop = 2", config) - .consume()); + var error = assertThrows(Exception.class, () -> session.run("MATCH (n:Node) SET n.prop = 2", config) + .consume()); verifyValidException(error); }); } @@ -142,24 +130,24 @@ void shouldSetTransactionTimeout() { @Test void shouldSetTransactionTimeoutAsync() { // create a dummy node - AsyncSession asyncSession = driver.asyncSession(); + var asyncSession = driver.asyncSession(); await(await(asyncSession.runAsync("CREATE (:Node)")).consumeAsync()); - try (Session otherSession = driver.driver().session()) { - try (Transaction otherTx = otherSession.beginTransaction()) { + try (var otherSession = driver.driver().session()) { + try (var otherTx = otherSession.beginTransaction()) { // lock dummy node but keep the transaction open otherTx.run("MATCH (n:Node) SET n.prop = 1").consume(); assertTimeoutPreemptively(TX_TIMEOUT_TEST_TIMEOUT, () -> { - TransactionConfig config = + var config = TransactionConfig.builder().withTimeout(ofMillis(1)).build(); // run a query in an auto-commit transaction with timeout and try to update the locked dummy node - CompletionStage resultFuture = asyncSession + var resultFuture = asyncSession .runAsync("MATCH (n:Node) SET n.prop = 2", config) .thenCompose(ResultCursor::consumeAsync); - Exception error = assertThrows(Exception.class, () -> await(resultFuture)); + var error = assertThrows(Exception.class, () -> await(resultFuture)); verifyValidException(error); }); } @@ -189,22 +177,22 @@ void shouldSetTransactionMetadataWithWriteTransactionFunction() { @Test @SuppressWarnings("deprecation") void shouldUseBookmarksForAutoCommitTransactions() { - Session session = driver.session(); - Bookmark initialBookmark = session.lastBookmark(); + var session = driver.session(); + var initialBookmark = session.lastBookmark(); session.run("CREATE ()").consume(); - Bookmark bookmark1 = session.lastBookmark(); + var bookmark1 = session.lastBookmark(); assertNotNull(bookmark1); assertNotEquals(initialBookmark, bookmark1); session.run("CREATE ()").consume(); - Bookmark bookmark2 = session.lastBookmark(); + var bookmark2 = session.lastBookmark(); assertNotNull(bookmark2); assertNotEquals(initialBookmark, bookmark2); assertNotEquals(bookmark1, bookmark2); session.run("CREATE ()").consume(); - Bookmark bookmark3 = session.lastBookmark(); + var bookmark3 = session.lastBookmark(); assertNotNull(bookmark3); assertNotEquals(initialBookmark, bookmark3); assertNotEquals(bookmark1, bookmark3); @@ -214,28 +202,28 @@ void shouldUseBookmarksForAutoCommitTransactions() { @Test @SuppressWarnings("deprecation") void shouldUseBookmarksForAutoCommitAndUnmanagedTransactions() { - Session session = driver.session(); - Bookmark initialBookmark = session.lastBookmark(); + var session = driver.session(); + var initialBookmark = session.lastBookmark(); - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE ()"); tx.commit(); } - Bookmark bookmark1 = session.lastBookmark(); + var bookmark1 = session.lastBookmark(); assertNotNull(bookmark1); assertNotEquals(initialBookmark, bookmark1); session.run("CREATE ()").consume(); - Bookmark bookmark2 = session.lastBookmark(); + var bookmark2 = session.lastBookmark(); assertNotNull(bookmark2); assertNotEquals(initialBookmark, bookmark2); assertNotEquals(bookmark1, bookmark2); - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE ()"); tx.commit(); } - Bookmark bookmark3 = session.lastBookmark(); + var bookmark3 = session.lastBookmark(); assertNotNull(bookmark3); assertNotEquals(initialBookmark, bookmark3); assertNotEquals(bookmark1, bookmark3); @@ -245,22 +233,22 @@ void shouldUseBookmarksForAutoCommitAndUnmanagedTransactions() { @Test @SuppressWarnings("deprecation") void shouldUseBookmarksForAutoCommitTransactionsAndTransactionFunctions() { - Session session = driver.session(); - Bookmark initialBookmark = session.lastBookmark(); + var session = driver.session(); + var initialBookmark = session.lastBookmark(); session.writeTransaction(tx -> tx.run("CREATE ()").consume()); - Bookmark bookmark1 = session.lastBookmark(); + var bookmark1 = session.lastBookmark(); assertNotNull(bookmark1); assertNotEquals(initialBookmark, bookmark1); session.run("CREATE ()").consume(); - Bookmark bookmark2 = session.lastBookmark(); + var bookmark2 = session.lastBookmark(); assertNotNull(bookmark2); assertNotEquals(initialBookmark, bookmark2); assertNotEquals(bookmark1, bookmark2); session.writeTransaction(tx -> tx.run("CREATE ()").consume()); - Bookmark bookmark3 = session.lastBookmark(); + var bookmark3 = session.lastBookmark(); assertNotNull(bookmark3); assertNotEquals(initialBookmark, bookmark3); assertNotEquals(bookmark1, bookmark3); @@ -269,23 +257,23 @@ void shouldUseBookmarksForAutoCommitTransactionsAndTransactionFunctions() { @Test void shouldSendGoodbyeWhenClosingDriver() { - int txCount = 13; - MessageRecordingDriverFactory driverFactory = new MessageRecordingDriverFactory(); + var txCount = 13; + var driverFactory = new MessageRecordingDriverFactory(); - try (Driver otherDriver = driverFactory.newInstance( + try (var otherDriver = driverFactory.newInstance( driver.uri(), driver.authTokenManager(), defaultConfig(), SecurityPlanImpl.insecure(), null, null)) { List sessions = new ArrayList<>(); List txs = new ArrayList<>(); - for (int i = 0; i < txCount; i++) { - Session session = otherDriver.session(); + for (var i = 0; i < txCount; i++) { + var session = otherDriver.session(); sessions.add(session); - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); txs.add(tx); } - for (int i = 0; i < txCount; i++) { - Session session = sessions.get(i); - Transaction tx = txs.get(i); + for (var i = 0; i < txCount; i++) { + var session = sessions.get(i); + var tx = txs.get(i); tx.run("CREATE ()"); tx.commit(); @@ -293,10 +281,10 @@ void shouldSendGoodbyeWhenClosingDriver() { } } - Map> messagesByChannel = driverFactory.getMessagesByChannel(); + var messagesByChannel = driverFactory.getMessagesByChannel(); assertEquals(txCount, messagesByChannel.size()); - for (List messages : messagesByChannel.values()) { + for (var messages : messagesByChannel.values()) { assertThat(messages.size(), greaterThan(2)); assertThat(messages.get(0), instanceOf(HelloMessage.class)); // first message is HELLO assertThat(messages.get(messages.size() - 1), instanceOf(GoodbyeMessage.class)); // last message is GOODBYE @@ -305,22 +293,21 @@ void shouldSendGoodbyeWhenClosingDriver() { @SuppressWarnings("deprecation") private static void testTransactionMetadataWithAsyncTransactionFunctions(boolean read) { - AsyncSession asyncSession = driver.asyncSession(); + var asyncSession = driver.asyncSession(); Map metadata = new HashMap<>(); metadata.put("foo", "bar"); metadata.put("baz", true); metadata.put("qux", 12345L); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - CompletionStage singleFuture = read + var singleFuture = read ? asyncSession.readTransactionAsync( tx -> tx.runAsync(showTxMetadata).thenCompose(ResultCursor::singleAsync), config) : asyncSession.writeTransactionAsync( tx -> tx.runAsync(showTxMetadata).thenCompose(ResultCursor::singleAsync), config); - CompletionStage> metadataFuture = + var metadataFuture = singleFuture.thenApply(record -> record.get("metaData").asMap()); assertEquals(metadata, await(metadataFuture)); @@ -328,20 +315,19 @@ private static void testTransactionMetadataWithAsyncTransactionFunctions(boolean @SuppressWarnings("deprecation") private static void testTransactionMetadataWithTransactionFunctions(boolean read) { - Session session = driver.session(); + var session = driver.session(); Map metadata = new HashMap<>(); metadata.put("foo", "bar"); metadata.put("baz", true); metadata.put("qux", 12345L); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - Record single = read + var single = read ? session.readTransaction(tx -> tx.run(showTxMetadata).single(), config) : session.writeTransaction(tx -> tx.run(showTxMetadata).single(), config); - Map receivedMetadata = single.get("metaData").asMap(); + var receivedMetadata = single.get("metaData").asMap(); assertEquals(metadata, receivedMetadata); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java index 3fd1182493..297092e207 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java @@ -90,10 +90,7 @@ import org.neo4j.driver.internal.util.DisabledOnNeo4jWith; import org.neo4j.driver.internal.util.DriverFactoryWithFixedRetryLogic; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; -import org.neo4j.driver.reactive.RxResult; -import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; import org.neo4j.driver.testutil.TestUtil; @@ -120,7 +117,7 @@ void tearDown() { @Test void shouldKnowSessionIsClosed() { // Given - Session session = neo4j.driver().session(); + var session = neo4j.driver().session(); // When session.close(); @@ -133,7 +130,7 @@ void shouldKnowSessionIsClosed() { void shouldHandleNullConfig() { // Given driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), null); - Session session = driver.session(); + var session = driver.session(); // When session.close(); @@ -186,16 +183,16 @@ void rollsBackWriteTxInWriteSessionWhenFunctionThrows() { @Test @SuppressWarnings("deprecation") void readTxRetriedUntilSuccess() { - int failures = 6; - int retries = failures + 1; - try (Driver driver = newDriverWithFixedRetries(retries)) { - try (Session session = driver.session()) { + var failures = 6; + var retries = failures + 1; + try (var driver = newDriverWithFixedRetries(retries)) { + try (var session = driver.session()) { session.run("CREATE (:Person {name: 'Bruce Banner'})"); } - ThrowingWork work = newThrowingWorkSpy("MATCH (n) RETURN n.name", failures); - try (Session session = driver.session()) { - Record record = session.readTransaction(work); + var work = newThrowingWorkSpy("MATCH (n) RETURN n.name", failures); + try (var session = driver.session()) { + var record = session.readTransaction(work); assertEquals("Bruce Banner", record.get(0).asString()); } @@ -206,17 +203,17 @@ void readTxRetriedUntilSuccess() { @Test @SuppressWarnings("deprecation") void writeTxRetriedUntilSuccess() { - int failures = 4; - int retries = failures + 1; - try (Driver driver = newDriverWithFixedRetries(retries)) { - ThrowingWork work = newThrowingWorkSpy("CREATE (p:Person {name: 'Hulk'}) RETURN p", failures); - try (Session session = driver.session()) { - Record record = session.writeTransaction(work); + var failures = 4; + var retries = failures + 1; + try (var driver = newDriverWithFixedRetries(retries)) { + var work = newThrowingWorkSpy("CREATE (p:Person {name: 'Hulk'}) RETURN p", failures); + try (var session = driver.session()) { + var record = session.writeTransaction(work); assertEquals("Hulk", record.get(0).asNode().get("name").asString()); } - try (Session session = driver.session()) { - Record record = session.run("MATCH (p: Person {name: 'Hulk'}) RETURN count(p)") + try (var session = driver.session()) { + var record = session.run("MATCH (p: Person {name: 'Hulk'}) RETURN count(p)") .single(); assertEquals(1, record.get(0).asInt()); } @@ -228,11 +225,11 @@ void writeTxRetriedUntilSuccess() { @Test @SuppressWarnings("deprecation") void readTxRetriedUntilFailure() { - int failures = 3; - int retries = failures - 1; - try (Driver driver = newDriverWithFixedRetries(retries)) { - ThrowingWork work = newThrowingWorkSpy("MATCH (n) RETURN n.name", failures); - try (Session session = driver.session()) { + var failures = 3; + var retries = failures - 1; + try (var driver = newDriverWithFixedRetries(retries)) { + var work = newThrowingWorkSpy("MATCH (n) RETURN n.name", failures); + try (var session = driver.session()) { assertThrows(ServiceUnavailableException.class, () -> session.readTransaction(work)); } @@ -243,16 +240,16 @@ void readTxRetriedUntilFailure() { @Test @SuppressWarnings("deprecation") void writeTxRetriedUntilFailure() { - int failures = 8; - int retries = failures - 1; - try (Driver driver = newDriverWithFixedRetries(retries)) { - ThrowingWork work = newThrowingWorkSpy("CREATE (:Person {name: 'Ronan'})", failures); - try (Session session = driver.session()) { + var failures = 8; + var retries = failures - 1; + try (var driver = newDriverWithFixedRetries(retries)) { + var work = newThrowingWorkSpy("CREATE (:Person {name: 'Ronan'})", failures); + try (var session = driver.session()) { assertThrows(ServiceUnavailableException.class, () -> session.writeTransaction(work)); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Ronan'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Ronan'}) RETURN count(p)"); assertEquals(0, result.single().get(0).asInt()); } @@ -263,18 +260,17 @@ void writeTxRetriedUntilFailure() { @Test @SuppressWarnings("deprecation") void writeTxRetryErrorsAreCollected() { - try (Driver driver = newDriverWithLimitedRetries(5, TimeUnit.SECONDS)) { - ThrowingWork work = newThrowingWorkSpy("CREATE (:Person {name: 'Ronan'})", Integer.MAX_VALUE); + try (var driver = newDriverWithLimitedRetries(5, TimeUnit.SECONDS)) { + var work = newThrowingWorkSpy("CREATE (:Person {name: 'Ronan'})", Integer.MAX_VALUE); int suppressedErrors; - try (Session session = driver.session()) { - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> session.writeTransaction(work)); + try (var session = driver.session()) { + var e = assertThrows(ServiceUnavailableException.class, () -> session.writeTransaction(work)); assertThat(e.getSuppressed(), not(emptyArray())); suppressedErrors = e.getSuppressed().length; } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Ronan'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Ronan'}) RETURN count(p)"); assertEquals(0, result.single().get(0).asInt()); } @@ -285,12 +281,11 @@ void writeTxRetryErrorsAreCollected() { @Test @SuppressWarnings("deprecation") void readTxRetryErrorsAreCollected() { - try (Driver driver = newDriverWithLimitedRetries(4, TimeUnit.SECONDS)) { - ThrowingWork work = newThrowingWorkSpy("MATCH (n) RETURN n.name", Integer.MAX_VALUE); + try (var driver = newDriverWithLimitedRetries(4, TimeUnit.SECONDS)) { + var work = newThrowingWorkSpy("MATCH (n) RETURN n.name", Integer.MAX_VALUE); int suppressedErrors; - try (Session session = driver.session()) { - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> session.readTransaction(work)); + try (var session = driver.session()) { + var e = assertThrows(ServiceUnavailableException.class, () -> session.readTransaction(work)); assertThat(e.getSuppressed(), not(emptyArray())); suppressedErrors = e.getSuppressed().length; } @@ -302,8 +297,8 @@ void readTxRetryErrorsAreCollected() { @Test @SuppressWarnings("deprecation") void readTxCommittedWithoutTxSuccess() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { assertBookmarkIsEmpty(session.lastBookmark()); long answer = session.readTransaction( @@ -318,8 +313,8 @@ void readTxCommittedWithoutTxSuccess() { @Test @SuppressWarnings("deprecation") void writeTxCommittedWithoutTxSuccess() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { long answer = session.writeTransaction(tx -> tx.run("CREATE (:Person {name: 'Thor Odinson'}) RETURN 42") .single() .get(0) @@ -327,8 +322,8 @@ void writeTxCommittedWithoutTxSuccess() { assertEquals(42, answer); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Thor Odinson'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Thor Odinson'}) RETURN count(p)"); assertEquals(1, result.single().get(0).asInt()); } } @@ -337,13 +332,13 @@ void writeTxCommittedWithoutTxSuccess() { @Test @SuppressWarnings("deprecation") void readTxRolledBackWithTxFailure() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { assertBookmarkIsEmpty(session.lastBookmark()); long answer = session.readTransaction(tx -> { - Result result = tx.run("RETURN 42"); - long single = result.single().get(0).asLong(); + var result = tx.run("RETURN 42"); + var single = result.single().get(0).asLong(); tx.rollback(); return single; }); @@ -357,8 +352,8 @@ void readTxRolledBackWithTxFailure() { @Test @SuppressWarnings("deprecation") void writeTxRolledBackWithTxFailure() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { int answer = session.writeTransaction(tx -> { tx.run("CREATE (:Person {name: 'Natasha Romanoff'})"); tx.rollback(); @@ -368,8 +363,8 @@ void writeTxRolledBackWithTxFailure() { assertEquals(42, answer); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); assertEquals(0, result.single().get(0).asInt()); } } @@ -378,14 +373,14 @@ void writeTxRolledBackWithTxFailure() { @Test @SuppressWarnings("deprecation") void readTxRolledBackWhenExceptionIsThrown() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { assertBookmarkIsEmpty(session.lastBookmark()); assertThrows( IllegalStateException.class, () -> session.readTransaction(tx -> { - Result result = tx.run("RETURN 42"); + var result = tx.run("RETURN 42"); if (result.single().get(0).asLong() == 42) { throw new IllegalStateException(); } @@ -400,8 +395,8 @@ void readTxRolledBackWhenExceptionIsThrown() { @Test @SuppressWarnings("deprecation") void writeTxRolledBackWhenExceptionIsThrown() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { assertThrows( IllegalStateException.class, () -> session.writeTransaction(tx -> { @@ -410,8 +405,8 @@ void writeTxRolledBackWhenExceptionIsThrown() { })); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); assertEquals(0, result.single().get(0).asInt()); } } @@ -420,12 +415,12 @@ void writeTxRolledBackWhenExceptionIsThrown() { @Test @SuppressWarnings("deprecation") void readTxRolledBackWhenMarkedBothSuccessAndFailure() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { - ClientException error = assertThrows( + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { + var error = assertThrows( ClientException.class, () -> session.readTransaction(tx -> { - Result result = tx.run("RETURN 42"); + var result = tx.run("RETURN 42"); tx.commit(); tx.rollback(); return result.single().get(0).asLong(); @@ -437,9 +432,9 @@ void readTxRolledBackWhenMarkedBothSuccessAndFailure() { @Test @SuppressWarnings("deprecation") void writeTxFailWhenBothCommitAndRollback() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { - ClientException error = assertThrows( + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { + var error = assertThrows( ClientException.class, () -> session.writeTransaction(tx -> { tx.run("CREATE (:Person {name: 'Natasha Romanoff'})"); @@ -456,8 +451,8 @@ void writeTxFailWhenBothCommitAndRollback() { @Test @SuppressWarnings("deprecation") void readTxCommittedWhenCommitAndThrowsException() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { assertBookmarkIsEmpty(session.lastBookmark()); assertThrows( @@ -476,8 +471,8 @@ void readTxCommittedWhenCommitAndThrowsException() { @Test @SuppressWarnings("deprecation") void writeTxCommittedWhenCommitAndThrowsException() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { assertThrows( IllegalStateException.class, () -> session.writeTransaction(tx -> { @@ -487,8 +482,8 @@ void writeTxCommittedWhenCommitAndThrowsException() { })); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); assertEquals(1, result.single().get(0).asInt()); } } @@ -497,8 +492,8 @@ void writeTxCommittedWhenCommitAndThrowsException() { @Test @SuppressWarnings("deprecation") void readRolledBackWhenRollbackAndThrowsException() { - try (Driver driver = newDriverWithoutRetries(); - Session session = driver.session()) { + try (var driver = newDriverWithoutRetries(); + var session = driver.session()) { assertBookmarkIsEmpty(session.lastBookmark()); assertThrows( @@ -517,8 +512,8 @@ void readRolledBackWhenRollbackAndThrowsException() { @Test @SuppressWarnings("deprecation") void writeTxRolledBackWhenRollbackAndThrowsException() { - try (Driver driver = newDriverWithoutRetries()) { - try (Session session = driver.session()) { + try (var driver = newDriverWithoutRetries()) { + try (var session = driver.session()) { assertThrows( IllegalStateException.class, () -> session.writeTransaction(tx -> { @@ -528,8 +523,8 @@ void writeTxRolledBackWhenRollbackAndThrowsException() { })); } - try (Session session = driver.session()) { - Result result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); + try (var session = driver.session()) { + var result = session.run("MATCH (p:Person {name: 'Natasha Romanoff'}) RETURN count(p)"); assertEquals(0, result.single().get(0).asInt()); } } @@ -537,20 +532,20 @@ void writeTxRolledBackWhenRollbackAndThrowsException() { @Test void transactionRunShouldFailOnDeadlocks() throws Exception { - final int nodeId1 = 42; - final int nodeId2 = 4242; - final int newNodeId1 = 1; - final int newNodeId2 = 2; + final var nodeId1 = 42; + final var nodeId2 = 4242; + final var newNodeId1 = 1; + final var newNodeId2 = 2; createNodeWithId(nodeId1); createNodeWithId(nodeId2); - final CountDownLatch latch1 = new CountDownLatch(1); - final CountDownLatch latch2 = new CountDownLatch(1); + final var latch1 = new CountDownLatch(1); + final var latch2 = new CountDownLatch(1); Future result1 = executeInDifferentThread(() -> { - try (Session session = neo4j.driver().session(); - Transaction tx = session.beginTransaction()) { + try (var session = neo4j.driver().session(); + var tx = session.beginTransaction()) { // lock first node updateNodeId(tx, nodeId1, newNodeId1).consume(); @@ -566,8 +561,8 @@ void transactionRunShouldFailOnDeadlocks() throws Exception { }); Future result2 = executeInDifferentThread(() -> { - try (Session session = neo4j.driver().session(); - Transaction tx = session.beginTransaction()) { + try (var session = neo4j.driver().session(); + var tx = session.beginTransaction()) { // lock second node updateNodeId(tx, nodeId2, newNodeId2).consume(); @@ -582,7 +577,7 @@ void transactionRunShouldFailOnDeadlocks() throws Exception { return null; }); - boolean firstResultFailed = assertOneOfTwoFuturesFailWithDeadlock(result1, result2); + var firstResultFailed = assertOneOfTwoFuturesFailWithDeadlock(result1, result2); if (firstResultFailed) { assertEquals(0, countNodesWithId(newNodeId1)); assertEquals(2, countNodesWithId(newNodeId2)); @@ -595,21 +590,21 @@ void transactionRunShouldFailOnDeadlocks() throws Exception { @Test @SuppressWarnings("deprecation") void writeTransactionFunctionShouldRetryDeadlocks() throws Exception { - final int nodeId1 = 42; - final int nodeId2 = 4242; - final int nodeId3 = 424242; - final int newNodeId1 = 1; - final int newNodeId2 = 2; + final var nodeId1 = 42; + final var nodeId2 = 4242; + final var nodeId3 = 424242; + final var newNodeId1 = 1; + final var newNodeId2 = 2; createNodeWithId(nodeId1); createNodeWithId(nodeId2); - final CountDownLatch latch1 = new CountDownLatch(1); - final CountDownLatch latch2 = new CountDownLatch(1); + final var latch1 = new CountDownLatch(1); + final var latch2 = new CountDownLatch(1); Future result1 = executeInDifferentThread(() -> { - try (Session session = neo4j.driver().session(); - Transaction tx = session.beginTransaction()) { + try (var session = neo4j.driver().session(); + var tx = session.beginTransaction()) { // lock first node updateNodeId(tx, nodeId1, newNodeId1).consume(); @@ -625,7 +620,7 @@ void writeTransactionFunctionShouldRetryDeadlocks() throws Exception { }); Future result2 = executeInDifferentThread(() -> { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.writeTransaction(tx -> { // lock second node updateNodeId(tx, nodeId2, newNodeId2).consume(); @@ -644,7 +639,7 @@ void writeTransactionFunctionShouldRetryDeadlocks() throws Exception { return null; }); - boolean firstResultFailed = false; + var firstResultFailed = false; try { // first future may: // 1) succeed, when it's tx was able to grab both locks and tx in other future was @@ -675,11 +670,11 @@ void writeTransactionFunctionShouldRetryDeadlocks() throws Exception { @Test @SuppressWarnings("deprecation") void shouldExecuteTransactionWorkInCallerThread() { - int maxFailures = 3; - Thread callerThread = Thread.currentThread(); + var maxFailures = 3; + var callerThread = Thread.currentThread(); - try (Session session = neo4j.driver().session()) { - String result = session.readTransaction(new TransactionWork() { + try (var session = neo4j.driver().session()) { + var result = session.readTransaction(new TransactionWork() { int failures; @Override @@ -698,8 +693,8 @@ public String execute(Transaction tx) { @Test void shouldThrowRunFailureImmediatelyAndCloseSuccessfully() { - try (Session session = neo4j.driver().session()) { - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); + try (var session = neo4j.driver().session()) { + var e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); assertThat(e.getMessage(), containsString("Type mismatch")); } @@ -708,7 +703,7 @@ void shouldThrowRunFailureImmediatelyAndCloseSuccessfully() { @EnabledOnNeo4jWith(BOLT_V4) @Test void shouldNotPropagateFailureWhenStreamingIsCancelled() { - Session session = neo4j.driver().session(); + var session = neo4j.driver().session(); session.run("UNWIND range(20000, 0, -1) AS x RETURN 10 / x"); session.close(); } @@ -716,7 +711,7 @@ void shouldNotPropagateFailureWhenStreamingIsCancelled() { @Test void shouldNotBePossibleToConsumeResultAfterSessionIsClosed() { Result result; - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { result = session.run("UNWIND range(1, 20000) AS x RETURN x"); } @@ -727,11 +722,11 @@ void shouldNotBePossibleToConsumeResultAfterSessionIsClosed() { @Test void shouldThrowRunFailureImmediatelyAfterMultipleSuccessfulRunsAndCloseSuccessfully() { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.run("CREATE ()"); session.run("CREATE ()"); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); + var e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); assertThat(e.getMessage(), containsString("Type mismatch")); } @@ -739,10 +734,10 @@ void shouldThrowRunFailureImmediatelyAfterMultipleSuccessfulRunsAndCloseSuccessf @Test void shouldThrowRunFailureImmediatelyAndAcceptSubsequentRun() { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.run("CREATE ()"); session.run("CREATE ()"); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); + var e = assertThrows(ClientException.class, () -> session.run("RETURN 1 * \"x\"")); assertThat(e.getMessage(), containsString("Type mismatch")); session.run("CREATE ()"); } @@ -750,11 +745,11 @@ void shouldThrowRunFailureImmediatelyAndAcceptSubsequentRun() { @Test void shouldCloseCleanlyWhenRunErrorConsumed() { - Session session = neo4j.driver().session(); + var session = neo4j.driver().session(); session.run("CREATE ()"); - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> session.run("RETURN 10 / 0").consume()); assertThat(e.getMessage(), containsString("/ by zero")); @@ -766,10 +761,10 @@ void shouldCloseCleanlyWhenRunErrorConsumed() { @Test void shouldConsumePreviousResultBeforeRunningNewQuery() { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.run("UNWIND range(1000, 0, -1) AS x RETURN 42 / x"); - ClientException e = assertThrows(ClientException.class, () -> session.run("RETURN 1")); + var e = assertThrows(ClientException.class, () -> session.run("RETURN 1")); assertThat(e.getMessage(), containsString("/ by zero")); } } @@ -777,8 +772,8 @@ void shouldConsumePreviousResultBeforeRunningNewQuery() { @Test @SuppressWarnings("deprecation") void shouldNotRetryOnConnectionAcquisitionTimeout() { - int maxPoolSize = 3; - Config config = Config.builder() + var maxPoolSize = 3; + var config = Config.builder() .withMaxConnectionPoolSize(maxPoolSize) .withConnectionAcquisitionTimeout(0, TimeUnit.SECONDS) .withMaxTransactionRetryTime(42, TimeUnit.DAYS) // retry for a really long time @@ -787,12 +782,12 @@ void shouldNotRetryOnConnectionAcquisitionTimeout() { driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config); - for (int i = 0; i < maxPoolSize; i++) { + for (var i = 0; i < maxPoolSize; i++) { driver.session().beginTransaction(); } - AtomicInteger invocations = new AtomicInteger(); - ClientException e = assertThrows( + var invocations = new AtomicInteger(); + var e = assertThrows( ClientException.class, () -> driver.session().writeTransaction(tx -> invocations.incrementAndGet())); assertThat(e, is(connectionAcquisitionTimeoutError(0))); @@ -802,23 +797,23 @@ void shouldNotRetryOnConnectionAcquisitionTimeout() { @Test void shouldReportFailureInClose() { - Session session = neo4j.driver().session(); + var session = neo4j.driver().session(); - Result result = session.run("CYPHER runtime=interpreted UNWIND [2, 4, 8, 0] AS x RETURN 32 / x"); + var result = session.run("CYPHER runtime=interpreted UNWIND [2, 4, 8, 0] AS x RETURN 32 / x"); - ClientException e = assertThrows(ClientException.class, session::close); + var e = assertThrows(ClientException.class, session::close); assertThat(e, is(arithmeticError())); } @Test void shouldNotAllowAccessingRecordsAfterSummary() { - int recordCount = 10_000; - String query = "UNWIND range(1, " + recordCount + ") AS x RETURN x"; + var recordCount = 10_000; + var query = "UNWIND range(1, " + recordCount + ") AS x RETURN x"; - try (Session session = neo4j.driver().session()) { - Result result = session.run(query); + try (var session = neo4j.driver().session()) { + var result = session.run(query); - ResultSummary summary = result.consume(); + var summary = result.consume(); assertEquals(query, summary.query().text()); assertEquals(QueryType.READ_ONLY, summary.queryType()); @@ -828,11 +823,11 @@ void shouldNotAllowAccessingRecordsAfterSummary() { @Test void shouldNotAllowAccessingRecordsAfterSessionClosed() { - int recordCount = 11_333; - String query = "UNWIND range(1, " + recordCount + ") AS x RETURN 'Result-' + x"; + var recordCount = 11_333; + var query = "UNWIND range(1, " + recordCount + ") AS x RETURN 'Result-' + x"; Result result; - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { result = session.run(query); } @@ -842,45 +837,45 @@ void shouldNotAllowAccessingRecordsAfterSessionClosed() { @Test @DisabledOnNeo4jWith(BOLT_V4) void shouldAllowToConsumeRecordsSlowlyAndCloseSession() throws InterruptedException { - Session session = neo4j.driver().session(); + var session = neo4j.driver().session(); - Result result = session.run("UNWIND range(10000, 0, -1) AS x RETURN 10 / x"); + var result = session.run("UNWIND range(10000, 0, -1) AS x RETURN 10 / x"); // summary couple records slowly with a sleep in-between - for (int i = 0; i < 10; i++) { + for (var i = 0; i < 10; i++) { assertTrue(result.hasNext()); assertNotNull(result.next()); Thread.sleep(50); } - ClientException e = assertThrows(ClientException.class, session::close); + var e = assertThrows(ClientException.class, session::close); assertThat(e, is(arithmeticError())); } @Test void shouldAllowToConsumeRecordsSlowlyAndRetrieveSummary() throws InterruptedException { - try (Session session = neo4j.driver().session()) { - Result result = session.run("UNWIND range(8000, 1, -1) AS x RETURN 42 / x"); + try (var session = neo4j.driver().session()) { + var result = session.run("UNWIND range(8000, 1, -1) AS x RETURN 42 / x"); // summary couple records slowly with a sleep in-between - for (int i = 0; i < 12; i++) { + for (var i = 0; i < 12; i++) { assertTrue(result.hasNext()); assertNotNull(result.next()); Thread.sleep(50); } - ResultSummary summary = result.consume(); + var summary = result.consume(); assertNotNull(summary); } } @Test void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { - try (Session session1 = neo4j.driver().session(); - Session session2 = neo4j.driver().session()) { + try (var session1 = neo4j.driver().session(); + var session2 = neo4j.driver().session()) { session1.run("CREATE (:Person {name: 'Beta Ray Bill'})").consume(); - Transaction tx = session1.beginTransaction(); + var tx = session1.beginTransaction(); tx.run("MATCH (n:Person {name: 'Beta Ray Bill'}) SET n.hammer = 'Mjolnir'") .consume(); @@ -890,7 +885,7 @@ void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { TestUtil.interruptWhenInWaitingState(Thread.currentThread()); try { - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, () -> session2.run( + var e = assertThrows(ServiceUnavailableException.class, () -> session2.run( "MATCH (n:Person {name: 'Beta Ray Bill'}) SET n.hammer = 'Stormbreaker'") .consume()); assertThat(e.getMessage(), containsString("Connection to the database terminated")); @@ -904,26 +899,26 @@ void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { @Test void shouldAllowLongRunningQueryWithConnectTimeout() throws Exception { - int connectionTimeoutMs = 3_000; - Config config = Config.builder() + var connectionTimeoutMs = 3_000; + var config = Config.builder() .withLogging(DEV_NULL_LOGGING) .withConnectionTimeout(connectionTimeoutMs, TimeUnit.MILLISECONDS) .build(); - try (Driver driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config)) { - Session session1 = driver.session(); - Session session2 = driver.session(); + try (var driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config)) { + var session1 = driver.session(); + var session2 = driver.session(); session1.run("CREATE (:Avenger {name: 'Hulk'})").consume(); - Transaction tx = session1.beginTransaction(); + var tx = session1.beginTransaction(); tx.run("MATCH (a:Avenger {name: 'Hulk'}) SET a.power = 100 RETURN a") .consume(); // Hulk node is now locked - CountDownLatch latch = new CountDownLatch(1); - Future updateFuture = executeInDifferentThread(() -> { + var latch = new CountDownLatch(1); + var updateFuture = executeInDifferentThread(() -> { latch.countDown(); return session2.run("MATCH (a:Avenger {name: 'Hulk'}) SET a.weight = 1000 RETURN a.power") .single() @@ -947,7 +942,7 @@ void shouldAllowLongRunningQueryWithConnectTimeout() throws Exception { @Test @SuppressWarnings("deprecation") void shouldAllowReturningNullFromTransactionFunction() { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { assertNull(session.readTransaction(tx -> null)); assertNull(session.writeTransaction(tx -> null)); } @@ -955,8 +950,8 @@ void shouldAllowReturningNullFromTransactionFunction() { @Test void shouldAllowIteratingOverEmptyResult() { - try (Session session = neo4j.driver().session()) { - Result result = session.run("UNWIND [] AS x RETURN x"); + try (var session = neo4j.driver().session()) { + var result = session.run("UNWIND [] AS x RETURN x"); assertFalse(result.hasNext()); assertThrows(NoSuchElementException.class, result::next); @@ -965,9 +960,9 @@ void shouldAllowIteratingOverEmptyResult() { @Test void shouldAllowConsumingEmptyResult() { - try (Session session = neo4j.driver().session()) { - Result result = session.run("UNWIND [] AS x RETURN x"); - ResultSummary summary = result.consume(); + try (var session = neo4j.driver().session()) { + var result = session.run("UNWIND [] AS x RETURN x"); + var summary = result.consume(); assertNotNull(summary); assertEquals(QueryType.READ_ONLY, summary.queryType()); } @@ -975,34 +970,34 @@ void shouldAllowConsumingEmptyResult() { @Test void shouldAllowListEmptyResult() { - try (Session session = neo4j.driver().session()) { - Result result = session.run("UNWIND [] AS x RETURN x"); + try (var session = neo4j.driver().session()) { + var result = session.run("UNWIND [] AS x RETURN x"); assertEquals(emptyList(), result.list()); } } @Test void shouldReportFailureInSummary() { - try (Session session = neo4j.driver().session()) { - String query = "UNWIND [1, 2, 3, 4, 0] AS x RETURN 10 / x"; - Result result = session.run(query); + try (var session = neo4j.driver().session()) { + var query = "UNWIND [1, 2, 3, 4, 0] AS x RETURN 10 / x"; + var result = session.run(query); - ClientException e = assertThrows(ClientException.class, result::consume); + var e = assertThrows(ClientException.class, result::consume); assertThat(e, is(arithmeticError())); - ResultSummary summary = result.consume(); + var summary = result.consume(); assertEquals(query, summary.query().text()); } } @Test void shouldNotAllowStartingMultipleTransactions() { - try (Session session = neo4j.driver().session()) { - Transaction tx = session.beginTransaction(); + try (var session = neo4j.driver().session()) { + var tx = session.beginTransaction(); assertNotNull(tx); - for (int i = 0; i < 3; i++) { - ClientException e = assertThrows(ClientException.class, session::beginTransaction); + for (var i = 0; i < 3; i++) { + var e = assertThrows(ClientException.class, session::beginTransaction); assertThat( e.getMessage(), containsString("You cannot begin a transaction on a session with an open transaction")); @@ -1016,8 +1011,8 @@ void shouldNotAllowStartingMultipleTransactions() { @Test void shouldCloseOpenTransactionWhenClosed() { - try (Session session = neo4j.driver().session()) { - Transaction tx = session.beginTransaction(); + try (var session = neo4j.driver().session()) { + var tx = session.beginTransaction(); tx.run("CREATE (:Node {id: 123})"); tx.run("CREATE (:Node {id: 456})"); @@ -1030,8 +1025,8 @@ void shouldCloseOpenTransactionWhenClosed() { @Test void shouldRollbackOpenTransactionWhenClosed() { - try (Session session = neo4j.driver().session()) { - Transaction tx = session.beginTransaction(); + try (var session = neo4j.driver().session()) { + var tx = session.beginTransaction(); tx.run("CREATE (:Node {id: 123})"); tx.run("CREATE (:Node {id: 456})"); @@ -1044,21 +1039,21 @@ void shouldRollbackOpenTransactionWhenClosed() { @Test void shouldSupportNestedQueries() { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { // populate db with test data session.run("UNWIND range(1, 100) AS x CREATE (:Property {id: x})").consume(); session.run("UNWIND range(1, 10) AS x CREATE (:Resource {id: x})").consume(); - int seenProperties = 0; - int seenResources = 0; + var seenProperties = 0; + var seenResources = 0; // read properties and resources using a single session - Result properties = session.run("MATCH (p:Property) RETURN p"); + var properties = session.run("MATCH (p:Property) RETURN p"); while (properties.hasNext()) { assertNotNull(properties.next()); seenProperties++; - Result resources = session.run("MATCH (r:Resource) RETURN r"); + var resources = session.run("MATCH (r:Resource) RETURN r"); while (resources.hasNext()) { assertNotNull(resources.next()); seenResources++; @@ -1075,8 +1070,8 @@ void shouldSupportNestedQueries() { @SuppressWarnings("deprecation") void shouldErrorWhenTryingToUseRxAPIWithoutBoltV4() throws Throwable { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("RETURN 1"); + var session = neo4j.driver().rxSession(); + var result = session.run("RETURN 1"); // When trying to run the query on a server that is using a protocol that is lower than V4 StepVerifier.create(result.records()) @@ -1095,10 +1090,10 @@ void shouldErrorWhenTryingToUseRxAPIWithoutBoltV4() throws Throwable { @DisabledOnNeo4jWith(BOLT_V4) void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4() throws Throwable { // Given - Session session = neo4j.driver().session(forDatabase("foo")); + var session = neo4j.driver().session(forDatabase("foo")); // When trying to run the query on a server that is using a protocol that is lower than V4 - ClientException error = assertThrows(ClientException.class, () -> session.run("RETURN 1")); + var error = assertThrows(ClientException.class, () -> session.run("RETURN 1")); assertThat(error, instanceOf(ClientException.class)); assertThat( error.getMessage(), containsString("Database name parameter for selecting database is not supported")); @@ -1108,10 +1103,10 @@ void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4() throws Throwable { @DisabledOnNeo4jWith(BOLT_V4) void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4UsingTx() throws Throwable { // Given - Session session = neo4j.driver().session(forDatabase("foo")); + var session = neo4j.driver().session(forDatabase("foo")); // When trying to run the query on a server that is using a protocol that is lower than V4 - ClientException error = assertThrows(ClientException.class, session::beginTransaction); + var error = assertThrows(ClientException.class, session::beginTransaction); assertThat(error, instanceOf(ClientException.class)); assertThat( error.getMessage(), containsString("Database name parameter for selecting database is not supported")); @@ -1121,8 +1116,8 @@ void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4UsingTx() throws Throwab @EnabledOnNeo4jWith(BOLT_V4) void shouldAllowDatabaseName() throws Throwable { // Given - try (Session session = neo4j.driver().session(forDatabase("neo4j"))) { - Result result = session.run("RETURN 1"); + try (var session = neo4j.driver().session(forDatabase("neo4j"))) { + var result = session.run("RETURN 1"); assertThat(result.single().get(0).asInt(), equalTo(1)); } } @@ -1130,9 +1125,9 @@ void shouldAllowDatabaseName() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) void shouldAllowDatabaseNameUsingTx() throws Throwable { - try (Session session = neo4j.driver().session(forDatabase("neo4j")); - Transaction transaction = session.beginTransaction()) { - Result result = transaction.run("RETURN 1"); + try (var session = neo4j.driver().session(forDatabase("neo4j")); + var transaction = session.beginTransaction()) { + var result = transaction.run("RETURN 1"); assertThat(result.single().get(0).asInt(), equalTo(1)); } } @@ -1141,7 +1136,7 @@ void shouldAllowDatabaseNameUsingTx() throws Throwable { @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") void shouldAllowDatabaseNameUsingTxWithRetries() throws Throwable { - try (Session session = neo4j.driver().session(forDatabase("neo4j"))) { + try (var session = neo4j.driver().session(forDatabase("neo4j"))) { int num = session.readTransaction( tx -> tx.run("RETURN 1").single().get(0).asInt()); assertThat(num, equalTo(1)); @@ -1151,10 +1146,10 @@ void shouldAllowDatabaseNameUsingTxWithRetries() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) void shouldErrorDatabaseWhenDatabaseIsAbsent() throws Throwable { - Session session = neo4j.driver().session(forDatabase("foo")); + var session = neo4j.driver().session(forDatabase("foo")); - ClientException error = assertThrows(ClientException.class, () -> { - Result result = session.run("RETURN 1"); + var error = assertThrows(ClientException.class, () -> { + var result = session.run("RETURN 1"); result.consume(); }); @@ -1166,12 +1161,12 @@ void shouldErrorDatabaseWhenDatabaseIsAbsent() throws Throwable { @EnabledOnNeo4jWith(BOLT_V4) void shouldErrorDatabaseNameUsingTxWhenDatabaseIsAbsent() throws Throwable { // Given - Session session = neo4j.driver().session(forDatabase("foo")); + var session = neo4j.driver().session(forDatabase("foo")); // When trying to run the query on a server that is using a protocol that is lower than V4 - ClientException error = assertThrows(ClientException.class, () -> { - Transaction transaction = session.beginTransaction(); - Result result = transaction.run("RETURN 1"); + var error = assertThrows(ClientException.class, () -> { + var transaction = session.beginTransaction(); + var result = transaction.run("RETURN 1"); result.consume(); }); assertThat(error.getMessage(), containsString("Database does not exist. Database name: 'foo'")); @@ -1183,10 +1178,10 @@ void shouldErrorDatabaseNameUsingTxWhenDatabaseIsAbsent() throws Throwable { @SuppressWarnings("deprecation") void shouldErrorDatabaseNameUsingTxWithRetriesWhenDatabaseIsAbsent() throws Throwable { // Given - Session session = neo4j.driver().session(forDatabase("foo")); + var session = neo4j.driver().session(forDatabase("foo")); // When trying to run the query on a database that does not exist - ClientException error = assertThrows(ClientException.class, () -> { + var error = assertThrows(ClientException.class, () -> { session.readTransaction(tx -> tx.run("RETURN 1").consume()); }); assertThat(error.getMessage(), containsString("Database does not exist. Database name: 'foo'")); @@ -1218,22 +1213,21 @@ static List> managedTransactionsReturningResult() { @SuppressWarnings("deprecation") private void testExecuteReadTx(AccessMode sessionMode) { - Driver driver = neo4j.driver(); + var driver = neo4j.driver(); // write some test data - try (Session session = driver.session()) { + try (var session = driver.session()) { session.run("CREATE (:Person {name: 'Tony Stark'})"); session.run("CREATE (:Person {name: 'Steve Rogers'})"); } // read previously committed data - try (Session session = + try (var session = driver.session(builder().withDefaultAccessMode(sessionMode).build())) { - Set names = session.readTransaction(tx -> { - List records = - tx.run("MATCH (p:Person) RETURN p.name AS name").list(); + var names = session.readTransaction(tx -> { + var records = tx.run("MATCH (p:Person) RETURN p.name AS name").list(); Set names1 = new HashSet<>(records.size()); - for (Record record : records) { + for (var record : records) { names1.add(record.get("name").asString()); } return names1; @@ -1245,14 +1239,14 @@ private void testExecuteReadTx(AccessMode sessionMode) { @SuppressWarnings("deprecation") private void testExecuteWriteTx(AccessMode sessionMode) { - Driver driver = neo4j.driver(); + var driver = neo4j.driver(); // write some test data - try (Session session = + try (var session = driver.session(builder().withDefaultAccessMode(sessionMode).build())) { - String material = session.writeTransaction(tx -> { - Result result = tx.run("CREATE (s:Shield {material: 'Vibranium'}) RETURN s"); - Record record = result.single(); + var material = session.writeTransaction(tx -> { + var result = tx.run("CREATE (s:Shield {material: 'Vibranium'}) RETURN s"); + var record = result.single(); tx.commit(); return record.get(0).asNode().get("material").asString(); }); @@ -1261,17 +1255,17 @@ private void testExecuteWriteTx(AccessMode sessionMode) { } // read previously committed data - try (Session session = driver.session()) { - Record record = session.run("MATCH (s:Shield) RETURN s.material").single(); + try (var session = driver.session()) { + var record = session.run("MATCH (s:Shield) RETURN s.material").single(); assertEquals("Vibranium", record.get(0).asString()); } } @SuppressWarnings("deprecation") private void testTxRollbackWhenFunctionThrows(AccessMode sessionMode) { - Driver driver = neo4j.driver(); + var driver = neo4j.driver(); - try (Session session = + try (var session = driver.session(builder().withDefaultAccessMode(sessionMode).build())) { assertThrows( ClientException.class, @@ -1285,8 +1279,8 @@ private void testTxRollbackWhenFunctionThrows(AccessMode sessionMode) { } // no data should have been committed - try (Session session = driver.session()) { - Record record = session.run("MATCH (p:Person {name: 'Thanos'}) RETURN count(p)") + try (var session = driver.session()) { + var record = session.run("MATCH (p:Person {name: 'Thanos'}) RETURN count(p)") .single(); assertEquals(0, record.get(0).asInt()); } @@ -1303,7 +1297,7 @@ private Driver newDriverWithFixedRetries(int maxRetriesCount) { } private Driver newDriverWithLimitedRetries(int maxTxRetryTime, TimeUnit unit) { - Config config = Config.builder() + var config = Config.builder() .withLogging(DEV_NULL_LOGGING) .withMaxTransactionRetryTime(maxTxRetryTime, unit) .build(); @@ -1319,14 +1313,14 @@ private static ThrowingWork newThrowingWorkSpy(String query, int failures) { } private int countNodesWithId(int id) { - try (Session session = neo4j.driver().session()) { - Result result = session.run("MATCH (n {id: $id}) RETURN count(n)", parameters("id", id)); + try (var session = neo4j.driver().session()) { + var result = session.run("MATCH (n {id: $id}) RETURN count(n)", parameters("id", id)); return result.single().get(0).asInt(); } } private void createNodeWithId(int id) { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.run("CREATE (n {id: $id})", parameters("id", id)); } } @@ -1338,7 +1332,7 @@ private static Result updateNodeId(QueryRunner queryRunner, int currentId, int n private static boolean assertOneOfTwoFuturesFailWithDeadlock(Future future1, Future future2) throws Exception { - boolean firstFailed = false; + var firstFailed = false; try { assertNull(future1.get(20, TimeUnit.SECONDS)); } catch (ExecutionException e) { @@ -1357,7 +1351,7 @@ private static boolean assertOneOfTwoFuturesFailWithDeadlock(Future future private static void assertDeadlockDetectedError(ExecutionException e) { assertThat(e.getCause(), instanceOf(TransientException.class)); - String errorCode = ((TransientException) e.getCause()).code(); + var errorCode = ((TransientException) e.getCause()).code(); assertEquals("Neo.TransientError.Transaction.DeadlockDetected", errorCode); } @@ -1391,11 +1385,11 @@ private static class ThrowingWork implements TransactionWork { @Override public Record execute(Transaction tx) { - Result result = tx.run(query); + var result = tx.run(query); if (invoked++ < failures) { throw new ServiceUnavailableException(""); } - Record single = result.single(); + var single = result.single(); tx.commit(); return single; } diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java index eaeb8234bc..5714002ae9 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java @@ -41,14 +41,12 @@ import org.neo4j.driver.Session; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.AsyncTransactionWork; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.internal.async.connection.EventLoopGroupFactory; import org.neo4j.driver.internal.util.Futures; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; -import org.neo4j.driver.types.Node; @ParallelizableIT class SessionMixIT { @@ -84,8 +82,7 @@ void shouldFailToExecuteBlockingRunChainedWithAsyncTransaction() { .beginTransactionAsync(TransactionConfig.empty()) .thenApply(tx -> { if (EventLoopGroupFactory.isEventLoopThread(Thread.currentThread())) { - IllegalStateException e = - assertThrows(IllegalStateException.class, () -> session.run("CREATE ()")); + var e = assertThrows(IllegalStateException.class, () -> session.run("CREATE ()")); assertThat(e, is(blockingOperationInEventLoopError())); } return null; @@ -96,7 +93,7 @@ void shouldFailToExecuteBlockingRunChainedWithAsyncTransaction() { @Test void shouldAllowUsingBlockingApiInCommonPoolWhenChaining() { - CompletionStage txStage = asyncSession + var txStage = asyncSession .beginTransactionAsync() // move execution to ForkJoinPool.commonPool() .thenApplyAsync(tx -> { @@ -118,7 +115,7 @@ void shouldAllowUsingBlockingApiInCommonPoolWhenChaining() { void shouldFailToExecuteBlockingRunInAsyncTransactionFunction() { AsyncTransactionWork> completionStageTransactionWork = tx -> { if (EventLoopGroupFactory.isEventLoopThread(Thread.currentThread())) { - IllegalStateException e = assertThrows( + var e = assertThrows( IllegalStateException.class, () -> session.run("UNWIND range(1, 10000) AS x CREATE (n:AsyncNode {x: x}) RETURN n")); @@ -127,7 +124,7 @@ void shouldFailToExecuteBlockingRunInAsyncTransactionFunction() { return completedFuture(null); }; - CompletionStage result = asyncSession.readTransactionAsync(completionStageTransactionWork); + var result = asyncSession.readTransactionAsync(completionStageTransactionWork); assertNull(await(result)); } @@ -138,7 +135,7 @@ void shouldFailToExecuteBlockingRunChainedWithAsyncRun() { .thenCompose(ResultCursor::singleAsync) .thenApply(record -> { if (EventLoopGroupFactory.isEventLoopThread(Thread.currentThread())) { - IllegalStateException e = assertThrows( + var e = assertThrows( IllegalStateException.class, () -> session.run( "RETURN $x", @@ -154,7 +151,7 @@ void shouldFailToExecuteBlockingRunChainedWithAsyncRun() { @Test void shouldAllowBlockingOperationInCommonPoolWhenChaining() { - CompletionStage nodeStage = asyncSession + var nodeStage = asyncSession .runAsync("RETURN 42 AS value") .thenCompose(ResultCursor::singleAsync) // move execution to ForkJoinPool.commonPool() @@ -162,7 +159,7 @@ void shouldAllowBlockingOperationInCommonPoolWhenChaining() { .thenApply(Result::single) .thenApply(record -> record.get(0).asNode()); - Node node = await(nodeStage); + var node = await(nodeStage); assertEquals(42, node.get("value").asInt()); assertEquals(1, countNodesByLabel("Node")); @@ -172,7 +169,7 @@ private void runNestedQueries( ResultCursor inputCursor, List> stages, CompletableFuture>> resultFuture) { - final CompletionStage recordResponse = inputCursor.nextAsync(); + final var recordResponse = inputCursor.nextAsync(); stages.add(recordResponse); recordResponse.whenComplete((record, error) -> { @@ -191,11 +188,11 @@ private void runNestedQuery( Record record, List> stages, CompletableFuture>> resultFuture) { - Node node = record.get(0).asNode(); - long id = node.get("id").asLong(); - long age = id * 10; + var node = record.get(0).asNode(); + var id = node.get("id").asLong(); + var age = id * 10; - CompletionStage response = asyncSession.runAsync( + var response = asyncSession.runAsync( "MATCH (p:Person {id: $id}) SET p.age = $age RETURN p", parameters("id", id, "age", age)); response.whenComplete((cursor, error) -> { @@ -209,7 +206,7 @@ private void runNestedQuery( } private long countNodesByLabel(String label) { - CompletionStage countStage = asyncSession + var countStage = asyncSession .runAsync("MATCH (n:" + label + ") RETURN count(n)") .thenCompose(ResultCursor::singleAsync) .thenApply(record -> record.get(0).asLong()); @@ -218,8 +215,8 @@ private long countNodesByLabel(String label) { } private int countNodes(Object id) { - Query query = new Query("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); - Record record = session.run(query).single(); + var query = new Query("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); + var record = session.run(query).single(); return record.get(0).asInt(); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java index 5eea5beb12..6281f27738 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java @@ -61,7 +61,6 @@ import org.neo4j.driver.QueryRunner; import org.neo4j.driver.Result; import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.Neo4jException; import org.neo4j.driver.exceptions.ServiceUnavailableException; @@ -123,7 +122,7 @@ void shouldTerminateQueriesInUnmanagedTransactionsRandomly() throws Exception { @Test void shouldAllowMoreQueriesAfterSessionReset() { // Given - try (InternalSession session = (InternalSession) neo4j.driver().session()) { + try (var session = (InternalSession) neo4j.driver().session()) { session.run("RETURN 1").consume(); @@ -138,8 +137,8 @@ void shouldAllowMoreQueriesAfterSessionReset() { @Test void shouldAllowMoreTxAfterSessionReset() { // Given - try (InternalSession session = (InternalSession) neo4j.driver().session()) { - try (Transaction tx = session.beginTransaction()) { + try (var session = (InternalSession) neo4j.driver().session()) { + try (var tx = session.beginTransaction()) { tx.run("RETURN 1"); tx.commit(); } @@ -148,7 +147,7 @@ void shouldAllowMoreTxAfterSessionReset() { session.reset(); // Then can run more Tx - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("RETURN 2"); tx.commit(); } @@ -174,14 +173,14 @@ void shouldMarkTxAsFailedAndDisallowRunAfterSessionReset() { @Test void shouldAllowMoreTxAfterSessionResetInTx() { // Given - try (InternalSession session = (InternalSession) neo4j.driver().session()) { - try (Transaction ignore = session.beginTransaction()) { + try (var session = (InternalSession) neo4j.driver().session()) { + try (var ignore = session.beginTransaction()) { // When reset the state of this session session.reset(); } // Then can run more Tx - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("RETURN 2"); tx.commit(); } @@ -199,10 +198,10 @@ void performUpdate( AtomicReference usedSessionRef, CountDownLatch latchToWait) throws Exception { - try (InternalSession session = (InternalSession) driver.session()) { + try (var session = (InternalSession) driver.session()) { usedSessionRef.set(session); latchToWait.await(); - Result result = updateNodeId(session, nodeId, newNodeId); + var result = updateNodeId(session, nodeId, newNodeId); result.consume(); } } @@ -220,11 +219,11 @@ public void performUpdate( AtomicReference usedSessionRef, CountDownLatch latchToWait) throws Exception { - try (InternalSession session = (InternalSession) neo4j.driver().session(); - Transaction tx = session.beginTransaction()) { + try (var session = (InternalSession) neo4j.driver().session(); + var tx = session.beginTransaction()) { usedSessionRef.set(session); latchToWait.await(); - Result result = updateNodeId(tx, nodeId, newNodeId); + var result = updateNodeId(tx, nodeId, newNodeId); result.consume(); } } @@ -233,7 +232,7 @@ public void performUpdate( @Test void resetShouldStopWriteTransactionWaitingForALock() throws Exception { - AtomicInteger invocationsOfWork = new AtomicInteger(); + var invocationsOfWork = new AtomicInteger(); testResetOfQueryWaitingForLock(new NodeIdUpdater() { @Override @@ -244,13 +243,13 @@ public void performUpdate( AtomicReference usedSessionRef, CountDownLatch latchToWait) throws Exception { - try (InternalSession session = (InternalSession) driver.session()) { + try (var session = (InternalSession) driver.session()) { usedSessionRef.set(session); latchToWait.await(); session.writeTransaction(tx -> { invocationsOfWork.incrementAndGet(); - Result result = updateNodeId(tx, nodeId, newNodeId); + var result = updateNodeId(tx, nodeId, newNodeId); result.consume(); return null; }); @@ -263,18 +262,18 @@ public void performUpdate( @Test void shouldBeAbleToRunMoreQueriesAfterResetOnNoErrorState() { - try (InternalSession session = (InternalSession) neo4j.driver().session()) { + try (var session = (InternalSession) neo4j.driver().session()) { // Given session.reset(); // When - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (n:FirstNode)"); tx.commit(); // Then the outcome of both queries should be visible - Result result = session.run("MATCH (n) RETURN count(n)"); - long nodes = result.single().get("count(n)").asLong(); + var result = session.run("MATCH (n) RETURN count(n)"); + var nodes = result.single().get("count(n)").asLong(); assertThat(nodes, equalTo(1L)); } } @@ -291,13 +290,13 @@ void shouldHandleResetBeforeRun() { @Test void shouldHandleResetFromMultipleThreads() throws Throwable { - InternalSession session = (InternalSession) neo4j.driver().session(); + var session = (InternalSession) neo4j.driver().session(); - CountDownLatch beforeCommit = new CountDownLatch(1); - CountDownLatch afterReset = new CountDownLatch(1); + var beforeCommit = new CountDownLatch(1); + var afterReset = new CountDownLatch(1); Future txFuture = executor.submit(() -> { - Transaction tx1 = session.beginTransaction(); + var tx1 = session.beginTransaction(); tx1.run("CREATE (n:FirstNode)"); beforeCommit.countDown(); afterReset.await(); @@ -308,7 +307,7 @@ void shouldHandleResetFromMultipleThreads() throws Throwable { } catch (Neo4jException ignore) { } - try (Transaction tx2 = session.beginTransaction()) { + try (var tx2 = session.beginTransaction()) { tx2.run("CREATE (n:SecondNode)"); tx2.commit(); } @@ -334,20 +333,20 @@ void shouldHandleResetFromMultipleThreads() throws Throwable { } private void testResetOfQueryWaitingForLock(NodeIdUpdater nodeIdUpdater) throws Exception { - int nodeId = 42; - int newNodeId1 = 4242; - int newNodeId2 = 424242; + var nodeId = 42; + var newNodeId1 = 4242; + var newNodeId2 = 424242; createNodeWithId(nodeId); - CountDownLatch nodeLocked = new CountDownLatch(1); - AtomicReference otherSessionRef = new AtomicReference<>(); + var nodeLocked = new CountDownLatch(1); + var otherSessionRef = new AtomicReference(); - try (InternalSession session = (InternalSession) neo4j.driver().session(); - Transaction tx = session.beginTransaction()) { - Future txResult = nodeIdUpdater.update(nodeId, newNodeId1, otherSessionRef, nodeLocked); + try (var session = (InternalSession) neo4j.driver().session(); + var tx = session.beginTransaction()) { + var txResult = nodeIdUpdater.update(nodeId, newNodeId1, otherSessionRef, nodeLocked); - Result result = updateNodeId(tx, nodeId, newNodeId2); + var result = updateNodeId(tx, nodeId, newNodeId2); result.consume(); nodeLocked.countDown(); @@ -359,15 +358,15 @@ private void testResetOfQueryWaitingForLock(NodeIdUpdater nodeIdUpdater) throws tx.commit(); } - try (Session session = neo4j.driver().session()) { - Result result = session.run("MATCH (n) RETURN n.id AS id"); - int value = result.single().get("id").asInt(); + try (var session = neo4j.driver().session()) { + var result = session.run("MATCH (n) RETURN n.id AS id"); + var value = result.single().get("id").asInt(); assertEquals(newNodeId2, value); } } private void createNodeWithId(int id) { - try (Session session = neo4j.driver().session()) { + try (var session = neo4j.driver().session()) { session.run("CREATE (n {id: $id})", parameters("id", id)); } } @@ -378,26 +377,26 @@ private static Result updateNodeId(QueryRunner queryRunner, int currentId, int n } private static void assertTransactionTerminated(Future work) { - ExecutionException e = assertThrows(ExecutionException.class, () -> work.get(20, TimeUnit.SECONDS)); + var e = assertThrows(ExecutionException.class, () -> work.get(20, TimeUnit.SECONDS)); assertThat(e.getCause(), instanceOf(ClientException.class)); assertThat(e.getCause().getMessage(), startsWith("The transaction has been terminated")); } private void testRandomQueryTermination(boolean autoCommit) throws InterruptedException { Set runningSessions = newSetFromMap(new ConcurrentHashMap<>()); - AtomicBoolean stop = new AtomicBoolean(); + var stop = new AtomicBoolean(); List> futures = new ArrayList<>(); - for (int i = 0; i < STRESS_TEST_THREAD_COUNT; i++) { + for (var i = 0; i < STRESS_TEST_THREAD_COUNT; i++) { futures.add(executor.submit(() -> { - ThreadLocalRandom random = ThreadLocalRandom.current(); + var random = ThreadLocalRandom.current(); while (!stop.get()) { runRandomQuery(autoCommit, random, runningSessions, stop); } })); } - long deadline = System.currentTimeMillis() + STRESS_TEST_DURATION_MS; + var deadline = System.currentTimeMillis() + STRESS_TEST_DURATION_MS; while (!stop.get()) { if (System.currentTimeMillis() > deadline) { stop.set(true); @@ -415,10 +414,10 @@ private void testRandomQueryTermination(boolean autoCommit) throws InterruptedEx private void runRandomQuery( boolean autoCommit, Random random, Set runningSessions, AtomicBoolean stop) { try { - InternalSession session = (InternalSession) neo4j.driver().session(); + var session = (InternalSession) neo4j.driver().session(); runningSessions.add(session); try { - String query = STRESS_TEST_QUERIES[random.nextInt(STRESS_TEST_QUERIES.length - 1)]; + var query = STRESS_TEST_QUERIES[random.nextInt(STRESS_TEST_QUERIES.length - 1)]; runQuery(session, query, autoCommit); } finally { runningSessions.remove(session); @@ -435,24 +434,24 @@ private void runRandomQuery( } private void testQueryTermination(String query, boolean autoCommit) { - Future queryResult = runQueryInDifferentThreadAndResetSession(query, autoCommit); - ExecutionException e = assertThrows(ExecutionException.class, () -> queryResult.get(10, SECONDS)); + var queryResult = runQueryInDifferentThreadAndResetSession(query, autoCommit); + var e = assertThrows(ExecutionException.class, () -> queryResult.get(10, SECONDS)); assertThat(e.getCause(), instanceOf(Neo4jException.class)); awaitNoActiveQueries(); } private Future runQueryInDifferentThreadAndResetSession(String query, boolean autoCommit) { - AtomicReference sessionRef = new AtomicReference<>(); + var sessionRef = new AtomicReference(); Future queryResult = runAsync(() -> { - InternalSession session = (InternalSession) neo4j.driver().session(); + var session = (InternalSession) neo4j.driver().session(); sessionRef.set(session); runQuery(session, query, autoCommit); }); awaitActiveQueriesToContain(query); - InternalSession session = sessionRef.get(); + var session = sessionRef.get(); assertNotNull(session); session.reset(); @@ -463,7 +462,7 @@ private static void runQuery(Session session, String query, boolean autoCommit) if (autoCommit) { session.run(query).consume(); } else { - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run(query); tx.commit(); } @@ -479,9 +478,8 @@ private void awaitActiveQueriesToContain(String value) { } private long countNodes(String label) { - try (Session session = neo4j.driver().session()) { - Result result = - session.run("MATCH (n" + (label == null ? "" : ":" + label) + ") RETURN count(n) AS result"); + try (var session = neo4j.driver().session()) { + var result = session.run("MATCH (n" + (label == null ? "" : ":" + label) + ") RETURN count(n) AS result"); return result.single().get(0).asLong(); } } @@ -547,7 +545,7 @@ abstract void performUpdate( } private static void awaitAllFutures(List> futures) { - for (Future future : futures) { + for (var future : futures) { await(future); } } @@ -557,7 +555,7 @@ private static void awaitCondition(BooleanSupplier condition) { } private static void awaitCondition(BooleanSupplier condition, long value) { - long deadline = System.currentTimeMillis() + TimeUnit.MILLISECONDS.toMillis(value); + var deadline = System.currentTimeMillis() + TimeUnit.MILLISECONDS.toMillis(value); while (!condition.getAsBoolean()) { if (System.currentTimeMillis() > deadline) { fail("Condition was not met in time"); @@ -576,7 +574,7 @@ private static int activeQueryCount(Driver driver) { } private static List activeQueryNames(Driver driver) { - try (Session session = driver.session()) { + try (var session = driver.session()) { if (neo4j.isNeo4j44OrEarlier()) { return session.run("CALL dbms.listQueries() YIELD query RETURN query").list().stream() .map(record -> record.get(0).asString()) diff --git a/driver/src/test/java/org/neo4j/driver/integration/SharedEventLoopIT.java b/driver/src/test/java/org/neo4j/driver/integration/SharedEventLoopIT.java index efe5fe1397..a872ace940 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SharedEventLoopIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SharedEventLoopIT.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; import org.neo4j.driver.internal.DriverFactory; import org.neo4j.driver.internal.security.SecurityPlanImpl; import org.neo4j.driver.testutil.DatabaseExtension; @@ -42,11 +41,11 @@ class SharedEventLoopIT { @Test void testDriverShouldNotCloseSharedEventLoop() { - NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(1); + var eventLoopGroup = new NioEventLoopGroup(1); try { - Driver driver1 = createDriver(eventLoopGroup); - Driver driver2 = createDriver(eventLoopGroup); + var driver1 = createDriver(eventLoopGroup); + var driver2 = createDriver(eventLoopGroup); testConnection(driver1); testConnection(driver2); @@ -62,9 +61,9 @@ void testDriverShouldNotCloseSharedEventLoop() { @Test void testDriverShouldUseSharedEventLoop() { - NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(1); + var eventLoopGroup = new NioEventLoopGroup(1); - Driver driver = createDriver(eventLoopGroup); + var driver = createDriver(eventLoopGroup); testConnection(driver); eventLoopGroup.shutdownGracefully(100, 100, TimeUnit.MILLISECONDS); @@ -90,7 +89,7 @@ private Driver createDriver(EventLoopGroup eventLoopGroup) { } private void testConnection(Driver driver) { - try (Session session = driver.session()) { + try (var session = driver.session()) { session.run("RETURN 1"); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/SpatialTypesIT.java b/driver/src/test/java/org/neo4j/driver/integration/SpatialTypesIT.java index e01a7e4272..6ebe26fc6c 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SpatialTypesIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SpatialTypesIT.java @@ -28,10 +28,8 @@ import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.IntStream; -import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; import org.neo4j.driver.Value; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.testutil.ParallelizableIT; @@ -50,10 +48,9 @@ class SpatialTypesIT { @Test void shouldReceivePoint() { - Record record = - session.run("RETURN point({x: 39.111748, y:-76.775635})").single(); + var record = session.run("RETURN point({x: 39.111748, y:-76.775635})").single(); - Point point = record.get(0).asPoint(); + var point = record.get(0).asPoint(); assertEquals(CARTESIAN_CRS_CODE, point.srid()); assertEquals(39.111748, point.x(), DELTA); @@ -62,14 +59,14 @@ void shouldReceivePoint() { @Test void shouldSendPoint() { - Value pointValue = point(WGS_84_CRS_CODE, 38.8719, 77.0563); - Record record1 = session.run("CREATE (n:Node {location: $point}) RETURN 42", singletonMap("point", pointValue)) + var pointValue = point(WGS_84_CRS_CODE, 38.8719, 77.0563); + var record1 = session.run("CREATE (n:Node {location: $point}) RETURN 42", singletonMap("point", pointValue)) .single(); assertEquals(42, record1.get(0).asInt()); - Record record2 = session.run("MATCH (n:Node) RETURN n.location").single(); - Point point = record2.get(0).asPoint(); + var record2 = session.run("MATCH (n:Node) RETURN n.location").single(); + var point = record2.get(0).asPoint(); assertEquals(WGS_84_CRS_CODE, point.srid()); assertEquals(38.8719, point.x(), DELTA); @@ -83,43 +80,41 @@ void shouldSendAndReceivePoint() { @Test void shouldSendAndReceiveRandom2DPoints() { - Stream randomPoints = - ThreadLocalRandom.current().ints(1_000, 0, 2).mapToObj(SpatialTypesIT::createPoint); + var randomPoints = ThreadLocalRandom.current().ints(1_000, 0, 2).mapToObj(SpatialTypesIT::createPoint); randomPoints.forEach(this::testPointSendAndReceive); } @Test void shouldSendAndReceiveRandom2DPointArrays() { - Stream> randomPointLists = - ThreadLocalRandom.current().ints(1_000, 0, 2).mapToObj(SpatialTypesIT::randomPointList); + var randomPointLists = ThreadLocalRandom.current().ints(1_000, 0, 2).mapToObj(SpatialTypesIT::randomPointList); randomPointLists.forEach(this::testPointListSendAndReceive); } private void testPointSendAndReceive(Value pointValue) { - Point originalPoint = pointValue.asPoint(); + var originalPoint = pointValue.asPoint(); - Record record = session.run("CREATE (n {point: $point}) return n.point", singletonMap("point", pointValue)) + var record = session.run("CREATE (n {point: $point}) return n.point", singletonMap("point", pointValue)) .single(); - Point receivedPoint = record.get(0).asPoint(); + var receivedPoint = record.get(0).asPoint(); assertPoints2DEqual(originalPoint, receivedPoint); } private void testPointListSendAndReceive(List points) { - Record record = session.run("CREATE (n {points: $points}) return n.points", singletonMap("points", points)) + var record = session.run("CREATE (n {points: $points}) return n.points", singletonMap("points", points)) .single(); - List receivedPoints = record.get(0).asList(ofPoint()); + var receivedPoints = record.get(0).asList(ofPoint()); assertEquals(points.size(), receivedPoints.size()); - for (int i = 0; i < points.size(); i++) { + for (var i = 0; i < points.size(); i++) { assertPoints2DEqual(points.get(i).asPoint(), receivedPoints.get(i)); } } private static List randomPointList(int index) { - int size = ThreadLocalRandom.current().nextInt(1, 100); + var size = ThreadLocalRandom.current().nextInt(1, 100); return IntStream.range(0, size).mapToObj(ignored -> createPoint(index)).collect(toList()); } @@ -138,7 +133,7 @@ private static double randomDoubleWGS_84_Y() { } private static void assertPoints2DEqual(Point expected, Point actual) { - String message = "Expected: " + expected + " but was: " + actual; + var message = "Expected: " + expected + " but was: " + actual; assertEquals(expected.srid(), actual.srid(), message); assertEquals(expected.x(), actual.x(), DELTA, message); assertEquals(expected.y(), actual.y(), DELTA, message); diff --git a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java index 4fce571661..44f98c6999 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java @@ -29,23 +29,16 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.neo4j.driver.SessionConfig.forDatabase; -import java.util.List; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Result; import org.neo4j.driver.Session; -import org.neo4j.driver.Value; import org.neo4j.driver.Values; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.internal.util.Neo4jFeature; -import org.neo4j.driver.summary.Notification; -import org.neo4j.driver.summary.Plan; -import org.neo4j.driver.summary.ProfiledPlan; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -72,17 +65,17 @@ void tearDown() { @Test void shouldContainBasicMetadata() { // Given - Value parameters = Values.parameters("limit", 10); - String query = "UNWIND [1, 2, 3, 4] AS n RETURN n AS number LIMIT $limit"; + var parameters = Values.parameters("limit", 10); + var query = "UNWIND [1, 2, 3, 4] AS n RETURN n AS number LIMIT $limit"; // When - Result result = session.run(query, parameters); + var result = session.run(query, parameters); // Then assertTrue(result.hasNext()); // When - ResultSummary summary = result.consume(); + var summary = result.consume(); // Then assertThat(summary.queryType(), equalTo(QueryType.READ_ONLY)); @@ -96,7 +89,7 @@ void shouldContainBasicMetadata() { @Test void shouldContainTimeInformation() { // Given - ResultSummary summary = + var summary = session.run("UNWIND range(1,1000) AS n RETURN n AS number").consume(); // Then @@ -180,8 +173,8 @@ void shouldContainCorrectStatistics() { @Test @EnabledOnNeo4jWith(Neo4jFeature.BOLT_V4) void shouldGetSystemUpdates() { - try (Session session = neo4j.driver().session(forDatabase("system"))) { - Result result = session.run("CREATE USER foo SET PASSWORD 'Testing0'"); + try (var session = neo4j.driver().session(forDatabase("system"))) { + var result = session.run("CREATE USER foo SET PASSWORD 'Testing0'"); assertThat(result.consume().counters().containsUpdates(), equalTo(false)); assertThat(result.consume().counters().containsSystemUpdates(), equalTo(true)); } @@ -204,12 +197,12 @@ void shouldContainCorrectQueryType() { @Test void shouldContainCorrectPlan() { // When - ResultSummary summary = session.run("EXPLAIN MATCH (n) RETURN 1").consume(); + var summary = session.run("EXPLAIN MATCH (n) RETURN 1").consume(); // Then assertTrue(summary.hasPlan()); - Plan plan = summary.plan(); + var plan = summary.plan(); assertThat(plan.operatorType(), notNullValue()); assertThat(plan.identifiers().size(), greaterThan(0)); assertThat(plan.arguments().size(), greaterThan(0)); @@ -219,7 +212,7 @@ void shouldContainCorrectPlan() { @Test void shouldContainProfile() { // When - ResultSummary summary = session.run("PROFILE RETURN 1").consume(); + var summary = session.run("PROFILE RETURN 1").consume(); // Then assertTrue(summary.hasProfile()); @@ -228,7 +221,7 @@ void shouldContainProfile() { // available assertEquals(summary.plan(), summary.profile()); - ProfiledPlan profile = summary.profile(); + var profile = summary.profile(); assertEquals(0, profile.time()); assertEquals(0, profile.dbHits()); @@ -239,14 +232,14 @@ void shouldContainProfile() { @SuppressWarnings("deprecation") void shouldContainNotifications() { // When - ResultSummary summary = + var summary = session.run("EXPLAIN MATCH (n:ThisLabelDoesNotExist) RETURN n").consume(); // Then - List notifications = summary.notifications(); + var notifications = summary.notifications(); assertNotNull(notifications); assertThat(notifications.size(), equalTo(1)); - Notification notification = notifications.get(0); + var notification = notifications.get(0); assertThat(notification.code(), notNullValue()); assertThat(notification.title(), notNullValue()); assertThat(notification.description(), notNullValue()); @@ -259,7 +252,7 @@ void shouldContainNotifications() { @Test void shouldContainNoNotifications() throws Throwable { // When - ResultSummary summary = session.run("RETURN 1").consume(); + var summary = session.run("RETURN 1").consume(); // Then assertThat(summary.notifications().size(), equalTo(0)); diff --git a/driver/src/test/java/org/neo4j/driver/integration/TemporalTypesIT.java b/driver/src/test/java/org/neo4j/driver/integration/TemporalTypesIT.java index 8031ec31e3..390fffbda4 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/TemporalTypesIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/TemporalTypesIT.java @@ -42,8 +42,6 @@ import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; import org.neo4j.driver.Value; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.testutil.ParallelizableIT; @@ -174,13 +172,13 @@ void shouldSendAndReceiveListsWithRandomLocalDateTimes() { @Test void shouldSendDateTimeWithZoneOffset() { - ZoneOffset offset = ZoneOffset.ofHoursMinutes(-4, -15); + var offset = ZoneOffset.ofHoursMinutes(-4, -15); testSendValue(ZonedDateTime.of(1845, 3, 25, 19, 15, 45, 22, offset), Value::asZonedDateTime); } @Test void shouldReceiveDateTimeWithZoneOffset() { - ZoneOffset offset = ZoneOffset.ofHoursMinutes(3, 30); + var offset = ZoneOffset.ofHoursMinutes(3, 30); testReceiveValue( "RETURN datetime({year:1984, month:10, day:11, hour:21, minute:30, second:34, timezone:'+03:30'})", ZonedDateTime.of(1984, 10, 11, 21, 30, 34, 0, offset), @@ -189,7 +187,7 @@ void shouldReceiveDateTimeWithZoneOffset() { @Test void shouldSendAndReceiveDateTimeWithZoneOffset() { - ZoneOffset offset = ZoneOffset.ofHoursMinutes(-7, -15); + var offset = ZoneOffset.ofHoursMinutes(-7, -15); testSendAndReceiveValue(ZonedDateTime.of(2017, 3, 9, 11, 12, 13, 14, offset), Value::asZonedDateTime); } @@ -235,13 +233,13 @@ void shouldSendAndReceiveListsWithRandomDateTimeRepresentedWithOffsetDateTimes() @Test void shouldSendDateTimeWithZoneId() { - ZoneId zoneId = ZoneId.of("Europe/Stockholm"); + var zoneId = ZoneId.of("Europe/Stockholm"); testSendValue(ZonedDateTime.of(2049, 9, 11, 19, 10, 40, 20, zoneId), Value::asZonedDateTime); } @Test void shouldReceiveDateTimeWithZoneId() { - ZoneId zoneId = ZoneId.of("Europe/London"); + var zoneId = ZoneId.of("Europe/London"); testReceiveValue( "RETURN datetime({year:2000, month:1, day:1, hour:9, minute:5, second:1, timezone:'Europe/London'})", ZonedDateTime.of(2000, 1, 1, 9, 5, 1, 0, zoneId), @@ -250,7 +248,7 @@ void shouldReceiveDateTimeWithZoneId() { @Test void shouldSendAndReceiveDateTimeWithZoneId() { - ZoneId zoneId = ZoneId.of("Europe/Stockholm"); + var zoneId = ZoneId.of("Europe/Stockholm"); testSendAndReceiveValue(ZonedDateTime.of(2099, 12, 29, 12, 59, 59, 59, zoneId), Value::asZonedDateTime); } @@ -325,7 +323,7 @@ void shouldFormatDurationToString() { } private static void testSendAndReceiveRandomValues(Supplier valueSupplier, Function converter) { - for (int i = 0; i < RANDOM_VALUES_TO_TEST; i++) { + for (var i = 0; i < RANDOM_VALUES_TO_TEST; i++) { testSendAndReceiveValue(valueSupplier.get(), converter); } } @@ -336,38 +334,38 @@ private static void testSendAndReceiveRandomLists(Supplier valueSupplier) private static void testSendAndReceiveRandomLists( Supplier valueSupplier, Function> converter) { - for (int i = 0; i < RANDOM_LISTS_TO_TEST; i++) { - int listSize = ThreadLocalRandom.current().nextInt(MIN_LIST_SIZE, MAX_LIST_SIZE); - List list = Stream.generate(valueSupplier).limit(listSize).collect(toList()); + for (var i = 0; i < RANDOM_LISTS_TO_TEST; i++) { + var listSize = ThreadLocalRandom.current().nextInt(MIN_LIST_SIZE, MAX_LIST_SIZE); + var list = Stream.generate(valueSupplier).limit(listSize).collect(toList()); testSendAndReceiveValue(list, converter); } } private static void testSendValue(T value, Function converter) { - Record record1 = session.run("CREATE (n:Node {value: $value}) RETURN 42", singletonMap("value", value)) + var record1 = session.run("CREATE (n:Node {value: $value}) RETURN 42", singletonMap("value", value)) .single(); assertEquals(42, record1.get(0).asInt()); - Record record2 = session.run("MATCH (n:Node) RETURN n.value").single(); + var record2 = session.run("MATCH (n:Node) RETURN n.value").single(); assertEquals(value, converter.apply(record2.get(0))); } private static void testReceiveValue(String query, T expectedValue, Function converter) { - Record record = session.run(query).single(); + var record = session.run(query).single(); assertEquals(expectedValue, converter.apply(record.get(0))); } private static void testSendAndReceiveValue(T value, Function converter) { - Record record = session.run("CREATE (n:Node {value: $value}) RETURN n.value", singletonMap("value", value)) + var record = session.run("CREATE (n:Node {value: $value}) RETURN n.value", singletonMap("value", value)) .single(); assertEquals(value, converter.apply(record.get(0))); } private static void testDurationToString(long seconds, int nanoseconds, String expectedValue) { - Result result = session.run( + var result = session.run( "RETURN duration({seconds: $s, nanoseconds: $n})", parameters("s", seconds, "n", nanoseconds)); - IsoDuration duration = result.single().get(0).asIsoDuration(); + var duration = result.single().get(0).asIsoDuration(); assertEquals(expectedValue, duration.toString()); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/TransactionBoltV3IT.java b/driver/src/test/java/org/neo4j/driver/integration/TransactionBoltV3IT.java index 284c981b9f..f7226c18d2 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/TransactionBoltV3IT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/TransactionBoltV3IT.java @@ -32,17 +32,11 @@ import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.CompletionStage; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Value; -import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.TransientException; @@ -72,10 +66,9 @@ void shouldSetTransactionMetadata() { metadata.put("key2", 42L); metadata.put("key3", false); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - try (Transaction tx = driver.session().beginTransaction(config)) { + try (var tx = driver.session().beginTransaction(config)) { tx.run("RETURN 1").consume(); verifyTransactionMetadata(metadata); @@ -88,16 +81,13 @@ void shouldSetTransactionMetadataAsync() { metadata.put("hello", "world"); metadata.put("key", ZonedDateTime.now()); - TransactionConfig config = - TransactionConfig.builder().withMetadata(metadata).build(); + var config = TransactionConfig.builder().withMetadata(metadata).build(); - CompletionStage txFuture = driver.asyncSession() - .beginTransactionAsync(config) - .thenCompose(tx -> tx.runAsync("RETURN 1") - .thenCompose(ResultCursor::consumeAsync) - .thenApply(ignore -> tx)); + var txFuture = driver.asyncSession().beginTransactionAsync(config).thenCompose(tx -> tx.runAsync("RETURN 1") + .thenCompose(ResultCursor::consumeAsync) + .thenApply(ignore -> tx)); - AsyncTransaction transaction = await(txFuture); + var transaction = await(txFuture); try { verifyTransactionMetadata(metadata); } finally { @@ -108,21 +98,21 @@ void shouldSetTransactionMetadataAsync() { @Test void shouldSetTransactionTimeout() { // create a dummy node - Session session = driver.session(); + var session = driver.session(); session.run("CREATE (:Node)").consume(); - try (Session otherSession = driver.driver().session()) { - try (Transaction otherTx = otherSession.beginTransaction()) { + try (var otherSession = driver.driver().session()) { + try (var otherTx = otherSession.beginTransaction()) { // lock dummy node but keep the transaction open otherTx.run("MATCH (n:Node) SET n.prop = 1").consume(); assertTimeoutPreemptively(TX_TIMEOUT_TEST_TIMEOUT, () -> { - TransactionConfig config = + var config = TransactionConfig.builder().withTimeout(ofMillis(1)).build(); // start a new transaction with timeout and try to update the locked dummy node - Exception error = assertThrows(Exception.class, () -> { - try (Transaction tx = session.beginTransaction(config)) { + var error = assertThrows(Exception.class, () -> { + try (var tx = session.beginTransaction(config)) { tx.run("MATCH (n:Node) SET n.prop = 2"); tx.commit(); } @@ -137,27 +127,27 @@ void shouldSetTransactionTimeout() { @Test void shouldSetTransactionTimeoutAsync() { // create a dummy node - Session session = driver.session(); - AsyncSession asyncSession = driver.asyncSession(); + var session = driver.session(); + var asyncSession = driver.asyncSession(); session.run("CREATE (:Node)").consume(); - try (Session otherSession = driver.driver().session()) { - try (Transaction otherTx = otherSession.beginTransaction()) { + try (var otherSession = driver.driver().session()) { + try (var otherTx = otherSession.beginTransaction()) { // lock dummy node but keep the transaction open otherTx.run("MATCH (n:Node) SET n.prop = 1").consume(); assertTimeoutPreemptively(TX_TIMEOUT_TEST_TIMEOUT, () -> { - TransactionConfig config = + var config = TransactionConfig.builder().withTimeout(ofMillis(1)).build(); // start a new transaction with timeout and try to update the locked dummy node - CompletionStage txCommitFuture = asyncSession + var txCommitFuture = asyncSession .beginTransactionAsync(config) .thenCompose(tx -> tx.runAsync("MATCH (n:Node) SET n.prop = 2") .thenCompose(ignore -> tx.commitAsync())); - Exception error = assertThrows(Exception.class, () -> await(txCommitFuture)); + var error = assertThrows(Exception.class, () -> await(txCommitFuture)); verifyValidException(error); }); @@ -175,10 +165,10 @@ private static void verifyValidException(Exception error) { } private static void verifyTransactionMetadata(Map metadata) { - try (Session session = driver.driver().session()) { - Result result = session.run(showTxMetadata); + try (var session = driver.driver().session()) { + var result = session.run(showTxMetadata); - Map receivedMetadata = result.list().stream() + var receivedMetadata = result.list().stream() .map(record -> record.get("metaData")) .map(Value::asMap) .filter(map -> !map.isEmpty()) diff --git a/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java index e369e0d021..7d6ebe109d 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java @@ -31,7 +31,6 @@ import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; import static org.neo4j.driver.testutil.TestUtil.assertNoCircularReferences; -import io.netty.channel.Channel; import java.time.Clock; import java.util.List; import java.util.Map; @@ -42,10 +41,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; @@ -81,14 +77,14 @@ void shouldAllowRunCloseAndClose() { @Test void shouldRunAndRollbackByDefault() { // When - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE (n:FirstNode)"); tx.run("CREATE (n:SecondNode)"); } // Then there should be no visible effect of the transaction - Result cursor = session.run("MATCH (n) RETURN count(n)"); - long nodes = cursor.single().get("count(n)").asLong(); + var cursor = session.run("MATCH (n) RETURN count(n)"); + var nodes = cursor.single().get("count(n)").asLong(); assertThat(nodes, equalTo(0L)); } @@ -98,8 +94,8 @@ void shouldRetrieveResults() { session.run("CREATE (n {name:'Steve Brook'})"); // When - try (Transaction tx = session.beginTransaction()) { - Result res = tx.run("MATCH (n) RETURN n.name"); + try (var tx = session.beginTransaction()) { + var res = tx.run("MATCH (n) RETURN n.name"); // Then assertThat(res.single().get("n.name").asString(), equalTo("Steve Brook")); @@ -130,41 +126,41 @@ void shouldFailToRunQueryAfterTxIsClosed() { @Test void shouldFailToCommitAfterRolledBack() { - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (:MyLabel)"); tx.rollback(); - ClientException e = assertThrows(ClientException.class, tx::commit); + var e = assertThrows(ClientException.class, tx::commit); assertThat(e.getMessage(), startsWith("Can't commit, transaction has been rolled back")); } @Test void shouldFailToRollbackAfterTxIsCommitted() { - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (:MyLabel)"); tx.commit(); - ClientException e = assertThrows(ClientException.class, tx::rollback); + var e = assertThrows(ClientException.class, tx::rollback); assertThat(e.getMessage(), startsWith("Can't rollback, transaction has been committed")); } @Test void shouldFailToCommitAfterCommit() { - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (:MyLabel)"); tx.commit(); - ClientException e = assertThrows(ClientException.class, tx::commit); + var e = assertThrows(ClientException.class, tx::commit); assertThat(e.getMessage(), startsWith("Can't commit, transaction has been committed")); } @Test void shouldFailToRollbackAfterRollback() { - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (:MyLabel)"); tx.rollback(); - ClientException e = assertThrows(ClientException.class, tx::rollback); + var e = assertThrows(ClientException.class, tx::rollback); assertThat(e.getMessage(), startsWith("Can't rollback, transaction has been rolled back")); } @@ -186,7 +182,7 @@ void shouldBeClosedAfterCommit() { @Test void shouldBeOpenBeforeCommit() { // When - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); // Then assertTrue(tx.isOpen()); @@ -206,8 +202,8 @@ void shouldHandleNullParametersGracefully() { @Test void shouldHandleFailureAfterClosingTransaction() { // GIVEN a successful query in a transaction - Transaction tx = session.beginTransaction(); - Result result = tx.run("CREATE (n) RETURN n"); + var tx = session.beginTransaction(); + var result = tx.run("CREATE (n) RETURN n"); result.consume(); tx.commit(); tx.close(); @@ -221,7 +217,7 @@ void shouldHandleFailureAfterClosingTransaction() { @Test void shouldHandleNullRecordParameters() { // When - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { Record params = null; tx.run("CREATE (n:FirstNode)", params); tx.commit(); @@ -234,7 +230,7 @@ void shouldHandleNullRecordParameters() { @Test void shouldHandleNullValueParameters() { // When - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { Value params = null; tx.run("CREATE (n:FirstNode)", params); tx.commit(); @@ -247,7 +243,7 @@ void shouldHandleNullValueParameters() { @Test void shouldHandleNullMapParameters() { // When - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { Map params = null; tx.run("CREATE (n:FirstNode)", params); tx.commit(); @@ -259,14 +255,14 @@ void shouldHandleNullMapParameters() { @Test void shouldRollbackTransactionAfterFailedRunAndCommitAndSessionShouldSuccessfullyBeginNewTransaction() { // Given - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); assertThrows(ClientException.class, () -> tx.run("invalid")); // send run, pull_all - ClientException e = assertThrows(ClientException.class, tx::commit); + var e = assertThrows(ClientException.class, tx::commit); assertNoCircularReferences(e); - try (Transaction anotherTx = session.beginTransaction()) { - Result cursor = anotherTx.run("RETURN 1"); - int val = cursor.single().get("1").asInt(); + try (var anotherTx = session.beginTransaction()) { + var cursor = anotherTx.run("RETURN 1"); + var val = cursor.single().get("1").asInt(); assertThat(val, equalTo(1)); } } @@ -274,23 +270,23 @@ void shouldRollbackTransactionAfterFailedRunAndCommitAndSessionShouldSuccessfull @Test void shouldRollBackTxIfErrorWithConsume() { assertThrows(ClientException.class, () -> { - try (Transaction tx = session.beginTransaction()) { - Result result = tx.run("invalid"); + try (var tx = session.beginTransaction()) { + var result = tx.run("invalid"); result.consume(); } }); - try (Transaction tx = session.beginTransaction()) { - Result cursor = tx.run("RETURN 1"); - int val = cursor.single().get("1").asInt(); + try (var tx = session.beginTransaction()) { + var cursor = tx.run("RETURN 1"); + var val = cursor.single().get("1").asInt(); assertThat(val, equalTo(1)); } } @Test void shouldFailRun() { - try (Transaction tx = session.beginTransaction()) { - ClientException e = assertThrows(ClientException.class, () -> tx.run("RETURN Wrong")); + try (var tx = session.beginTransaction()) { + var e = assertThrows(ClientException.class, () -> tx.run("RETURN Wrong")); assertThat(e.code(), containsString("SyntaxError")); } @@ -298,11 +294,11 @@ void shouldFailRun() { @Test void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { - try (Session otherSession = session.driver().session()) { + try (var otherSession = session.driver().session()) { session.run("CREATE (:Person {name: 'Beta Ray Bill'})").consume(); - Transaction tx1 = session.beginTransaction(); - Transaction tx2 = otherSession.beginTransaction(); + var tx1 = session.beginTransaction(); + var tx2 = otherSession.beginTransaction(); tx1.run("MATCH (n:Person {name: 'Beta Ray Bill'}) SET n.hammer = 'Mjolnir'") .consume(); @@ -312,7 +308,7 @@ void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { TestUtil.interruptWhenInWaitingState(Thread.currentThread()); try { - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, () -> tx2.run( + var e = assertThrows(ServiceUnavailableException.class, () -> tx2.run( "MATCH (n:Person {name: 'Beta Ray Bill'}) SET n.hammer = 'Stormbreaker'") .consume()); assertThat(e.getMessage(), containsString("Connection to the database terminated")); @@ -326,11 +322,11 @@ void shouldBeResponsiveToThreadInterruptWhenWaitingForResult() { @Test void shouldBeResponsiveToThreadInterruptWhenWaitingForCommit() { - try (Session otherSession = session.driver().session()) { + try (var otherSession = session.driver().session()) { session.run("CREATE (:Person {name: 'Beta Ray Bill'})").consume(); - Transaction tx1 = session.beginTransaction(); - Transaction tx2 = otherSession.beginTransaction(); + var tx1 = session.beginTransaction(); + var tx2 = otherSession.beginTransaction(); tx1.run("MATCH (n:Person {name: 'Beta Ray Bill'}) SET n.hammer = 'Mjolnir'") .consume(); @@ -352,18 +348,18 @@ void shouldBeResponsiveToThreadInterruptWhenWaitingForCommit() { @Test void shouldThrowWhenConnectionKilledDuringTransaction() { - ChannelTrackingDriverFactory factory = new ChannelTrackingDriverFactory(1, Clock.systemUTC()); - Config config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); + var factory = new ChannelTrackingDriverFactory(1, Clock.systemUTC()); + var config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); - try (Driver driver = factory.newInstance( + try (var driver = factory.newInstance( session.uri(), session.authTokenManager(), config, SecurityPlanImpl.insecure(), null, null)) { - ServiceUnavailableException e = assertThrows(ServiceUnavailableException.class, () -> { - try (Session session1 = driver.session(); - Transaction tx = session1.beginTransaction()) { + var e = assertThrows(ServiceUnavailableException.class, () -> { + try (var session1 = driver.session(); + var tx = session1.beginTransaction()) { tx.run("CREATE (:MyNode {id: 1})").consume(); // kill all network channels - for (Channel channel : factory.channels()) { + for (var channel : factory.channels()) { channel.close().syncUninterruptibly(); } @@ -384,36 +380,36 @@ void shouldThrowWhenConnectionKilledDuringTransaction() { @Test void shouldFailToCommitAfterFailure() throws Throwable { - try (Transaction tx = session.beginTransaction()) { - List xs = tx.run("UNWIND [1,2,3] AS x CREATE (:Node) RETURN x") + try (var tx = session.beginTransaction()) { + var xs = tx.run("UNWIND [1,2,3] AS x CREATE (:Node) RETURN x") .list(record -> record.get(0).asInt()); assertEquals(asList(1, 2, 3), xs); - ClientException error1 = assertThrows( + var error1 = assertThrows( ClientException.class, () -> tx.run("RETURN unknown").consume()); assertThat(error1.code(), containsString("SyntaxError")); - ClientException error2 = assertThrows(ClientException.class, tx::commit); + var error2 = assertThrows(ClientException.class, tx::commit); assertThat(error2.getMessage(), startsWith("Transaction can't be committed. It has been rolled back")); } } @Test void shouldDisallowQueriesAfterFailureWhenResultsAreConsumed() { - try (Transaction tx = session.beginTransaction()) { - List xs = tx.run("UNWIND [1,2,3] AS x CREATE (:Node) RETURN x") + try (var tx = session.beginTransaction()) { + var xs = tx.run("UNWIND [1,2,3] AS x CREATE (:Node) RETURN x") .list(record -> record.get(0).asInt()); assertEquals(asList(1, 2, 3), xs); - ClientException error1 = assertThrows( + var error1 = assertThrows( ClientException.class, () -> tx.run("RETURN unknown").consume()); assertThat(error1.code(), containsString("SyntaxError")); - ClientException error2 = assertThrows( + var error2 = assertThrows( ClientException.class, () -> tx.run("CREATE (:OtherNode)").consume()); assertThat(error2.getMessage(), startsWith("Cannot run more queries in this transaction")); - ClientException error3 = assertThrows( + var error3 = assertThrows( ClientException.class, () -> tx.run("RETURN 42").consume()); assertThat(error3.getMessage(), startsWith("Cannot run more queries in this transaction")); } @@ -424,8 +420,8 @@ void shouldDisallowQueriesAfterFailureWhenResultsAreConsumed() { @Test void shouldRollbackWhenOneOfQueriesFails() { - ClientException error = assertThrows(ClientException.class, () -> { - try (Transaction tx = session.beginTransaction()) { + var error = assertThrows(ClientException.class, () -> { + try (var tx = session.beginTransaction()) { tx.run("CREATE (:Node1)"); tx.run("CREATE (:Node2)"); tx.run("CREATE SmthStrange"); @@ -582,15 +578,15 @@ void shouldTerminateTransactionAndHandleFailureResponseOrPreventFurtherPulls() { private void shouldRunAndCloseAfterAction(Consumer txConsumer, boolean isCommit) { // When - try (Transaction tx = session.beginTransaction()) { + try (var tx = session.beginTransaction()) { tx.run("CREATE (n:FirstNode)"); tx.run("CREATE (n:SecondNode)"); txConsumer.accept(tx); } // Then the outcome of both queries should be visible - Result result = session.run("MATCH (n) RETURN count(n)"); - long nodes = result.single().get("count(n)").asLong(); + var result = session.run("MATCH (n) RETURN count(n)"); + var nodes = result.single().get("count(n)").asLong(); if (isCommit) { assertThat(nodes, equalTo(2L)); } else { @@ -600,7 +596,7 @@ private void shouldRunAndCloseAfterAction(Consumer txConsumer, bool private void shouldBeClosedAfterAction(Consumer txConsumer) { // When - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); txConsumer.accept(tx); // Then @@ -608,11 +604,11 @@ private void shouldBeClosedAfterAction(Consumer txConsumer) { } private void shouldFailToRunQueryAfterTxAction(Consumer txConsumer) { - Transaction tx = session.beginTransaction(); + var tx = session.beginTransaction(); tx.run("CREATE (:MyLabel)"); txConsumer.accept(tx); - ClientException e = assertThrows(ClientException.class, () -> tx.run("CREATE (:MyOtherLabel)")); + var e = assertThrows(ClientException.class, () -> tx.run("CREATE (:MyOtherLabel)")); assertThat(e.getMessage(), startsWith("Cannot run more queries in this transaction")); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/TrustCustomCertificateIT.java b/driver/src/test/java/org/neo4j/driver/integration/TrustCustomCertificateIT.java index f048a02b9a..80b5106134 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/TrustCustomCertificateIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/TrustCustomCertificateIT.java @@ -33,10 +33,7 @@ import org.neo4j.driver.Config; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.SecurityException; -import org.neo4j.driver.testutil.CertificateUtil.CertificateKeyPair; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -48,10 +45,10 @@ class TrustCustomCertificateIT { @Test void shouldAcceptServerWithCertificateSignedByDriverCertificate() throws Throwable { // Given root certificate - CertificateKeyPair root = createNewCertificateAndKey(); + var root = createNewCertificateAndKey(); // When - CertificateKeyPair server = createNewCertificateAndKeySignedBy(root, getDockerHostGeneralName()); + var server = createNewCertificateAndKeySignedBy(root, getDockerHostGeneralName()); neo4j.updateEncryptionKeyAndCert(server.key(), server.cert()); // Then @@ -66,17 +63,17 @@ void shouldAcceptServerWithSameCertificate() { @Test void shouldRejectServerWithUntrustedCertificate() throws Throwable { // Given a driver with a (random) cert - CertificateKeyPair certificateAndKey = createNewCertificateAndKey(); + var certificateAndKey = createNewCertificateAndKey(); // When & Then - final Driver driver = createDriverWithCustomCertificate(certificateAndKey.cert()); + final var driver = createDriverWithCustomCertificate(certificateAndKey.cert()); assertThrows(SecurityException.class, driver::verifyConnectivity); } private void shouldBeAbleToRunCypher(Supplier driverSupplier) { - try (Driver driver = driverSupplier.get(); - Session session = driver.session()) { - Result result = session.run("RETURN 1 as n"); + try (var driver = driverSupplier.get(); + var session = driver.session()) { + var result = session.run("RETURN 1 as n"); assertThat(result.single().get("n").asInt(), equalTo(1)); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java index 50c482e072..b2a2392a9e 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java @@ -30,18 +30,13 @@ import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; import static org.neo4j.driver.testutil.TestUtil.await; -import io.netty.channel.Channel; -import io.netty.channel.ChannelPipeline; -import io.netty.util.concurrent.Future; import java.io.IOException; import java.time.Clock; -import java.util.concurrent.CompletionStage; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.Query; import org.neo4j.driver.SessionConfig; import org.neo4j.driver.TransactionConfig; @@ -93,7 +88,7 @@ private ResultCursor txRun(UnmanagedTransaction tx, String query) { @Test void shouldDoNothingWhenCommittedSecondTime() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); assertNull(await(tx.commitAsync())); @@ -103,11 +98,11 @@ void shouldDoNothingWhenCommittedSecondTime() { @Test void shouldFailToCommitAfterRollback() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); assertNull(await(tx.rollbackAsync())); - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertEquals("Can't commit, transaction has been rolled back", e.getMessage()); assertFalse(tx.isOpen()); } @@ -124,7 +119,7 @@ void shouldFailToCommitAfterTermination() { @Test void shouldDoNothingWhenRolledBackSecondTime() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); assertNull(await(tx.rollbackAsync())); @@ -134,18 +129,18 @@ void shouldDoNothingWhenRolledBackSecondTime() { @Test void shouldFailToRollbackAfterCommit() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); assertNull(await(tx.commitAsync())); - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); assertEquals("Can't rollback, transaction has been committed", e.getMessage()); assertFalse(tx.isOpen()); } @Test void shouldRollbackAfterTermination() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); tx.markTerminated(null); @@ -155,7 +150,7 @@ void shouldRollbackAfterTermination() { @Test void shouldFailToRunQueryWhenTerminated() { - UnmanagedTransaction tx = beginTransaction(); + var tx = beginTransaction(); txRun(tx, "CREATE (:MyLabel)"); var terminationException = mock(Neo4jException.class); tx.markTerminated(terminationException); @@ -167,7 +162,7 @@ void shouldFailToRunQueryWhenTerminated() { @Test void shouldBePossibleToRunMoreTransactionsAfterOneIsTerminated() { - UnmanagedTransaction tx1 = beginTransaction(); + var tx1 = beginTransaction(); tx1.markTerminated(null); // commit should fail, make session forget about this transaction and release the connection to the pool @@ -194,38 +189,37 @@ void shouldPropagateRollbackFailureAfterFatalError() { } private int countNodes(Object id) { - Query query = new Query("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); - ResultCursor cursor = sessionRun(session, query); + var query = new Query("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); + var cursor = sessionRun(session, query); return await(cursor.singleAsync()).get(0).asInt(); } private void testCommitAndRollbackFailurePropagation(boolean commit) { - ChannelTrackingDriverFactory driverFactory = new ChannelTrackingDriverFactory(1, Clock.systemUTC()); - Config config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); + var driverFactory = new ChannelTrackingDriverFactory(1, Clock.systemUTC()); + var config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); - try (Driver driver = driverFactory.newInstance( + try (var driver = driverFactory.newInstance( neo4j.uri(), neo4j.authTokenManager(), config, SecurityPlanImpl.insecure(), null, null)) { - NetworkSession session = ((InternalDriver) driver).newSession(SessionConfig.defaultConfig(), null); + var session = ((InternalDriver) driver).newSession(SessionConfig.defaultConfig(), null); { - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); // run query but do not consume the result txRun(tx, "UNWIND range(0, 10000) AS x RETURN x + 1"); - IOException ioError = new IOException("Connection reset by peer"); - for (Channel channel : driverFactory.channels()) { + var ioError = new IOException("Connection reset by peer"); + for (var channel : driverFactory.channels()) { // make channel experience a fatal network error // run in the event loop thread and wait for the whole operation to complete - Future future = + var future = channel.eventLoop().submit(() -> channel.pipeline().fireExceptionCaught(ioError)); await(future); } - CompletionStage commitOrRollback = commit ? tx.commitAsync() : tx.rollbackAsync(); + var commitOrRollback = commit ? tx.commitAsync() : tx.rollbackAsync(); // commit/rollback should fail and propagate the network error - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> await(commitOrRollback)); + var e = assertThrows(ServiceUnavailableException.class, () -> await(commitOrRollback)); assertEquals(ioError, e.getCause()); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/UnsupportedBoltV3IT.java b/driver/src/test/java/org/neo4j/driver/integration/UnsupportedBoltV3IT.java index 555d67acba..d63f83b2e6 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/UnsupportedBoltV3IT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/UnsupportedBoltV3IT.java @@ -90,7 +90,7 @@ private static void assertTxConfigNotSupported(CompletionStage stage) { } private static void assertTxConfigNotSupported(Executable executable) { - ClientException error = assertThrows(ClientException.class, executable); + var error = assertThrows(ClientException.class, executable); assertThat( error.getMessage(), startsWith("Driver is connected to the database that does not support transaction configuration")); diff --git a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionIT.java b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionIT.java index 907178a183..543f6d6891 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionIT.java @@ -63,10 +63,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.AsyncTransactionWork; @@ -83,7 +81,6 @@ import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.internal.util.Futures; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; import org.neo4j.driver.types.Node; @@ -107,18 +104,18 @@ void tearDown() { @Test void shouldRunQueryWithEmptyResult() { - ResultCursor cursor = await(session.runAsync("CREATE (:Person)")); + var cursor = await(session.runAsync("CREATE (:Person)")); assertNull(await(cursor.nextAsync())); } @Test void shouldRunQueryWithSingleResult() { - ResultCursor cursor = await(session.runAsync("CREATE (p:Person {name: 'Nick Fury'}) RETURN p")); + var cursor = await(session.runAsync("CREATE (p:Person {name: 'Nick Fury'}) RETURN p")); - Record record = await(cursor.nextAsync()); + var record = await(cursor.nextAsync()); assertNotNull(record); - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertEquals("Person", single(node.labels())); assertEquals("Nick Fury", node.get("name").asString()); @@ -127,17 +124,17 @@ void shouldRunQueryWithSingleResult() { @Test void shouldRunQueryWithMultipleResults() { - ResultCursor cursor = await(session.runAsync("UNWIND [1,2,3] AS x RETURN x")); + var cursor = await(session.runAsync("UNWIND [1,2,3] AS x RETURN x")); - Record record1 = await(cursor.nextAsync()); + var record1 = await(cursor.nextAsync()); assertNotNull(record1); assertEquals(1, record1.get(0).asInt()); - Record record2 = await(cursor.nextAsync()); + var record2 = await(cursor.nextAsync()); assertNotNull(record2); assertEquals(2, record2.get(0).asInt()); - Record record3 = await(cursor.nextAsync()); + var record3 = await(cursor.nextAsync()); assertNotNull(record3); assertEquals(3, record3.get(0).asInt()); @@ -146,38 +143,38 @@ void shouldRunQueryWithMultipleResults() { @Test void shouldFailForIncorrectQuery() { - Exception e = assertThrows(Exception.class, () -> await(session.runAsync("RETURN"))); + var e = assertThrows(Exception.class, () -> await(session.runAsync("RETURN"))); assertThat(e, is(syntaxError())); } @Test void shouldFailWhenQueryFailsAtRuntime() { - ResultCursor cursor = await(session.runAsync("CYPHER runtime=interpreted UNWIND [1, 2, 0] AS x RETURN 10 / x")); + var cursor = await(session.runAsync("CYPHER runtime=interpreted UNWIND [1, 2, 0] AS x RETURN 10 / x")); - Record record1 = await(cursor.nextAsync()); + var record1 = await(cursor.nextAsync()); assertNotNull(record1); assertEquals(10, record1.get(0).asInt()); - Record record2 = await(cursor.nextAsync()); + var record2 = await(cursor.nextAsync()); assertNotNull(record2); assertEquals(5, record2.get(0).asInt()); - Exception e = assertThrows(Exception.class, () -> await(cursor.nextAsync())); + var e = assertThrows(Exception.class, () -> await(cursor.nextAsync())); assertThat(e, is(arithmeticError())); } @Test void shouldAllowNestedQueries() { - ResultCursor cursor = await(session.runAsync("UNWIND [1, 2, 3] AS x CREATE (p:Person {id: x}) RETURN p")); + var cursor = await(session.runAsync("UNWIND [1, 2, 3] AS x CREATE (p:Person {id: x}) RETURN p")); - Future>> queriesExecuted = runNestedQueries(cursor); - List> futures = await(queriesExecuted); + var queriesExecuted = runNestedQueries(cursor); + var futures = await(queriesExecuted); - List futureResults = awaitAll(futures); + var futureResults = awaitAll(futures); assertEquals(7, futureResults.size()); - ResultCursor personCursor = await(session.runAsync("MATCH (p:Person) RETURN p ORDER BY p.id")); + var personCursor = await(session.runAsync("MATCH (p:Person) RETURN p ORDER BY p.id")); List personNodes = new ArrayList<>(); Record record; @@ -186,29 +183,29 @@ void shouldAllowNestedQueries() { } assertEquals(3, personNodes.size()); - Node node1 = personNodes.get(0); + var node1 = personNodes.get(0); assertEquals(1, node1.get("id").asInt()); assertEquals(10, node1.get("age").asInt()); - Node node2 = personNodes.get(1); + var node2 = personNodes.get(1); assertEquals(2, node2.get("id").asInt()); assertEquals(20, node2.get("age").asInt()); - Node node3 = personNodes.get(2); + var node3 = personNodes.get(2); assertEquals(3, node3.get("id").asInt()); assertEquals(30, personNodes.get(2).get("age").asInt()); } @Test void shouldAllowMultipleAsyncRunsWithoutConsumingResults() { - int queryCount = 13; + var queryCount = 13; List> cursors = new ArrayList<>(); - for (int i = 0; i < queryCount; i++) { + for (var i = 0; i < queryCount; i++) { cursors.add(session.runAsync("CREATE (:Person)")); } List> records = new ArrayList<>(); - for (ResultCursor cursor : awaitAll(cursors)) { + for (var cursor : awaitAll(cursors)) { records.add(cursor.nextAsync()); } @@ -217,33 +214,33 @@ void shouldAllowMultipleAsyncRunsWithoutConsumingResults() { await(session.closeAsync()); session = neo4j.driver().session(AsyncSession.class); - ResultCursor cursor = await(session.runAsync("MATCH (p:Person) RETURN count(p)")); - Record record = await(cursor.nextAsync()); + var cursor = await(session.runAsync("MATCH (p:Person) RETURN count(p)")); + var record = await(cursor.nextAsync()); assertNotNull(record); assertEquals(queryCount, record.get(0).asInt()); } @Test void shouldExposeQueryKeysForColumnsWithAliases() { - ResultCursor cursor = await(session.runAsync("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five")); + var cursor = await(session.runAsync("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five")); assertEquals(Arrays.asList("one", "two", "three", "five"), cursor.keys()); } @Test void shouldExposeQueryKeysForColumnsWithoutAliases() { - ResultCursor cursor = await(session.runAsync("RETURN 1, 2, 3, 5")); + var cursor = await(session.runAsync("RETURN 1, 2, 3, 5")); assertEquals(Arrays.asList("1", "2", "3", "5"), cursor.keys()); } @Test void shouldExposeResultSummaryForSimpleQuery() { - String query = "CREATE (:Node {id: $id, name: $name})"; - Value params = parameters("id", 1, "name", "TheNode"); + var query = "CREATE (:Node {id: $id, name: $name})"; + var params = parameters("id", 1, "name", "TheNode"); - ResultCursor cursor = await(session.runAsync(query, params)); - ResultSummary summary = await(cursor.consumeAsync()); + var cursor = await(session.runAsync(query, params)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query, params), summary.query()); assertEquals(1, summary.counters().nodesCreated()); @@ -261,10 +258,10 @@ void shouldExposeResultSummaryForSimpleQuery() { @Test void shouldExposeResultSummaryForExplainQuery() { - String query = "EXPLAIN CREATE (),() WITH * MATCH (n)-->(m) CREATE (n)-[:HI {id: 'id'}]->(m) RETURN n, m"; + var query = "EXPLAIN CREATE (),() WITH * MATCH (n)-->(m) CREATE (n)-[:HI {id: 'id'}]->(m) RETURN n, m"; - ResultCursor cursor = await(session.runAsync(query)); - ResultSummary summary = await(cursor.consumeAsync()); + var cursor = await(session.runAsync(query)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query), summary.query()); assertEquals(0, summary.counters().nodesCreated()); @@ -276,7 +273,7 @@ void shouldExposeResultSummaryForExplainQuery() { assertNotNull(summary.plan()); // asserting on plan is a bit fragile and can break when server side changes or with different // server versions; that is why do fuzzy assertions in this test based on string content - String planAsString = summary.plan().toString().toLowerCase(); + var planAsString = summary.plan().toString().toLowerCase(); assertThat(planAsString, containsString("create")); assertThat(planAsString, containsString("apply")); assertNull(summary.profile()); @@ -286,10 +283,10 @@ void shouldExposeResultSummaryForExplainQuery() { @Test void shouldExposeResultSummaryForProfileQuery() { - String query = "PROFILE CREATE (:Node)-[:KNOWS]->(:Node) WITH * MATCH (n) RETURN n"; + var query = "PROFILE CREATE (:Node)-[:KNOWS]->(:Node) WITH * MATCH (n) RETURN n"; - ResultCursor cursor = await(session.runAsync(query)); - ResultSummary summary = await(cursor.consumeAsync()); + var cursor = await(session.runAsync(query)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query), summary.query()); assertEquals(2, summary.counters().nodesCreated()); @@ -302,7 +299,7 @@ void shouldExposeResultSummaryForProfileQuery() { assertNotNull(summary.profile()); // asserting on profile is a bit fragile and can break when server side changes or with different // server versions; that is why do fuzzy assertions in this test based on string content - String profileAsString = summary.profile().toString().toLowerCase(); + var profileAsString = summary.profile().toString().toLowerCase(); assertThat(profileAsString, containsString("hits")); assertEquals(0, summary.notifications().size()); assertThat(summary, containsResultAvailableAfterAndResultConsumedAfter()); @@ -311,10 +308,10 @@ void shouldExposeResultSummaryForProfileQuery() { @Test @SuppressWarnings("deprecation") void shouldRunAsyncTransactionWithoutRetries() { - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Apa) RETURN 42"); - CompletionStage txStage = session.writeTransactionAsync(work); + var work = new InvocationTrackingWork("CREATE (:Apa) RETURN 42"); + var txStage = session.writeTransactionAsync(work); - Record record = await(txStage); + var record = await(txStage); assertNotNull(record); assertEquals(42L, record.get(0).asLong()); @@ -325,15 +322,15 @@ void shouldRunAsyncTransactionWithoutRetries() { @Test @SuppressWarnings("deprecation") void shouldRunAsyncTransactionWithRetriesOnAsyncFailures() { - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Node) RETURN 24") + var work = new InvocationTrackingWork("CREATE (:Node) RETURN 24") .withAsyncFailures( new ServiceUnavailableException("Oh!"), new SessionExpiredException("Ah!"), new TransientException("Code", "Message")); - CompletionStage txStage = session.writeTransactionAsync(work); + var txStage = session.writeTransactionAsync(work); - Record record = await(txStage); + var record = await(txStage); assertNotNull(record); assertEquals(24L, record.get(0).asLong()); @@ -344,14 +341,14 @@ void shouldRunAsyncTransactionWithRetriesOnAsyncFailures() { @Test @SuppressWarnings("deprecation") void shouldRunAsyncTransactionWithRetriesOnSyncFailures() { - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Test) RETURN 12") + var work = new InvocationTrackingWork("CREATE (:Test) RETURN 12") .withSyncFailures( new TransientException("Oh!", "Deadlock!"), new ServiceUnavailableException("Oh! Network Failure")); - CompletionStage txStage = session.writeTransactionAsync(work); + var txStage = session.writeTransactionAsync(work); - Record record = await(txStage); + var record = await(txStage); assertNotNull(record); assertEquals(12L, record.get(0).asLong()); @@ -362,10 +359,10 @@ void shouldRunAsyncTransactionWithRetriesOnSyncFailures() { @Test @SuppressWarnings("deprecation") void shouldRunAsyncTransactionThatCanNotBeRetried() { - InvocationTrackingWork work = new InvocationTrackingWork("UNWIND [10, 5, 0] AS x CREATE (:Hi) RETURN 10/x"); - CompletionStage txStage = session.writeTransactionAsync(work); + var work = new InvocationTrackingWork("UNWIND [10, 5, 0] AS x CREATE (:Hi) RETURN 10/x"); + var txStage = session.writeTransactionAsync(work); - ClientException e = assertThrows(ClientException.class, () -> await(txStage)); + var e = assertThrows(ClientException.class, () -> await(txStage)); assertNoCircularReferences(e); assertEquals(1, work.invocationCount()); assertEquals(0, countNodesByLabel("Hi")); @@ -376,12 +373,12 @@ void shouldRunAsyncTransactionThatCanNotBeRetried() { void shouldRunAsyncTransactionThatCanNotBeRetriedAfterATransientFailure() { // first throw TransientException directly from work, retry can happen afterwards // then return a future failed with DatabaseException, retry can't happen afterwards - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Person) RETURN 1") + var work = new InvocationTrackingWork("CREATE (:Person) RETURN 1") .withSyncFailures(new TransientException("Oh!", "Deadlock!")) .withAsyncFailures(new DatabaseException("Oh!", "OutOfMemory!")); - CompletionStage txStage = session.writeTransactionAsync(work); + var txStage = session.writeTransactionAsync(work); - DatabaseException e = assertThrows(DatabaseException.class, () -> await(txStage)); + var e = assertThrows(DatabaseException.class, () -> await(txStage)); assertEquals(1, e.getSuppressed().length); assertThat(e.getSuppressed()[0], instanceOf(TransientException.class)); @@ -391,7 +388,7 @@ void shouldRunAsyncTransactionThatCanNotBeRetriedAfterATransientFailure() { @Test void shouldPeekRecordFromCursor() { - ResultCursor cursor = await(session.runAsync("UNWIND [1, 2, 42] AS x RETURN x")); + var cursor = await(session.runAsync("UNWIND [1, 2, 42] AS x RETURN x")); assertEquals(1, await(cursor.peekAsync()).get(0).asInt()); assertEquals(1, await(cursor.peekAsync()).get(0).asInt()); @@ -422,10 +419,10 @@ void shouldForEachWithNonEmptyCursor() { @Test void shouldFailForEachWhenActionFails() { - ResultCursor cursor = await(session.runAsync("RETURN 42")); - IOException error = new IOException("Hi"); + var cursor = await(session.runAsync("RETURN 42")); + var error = new IOException("Hi"); - IOException e = assertThrows( + var e = assertThrows( IOException.class, () -> await(cursor.forEachAsync(record -> { throw new CompletionException(error); @@ -447,24 +444,24 @@ void shouldConvertToListWithNonEmptyCursor() { @Test void shouldConvertToTransformedListWithEmptyCursor() { - ResultCursor cursor = await(session.runAsync("CREATE ()")); - List strings = await(cursor.listAsync(record -> "Hi!")); + var cursor = await(session.runAsync("CREATE ()")); + var strings = await(cursor.listAsync(record -> "Hi!")); assertEquals(0, strings.size()); } @Test void shouldConvertToTransformedListWithNonEmptyCursor() { - ResultCursor cursor = await(session.runAsync("UNWIND [1,2,3] AS x RETURN x")); - List ints = await(cursor.listAsync(record -> record.get(0).asInt() + 1)); + var cursor = await(session.runAsync("UNWIND [1,2,3] AS x RETURN x")); + var ints = await(cursor.listAsync(record -> record.get(0).asInt() + 1)); assertEquals(Arrays.asList(2, 3, 4), ints); } @Test void shouldFailWhenListTransformationFunctionFails() { - ResultCursor cursor = await(session.runAsync("RETURN 42")); - RuntimeException error = new RuntimeException("Hi!"); + var cursor = await(session.runAsync("RETURN 42")); + var error = new RuntimeException("Hi!"); - RuntimeException e = assertThrows( + var e = assertThrows( RuntimeException.class, () -> await(cursor.listAsync(record -> { throw error; @@ -474,42 +471,42 @@ void shouldFailWhenListTransformationFunctionFails() { @Test void shouldFailSingleWithEmptyCursor() { - ResultCursor cursor = await(session.runAsync("CREATE ()")); + var cursor = await(session.runAsync("CREATE ()")); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("result is empty")); } @Test void shouldFailSingleWithMultiRecordCursor() { - ResultCursor cursor = await(session.runAsync("UNWIND [1, 2, 3] AS x RETURN x")); + var cursor = await(session.runAsync("UNWIND [1, 2, 3] AS x RETURN x")); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), startsWith("Expected a result with a single record")); } @Test void shouldReturnSingleWithSingleRecordCursor() { - ResultCursor cursor = await(session.runAsync("RETURN 42")); + var cursor = await(session.runAsync("RETURN 42")); - Record record = await(cursor.singleAsync()); + var record = await(cursor.singleAsync()); assertEquals(42, record.get(0).asInt()); } @Test void shouldPropagateFailureFromFirstRecordInSingleAsync() { - ResultCursor cursor = await(session.runAsync("UNWIND [0] AS x RETURN 10 / x")); + var cursor = await(session.runAsync("UNWIND [0] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("/ by zero")); } @Test void shouldNotPropagateFailureFromSecondRecordInSingleAsync() { - ResultCursor cursor = await(session.runAsync("UNWIND [1, 0] AS x RETURN 10 / x")); + var cursor = await(session.runAsync("UNWIND [1, 0] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("/ by zero")); } @@ -526,7 +523,7 @@ void shouldConsumeNonEmptyCursor() { @Test @DisabledOnNeo4jWith(BOLT_V3) void shouldRunAfterBeginTxFailureOnBookmark() { - Bookmark illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); + var illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); session = neo4j.driver() .session( AsyncSession.class, @@ -534,14 +531,14 @@ void shouldRunAfterBeginTxFailureOnBookmark() { assertThrows(ClientException.class, () -> await(session.beginTransactionAsync())); - ResultCursor cursor = await(session.runAsync("RETURN 'Hello!'")); - Record record = await(cursor.singleAsync()); + var cursor = await(session.runAsync("RETURN 'Hello!'")); + var record = await(cursor.singleAsync()); assertEquals("Hello!", record.get(0).asString()); } @Test void shouldNotBeginTxAfterBeginTxFailureOnBookmark() { - Bookmark illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); + var illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); session = neo4j.driver() .session( AsyncSession.class, @@ -553,7 +550,7 @@ void shouldNotBeginTxAfterBeginTxFailureOnBookmark() { @Test @EnabledOnNeo4jWith(BOLT_V3) void shouldNotRunAfterBeginTxFailureOnBookmark() { - Bookmark illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); + var illegalBookmark = InternalBookmark.parse("Illegal Bookmark"); session = neo4j.driver() .session( AsyncSession.class, @@ -565,22 +562,21 @@ void shouldNotRunAfterBeginTxFailureOnBookmark() { @Test @SuppressWarnings("deprecation") void shouldExecuteReadTransactionUntilSuccessWhenWorkThrows() { - int maxFailures = 1; - - CompletionStage result = - session.readTransactionAsync(new AsyncTransactionWork>() { - final AtomicInteger failures = new AtomicInteger(); - - @Override - public CompletionStage execute(AsyncTransaction tx) { - if (failures.getAndIncrement() < maxFailures) { - throw new SessionExpiredException("Oh!"); - } - return tx.runAsync("UNWIND range(1, 10) AS x RETURN count(x)") - .thenCompose(ResultCursor::singleAsync) - .thenApply(record -> record.get(0).asInt()); - } - }); + var maxFailures = 1; + + var result = session.readTransactionAsync(new AsyncTransactionWork>() { + final AtomicInteger failures = new AtomicInteger(); + + @Override + public CompletionStage execute(AsyncTransaction tx) { + if (failures.getAndIncrement() < maxFailures) { + throw new SessionExpiredException("Oh!"); + } + return tx.runAsync("UNWIND range(1, 10) AS x RETURN count(x)") + .thenCompose(ResultCursor::singleAsync) + .thenApply(record -> record.get(0).asInt()); + } + }); assertEquals(10, await(result).intValue()); } @@ -588,22 +584,21 @@ public CompletionStage execute(AsyncTransaction tx) { @Test @SuppressWarnings("deprecation") void shouldExecuteWriteTransactionUntilSuccessWhenWorkThrows() { - int maxFailures = 2; - - CompletionStage result = - session.writeTransactionAsync(new AsyncTransactionWork>() { - final AtomicInteger failures = new AtomicInteger(); - - @Override - public CompletionStage execute(AsyncTransaction tx) { - if (failures.getAndIncrement() < maxFailures) { - throw new ServiceUnavailableException("Oh!"); - } - return tx.runAsync("CREATE (n1:TestNode), (n2:TestNode) RETURN 2") - .thenCompose(ResultCursor::singleAsync) - .thenApply(record -> record.get(0).asInt()); - } - }); + var maxFailures = 2; + + var result = session.writeTransactionAsync(new AsyncTransactionWork>() { + final AtomicInteger failures = new AtomicInteger(); + + @Override + public CompletionStage execute(AsyncTransaction tx) { + if (failures.getAndIncrement() < maxFailures) { + throw new ServiceUnavailableException("Oh!"); + } + return tx.runAsync("CREATE (n1:TestNode), (n2:TestNode) RETURN 2") + .thenCompose(ResultCursor::singleAsync) + .thenApply(record -> record.get(0).asInt()); + } + }); assertEquals(2, await(result).intValue()); assertEquals(2, countNodesByLabel("TestNode")); @@ -612,25 +607,24 @@ public CompletionStage execute(AsyncTransaction tx) { @Test @SuppressWarnings("deprecation") void shouldExecuteReadTransactionUntilSuccessWhenWorkFails() { - int maxFailures = 3; - - CompletionStage result = - session.readTransactionAsync(new AsyncTransactionWork>() { - final AtomicInteger failures = new AtomicInteger(); - - @Override - public CompletionStage execute(AsyncTransaction tx) { - return tx.runAsync("RETURN 42") - .thenCompose(ResultCursor::singleAsync) - .thenApply(record -> record.get(0).asInt()) - .thenCompose(result -> { - if (failures.getAndIncrement() < maxFailures) { - return failedFuture(new TransientException("A", "B")); - } - return completedFuture(result); - }); - } - }); + var maxFailures = 3; + + var result = session.readTransactionAsync(new AsyncTransactionWork>() { + final AtomicInteger failures = new AtomicInteger(); + + @Override + public CompletionStage execute(AsyncTransaction tx) { + return tx.runAsync("RETURN 42") + .thenCompose(ResultCursor::singleAsync) + .thenApply(record -> record.get(0).asInt()) + .thenCompose(result -> { + if (failures.getAndIncrement() < maxFailures) { + return failedFuture(new TransientException("A", "B")); + } + return completedFuture(result); + }); + } + }); assertEquals(42, await(result).intValue()); } @@ -638,25 +632,24 @@ public CompletionStage execute(AsyncTransaction tx) { @Test @SuppressWarnings("deprecation") void shouldExecuteWriteTransactionUntilSuccessWhenWorkFails() { - int maxFailures = 2; - - CompletionStage result = - session.writeTransactionAsync(new AsyncTransactionWork>() { - final AtomicInteger failures = new AtomicInteger(); - - @Override - public CompletionStage execute(AsyncTransaction tx) { - return tx.runAsync("CREATE (:MyNode) RETURN 'Hello'") - .thenCompose(ResultCursor::singleAsync) - .thenApply(record -> record.get(0).asString()) - .thenCompose(result -> { - if (failures.getAndIncrement() < maxFailures) { - return failedFuture(new ServiceUnavailableException("Hi")); - } - return completedFuture(result); - }); - } - }); + var maxFailures = 2; + + var result = session.writeTransactionAsync(new AsyncTransactionWork>() { + final AtomicInteger failures = new AtomicInteger(); + + @Override + public CompletionStage execute(AsyncTransaction tx) { + return tx.runAsync("CREATE (:MyNode) RETURN 'Hello'") + .thenCompose(ResultCursor::singleAsync) + .thenApply(record -> record.get(0).asString()) + .thenCompose(result -> { + if (failures.getAndIncrement() < maxFailures) { + return failedFuture(new ServiceUnavailableException("Hi")); + } + return completedFuture(result); + }); + } + }); assertEquals("Hello", await(result)); assertEquals(1, countNodesByLabel("MyNode")); @@ -671,7 +664,7 @@ void shouldNotPropagateRunFailureWhenClosed() { @Test void shouldPropagateRunFailureImmediately() { - ClientException e = assertThrows(ClientException.class, () -> await(session.runAsync("RETURN 1 * \"x\""))); + var e = assertThrows(ClientException.class, () -> await(session.runAsync("RETURN 1 * \"x\""))); assertThat(e.getMessage(), containsString("Type mismatch")); } @@ -694,7 +687,7 @@ void shouldNotPropagateBlockedPullAllFailureWhenClosed() { @Test void shouldCloseCleanlyWhenRunErrorConsumed() { - ClientException e = assertThrows(ClientException.class, () -> await(session.runAsync("SomeWrongQuery"))); + var e = assertThrows(ClientException.class, () -> await(session.runAsync("SomeWrongQuery"))); assertThat(e.getMessage(), startsWith("Invalid input")); assertNull(await(session.closeAsync())); @@ -702,9 +695,9 @@ void shouldCloseCleanlyWhenRunErrorConsumed() { @Test void shouldCloseCleanlyWhenPullAllErrorConsumed() { - ResultCursor cursor = await(session.runAsync("UNWIND range(10, 0, -1) AS x RETURN 1 / x")); + var cursor = await(session.runAsync("UNWIND range(10, 0, -1) AS x RETURN 1 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.consumeAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.consumeAsync())); assertThat(e.getMessage(), containsString("/ by zero")); assertNull(await(session.closeAsync())); } @@ -721,10 +714,9 @@ void shouldNotPropagateFailureInCloseFromPreviousRun() { @Test void shouldCloseCleanlyAfterFailure() { - CompletionStage runWithOpenTx = - session.beginTransactionAsync().thenCompose(tx -> session.runAsync("RETURN 1")); + var runWithOpenTx = session.beginTransactionAsync().thenCompose(tx -> session.runAsync("RETURN 1")); - ClientException e = assertThrows(ClientException.class, () -> await(runWithOpenTx)); + var e = assertThrows(ClientException.class, () -> await(runWithOpenTx)); assertThat(e.getMessage(), startsWith("Queries cannot be run directly on a session with an open transaction")); await(session.closeAsync()); @@ -732,12 +724,12 @@ void shouldCloseCleanlyAfterFailure() { @Test void shouldPropagateFailureFromFirstIllegalQuery() { - CompletionStage allQueries = session.runAsync("CREATE (:Node1)") + var allQueries = session.runAsync("CREATE (:Node1)") .thenCompose(ignore -> session.runAsync("CREATE (:Node2)")) .thenCompose(ignore -> session.runAsync("RETURN invalid")) .thenCompose(ignore -> session.runAsync("CREATE (:Node3)")); - ClientException e = assertThrows(ClientException.class, () -> await(allQueries)); + var e = assertThrows(ClientException.class, () -> await(allQueries)); assertThat(e, is(syntaxError("Variable `invalid` not defined"))); assertEquals(1, countNodesByLabel("Node1")); @@ -748,10 +740,10 @@ void shouldPropagateFailureFromFirstIllegalQuery() { @Test @SuppressWarnings("deprecation") void shouldAllowReturningNullFromAsyncTransactionFunction() { - CompletionStage readResult = session.readTransactionAsync(tx -> null); + var readResult = session.readTransactionAsync(tx -> null); assertNull(await(readResult)); - CompletionStage writeResult = session.writeTransactionAsync(tx -> null); + var writeResult = session.writeTransactionAsync(tx -> null); assertNull(await(writeResult)); } @@ -775,7 +767,7 @@ static List>> managedTransa } private Future>> runNestedQueries(ResultCursor inputCursor) { - CompletableFuture>> resultFuture = new CompletableFuture<>(); + var resultFuture = new CompletableFuture>>(); runNestedQueries(inputCursor, new ArrayList<>(), resultFuture); return resultFuture; } @@ -784,7 +776,7 @@ private void runNestedQueries( ResultCursor inputCursor, List> stages, CompletableFuture>> resultFuture) { - final CompletionStage recordResponse = inputCursor.nextAsync(); + final var recordResponse = inputCursor.nextAsync(); stages.add(recordResponse); recordResponse.whenComplete((record, error) -> { @@ -803,11 +795,11 @@ private void runNestedQuery( Record record, List> stages, CompletableFuture>> resultFuture) { - Node node = record.get(0).asNode(); - long id = node.get("id").asLong(); - long age = id * 10; + var node = record.get(0).asNode(); + var id = node.get("id").asLong(); + var age = id * 10; - CompletionStage response = session.runAsync( + var response = session.runAsync( "MATCH (p:Person {id: $id}) SET p.age = $age RETURN p", parameters("id", id, "age", age)); response.whenComplete((cursor, error) -> { @@ -821,7 +813,7 @@ private void runNestedQuery( } private long countNodesByLabel(String label) { - CompletionStage countStage = session.runAsync("MATCH (n:" + label + ") RETURN count(n)") + var countStage = session.runAsync("MATCH (n:" + label + ") RETURN count(n)") .thenCompose(ResultCursor::singleAsync) .thenApply(record -> record.get(0).asLong()); @@ -829,11 +821,11 @@ private long countNodesByLabel(String label) { } private void testForEach(String query, int expectedSeenRecords) { - ResultCursor cursor = await(session.runAsync(query)); + var cursor = await(session.runAsync(query)); - AtomicInteger recordsSeen = new AtomicInteger(); - CompletionStage forEachDone = cursor.forEachAsync(record -> recordsSeen.incrementAndGet()); - ResultSummary summary = await(forEachDone); + var recordsSeen = new AtomicInteger(); + var forEachDone = cursor.forEachAsync(record -> recordsSeen.incrementAndGet()); + var summary = await(forEachDone); assertNotNull(summary); assertEquals(query, summary.query().text()); @@ -842,18 +834,18 @@ private void testForEach(String query, int expectedSeenRecords) { } private void testList(String query, List expectedList) { - ResultCursor cursor = await(session.runAsync(query)); - List records = await(cursor.listAsync()); + var cursor = await(session.runAsync(query)); + var records = await(cursor.listAsync()); List actualList = new ArrayList<>(); - for (Record record : records) { + for (var record : records) { actualList.add(record.get(0).asObject()); } assertEquals(expectedList, actualList); } private void testConsume(String query) { - ResultCursor cursor = await(session.runAsync(query)); - ResultSummary summary = await(cursor.consumeAsync()); + var cursor = await(session.runAsync(query)); + var summary = await(cursor.consumeAsync()); assertNotNull(summary); assertEquals(query, summary.query().text()); @@ -898,7 +890,7 @@ public CompletionStage execute(AsyncTransaction tx) { throw syncFailures.next(); } - CompletableFuture resultFuture = new CompletableFuture<>(); + var resultFuture = new CompletableFuture(); tx.runAsync(query) .whenComplete((cursor, error) -> diff --git a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionServerRestartIT.java b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionServerRestartIT.java index 35ea676b72..179f14c7dd 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionServerRestartIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionServerRestartIT.java @@ -23,15 +23,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.neo4j.driver.testutil.TestUtil.await; -import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.async.AsyncTransaction; -import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -55,22 +51,22 @@ void tearDown() { @Test void shouldFailWhenServerIsRestarted() { - int queryCount = 10_000; + var queryCount = 10_000; - String query = "UNWIND range(1, 100) AS x " + var query = "UNWIND range(1, 100) AS x " + "CREATE (n1:Node {value: x})-[r:LINKED {value: x}]->(n2:Node {value: x}) " + "DETACH DELETE n1, n2 " + "RETURN x"; assertThrows(ServiceUnavailableException.class, () -> { - for (int i = 0; i < queryCount; i++) { - ResultCursor cursor = await(session.runAsync(query)); + for (var i = 0; i < queryCount; i++) { + var cursor = await(session.runAsync(query)); if (i == 0) { neo4j.stopProxy(); } - List records = await(cursor.listAsync()); + var records = await(cursor.listAsync()); assertEquals(100, records.size()); } }); @@ -82,14 +78,14 @@ void shouldRunAfterRunFailureToAcquireConnection() { neo4j.stopProxy(); assertThrows(ServiceUnavailableException.class, () -> { - ResultCursor cursor = await(session.runAsync("RETURN 42")); + var cursor = await(session.runAsync("RETURN 42")); await(cursor.nextAsync()); }); neo4j.startProxy(); - ResultCursor cursor2 = await(session.runAsync("RETURN 42")); - Record record = await(cursor2.singleAsync()); + var cursor2 = await(session.runAsync("RETURN 42")); + var record = await(cursor2.singleAsync()); assertEquals(42, record.get(0).asInt()); } @@ -98,15 +94,15 @@ void shouldBeginTxAfterRunFailureToAcquireConnection() { neo4j.stopProxy(); assertThrows(ServiceUnavailableException.class, () -> { - ResultCursor cursor = await(session.runAsync("RETURN 42")); + var cursor = await(session.runAsync("RETURN 42")); await(cursor.consumeAsync()); }); neo4j.startProxy(); - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor2 = await(tx.runAsync("RETURN 42")); - Record record = await(cursor2.singleAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor2 = await(tx.runAsync("RETURN 42")); + var record = await(cursor2.singleAsync()); assertEquals(42, record.get(0).asInt()); assertNull(await(tx.rollbackAsync())); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java index 5cf79a7f81..f4d1052504 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java @@ -45,30 +45,21 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletionException; -import java.util.concurrent.CompletionStage; import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; -import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.async.AsyncTransaction; -import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.NoSuchRecordException; import org.neo4j.driver.exceptions.ResultConsumedException; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; -import org.neo4j.driver.types.Node; @ParallelizableIT class AsyncTransactionIT { @@ -90,12 +81,12 @@ void tearDown() { @Test @SuppressWarnings("deprecation") void shouldBePossibleToCommitEmptyTx() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); assertThat(await(tx.commitAsync()), is(nullValue())); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertNotNull(bookmarkAfter); assertNotEquals(bookmarkBefore, bookmarkAfter); @@ -104,24 +95,24 @@ void shouldBePossibleToCommitEmptyTx() { @Test @SuppressWarnings("deprecation") void shouldBePossibleToRollbackEmptyTx() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); assertThat(await(tx.rollbackAsync()), is(nullValue())); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertEquals(bookmarkBefore, bookmarkAfter); } @Test void shouldBePossibleToRunSingleQueryAndCommit() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("CREATE (n:Node {id: 42}) RETURN n")); + var cursor = await(tx.runAsync("CREATE (n:Node {id: 42}) RETURN n")); - Record record = await(cursor.nextAsync()); + var record = await(cursor.nextAsync()); assertNotNull(record); - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertEquals("Node", single(node.labels())); assertEquals(42, node.get("id").asInt()); assertNull(await(cursor.nextAsync())); @@ -132,12 +123,12 @@ void shouldBePossibleToRunSingleQueryAndCommit() { @Test void shouldBePossibleToRunSingleQueryAndRollback() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("CREATE (n:Node {id: 4242}) RETURN n")); - Record record = await(cursor.nextAsync()); + var cursor = await(tx.runAsync("CREATE (n:Node {id: 4242}) RETURN n")); + var record = await(cursor.nextAsync()); assertNotNull(record); - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertEquals("Node", single(node.labels())); assertEquals(4242, node.get("id").asInt()); assertNull(await(cursor.nextAsync())); @@ -148,15 +139,15 @@ void shouldBePossibleToRunSingleQueryAndRollback() { @Test void shouldBePossibleToRunMultipleQueriesAndCommit() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor1 = await(tx.runAsync("CREATE (n:Node {id: 1})")); + var cursor1 = await(tx.runAsync("CREATE (n:Node {id: 1})")); assertNull(await(cursor1.nextAsync())); - ResultCursor cursor2 = await(tx.runAsync("CREATE (n:Node {id: 2})")); + var cursor2 = await(tx.runAsync("CREATE (n:Node {id: 2})")); assertNull(await(cursor2.nextAsync())); - ResultCursor cursor3 = await(tx.runAsync("CREATE (n:Node {id: 2})")); + var cursor3 = await(tx.runAsync("CREATE (n:Node {id: 2})")); assertNull(await(cursor3.nextAsync())); assertNull(await(tx.commitAsync())); @@ -166,7 +157,7 @@ void shouldBePossibleToRunMultipleQueriesAndCommit() { @Test void shouldBePossibleToRunMultipleQueriesAndCommitWithoutWaiting() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE (n:Node {id: 1})"); tx.runAsync("CREATE (n:Node {id: 2})"); @@ -179,12 +170,12 @@ void shouldBePossibleToRunMultipleQueriesAndCommitWithoutWaiting() { @Test void shouldBePossibleToRunMultipleQueriesAndRollback() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor1 = await(tx.runAsync("CREATE (n:Node {id: 1})")); + var cursor1 = await(tx.runAsync("CREATE (n:Node {id: 1})")); assertNull(await(cursor1.nextAsync())); - ResultCursor cursor2 = await(tx.runAsync("CREATE (n:Node {id: 42})")); + var cursor2 = await(tx.runAsync("CREATE (n:Node {id: 42})")); assertNull(await(cursor2.nextAsync())); assertNull(await(tx.rollbackAsync())); @@ -194,7 +185,7 @@ void shouldBePossibleToRunMultipleQueriesAndRollback() { @Test void shouldBePossibleToRunMultipleQueriesAndRollbackWithoutWaiting() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE (n:Node {id: 1})"); tx.runAsync("CREATE (n:Node {id: 42})"); @@ -206,9 +197,9 @@ void shouldBePossibleToRunMultipleQueriesAndRollbackWithoutWaiting() { @Test void shouldFailToCommitAfterSingleWrongQuery() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - Exception e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); + var e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); assertThat(e, is(syntaxError())); assertThrows(ClientException.class, () -> await(tx.commitAsync())); @@ -216,28 +207,28 @@ void shouldFailToCommitAfterSingleWrongQuery() { @Test void shouldAllowRollbackAfterSingleWrongQuery() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - Exception e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); + var e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); assertThat(e, is(syntaxError())); assertThat(await(tx.rollbackAsync()), is(nullValue())); } @Test void shouldFailToCommitAfterCoupleCorrectAndSingleWrongQuery() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor1 = await(tx.runAsync("CREATE (n:Node) RETURN n")); - Record record1 = await(cursor1.nextAsync()); + var cursor1 = await(tx.runAsync("CREATE (n:Node) RETURN n")); + var record1 = await(cursor1.nextAsync()); assertNotNull(record1); assertTrue(record1.get(0).asNode().hasLabel("Node")); - ResultCursor cursor2 = await(tx.runAsync("RETURN 42")); - Record record2 = await(cursor2.nextAsync()); + var cursor2 = await(tx.runAsync("RETURN 42")); + var record2 = await(cursor2.nextAsync()); assertNotNull(record2); assertEquals(42, record2.get(0).asInt()); - Exception e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); + var e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); assertThat(e, is(syntaxError())); assertThrows(ClientException.class, () -> await(tx.commitAsync())); @@ -245,31 +236,31 @@ void shouldFailToCommitAfterCoupleCorrectAndSingleWrongQuery() { @Test void shouldAllowRollbackAfterCoupleCorrectAndSingleWrongQuery() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ResultCursor cursor1 = await(tx.runAsync("RETURN 4242")); - Record record1 = await(cursor1.nextAsync()); + var cursor1 = await(tx.runAsync("RETURN 4242")); + var record1 = await(cursor1.nextAsync()); assertNotNull(record1); assertEquals(4242, record1.get(0).asInt()); - ResultCursor cursor2 = await(tx.runAsync("CREATE (n:Node) DELETE n RETURN 42")); - Record record2 = await(cursor2.nextAsync()); + var cursor2 = await(tx.runAsync("CREATE (n:Node) DELETE n RETURN 42")); + var record2 = await(cursor2.nextAsync()); assertNotNull(record2); assertEquals(42, record2.get(0).asInt()); - Exception e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); + var e = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); assertThat(e, is(syntaxError())); assertThat(await(tx.rollbackAsync()), is(nullValue())); } @Test void shouldNotAllowNewQueriesAfterAnIncorrectQuery() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - Exception e1 = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); + var e1 = assertThrows(Exception.class, () -> await(tx.runAsync("RETURN"))); assertThat(e1, is(syntaxError())); - ClientException e2 = assertThrows(ClientException.class, () -> tx.runAsync("CREATE ()")); + var e2 = assertThrows(ClientException.class, () -> tx.runAsync("CREATE ()")); assertThat(e2.getMessage(), startsWith("Cannot run more queries in this transaction")); } @@ -287,72 +278,72 @@ void shouldFailBoBeginTxWithInvalidBookmark() { @Test void shouldFailToCommitWhenCommitted() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE ()"); assertNull(await(tx.commitAsync())); // should not be possible to commit after commit - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertThat(e.getMessage(), containsString("transaction has been committed")); } @Test void shouldFailToRollbackWhenRolledBack() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE ()"); assertNull(await(tx.rollbackAsync())); // should not be possible to rollback after rollback - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); assertThat(e.getMessage(), containsString("transaction has been rolled back")); } @Test void shouldFailToCommitWhenRolledBack() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE ()"); assertNull(await(tx.rollbackAsync())); // should not be possible to commit after rollback - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertThat(e.getMessage(), containsString("transaction has been rolled back")); } @Test void shouldFailToRollbackWhenCommitted() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE ()"); assertNull(await(tx.commitAsync())); // should not be possible to rollback after commit - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); assertThat(e.getMessage(), containsString("transaction has been committed")); } @Test void shouldExposeQueryKeysForColumnsWithAliases() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five")); assertEquals(Arrays.asList("one", "two", "three", "five"), cursor.keys()); } @Test void shouldExposeQueryKeysForColumnsWithoutAliases() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("RETURN 1, 2, 3, 5")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("RETURN 1, 2, 3, 5")); assertEquals(Arrays.asList("1", "2", "3", "5"), cursor.keys()); } @Test void shouldExposeResultSummaryForSimpleQuery() { - String query = "CREATE (p1:Person {name: $name1})-[:KNOWS]->(p2:Person {name: $name2}) RETURN p1, p2"; - Value params = parameters("name1", "Bob", "name2", "John"); + var query = "CREATE (p1:Person {name: $name1})-[:KNOWS]->(p2:Person {name: $name2}) RETURN p1, p2"; + var params = parameters("name1", "Bob", "name2", "John"); - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query, params)); - ResultSummary summary = await(cursor.consumeAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query, params)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query, params), summary.query()); assertEquals(2, summary.counters().nodesCreated()); @@ -370,11 +361,11 @@ void shouldExposeResultSummaryForSimpleQuery() { @Test void shouldExposeResultSummaryForExplainQuery() { - String query = "EXPLAIN MATCH (n) RETURN n"; + var query = "EXPLAIN MATCH (n) RETURN n"; - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query)); - ResultSummary summary = await(cursor.consumeAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query), summary.query()); assertEquals(0, summary.counters().nodesCreated()); @@ -393,14 +384,14 @@ void shouldExposeResultSummaryForExplainQuery() { @Test void shouldExposeResultSummaryForProfileQuery() { - String query = "PROFILE MERGE (n {name: $name}) " + "ON CREATE SET n.created = timestamp() " + var query = "PROFILE MERGE (n {name: $name}) " + "ON CREATE SET n.created = timestamp() " + "ON MATCH SET n.counter = coalesce(n.counter, 0) + 1"; - Value params = parameters("name", "Bob"); + var params = parameters("name", "Bob"); - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query, params)); - ResultSummary summary = await(cursor.consumeAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query, params)); + var summary = await(cursor.consumeAsync()); assertEquals(new Query(query, params), summary.query()); assertEquals(1, summary.counters().nodesCreated()); @@ -413,7 +404,7 @@ void shouldExposeResultSummaryForProfileQuery() { assertNotNull(summary.profile()); // asserting on profile is a bit fragile and can break when server side changes or with different // server versions; that is why do fuzzy assertions in this test based on string content - String profileAsString = summary.profile().toString().toLowerCase(); + var profileAsString = summary.profile().toString().toLowerCase(); assertThat(profileAsString, containsString("hits")); assertEquals(0, summary.notifications().size()); assertThat(summary, containsResultAvailableAfterAndResultConsumedAfter()); @@ -421,8 +412,8 @@ void shouldExposeResultSummaryForProfileQuery() { @Test void shouldPeekRecordFromCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND ['a', 'b', 'c'] AS x RETURN x")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND ['a', 'b', 'c'] AS x RETURN x")); assertEquals("a", await(cursor.peekAsync()).get(0).asString()); assertEquals("a", await(cursor.peekAsync()).get(0).asString()); @@ -454,11 +445,11 @@ void shouldForEachWithNonEmptyCursor() { @Test void shouldFailForEachWhenActionFails() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("RETURN 'Hi!'")); - RuntimeException error = new RuntimeException(); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("RETURN 'Hi!'")); + var error = new RuntimeException(); - RuntimeException e = assertThrows(RuntimeException.class, () -> { + var e = assertThrows(RuntimeException.class, () -> { await(cursor.forEachAsync(record -> { throw error; })); @@ -478,28 +469,27 @@ void shouldConvertToListWithNonEmptyCursor() { @Test void shouldConvertToTransformedListWithEmptyCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("CREATE ()")); - List> maps = - await(cursor.listAsync(record -> record.get(0).asMap())); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("CREATE ()")); + var maps = await(cursor.listAsync(record -> record.get(0).asMap())); assertEquals(0, maps.size()); } @Test void shouldConvertToTransformedListWithNonEmptyCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND ['a', 'b', 'c'] AS x RETURN x")); - List strings = await(cursor.listAsync(record -> record.get(0).asString() + "!")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND ['a', 'b', 'c'] AS x RETURN x")); + var strings = await(cursor.listAsync(record -> record.get(0).asString() + "!")); assertEquals(Arrays.asList("a!", "b!", "c!"), strings); } @Test void shouldFailWhenListTransformationFunctionFails() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("RETURN 'Hello'")); - IOException error = new IOException("World"); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("RETURN 'Hello'")); + var error = new IOException("World"); - Exception e = assertThrows( + var e = assertThrows( Exception.class, () -> await(cursor.listAsync(record -> { throw new CompletionException(error); @@ -509,7 +499,7 @@ void shouldFailWhenListTransformationFunctionFails() { @Test void shouldFailToCommitWhenServerIsRestarted() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); await(tx.runAsync("CREATE ()")); @@ -520,47 +510,47 @@ void shouldFailToCommitWhenServerIsRestarted() { @Test void shouldFailSingleWithEmptyCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("MATCH (n:NoSuchLabel) RETURN n")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("MATCH (n:NoSuchLabel) RETURN n")); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("result is empty")); } @Test void shouldFailSingleWithMultiRecordCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND ['a', 'b'] AS x RETURN x")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND ['a', 'b'] AS x RETURN x")); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), startsWith("Expected a result with a single record")); } @Test void shouldReturnSingleWithSingleRecordCursor() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("RETURN 'Hello!'")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("RETURN 'Hello!'")); - Record record = await(cursor.singleAsync()); + var record = await(cursor.singleAsync()); assertEquals("Hello!", record.get(0).asString()); } @Test void shouldPropagateFailureFromFirstRecordInSingleAsync() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND [0] AS x RETURN 10 / x")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND [0] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("/ by zero")); } @Test void shouldNotPropagateFailureFromSecondRecordInSingleAsync() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND [1, 0] AS x RETURN 10 / x")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND [1, 0] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("/ by zero")); } @@ -576,39 +566,39 @@ void shouldConsumeNonEmptyCursor() { @Test void shouldFailToRunQueryAfterCommit() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE (:MyLabel)"); assertNull(await(tx.commitAsync())); - ResultCursor cursor = await(session.runAsync("MATCH (n:MyLabel) RETURN count(n)")); + var cursor = await(session.runAsync("MATCH (n:MyLabel) RETURN count(n)")); assertEquals(1, await(cursor.singleAsync()).get(0).asInt()); - ClientException e = assertThrows(ClientException.class, () -> await(tx.runAsync("CREATE (:MyOtherLabel)"))); + var e = assertThrows(ClientException.class, () -> await(tx.runAsync("CREATE (:MyOtherLabel)"))); assertEquals("Cannot run more queries in this transaction, it has been committed", e.getMessage()); } @Test void shouldFailToRunQueryAfterRollback() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE (:MyLabel)"); assertNull(await(tx.rollbackAsync())); - ResultCursor cursor = await(session.runAsync("MATCH (n:MyLabel) RETURN count(n)")); + var cursor = await(session.runAsync("MATCH (n:MyLabel) RETURN count(n)")); assertEquals(0, await(cursor.singleAsync()).get(0).asInt()); - ClientException e = assertThrows(ClientException.class, () -> await(tx.runAsync("CREATE (:MyOtherLabel)"))); + var e = assertThrows(ClientException.class, () -> await(tx.runAsync("CREATE (:MyOtherLabel)"))); assertEquals("Cannot run more queries in this transaction, it has been rolled back", e.getMessage()); } @Test @SuppressWarnings("deprecation") void shouldUpdateSessionBookmarkAfterCommit() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); await(session.beginTransactionAsync() .thenCompose(tx -> tx.runAsync("CREATE (:MyNode)").thenCompose(ignore -> tx.commitAsync()))); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertNotNull(bookmarkAfter); assertNotEquals(bookmarkBefore, bookmarkAfter); @@ -616,14 +606,14 @@ void shouldUpdateSessionBookmarkAfterCommit() { @Test void shouldFailToCommitWhenQueriesFail() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("CREATE (:TestNode)"); tx.runAsync("CREATE (:TestNode)"); tx.runAsync("RETURN 1 * \"x\""); tx.runAsync("CREATE (:TestNode)"); - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertNoCircularReferences(e); assertEquals( "Transaction can't be committed. It has been rolled back either because of an error or explicit termination", @@ -632,23 +622,22 @@ void shouldFailToCommitWhenQueriesFail() { @Test void shouldFailToCommitWhenRunFailed() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("RETURN ILLEGAL"); - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertNoCircularReferences(e); assertThat(e.getMessage(), containsString("Transaction can't be committed")); } @Test void shouldFailToCommitWhenBlockedRunFailed() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); - ClientException runException = - assertThrows(ClientException.class, () -> await(tx.runAsync("RETURN 1 * \"x\""))); + var runException = assertThrows(ClientException.class, () -> await(tx.runAsync("RETURN 1 * \"x\""))); - ClientException commitException = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var commitException = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertThat(runException.getMessage(), containsString("Type mismatch")); assertNoCircularReferences(commitException); assertThat(commitException.getMessage(), containsString("Transaction can't be committed")); @@ -656,7 +645,7 @@ void shouldFailToCommitWhenBlockedRunFailed() { @Test void shouldRollbackSuccessfullyWhenRunFailed() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("RETURN ILLEGAL"); @@ -665,7 +654,7 @@ void shouldRollbackSuccessfullyWhenRunFailed() { @Test void shouldRollbackSuccessfullyWhenBlockedRunFailed() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); assertThrows(ClientException.class, () -> await(tx.runAsync("RETURN 1 * \"x\""))); @@ -674,68 +663,68 @@ void shouldRollbackSuccessfullyWhenBlockedRunFailed() { @Test void shouldPropagatePullAllFailureFromCommit() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("UNWIND [1, 2, 3, 'Hi'] AS x RETURN 10 / x"); - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertNoCircularReferences(e); assertThat(e.code(), containsString("TypeError")); } @Test void shouldPropagateBlockedPullAllFailureFromCommit() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); await(tx.runAsync("UNWIND [1, 2, 3, 'Hi'] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.commitAsync())); assertNoCircularReferences(e); assertThat(e.code(), containsString("TypeError")); } @Test void shouldPropagatePullAllFailureFromRollback() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); tx.runAsync("UNWIND [1, 2, 3, 'Hi'] AS x RETURN 10 / x"); - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); assertThat(e.code(), containsString("TypeError")); } @Test void shouldPropagateBlockedPullAllFailureFromRollback() { - AsyncTransaction tx = await(session.beginTransactionAsync()); + var tx = await(session.beginTransactionAsync()); await(tx.runAsync("UNWIND [1, 2, 3, 'Hi'] AS x RETURN 10 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); + var e = assertThrows(ClientException.class, () -> await(tx.rollbackAsync())); assertThat(e.code(), containsString("TypeError")); } @Test void shouldRollbackWhenPullAllFailureIsConsumed() { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync("UNWIND [1, 0] AS x RETURN 5 / x")); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync("UNWIND [1, 0] AS x RETURN 5 / x")); - ClientException e = assertThrows(ClientException.class, () -> await(cursor.consumeAsync())); + var e = assertThrows(ClientException.class, () -> await(cursor.consumeAsync())); assertThat(e.getMessage(), containsString("/ by zero")); assertNull(await(tx.rollbackAsync())); } private int countNodes(Object id) { - ResultCursor cursor = await(session.runAsync("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id))); + var cursor = await(session.runAsync("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id))); return await(cursor.singleAsync()).get(0).asInt(); } private void testForEach(String query, int expectedSeenRecords) { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query)); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query)); - AtomicInteger recordsSeen = new AtomicInteger(); - CompletionStage forEachDone = cursor.forEachAsync(record -> recordsSeen.incrementAndGet()); - ResultSummary summary = await(forEachDone); + var recordsSeen = new AtomicInteger(); + var forEachDone = cursor.forEachAsync(record -> recordsSeen.incrementAndGet()); + var summary = await(forEachDone); assertNotNull(summary); assertEquals(query, summary.query().text()); @@ -744,20 +733,20 @@ private void testForEach(String query, int expectedSeenRecords) { } private void testList(String query, List expectedList) { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query)); - List records = await(cursor.listAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query)); + var records = await(cursor.listAsync()); List actualList = new ArrayList<>(); - for (Record record : records) { + for (var record : records) { actualList.add(record.get(0).asObject()); } assertEquals(expectedList, actualList); } private void testConsume(String query) { - AsyncTransaction tx = await(session.beginTransactionAsync()); - ResultCursor cursor = await(tx.runAsync(query)); - ResultSummary summary = await(cursor.consumeAsync()); + var tx = await(session.beginTransactionAsync()); + var cursor = await(tx.runAsync(query)); + var summary = await(cursor.consumeAsync()); assertNotNull(summary); assertEquals(query, summary.query().text()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java index 19f4dbbe64..16c339e81c 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java @@ -25,7 +25,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.exceptions.TransactionNestingException; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.testutil.DatabaseExtension; @@ -43,17 +42,17 @@ class RxNestedQueriesIT { @Test void shouldErrorForNestingQueriesAmongSessionRuns() { - int size = 12555; + var size = 12555; - Flux nodeIds = Flux.usingWhen( + var nodeIds = Flux.usingWhen( Mono.fromSupplier(() -> neo4j.driver().rxSession()), session -> Flux.from(session.run( "UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)) .records()) .limitRate(20) .flatMap(record -> { - int x = record.get("x").asInt(); - RxResult innerResult = session.run( + var x = record.get("x").asInt(); + var innerResult = session.run( "CREATE (n:Node {id: $x}) RETURN n.id", Collections.singletonMap("x", x)); return innerResult.records(); }) @@ -67,15 +66,15 @@ void shouldErrorForNestingQueriesAmongSessionRuns() { @Test void shouldErrorForNestingQueriesAmongTransactionFunctions() { - int size = 12555; - Flux nodeIds = Flux.usingWhen( + var size = 12555; + var nodeIds = Flux.usingWhen( Mono.fromSupplier(() -> neo4j.driver().rxSession()), session -> Flux.from(session.readTransaction(tx -> tx.run( "UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)) .records())) .limitRate(20) .flatMap(record -> { - int x = record.get("x").asInt(); + var x = record.get("x").asInt(); return session.writeTransaction(tx -> tx.run( "CREATE (n:Node {id: $x}) RETURN n.id", Collections.singletonMap("x", x)) .records()); @@ -90,15 +89,15 @@ void shouldErrorForNestingQueriesAmongTransactionFunctions() { @Test void shouldErrorForNestingQueriesAmongSessionRunAndTransactionFunction() { - int size = 12555; - Flux nodeIds = Flux.usingWhen( + var size = 12555; + var nodeIds = Flux.usingWhen( Mono.fromSupplier(() -> neo4j.driver().rxSession()), session -> Flux.from(session.run( "UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)) .records()) .limitRate(20) .flatMap(record -> { - int x = record.get("x").asInt(); + var x = record.get("x").asInt(); return session.writeTransaction(tx -> tx.run( "CREATE (n:Node {id: $x}) RETURN n.id", Collections.singletonMap("x", x)) .records()); @@ -113,15 +112,15 @@ void shouldErrorForNestingQueriesAmongSessionRunAndTransactionFunction() { @Test void shouldErrorForNestingQueriesAmongTransactionFunctionAndSessionRun() { - int size = 12555; - Flux nodeIds = Flux.usingWhen( + var size = 12555; + var nodeIds = Flux.usingWhen( Mono.fromSupplier(() -> neo4j.driver().rxSession()), session -> Flux.from(session.readTransaction(tx -> tx.run( "UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)) .records())) .limitRate(20) .flatMap(record -> { - int x = record.get("x").asInt(); + var x = record.get("x").asInt(); return session.run("CREATE (n:Node {id: $x}) RETURN n.id", Collections.singletonMap("x", x)) .records(); }) @@ -135,19 +134,18 @@ void shouldErrorForNestingQueriesAmongTransactionFunctionAndSessionRun() { @Test void shouldHandleNestedQueriesInTheSameTransaction() throws Throwable { - int size = 12555; + var size = 12555; - RxSession session = neo4j.driver().rxSession(); - Flux nodeIds = Flux.usingWhen( + var session = neo4j.driver().rxSession(); + var nodeIds = Flux.usingWhen( session.beginTransaction(), tx -> { - RxResult result = - tx.run("UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)); + var result = tx.run("UNWIND range(1, $size) AS x RETURN x", Collections.singletonMap("size", size)); return Flux.from(result.records()) .limitRate(20) .flatMap(record -> { - int x = record.get("x").asInt(); - RxResult innerResult = tx.run( + var x = record.get("x").asInt(); + var innerResult = tx.run( "CREATE (n:Node {id: $x}) RETURN n.id", Collections.singletonMap("x", x)); return innerResult.records(); }) diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java index bb801fcd36..9bda057284 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java @@ -32,16 +32,12 @@ import static org.neo4j.driver.internal.util.Neo4jFeature.BOLT_V4; import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.neo4j.driver.Record; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.reactive.RxResult; -import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; import reactor.core.publisher.Flux; @@ -58,7 +54,7 @@ class RxResultIT { @Test void shouldAllowIteratingOverResultStream() { // When - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); // Then I should be able to iterate over the result verifyCanAccessFullRecords(res); @@ -67,15 +63,15 @@ void shouldAllowIteratingOverResultStream() { @Test void shouldAllowIteratingOverLargeResultStream() { // When - int size = 100000; - RxSession session = neo4j.driver().rxSession(); - RxResult res = session.run("UNWIND range(1, $size) AS x RETURN x", parameters("size", size)); + var size = 100000; + var session = neo4j.driver().rxSession(); + var res = session.run("UNWIND range(1, $size) AS x RETURN x", parameters("size", size)); // Then I should be able to iterate over the result - StepVerifier.FirstStep step = StepVerifier.create( + var step = StepVerifier.create( Flux.from(res.records()).limitRate(100).map(r -> r.get("x").asInt())); - for (int i = 1; i <= size; i++) { + for (var i = 1; i <= size; i++) { step.expectNext(i); } step.expectComplete().verify(); @@ -84,7 +80,7 @@ void shouldAllowIteratingOverLargeResultStream() { @Test void shouldReturnKeysRecordsAndSummaryInOrder() { // When - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); // Then I should be able to iterate over the result verifyCanAccessKeys(res); @@ -95,7 +91,7 @@ void shouldReturnKeysRecordsAndSummaryInOrder() { @Test void shouldSecondVisitOfRecordReceiveEmptyRecordStream() throws Throwable { // When - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); // Then I should be able to iterate over the result verifyCanAccessFullRecords(res); @@ -106,7 +102,7 @@ void shouldSecondVisitOfRecordReceiveEmptyRecordStream() throws Throwable { @Test void shouldReturnKeysSummaryAndDiscardRecords() { // When - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); verifyCanAccessKeys(res); verifyCanAccessSummary(res); @@ -116,7 +112,7 @@ void shouldReturnKeysSummaryAndDiscardRecords() { @Test void shouldAllowOnlySummary() { // When - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); verifyCanAccessSummary(res); } @@ -124,7 +120,7 @@ void shouldAllowOnlySummary() { @Test void shouldAllowAccessKeysAndSummaryAfterRecord() throws Throwable { // Given - RxResult res = sessionRunUnwind(); + var res = sessionRunUnwind(); // Then I should be able to iterate over the result verifyCanAccessFullRecords(res); @@ -141,8 +137,8 @@ void shouldAllowAccessKeysAndSummaryAfterRecord() throws Throwable { @Test void shouldGiveHelpfulFailureMessageWhenAccessNonExistingField() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); + var session = neo4j.driver().rxSession(); + var rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); // When StepVerifier.create(Flux.from(rs.records()).single()) @@ -157,8 +153,8 @@ void shouldGiveHelpfulFailureMessageWhenAccessNonExistingField() { @Test void shouldGiveHelpfulFailureMessageWhenAccessNonExistingPropertyOnNode() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); + var session = neo4j.driver().rxSession(); + var rs = session.run("CREATE (n:Person {name:$name}) RETURN n", parameters("name", "Tom Hanks")); // When StepVerifier.create(Flux.from(rs.records()).single()) @@ -173,8 +169,8 @@ void shouldGiveHelpfulFailureMessageWhenAccessNonExistingPropertyOnNode() { @Test void shouldHaveFieldNamesInResult() { // When - RxSession session = neo4j.driver().rxSession(); - RxResult res = session.run("CREATE (n:TestNode {name:'test'}) RETURN n"); + var session = neo4j.driver().rxSession(); + var res = session.run("CREATE (n:TestNode {name:'test'}) RETURN n"); // Then StepVerifier.create(res.keys()) @@ -192,8 +188,8 @@ void shouldHaveFieldNamesInResult() { @Test void shouldReturnEmptyKeyAndRecordOnEmptyResult() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult rs = session.run("CREATE (n:Person {name:$name})", parameters("name", "Tom Hanks")); + var session = neo4j.driver().rxSession(); + var rs = session.run("CREATE (n:Person {name:$name})", parameters("name", "Tom Hanks")); // Then StepVerifier.create(rs.keys()).expectNext(emptyList()).expectComplete().verify(); @@ -203,13 +199,13 @@ void shouldReturnEmptyKeyAndRecordOnEmptyResult() { @Test void shouldOnlyErrorRecordAfterFailure() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("INVALID"); + var session = neo4j.driver().rxSession(); + var result = session.run("INVALID"); // When - Flux> keys = Flux.from(result.keys()); - Flux records = Flux.from(result.records()); - Mono summaryMono = Mono.from(result.consume()); + var keys = Flux.from(result.keys()); + var records = Flux.from(result.records()); + var summaryMono = Mono.from(result.consume()); // Then StepVerifier.create(keys).expectNext(emptyList()).verifyComplete(); @@ -232,12 +228,12 @@ void shouldOnlyErrorRecordAfterFailure() { @Test void shouldErrorOnSummaryIfNoRecord() throws Throwable { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("INVALID"); + var session = neo4j.driver().rxSession(); + var result = session.run("INVALID"); // When - Flux> keys = Flux.from(result.keys()); - Mono summaryMono = Mono.from(result.consume()); + var keys = Flux.from(result.keys()); + var summaryMono = Mono.from(result.consume()); // Then StepVerifier.create(keys).expectNext(emptyList()).verifyComplete(); @@ -261,8 +257,8 @@ void shouldErrorOnSummaryIfNoRecord() throws Throwable { @Test void shouldDiscardRecords() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create( @@ -286,9 +282,9 @@ void shouldDiscardRecords() { @Test void shouldStreamCorrectRecordsBackBeforeError() { - RxSession session = neo4j.driver().rxSession(); + var session = neo4j.driver().rxSession(); - RxResult result = session.run("CYPHER runtime=interpreted UNWIND range(5, 0, -1) AS x RETURN x / x"); + var result = session.run("CYPHER runtime=interpreted UNWIND range(5, 0, -1) AS x RETURN x / x"); StepVerifier.create( Flux.from(result.records()).map(record -> record.get(0).asInt())) .expectNext(1) @@ -305,8 +301,8 @@ void shouldStreamCorrectRecordsBackBeforeError() { @Test void shouldErrorToAccessRecordAfterSessionClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.close()).thenMany(result.records())) @@ -319,8 +315,8 @@ void shouldErrorToAccessRecordAfterSessionClose() { @Test void shouldErrorToAccessKeysAfterSessionClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.close()).thenMany(result.keys())) @@ -333,8 +329,8 @@ void shouldErrorToAccessKeysAfterSessionClose() { @Test void shouldErrorToAccessSummaryAfterSessionClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.close()).thenMany(result.consume())) @@ -347,8 +343,8 @@ void shouldErrorToAccessSummaryAfterSessionClose() { @Test void shouldErrorToAccessRecordAfterTxClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.beginTransaction()) @@ -363,8 +359,8 @@ void shouldErrorToAccessRecordAfterTxClose() { @Test void shouldErrorToAccessKeysAfterTxClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.beginTransaction()) @@ -379,8 +375,8 @@ void shouldErrorToAccessKeysAfterTxClose() { @Test void shouldErrorToAccessSummaryAfterTxClose() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.beginTransaction()) @@ -395,8 +391,8 @@ void shouldErrorToAccessSummaryAfterTxClose() { @Test void throwErrorAfterKeys() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("UNWIND [1,2] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var result = session.run("UNWIND [1,2] AS a RETURN a"); // When StepVerifier.create(Flux.from(session.beginTransaction()) @@ -411,8 +407,8 @@ void throwErrorAfterKeys() { @Test void throwTheSameErrorWhenCallingConsumeMultipleTimes() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("Invalid"); + var session = neo4j.driver().rxSession(); + var result = session.run("Invalid"); // When StepVerifier.create(Flux.from(result.consume())) @@ -427,8 +423,8 @@ void throwTheSameErrorWhenCallingConsumeMultipleTimes() { @Test void keysShouldNotReportRunError() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("Invalid"); + var session = neo4j.driver().rxSession(); + var result = session.run("Invalid"); // When StepVerifier.create(Flux.from(result.keys())) @@ -442,8 +438,8 @@ void keysShouldNotReportRunError() { @Test void throwResultConsumedErrorWhenCallingRecordsMultipleTimes() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult result = session.run("Invalid"); + var session = neo4j.driver().rxSession(); + var result = session.run("Invalid"); // When StepVerifier.create(Flux.from(result.records())) @@ -486,7 +482,7 @@ private void verifyCanAccessKeys(RxResult res) { } private RxResult sessionRunUnwind() { - RxSession session = neo4j.driver().rxSession(); + var session = neo4j.driver().rxSession(); return session.run("UNWIND [1,2,3,4] AS a RETURN a"); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxSessionIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxSessionIT.java index 57fd8df828..397b370ad6 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxSessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxSessionIT.java @@ -30,15 +30,12 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; -import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.DatabaseException; import org.neo4j.driver.exceptions.ServiceUnavailableException; @@ -66,8 +63,8 @@ class RxSessionIT { @Test void shouldAllowSessionRun() { // When - RxSession session = neo4j.driver().rxSession(); - RxResult res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); + var session = neo4j.driver().rxSession(); + var res = session.run("UNWIND [1,2,3,4] AS a RETURN a"); // Then I should be able to iterate over the result StepVerifier.create(Flux.from(res.records()).map(r -> r.get("a").asInt())) @@ -82,13 +79,13 @@ void shouldAllowSessionRun() { @Test void shouldBeAbleToReuseSessionAfterFailure() { // Given - RxSession session = neo4j.driver().rxSession(); - RxResult res1 = session.run("INVALID"); + var session = neo4j.driver().rxSession(); + var res1 = session.run("INVALID"); StepVerifier.create(res1.records()).expectError(ClientException.class).verify(); // When - RxResult res2 = session.run("RETURN 1"); + var res2 = session.run("RETURN 1"); // Then StepVerifier.create(res2.records()) @@ -101,9 +98,9 @@ void shouldBeAbleToReuseSessionAfterFailure() { @Test void shouldRunAsyncTransactionWithoutRetries() { - RxSession session = neo4j.driver().rxSession(); - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Apa) RETURN 42"); - Publisher publisher = session.writeTransaction(work); + var session = neo4j.driver().rxSession(); + var work = new InvocationTrackingWork("CREATE (:Apa) RETURN 42"); + var publisher = session.writeTransaction(work); StepVerifier.create(publisher).expectNext(42).verifyComplete(); @@ -113,14 +110,14 @@ void shouldRunAsyncTransactionWithoutRetries() { @Test void shouldRunAsyncTransactionWithRetriesOnAsyncFailures() { - RxSession session = neo4j.driver().rxSession(); - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Node) RETURN 24") + var session = neo4j.driver().rxSession(); + var work = new InvocationTrackingWork("CREATE (:Node) RETURN 24") .withAsyncFailures( new ServiceUnavailableException("Oh!"), new SessionExpiredException("Ah!"), new TransientException("Code", "Message")); - Publisher publisher = session.writeTransaction(work); + var publisher = session.writeTransaction(work); StepVerifier.create(publisher).expectNext(24).verifyComplete(); assertEquals(4, work.invocationCount()); @@ -130,13 +127,13 @@ void shouldRunAsyncTransactionWithRetriesOnAsyncFailures() { @Test void shouldRunAsyncTransactionWithRetriesOnSyncFailures() { - RxSession session = neo4j.driver().rxSession(); - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Test) RETURN 12") + var session = neo4j.driver().rxSession(); + var work = new InvocationTrackingWork("CREATE (:Test) RETURN 12") .withSyncFailures( new TransientException("Oh!", "Deadlock!"), new ServiceUnavailableException("Oh! Network Failure")); - Publisher publisher = session.writeTransaction(work); + var publisher = session.writeTransaction(work); StepVerifier.create(publisher).expectNext(12).verifyComplete(); assertEquals(3, work.invocationCount()); @@ -146,9 +143,9 @@ void shouldRunAsyncTransactionWithRetriesOnSyncFailures() { @Test void shouldRunAsyncTransactionThatCanNotBeRetried() { - RxSession session = neo4j.driver().rxSession(); - InvocationTrackingWork work = new InvocationTrackingWork("UNWIND [10, 5, 0] AS x CREATE (:Hi) RETURN 10/x"); - Publisher publisher = session.writeTransaction(work); + var session = neo4j.driver().rxSession(); + var work = new InvocationTrackingWork("UNWIND [10, 5, 0] AS x CREATE (:Hi) RETURN 10/x"); + var publisher = session.writeTransaction(work); StepVerifier.create(publisher) .expectNext(1) @@ -163,13 +160,13 @@ void shouldRunAsyncTransactionThatCanNotBeRetried() { @Test void shouldRunAsyncTransactionThatCanNotBeRetriedAfterATransientFailure() { - RxSession session = neo4j.driver().rxSession(); + var session = neo4j.driver().rxSession(); // first throw TransientException directly from work, retry can happen afterwards // then return a future failed with DatabaseException, retry can't happen afterwards - InvocationTrackingWork work = new InvocationTrackingWork("CREATE (:Person) RETURN 1") + var work = new InvocationTrackingWork("CREATE (:Person) RETURN 1") .withSyncFailures(new TransientException("Oh!", "Deadlock!")) .withAsyncFailures(new DatabaseException("Oh!", "OutOfMemory!")); - Publisher publisher = session.writeTransaction(work); + var publisher = session.writeTransaction(work); StepVerifier.create(publisher) .expectErrorSatisfies(e -> { @@ -207,16 +204,16 @@ static List>> managedTransactionsReturni } private void assertNoParallelScheduler() { - Set threadSet = Thread.getAllStackTraces().keySet(); - for (Thread t : threadSet) { - String name = t.getName(); + var threadSet = Thread.getAllStackTraces().keySet(); + for (var t : threadSet) { + var name = t.getName(); assertThat(name, not(startsWith("parallel"))); } } private long countNodesByLabel(String label) { - try (Session session = neo4j.driver().session()) { - Result result = session.run("MATCH (n:" + label + ") RETURN count(n)"); + try (var session = neo4j.driver().session()) { + var result = session.run("MATCH (n:" + label + ") RETURN count(n)"); return result.single().get(0).asLong(); } } diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java index 15c3362700..d670013026 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java @@ -45,7 +45,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.NoSuchElementException; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Stream; @@ -56,21 +55,15 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; -import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; -import org.neo4j.driver.types.Node; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -91,12 +84,12 @@ void setUp() { @Test void shouldBePossibleToCommitEmptyTx() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); Mono commit = Mono.from(session.beginTransaction()).flatMap(tx -> Mono.from(tx.commit())); StepVerifier.create(commit).verifyComplete(); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertNotNull(bookmarkAfter); assertNotEquals(bookmarkBefore, bookmarkAfter); @@ -104,18 +97,18 @@ void shouldBePossibleToCommitEmptyTx() { @Test void shouldBePossibleToRollbackEmptyTx() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); Mono rollback = Mono.from(session.beginTransaction()).flatMap(tx -> Mono.from(tx.rollback())); StepVerifier.create(rollback).verifyComplete(); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertEquals(bookmarkBefore, bookmarkAfter); } @Test void shouldBePossibleToRunSingleQueryAndCommit() { - Flux ids = Flux.usingWhen( + var ids = Flux.usingWhen( session.beginTransaction(), tx -> Flux.from(tx.run("CREATE (n:Node {id: 42}) RETURN n").records()) .map(record -> record.get(0).asNode().get("id").asInt()), @@ -129,7 +122,7 @@ void shouldBePossibleToRunSingleQueryAndCommit() { @Test void shouldBePossibleToRunSingleQueryAndRollback() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanRollback(tx); @@ -139,15 +132,15 @@ void shouldBePossibleToRunSingleQueryAndRollback() { @ParameterizedTest @MethodSource("commit") void shouldBePossibleToRunMultipleQueries(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult cursor1 = tx.run("CREATE (n:Node {id: 1})"); + var cursor1 = tx.run("CREATE (n:Node {id: 1})"); await(cursor1.records()); - RxResult cursor2 = tx.run("CREATE (n:Node {id: 2})"); + var cursor2 = tx.run("CREATE (n:Node {id: 2})"); await(cursor2.records()); - RxResult cursor3 = tx.run("CREATE (n:Node {id: 1})"); + var cursor3 = tx.run("CREATE (n:Node {id: 1})"); await(cursor3.records()); assertCanCommitOrRollback(commit, tx); @@ -158,11 +151,11 @@ void shouldBePossibleToRunMultipleQueries(boolean commit) { @ParameterizedTest @MethodSource("commit") void shouldBePossibleToRunMultipleQueriesWithoutWaiting(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult cursor1 = tx.run("CREATE (n:Node {id: 1})"); - RxResult cursor2 = tx.run("CREATE (n:Node {id: 2})"); - RxResult cursor3 = tx.run("CREATE (n:Node {id: 1})"); + var cursor1 = tx.run("CREATE (n:Node {id: 1})"); + var cursor2 = tx.run("CREATE (n:Node {id: 2})"); + var cursor3 = tx.run("CREATE (n:Node {id: 1})"); await(Flux.from(cursor1.records()).concatWith(cursor2.records()).concatWith(cursor3.records())); assertCanCommitOrRollback(commit, tx); @@ -173,13 +166,13 @@ void shouldBePossibleToRunMultipleQueriesWithoutWaiting(boolean commit) { @ParameterizedTest @MethodSource("commit") void shouldRunQueriesOnResultPublish(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult cursor1 = tx.run("CREATE (n:Person {name: 'Alice'}) RETURN n.name"); - RxResult cursor2 = tx.run("CREATE (n:Person {name: 'Bob'}) RETURN n.name"); + var cursor1 = tx.run("CREATE (n:Person {name: 'Alice'}) RETURN n.name"); + var cursor2 = tx.run("CREATE (n:Person {name: 'Bob'}) RETURN n.name"); // The execution order is the same as the record publishing order. - List records = await(Flux.from(cursor2.records()).concatWith(cursor1.records())); + var records = await(Flux.from(cursor2.records()).concatWith(cursor1.records())); assertThat(records.size(), equalTo(2)); assertThat(records.get(0).get("n.name").asString(), equalTo("Bob")); assertThat(records.get(1).get("n.name").asString(), equalTo("Alice")); @@ -190,8 +183,8 @@ void shouldRunQueriesOnResultPublish(boolean commit) { @ParameterizedTest @MethodSource("commit") void shouldDiscardOnCommitOrRollback(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult cursor = tx.run("UNWIND [1,2,3,4] AS a RETURN a"); + var tx = await(Mono.from(session.beginTransaction())); + var cursor = tx.run("UNWIND [1,2,3,4] AS a RETURN a"); // We only perform run without any pull await(Flux.from(cursor.keys())); @@ -209,11 +202,11 @@ void shouldDiscardOnCommitOrRollback(boolean commit) { @ParameterizedTest @MethodSource("commit") void shouldBePossibleToRunMultipleQueriesWithoutStreaming(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult cursor1 = tx.run("CREATE (n:Node {id: 1})"); - RxResult cursor2 = tx.run("CREATE (n:Node {id: 2})"); - RxResult cursor3 = tx.run("CREATE (n:Node {id: 1})"); + var cursor1 = tx.run("CREATE (n:Node {id: 1})"); + var cursor2 = tx.run("CREATE (n:Node {id: 2})"); + var cursor3 = tx.run("CREATE (n:Node {id: 1})"); await(Flux.from(cursor1.keys()).concatWith(cursor2.keys()).concatWith(cursor3.keys())); assertCanCommitOrRollback(commit, tx); @@ -223,21 +216,21 @@ void shouldBePossibleToRunMultipleQueriesWithoutStreaming(boolean commit) { @Test void shouldFailToCommitAfterSingleWrongQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertFailToRunWrongQuery(tx); assertThrows(ClientException.class, () -> await(tx.commit())); } @Test void shouldAllowRollbackAfterSingleWrongQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertFailToRunWrongQuery(tx); assertCanRollback(tx); } @Test void shouldFailToCommitAfterCoupleCorrectAndSingleWrongQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanRunReturnOne(tx); @@ -248,7 +241,7 @@ void shouldFailToCommitAfterCoupleCorrectAndSingleWrongQuery() { @Test void shouldAllowRollbackAfterCoupleCorrectAndSingleWrongQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanRunReturnOne(tx); assertFailToRunWrongQuery(tx); @@ -258,11 +251,11 @@ void shouldAllowRollbackAfterCoupleCorrectAndSingleWrongQuery() { @Test void shouldNotAllowNewQueriesAfterAnIncorrectQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertFailToRunWrongQuery(tx); - RxResult result = tx.run("CREATE ()"); - Exception e = assertThrows(Exception.class, () -> await(result.records())); + var result = tx.run("CREATE ()"); + var e = assertThrows(Exception.class, () -> await(result.records())); assertThat(e.getMessage(), startsWith("Cannot run more queries in this transaction")); assertCanRollback(tx); @@ -280,7 +273,7 @@ void shouldFailBoBeginTxWithInvalidBookmark() { @Test void shouldFailToCommitWhenCommitted() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanCommit(tx); @@ -296,7 +289,7 @@ void shouldFailToCommitWhenCommitted() { @Test void shouldFailToRollbackWhenRolledBack() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanRollback(tx); @@ -312,29 +305,29 @@ void shouldFailToRollbackWhenRolledBack() { @Test void shouldFailToCommitWhenRolledBack() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanRollback(tx); // should not be possible to commit after rollback - ClientException e = assertThrows(ClientException.class, () -> await(tx.commit())); + var e = assertThrows(ClientException.class, () -> await(tx.commit())); assertThat(e.getMessage(), containsString("transaction has been rolled back")); } @Test void shouldFailToRollbackWhenCommitted() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertCanRunCreate(tx); assertCanCommit(tx); // should not be possible to rollback after commit - ClientException e = assertThrows(ClientException.class, () -> await(tx.rollback())); + var e = assertThrows(ClientException.class, () -> await(tx.rollback())); assertThat(e.getMessage(), containsString("transaction has been committed")); } @Test void shouldAllowRollbackAfterFailedCommit() { - Flux records = Flux.usingWhen( + var records = Flux.usingWhen( session.beginTransaction(), tx -> Flux.from(tx.run("WRONG").records()), RxTransaction::commit, @@ -347,10 +340,10 @@ void shouldAllowRollbackAfterFailedCommit() { @Test void shouldExposeQueryKeysForColumnsWithAliases() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("RETURN 1 AS one, 2 AS two, 3 AS three, 4 AS five"); - List keys = await(Mono.from(result.keys())); + var keys = await(Mono.from(result.keys())); assertEquals(Arrays.asList("one", "two", "three", "five"), keys); assertCanRollback(tx); // you still need to rollback the tx as tx will not automatically closed @@ -358,10 +351,10 @@ void shouldExposeQueryKeysForColumnsWithAliases() { @Test void shouldExposeQueryKeysForColumnsWithoutAliases() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN 1, 2, 3, 5"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("RETURN 1, 2, 3, 5"); - List keys = await(Mono.from(result.keys())); + var keys = await(Mono.from(result.keys())); assertEquals(Arrays.asList("1", "2", "3", "5"), keys); assertCanRollback(tx); // you still need to rollback the tx as tx will not automatically closed @@ -369,14 +362,14 @@ void shouldExposeQueryKeysForColumnsWithoutAliases() { @Test void shouldExposeResultSummaryForSimpleQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - String query = "CREATE (p1:Person {name: $name1})-[:KNOWS]->(p2:Person {name: $name2}) RETURN p1, p2"; - Value params = parameters("name1", "Bob", "name2", "John"); + var tx = await(Mono.from(session.beginTransaction())); + var query = "CREATE (p1:Person {name: $name1})-[:KNOWS]->(p2:Person {name: $name2}) RETURN p1, p2"; + var params = parameters("name1", "Bob", "name2", "John"); - RxResult result = tx.run(query, params); + var result = tx.run(query, params); await(result.records()); // we run and stream - ResultSummary summary = await(Mono.from(result.consume())); + var summary = await(Mono.from(result.consume())); assertEquals(new Query(query, params), summary.query()); assertEquals(2, summary.counters().nodesCreated()); @@ -396,13 +389,13 @@ void shouldExposeResultSummaryForSimpleQuery() { @Test void shouldExposeResultSummaryForExplainQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - String query = "EXPLAIN MATCH (n) RETURN n"; + var tx = await(Mono.from(session.beginTransaction())); + var query = "EXPLAIN MATCH (n) RETURN n"; - RxResult result = tx.run(query); + var result = tx.run(query); await(result.records()); // we run and stream - ResultSummary summary = await(Mono.from(result.consume())); + var summary = await(Mono.from(result.consume())); assertEquals(new Query(query), summary.query()); assertEquals(0, summary.counters().nodesCreated()); @@ -423,16 +416,16 @@ void shouldExposeResultSummaryForExplainQuery() { @Test void shouldExposeResultSummaryForProfileQuery() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - String query = "PROFILE MERGE (n {name: $name}) " + "ON CREATE SET n.created = timestamp() " + var tx = await(Mono.from(session.beginTransaction())); + var query = "PROFILE MERGE (n {name: $name}) " + "ON CREATE SET n.created = timestamp() " + "ON MATCH SET n.counter = coalesce(n.counter, 0) + 1"; - Value params = parameters("name", "Bob"); + var params = parameters("name", "Bob"); - RxResult result = tx.run(query, params); + var result = tx.run(query, params); await(result.records()); // we run and stream - ResultSummary summary = await(Mono.from(result.consume())); + var summary = await(Mono.from(result.consume())); assertEquals(new Query(query, params), summary.query()); assertEquals(1, summary.counters().nodesCreated()); @@ -445,7 +438,7 @@ void shouldExposeResultSummaryForProfileQuery() { assertNotNull(summary.profile()); // asserting on profile is a bit fragile and can break when server side changes or with different // server versions; that is why do fuzzy assertions in this test based on string content - String profileAsString = summary.profile().toString().toLowerCase(); + var profileAsString = summary.profile().toString().toLowerCase(); assertThat(profileAsString, containsString("hits")); assertEquals(0, summary.notifications().size()); assertThat(summary, containsResultAvailableAfterAndResultConsumedAfter()); @@ -455,10 +448,10 @@ void shouldExposeResultSummaryForProfileQuery() { @Test void shouldCancelRecordStream() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("UNWIND ['a', 'b', 'c'] AS x RETURN x"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("UNWIND ['a', 'b', 'c'] AS x RETURN x"); - Flux abc = Flux.from(result.records()).limitRate(1).take(1).map(record -> record.get(0) + var abc = Flux.from(result.records()).limitRate(1).take(1).map(record -> record.get(0) .asString()); StepVerifier.create(abc).expectNext("a").verifyComplete(); @@ -477,9 +470,9 @@ void shouldForEachWithNonEmptyCursor() { @Test void shouldFailForEachWhenActionFails() { - RuntimeException e = new RuntimeException(); + var e = new RuntimeException(); - Flux records = Flux.usingWhen( + var records = Flux.usingWhen( session.beginTransaction(), tx -> Flux.from(tx.run("RETURN 'Hi!'").records()).doOnNext(record -> { throw e; @@ -505,19 +498,18 @@ void shouldConvertToListWithNonEmptyCursor() { @Test void shouldConvertToTransformedListWithEmptyCursor() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("CREATE ()"); - List> maps = - await(Flux.from(result.records()).map(record -> record.get(0).asMap())); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("CREATE ()"); + var maps = await(Flux.from(result.records()).map(record -> record.get(0).asMap())); assertEquals(0, maps.size()); assertCanRollback(tx); } @Test void shouldConvertToTransformedListWithNonEmptyCursor() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("UNWIND ['a', 'b', 'c'] AS x RETURN x"); - List strings = + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("UNWIND ['a', 'b', 'c'] AS x RETURN x"); + var strings = await(Flux.from(result.records()).map(record -> record.get(0).asString() + "!")); assertEquals(Arrays.asList("a!", "b!", "c!"), strings); @@ -526,9 +518,9 @@ void shouldConvertToTransformedListWithNonEmptyCursor() { @Test void shouldFailWhenListTransformationFunctionFails() { - RuntimeException e = new RuntimeException(); + var e = new RuntimeException(); - Flux records = Flux.usingWhen( + var records = Flux.usingWhen( session.beginTransaction(), tx -> Flux.from(tx.run("RETURN 'Hi!'").records()).map(record -> { throw e; @@ -546,8 +538,8 @@ void shouldFailWhenListTransformationFunctionFails() { @Test void shouldFailToCommitWhenServerIsRestarted() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN 1"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("RETURN 1"); assertThrows(ServiceUnavailableException.class, () -> { await(Flux.from(result.records()).doOnSubscribe(subscription -> { @@ -561,10 +553,10 @@ void shouldFailToCommitWhenServerIsRestarted() { @Test void shouldFailSingleWithEmptyCursor() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("MATCH (n:NoSuchLabel) RETURN n"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("MATCH (n:NoSuchLabel) RETURN n"); - NoSuchElementException e = assertThrows( + var e = assertThrows( NoSuchElementException.class, () -> await(Flux.from(result.records()).single())); assertThat(e.getMessage(), containsString("Source was empty")); @@ -573,10 +565,10 @@ void shouldFailSingleWithEmptyCursor() { @Test void shouldFailSingleWithMultiRecordCursor() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("UNWIND ['a', 'b'] AS x RETURN x"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("UNWIND ['a', 'b'] AS x RETURN x"); - IndexOutOfBoundsException e = assertThrows( + var e = assertThrows( IndexOutOfBoundsException.class, () -> await(Flux.from(result.records()).single())); assertThat(e.getMessage(), startsWith("Source emitted more than one item")); @@ -585,20 +577,20 @@ void shouldFailSingleWithMultiRecordCursor() { @Test void shouldReturnSingleWithSingleRecordCursor() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN 'Hello!'"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("RETURN 'Hello!'"); - Record record = await(Flux.from(result.records()).single()); + var record = await(Flux.from(result.records()).single()); assertEquals("Hello!", record.get(0).asString()); assertCanRollback(tx); } @Test void shouldPropagateFailureFromFirstRecordInSingleAsync() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("UNWIND [0] AS x RETURN 10 / x"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("UNWIND [0] AS x RETURN 10 / x"); - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> await(Flux.from(result.records()).single())); assertThat(e.getMessage(), containsString("/ by zero")); assertCanRollback(tx); @@ -606,10 +598,10 @@ void shouldPropagateFailureFromFirstRecordInSingleAsync() { @Test void shouldPropagateFailureFromSecondRecordInSingleAsync() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("UNWIND [1, 0] AS x RETURN 10 / x"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("UNWIND [1, 0] AS x RETURN 10 / x"); - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> await(Flux.from(result.records()).single())); assertThat(e.getMessage(), containsString("/ by zero")); assertCanRollback(tx); @@ -628,13 +620,13 @@ void shouldConsumeNonEmptyCursor() { @ParameterizedTest @MethodSource("commit") void shouldFailToRunQueryAfterCommit(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("CREATE (:MyLabel)"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("CREATE (:MyLabel)"); await(result.records()); assertCanCommitOrRollback(commit, tx); - Record record = + var record = await(Flux.from(session.run("MATCH (n:MyLabel) RETURN count(n)").records()) .single()); if (commit) { @@ -643,7 +635,7 @@ void shouldFailToRunQueryAfterCommit(boolean commit) { assertEquals(0, record.get(0).asInt()); } - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> await(tx.run("CREATE (:MyOtherLabel)").records())); assertThat(e.getMessage(), containsString("Cannot run more queries in this transaction, it has been ")); @@ -651,10 +643,10 @@ void shouldFailToRunQueryAfterCommit(boolean commit) { @Test void shouldFailToRunQueryWhenTerminated() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); assertFailToRunWrongQuery(tx); - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> await(tx.run("CREATE (:MyOtherLabel)").records())); assertThat(e.getMessage(), startsWith("Cannot run more queries in this transaction")); @@ -664,7 +656,7 @@ void shouldFailToRunQueryWhenTerminated() { @Test void shouldUpdateSessionBookmarkAfterCommit() { - Bookmark bookmarkBefore = session.lastBookmark(); + var bookmarkBefore = session.lastBookmark(); await(Flux.usingWhen( session.beginTransaction(), @@ -673,7 +665,7 @@ void shouldUpdateSessionBookmarkAfterCommit() { (tx, error) -> tx.rollback(), null)); - Bookmark bookmarkAfter = session.lastBookmark(); + var bookmarkAfter = session.lastBookmark(); assertNotNull(bookmarkAfter); assertNotEquals(bookmarkBefore, bookmarkAfter); @@ -681,32 +673,32 @@ void shouldUpdateSessionBookmarkAfterCommit() { @Test void shouldFailToCommitWhenQueriesFailAndErrorNotConsumed() throws InterruptedException { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult result1 = tx.run("CREATE (:TestNode)"); - RxResult result2 = tx.run("CREATE (:TestNode)"); - RxResult result3 = tx.run("RETURN 10 / 0"); - RxResult result4 = tx.run("CREATE (:TestNode)"); + var result1 = tx.run("CREATE (:TestNode)"); + var result2 = tx.run("CREATE (:TestNode)"); + var result3 = tx.run("RETURN 10 / 0"); + var result4 = tx.run("CREATE (:TestNode)"); - Flux records = Flux.from(result1.records()) + var records = Flux.from(result1.records()) .concatWith(result2.records()) .concatWith(result3.records()) .concatWith(result4.records()); - ClientException e = assertThrows(ClientException.class, () -> await(records)); + var e = assertThrows(ClientException.class, () -> await(records)); assertEquals("/ by zero", e.getMessage()); assertCanRollback(tx); } @Test void shouldNotRunUntilPublisherIsConnected() throws Throwable { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult result1 = tx.run("RETURN 1"); - RxResult result2 = tx.run("RETURN 2"); - RxResult result3 = tx.run("RETURN 3"); - RxResult result4 = tx.run("RETURN 4"); + var result1 = tx.run("RETURN 1"); + var result2 = tx.run("RETURN 2"); + var result3 = tx.run("RETURN 3"); + var result4 = tx.run("RETURN 4"); - Flux records = Flux.from(result4.records()) + var records = Flux.from(result4.records()) .concatWith(result3.records()) .concatWith(result2.records()) .concatWith(result1.records()); @@ -722,7 +714,7 @@ void shouldNotRunUntilPublisherIsConnected() throws Throwable { @ParameterizedTest @MethodSource("commit") void shouldNotPropagateRunFailureIfNotExecuted(boolean commit) { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); tx.run("RETURN ILLEGAL"); // no actually executed @@ -731,33 +723,33 @@ void shouldNotPropagateRunFailureIfNotExecuted(boolean commit) { @Test void shouldPropagateRunFailureOnRecord() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN 42 / 0"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("RETURN 42 / 0"); await(result.keys()); // always returns keys - ClientException e = assertThrows(ClientException.class, () -> await(result.records())); + var e = assertThrows(ClientException.class, () -> await(result.records())); assertThat(e.getMessage(), containsString("/ by zero")); assertCanRollback(tx); } @Test void shouldFailToCommitWhenPullAllFailureIsConsumed() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("FOREACH (value IN [1,2, 'aaa'] | CREATE (:Person {name: 10 / value}))"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("FOREACH (value IN [1,2, 'aaa'] | CREATE (:Person {name: 10 / value}))"); - ClientException e1 = assertThrows(ClientException.class, () -> await(result.records())); + var e1 = assertThrows(ClientException.class, () -> await(result.records())); assertThat(e1.code(), containsString("TypeError")); - ClientException e2 = assertThrows(ClientException.class, () -> await(tx.commit())); + var e2 = assertThrows(ClientException.class, () -> await(tx.commit())); assertThat(e2.getMessage(), startsWith("Transaction can't be committed")); } @Test void shouldBeAbleToRollbackWhenPullAllFailureIsConsumed() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("FOREACH (value IN [1,2, 'aaa'] | CREATE (:Person {name: 10 / value}))"); + var tx = await(Mono.from(session.beginTransaction())); + var result = tx.run("FOREACH (value IN [1,2, 'aaa'] | CREATE (:Person {name: 10 / value}))"); - ClientException e1 = assertThrows(ClientException.class, () -> await(result.records())); + var e1 = assertThrows(ClientException.class, () -> await(result.records())); assertThat(e1.code(), containsString("TypeError")); assertCanRollback(tx); @@ -765,10 +757,10 @@ void shouldBeAbleToRollbackWhenPullAllFailureIsConsumed() { @Test void shouldNotPropagateRunFailureFromSummary() { - RxTransaction tx = await(Mono.from(session.beginTransaction())); + var tx = await(Mono.from(session.beginTransaction())); - RxResult result = tx.run("RETURN Wrong"); - ClientException e = assertThrows(ClientException.class, () -> await(result.records())); + var result = tx.run("RETURN Wrong"); + var e = assertThrows(ClientException.class, () -> await(result.records())); assertThat(e.code(), containsString("SyntaxError")); await(result.consume()); @@ -776,17 +768,17 @@ void shouldNotPropagateRunFailureFromSummary() { } private int countNodes(Object id) { - RxResult result = session.run("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); + var result = session.run("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); return await( Flux.from(result.records()).single().map(record -> record.get(0).asInt())); } private void testForEach(String query, int expectedSeenRecords) { - Flux summary = Flux.usingWhen( + var summary = Flux.usingWhen( session.beginTransaction(), tx -> { - RxResult result = tx.run(query); - AtomicInteger recordsSeen = new AtomicInteger(); + var result = tx.run(query); + var recordsSeen = new AtomicInteger(); return Flux.from(result.records()) .doOnNext(record -> recordsSeen.incrementAndGet()) .then(Mono.from(result.consume())) @@ -807,7 +799,7 @@ private void testForEach(String query, int expectedSeenRecords) { private void testList(String query, List expectedList) { List actualList = new ArrayList<>(); - Flux> records = Flux.usingWhen( + var records = Flux.usingWhen( session.beginTransaction(), tx -> Flux.from(tx.run(query).records()).collectList(), RxTransaction::commit, @@ -816,7 +808,7 @@ private void testList(String query, List expectedList) { StepVerifier.create(records.single()) .consumeNextWith(allRecords -> { - for (Record record : allRecords) { + for (var record : allRecords) { actualList.add(record.get(0).asObject()); } }) @@ -826,7 +818,7 @@ private void testList(String query, List expectedList) { } private void testConsume(String query) { - Flux summary = Flux.usingWhen( + var summary = Flux.usingWhen( session.beginTransaction(), tx -> tx.run(query).consume(), RxTransaction::commit, @@ -869,26 +861,26 @@ private static Stream commit() { } private static void assertCanRunCreate(RxTransaction tx) { - RxResult result = tx.run("CREATE (n:Node {id: 4242}) RETURN n"); + var result = tx.run("CREATE (n:Node {id: 4242}) RETURN n"); - Record record = await(Flux.from(result.records()).single()); + var record = await(Flux.from(result.records()).single()); - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertEquals("Node", single(node.labels())); assertEquals(4242, node.get("id").asInt()); } private static void assertFailToRunWrongQuery(RxTransaction tx) { - RxResult result = tx.run("RETURN"); - Exception e = assertThrows(Exception.class, () -> await(result.records())); + var result = tx.run("RETURN"); + var e = assertThrows(Exception.class, () -> await(result.records())); assertThat(e, is(syntaxError())); } private void assertCanRunReturnOne(RxTransaction tx) { - RxResult result = tx.run("RETURN 42"); - List records = await(result.records()); + var result = tx.run("RETURN 42"); + var records = await(result.records()); assertThat(records.size(), equalTo(1)); - Record record = records.get(0); + var record = records.get(0); assertEquals(42, record.get(0).asInt()); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/CustomSecurityPlanTest.java b/driver/src/test/java/org/neo4j/driver/internal/CustomSecurityPlanTest.java index 7c5be11664..1567338e60 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/CustomSecurityPlanTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/CustomSecurityPlanTest.java @@ -39,9 +39,9 @@ class CustomSecurityPlanTest { @Test void testCustomSecurityPlanUsed() { - SecurityPlanCapturingDriverFactory driverFactory = new SecurityPlanCapturingDriverFactory(); + var driverFactory = new SecurityPlanCapturingDriverFactory(); - SecurityPlan securityPlan = mock(SecurityPlan.class); + var securityPlan = mock(SecurityPlan.class); driverFactory.newInstance( URI.create("neo4j://somewhere:1234"), diff --git a/driver/src/test/java/org/neo4j/driver/internal/DelegatingTransactionContextTest.java b/driver/src/test/java/org/neo4j/driver/internal/DelegatingTransactionContextTest.java index d02276f072..fd23dc4067 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DelegatingTransactionContextTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DelegatingTransactionContextTest.java @@ -46,13 +46,13 @@ void beforeEach() { @Test void shouldDelegateRunWithValueParams() { // GIVEN - String query = "something"; - Value params = mock(Value.class); - Result expected = mock(Result.class); + var query = "something"; + var params = mock(Value.class); + var expected = mock(Result.class); given(transaction.run(query, params)).willReturn(expected); // WHEN - Result actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -62,13 +62,13 @@ void shouldDelegateRunWithValueParams() { @Test void shouldDelegateRunWithMapParams() { // GIVEN - String query = "something"; + var query = "something"; Map params = Collections.emptyMap(); - Result expected = mock(Result.class); + var expected = mock(Result.class); given(transaction.run(query, params)).willReturn(expected); // WHEN - Result actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -78,13 +78,13 @@ void shouldDelegateRunWithMapParams() { @Test void shouldDelegateRunWithRecordParams() { // GIVEN - String query = "something"; - Record params = mock(Record.class); - Result expected = mock(Result.class); + var query = "something"; + var params = mock(Record.class); + var expected = mock(Result.class); given(transaction.run(query, params)).willReturn(expected); // WHEN - Result actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -94,12 +94,12 @@ void shouldDelegateRunWithRecordParams() { @Test void shouldDelegateRun() { // GIVEN - String query = "something"; - Result expected = mock(Result.class); + var query = "something"; + var expected = mock(Result.class); given(transaction.run(query)).willReturn(expected); // WHEN - Result actual = context.run(query); + var actual = context.run(query); // THEN assertEquals(expected, actual); @@ -109,12 +109,12 @@ void shouldDelegateRun() { @Test void shouldDelegateRunWithQueryType() { // GIVEN - Query query = mock(Query.class); - Result expected = mock(Result.class); + var query = mock(Query.class); + var expected = mock(Result.class); given(transaction.run(query)).willReturn(expected); // WHEN - Result actual = context.run(query); + var actual = context.run(query); // THEN assertEquals(expected, actual); diff --git a/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java index aeff200c0d..e5c2b00cdd 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java @@ -40,7 +40,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.internal.async.ConnectionContext; import org.neo4j.driver.internal.async.connection.DirectConnection; @@ -50,18 +49,18 @@ class DirectConnectionProviderTest { @Test void acquiresConnectionsFromThePool() { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - Connection connection1 = mock(Connection.class); - Connection connection2 = mock(Connection.class); + var address = BoltServerAddress.LOCAL_DEFAULT; + var connection1 = mock(Connection.class); + var connection2 = mock(Connection.class); - ConnectionPool pool = poolMock(address, connection1, connection2); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); + var pool = poolMock(address, connection1, connection2); + var provider = new DirectConnectionProvider(address, pool); - Connection acquired1 = await(provider.acquireConnection(contextWithMode(READ))); + var acquired1 = await(provider.acquireConnection(contextWithMode(READ))); assertThat(acquired1, instanceOf(DirectConnection.class)); assertSame(connection1, ((DirectConnection) acquired1).connection()); - Connection acquired2 = await(provider.acquireConnection(contextWithMode(WRITE))); + var acquired2 = await(provider.acquireConnection(contextWithMode(WRITE))); assertThat(acquired2, instanceOf(DirectConnection.class)); assertSame(connection2, ((DirectConnection) acquired2).connection()); } @@ -69,20 +68,20 @@ void acquiresConnectionsFromThePool() { @ParameterizedTest @EnumSource(AccessMode.class) void returnsCorrectAccessMode(AccessMode mode) { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - ConnectionPool pool = poolMock(address, mock(Connection.class)); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); + var address = BoltServerAddress.LOCAL_DEFAULT; + var pool = poolMock(address, mock(Connection.class)); + var provider = new DirectConnectionProvider(address, pool); - Connection acquired = await(provider.acquireConnection(contextWithMode(mode))); + var acquired = await(provider.acquireConnection(contextWithMode(mode))); assertEquals(mode, acquired.mode()); } @Test void closesPool() { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - ConnectionPool pool = poolMock(address, mock(Connection.class)); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); + var address = BoltServerAddress.LOCAL_DEFAULT; + var pool = poolMock(address, mock(Connection.class)); + var provider = new DirectConnectionProvider(address, pool); provider.close(); @@ -91,22 +90,22 @@ void closesPool() { @Test void returnsCorrectAddress() { - BoltServerAddress address = new BoltServerAddress("server-1", 25000); + var address = new BoltServerAddress("server-1", 25000); - DirectConnectionProvider provider = new DirectConnectionProvider(address, mock(ConnectionPool.class)); + var provider = new DirectConnectionProvider(address, mock(ConnectionPool.class)); assertEquals(address, provider.getAddress()); } @Test void shouldIgnoreDatabaseNameAndAccessModeWhenObtainConnectionFromPool() throws Throwable { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - Connection connection = mock(Connection.class); + var address = BoltServerAddress.LOCAL_DEFAULT; + var connection = mock(Connection.class); - ConnectionPool pool = poolMock(address, connection); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); + var pool = poolMock(address, connection); + var provider = new DirectConnectionProvider(address, pool); - Connection acquired1 = await(provider.acquireConnection(contextWithMode(READ))); + var acquired1 = await(provider.acquireConnection(contextWithMode(READ))); assertThat(acquired1, instanceOf(DirectConnection.class)); assertSame(connection, ((DirectConnection) acquired1).connection()); @@ -116,11 +115,11 @@ void shouldIgnoreDatabaseNameAndAccessModeWhenObtainConnectionFromPool() throws @ParameterizedTest @ValueSource(strings = {"", "foo", "data"}) void shouldObtainDatabaseNameOnConnection(String databaseName) throws Throwable { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - ConnectionPool pool = poolMock(address, mock(Connection.class)); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); + var address = BoltServerAddress.LOCAL_DEFAULT; + var pool = poolMock(address, mock(Connection.class)); + var provider = new DirectConnectionProvider(address, pool); - Connection acquired = await(provider.acquireConnection(contextWithDatabase(databaseName))); + var acquired = await(provider.acquireConnection(contextWithDatabase(databaseName))); assertEquals(databaseName, acquired.databaseName().description()); } @@ -128,10 +127,10 @@ void shouldObtainDatabaseNameOnConnection(String databaseName) throws Throwable @ParameterizedTest @ValueSource(booleans = {true, false}) void ensuresCompletedDatabaseNameBeforeAccessingValue(boolean completed) { - BoltServerAddress address = BoltServerAddress.LOCAL_DEFAULT; - ConnectionPool pool = poolMock(address, mock(Connection.class)); - DirectConnectionProvider provider = new DirectConnectionProvider(address, pool); - ConnectionContext context = mock(ConnectionContext.class); + var address = BoltServerAddress.LOCAL_DEFAULT; + var pool = poolMock(address, mock(Connection.class)); + var provider = new DirectConnectionProvider(address, pool); + var context = mock(ConnectionContext.class); CompletableFuture databaseNameFuture = spy( completed ? CompletableFuture.completedFuture(DatabaseNameUtil.systemDatabase()) @@ -141,7 +140,7 @@ void ensuresCompletedDatabaseNameBeforeAccessingValue(boolean completed) { await(provider.acquireConnection(context)); - InOrder inOrder = inOrder(context, databaseNameFuture); + var inOrder = inOrder(context, databaseNameFuture); inOrder.verify(context).databaseNameFuture(); inOrder.verify(databaseNameFuture).complete(DatabaseNameUtil.defaultDatabase()); inOrder.verify(databaseNameFuture).isDone(); @@ -151,7 +150,7 @@ void ensuresCompletedDatabaseNameBeforeAccessingValue(boolean completed) { @SuppressWarnings("unchecked") private static ConnectionPool poolMock( BoltServerAddress address, Connection connection, Connection... otherConnections) { - ConnectionPool pool = mock(ConnectionPool.class); + var pool = mock(ConnectionPool.class); CompletableFuture[] otherConnectionFutures = Stream.of(otherConnections) .map(CompletableFuture::completedFuture) .toArray(CompletableFuture[]::new); diff --git a/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java b/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java index ab092c071b..86338d74f1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java @@ -86,7 +86,7 @@ private static Stream testUris() { @ParameterizedTest @MethodSource("testUris") void connectionPoolClosedWhenDriverCreationFails(String uri) { - ConnectionPool connectionPool = connectionPoolMock(); + var connectionPool = connectionPoolMock(); DriverFactory factory = new ThrowingDriverFactory(connectionPool); assertThrows(UnsupportedOperationException.class, () -> createDriver(uri, factory)); @@ -96,14 +96,13 @@ void connectionPoolClosedWhenDriverCreationFails(String uri) { @ParameterizedTest @MethodSource("testUris") void connectionPoolCloseExceptionIsSuppressedWhenDriverCreationFails(String uri) { - ConnectionPool connectionPool = connectionPoolMock(); - RuntimeException poolCloseError = new RuntimeException("Pool close error"); + var connectionPool = connectionPoolMock(); + var poolCloseError = new RuntimeException("Pool close error"); when(connectionPool.close()).thenReturn(failedFuture(poolCloseError)); DriverFactory factory = new ThrowingDriverFactory(connectionPool); - UnsupportedOperationException e = - assertThrows(UnsupportedOperationException.class, () -> createDriver(uri, factory)); + var e = assertThrows(UnsupportedOperationException.class, () -> createDriver(uri, factory)); assertArrayEquals(new Throwable[] {poolCloseError}, e.getSuppressed()); verify(connectionPool).close(); } @@ -111,24 +110,24 @@ void connectionPoolCloseExceptionIsSuppressedWhenDriverCreationFails(String uri) @ParameterizedTest @MethodSource("testUris") void usesStandardSessionFactoryWhenNothingConfigured(String uri) { - Config config = defaultConfig(); - SessionFactoryCapturingDriverFactory factory = new SessionFactoryCapturingDriverFactory(); + var config = defaultConfig(); + var factory = new SessionFactoryCapturingDriverFactory(); createDriver(uri, factory, config); - SessionFactory capturedFactory = factory.capturedSessionFactory; + var capturedFactory = factory.capturedSessionFactory; assertThat(capturedFactory.newInstance(SessionConfig.defaultConfig(), null), instanceOf(NetworkSession.class)); } @ParameterizedTest @MethodSource("testUris") void usesLeakLoggingSessionFactoryWhenConfigured(String uri) { - Config config = Config.builder().withLeakedSessionsLogging().build(); - SessionFactoryCapturingDriverFactory factory = new SessionFactoryCapturingDriverFactory(); + var config = Config.builder().withLeakedSessionsLogging().build(); + var factory = new SessionFactoryCapturingDriverFactory(); createDriver(uri, factory, config); - SessionFactory capturedFactory = factory.capturedSessionFactory; + var capturedFactory = factory.capturedSessionFactory; assertThat( capturedFactory.newInstance(SessionConfig.defaultConfig(), null), instanceOf(LeakLoggingNetworkSession.class)); @@ -137,12 +136,12 @@ void usesLeakLoggingSessionFactoryWhenConfigured(String uri) { @ParameterizedTest @MethodSource("testUris") void shouldNotVerifyConnectivity(String uri) { - SessionFactory sessionFactory = mock(SessionFactory.class); + var sessionFactory = mock(SessionFactory.class); when(sessionFactory.verifyConnectivity()).thenReturn(completedWithNull()); when(sessionFactory.close()).thenReturn(completedWithNull()); - DriverFactoryWithSessions driverFactory = new DriverFactoryWithSessions(sessionFactory); + var driverFactory = new DriverFactoryWithSessions(sessionFactory); - try (Driver driver = createDriver(uri, driverFactory)) { + try (var driver = createDriver(uri, driverFactory)) { assertNotNull(driver); verify(sessionFactory, never()).verifyConnectivity(); } @@ -151,9 +150,9 @@ void shouldNotVerifyConnectivity(String uri) { @Test void shouldNotCreateDriverMetrics() { // Given - Config config = Config.builder().withoutDriverMetrics().build(); + var config = Config.builder().withoutDriverMetrics().build(); // When - MetricsProvider provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); + var provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); // Then assertThat(provider, is(equalTo(DevNullMetricsProvider.INSTANCE))); } @@ -161,10 +160,10 @@ void shouldNotCreateDriverMetrics() { @Test void shouldCreateDriverMetricsIfMonitoringEnabled() { // Given - Config config = + var config = Config.builder().withDriverMetrics().withLogging(Logging.none()).build(); // When - MetricsProvider provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); + var provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); // Then assertThat(provider instanceof InternalMetricsProvider, is(true)); } @@ -172,13 +171,13 @@ void shouldCreateDriverMetricsIfMonitoringEnabled() { @Test void shouldCreateMicrometerDriverMetricsIfMonitoringEnabled() { // Given - Config config = Config.builder() + var config = Config.builder() .withDriverMetrics() .withMetricsAdapter(MetricsAdapter.MICROMETER) .withLogging(Logging.none()) .build(); // When - MetricsProvider provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); + var provider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); // Then assertThat(provider instanceof MicrometerMetricsProvider, is(true)); } @@ -186,8 +185,8 @@ void shouldCreateMicrometerDriverMetricsIfMonitoringEnabled() { @ParameterizedTest @MethodSource("testUris") void shouldCreateAppropriateDriverType(String uri) { - DriverFactory driverFactory = new DriverFactory(); - Driver driver = createDriver(uri, driverFactory); + var driverFactory = new DriverFactory(); + var driver = createDriver(uri, driverFactory); if (uri.startsWith("bolt://")) { assertThat(driver, is(directDriver())); @@ -250,13 +249,13 @@ private Driver createDriver(String uri, DriverFactory driverFactory) { } private Driver createDriver(String uri, DriverFactory driverFactory, Config config) { - AuthToken auth = AuthTokens.none(); + var auth = AuthTokens.none(); return driverFactory.newInstance(URI.create(uri), new StaticAuthTokenManager(auth), config); } private static ConnectionPool connectionPoolMock() { - ConnectionPool pool = mock(ConnectionPool.class); - Connection connection = mock(Connection.class); + var pool = mock(ConnectionPool.class); + var connection = mock(Connection.class); when(pool.acquire(any(BoltServerAddress.class), any(AuthToken.class))).thenReturn(completedFuture(connection)); when(pool.close()).thenReturn(completedWithNull()); return pool; @@ -314,7 +313,7 @@ protected InternalDriver createDriver( SessionFactory sessionFactory, MetricsProvider metricsProvider, Config config) { - InternalDriver driver = mock(InternalDriver.class); + var driver = mock(InternalDriver.class); when(driver.verifyConnectivityAsync()).thenReturn(completedWithNull()); return driver; } @@ -333,7 +332,7 @@ protected LoadBalancer createLoadBalancer( @Override protected SessionFactory createSessionFactory( ConnectionProvider connectionProvider, RetryLogic retryLogic, Config config) { - SessionFactory sessionFactory = super.createSessionFactory(connectionProvider, retryLogic, config); + var sessionFactory = super.createSessionFactory(connectionProvider, retryLogic, config); capturedSessionFactory = sessionFactory; return sessionFactory; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/ExtractTest.java b/driver/src/test/java/org/neo4j/driver/internal/ExtractTest.java index ecb00732ad..e1ef37fa2d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/ExtractTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/ExtractTest.java @@ -34,23 +34,19 @@ import java.time.LocalDate; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.util.Extract; import org.neo4j.driver.internal.util.Iterables; -import org.neo4j.driver.util.Pair; class ExtractTest { @Test void extractEmptyArrayShouldNotBeModifiable() { - List list = Extract.list(new Value[] {}); + var list = Extract.list(new Value[] {}); assertThat(list, empty()); assertThrows(UnsupportedOperationException.class, () -> list.add(null)); @@ -58,7 +54,7 @@ void extractEmptyArrayShouldNotBeModifiable() { @Test void extractSingletonShouldNotBeModifiable() { - List list = Extract.list(new Value[] {value(42)}); + var list = Extract.list(new Value[] {value(42)}); assertThat(list, equalTo(singletonList(value(42)))); assertThrows(UnsupportedOperationException.class, () -> list.add(null)); @@ -66,7 +62,7 @@ void extractSingletonShouldNotBeModifiable() { @Test void extractMultipleShouldNotBeModifiable() { - List list = Extract.list(new Value[] {value(42), value(43)}); + var list = Extract.list(new Value[] {value(42), value(43)}); assertThat(list, equalTo(asList(value(42), value(43)))); assertThrows(UnsupportedOperationException.class, () -> list.add(null)); @@ -74,7 +70,7 @@ void extractMultipleShouldNotBeModifiable() { @Test void testMapOverList() { - List mapped = Extract.list(new Value[] {value(42), value(43)}, Value::asInt); + var mapped = Extract.list(new Value[] {value(42), value(43)}, Value::asInt); assertThat(mapped, equalTo(Arrays.asList(42, 43))); } @@ -87,10 +83,10 @@ void testMapValues() { map.put("k2", value(42)); // WHEN - Map mappedMap = Extract.map(map, Value::asInt); + var mappedMap = Extract.map(map, Value::asInt); // THEN - Collection values = mappedMap.values(); + var values = mappedMap.values(); assertThat(values, containsInAnyOrder(43, 42)); } @@ -102,10 +98,10 @@ void testShouldPreserveMapOrderMapValues() { map.put("k1", value(42)); // WHEN - Map mappedMap = Extract.map(map, Value::asInt); + var mappedMap = Extract.map(map, Value::asInt); // THEN - Collection values = mappedMap.values(); + var values = mappedMap.values(); assertThat(values, contains(43, 42)); } @@ -115,13 +111,13 @@ void testProperties() { Map props = new HashMap<>(); props.put("k1", value(43)); props.put("k2", value(42)); - InternalNode node = new InternalNode(42L, Collections.singletonList("L"), props); + var node = new InternalNode(42L, Collections.singletonList("L"), props); // WHEN - Iterable> properties = Extract.properties(node, Value::asInt); + var properties = Extract.properties(node, Value::asInt); // THEN - Iterator> iterator = properties.iterator(); + var iterator = properties.iterator(); assertThat(iterator.next(), equalTo(InternalPair.of("k1", 43))); assertThat(iterator.next(), equalTo(InternalPair.of("k2", 42))); assertFalse(iterator.hasNext()); @@ -130,9 +126,9 @@ void testProperties() { @Test void testFields() { // GIVEN - InternalRecord record = new InternalRecord(singletonList("k1"), new Value[] {value(42)}); + var record = new InternalRecord(singletonList("k1"), new Value[] {value(42)}); // WHEN - List> fields = Extract.fields(record, Value::asInt); + var fields = Extract.fields(record, Value::asInt); // THEN assertThat(fields, equalTo(Collections.singletonList(InternalPair.of("k1", 42)))); @@ -152,7 +148,7 @@ void shouldExtractMapOfValues() { map.put("key3", LocalDate.now()); map.put("key4", new byte[] {1, 2, 3}); - Map mapOfValues = Extract.mapOfValues(map); + var mapOfValues = Extract.mapOfValues(map); assertEquals(4, map.size()); assertEquals(value("value1"), mapOfValues.get("key1")); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java index 78fb79150b..b9e3357a33 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java @@ -42,61 +42,61 @@ class InternalBookmarkTest { @Test @SuppressWarnings("deprecation") void isEmptyForEmptyBookmark() { - Bookmark bookmark = InternalBookmark.empty(); + var bookmark = InternalBookmark.empty(); assertTrue(bookmark.isEmpty()); assertEquals(emptySet(), bookmark.values()); } @Test void shouldSetToEmptyForNullBookmark() { - Bookmark bookmark = InternalBookmark.from(null); + var bookmark = InternalBookmark.from(null); assertEquals(InternalBookmark.empty(), bookmark); } @Test void shouldSetToEmptyForEmptyBookmarkIterator() { - Bookmark bookmark = InternalBookmark.from(emptyList()); + var bookmark = InternalBookmark.from(emptyList()); assertEquals(InternalBookmark.empty(), bookmark); } @Test void shouldSetToEmptyForNullBookmarkList() { - Bookmark bookmark = InternalBookmark.from(singletonList(null)); + var bookmark = InternalBookmark.from(singletonList(null)); assertEquals(InternalBookmark.empty(), bookmark); } @Test void shouldIgnoreNullAndEmptyInBookmarkList() { - Bookmark bookmark = InternalBookmark.from(Arrays.asList(InternalBookmark.empty(), null, null)); + var bookmark = InternalBookmark.from(Arrays.asList(InternalBookmark.empty(), null, null)); assertEquals(InternalBookmark.empty(), bookmark); } @Test void shouldReserveBookmarkValuesCorrectly() { - Bookmark one = parse("one"); - Bookmark two = parse("two"); - Bookmark empty = InternalBookmark.empty(); - Bookmark bookmark = InternalBookmark.from(Arrays.asList(one, two, null, empty)); + var one = parse("one"); + var two = parse("two"); + var empty = InternalBookmark.empty(); + var bookmark = InternalBookmark.from(Arrays.asList(one, two, null, empty)); verifyValues(bookmark, "one", "two"); } @Test @SuppressWarnings("deprecation") void isNotEmptyForNonEmptyBookmark() { - Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); + var bookmark = InternalBookmark.parse("SomeBookmark"); assertFalse(bookmark.isEmpty()); } @Test void asBeginTransactionParametersForNonEmptyBookmark() { - Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); + var bookmark = InternalBookmark.parse("SomeBookmark"); verifyValues(bookmark, "SomeBookmark"); } @Test @SuppressWarnings("deprecation") void bookmarkFromString() { - Bookmark bookmark = InternalBookmark.parse("Cat"); + var bookmark = InternalBookmark.parse("Cat"); assertEquals(singleton("Cat"), bookmark.values()); verifyValues(bookmark, "Cat"); } @@ -104,34 +104,34 @@ void bookmarkFromString() { @Test @SuppressWarnings("deprecation") void bookmarkFromNullString() { - Bookmark bookmark = InternalBookmark.parse((String) null); + var bookmark = InternalBookmark.parse((String) null); assertTrue(bookmark.isEmpty()); } @Test void bookmarkFromSet() { - Set input = asSet("neo4j:bookmark:v1:tx42", "neo4j:bookmark:v1:tx10", "neo4j:bookmark:v1:tx12"); - Bookmark bookmark = InternalBookmark.parse(input); + var input = asSet("neo4j:bookmark:v1:tx42", "neo4j:bookmark:v1:tx10", "neo4j:bookmark:v1:tx12"); + var bookmark = InternalBookmark.parse(input); verifyValues(bookmark, "neo4j:bookmark:v1:tx42", "neo4j:bookmark:v1:tx10", "neo4j:bookmark:v1:tx12"); } @Test @SuppressWarnings("deprecation") void bookmarkFromNullIterable() { - Bookmark bookmark = InternalBookmark.parse((Set) null); + var bookmark = InternalBookmark.parse((Set) null); assertTrue(bookmark.isEmpty()); } @Test @SuppressWarnings("deprecation") void bookmarkFromEmptyIterable() { - Bookmark bookmark = InternalBookmark.parse(emptySet()); + var bookmark = InternalBookmark.parse(emptySet()); assertTrue(bookmark.isEmpty()); } @Test void asBeginTransactionParametersForBookmarkWithInvalidValue() { - Bookmark bookmark = InternalBookmark.parse( + var bookmark = InternalBookmark.parse( asSet("neo4j:bookmark:v1:tx1", "neo4j:bookmark:v1:txcat", "neo4j:bookmark:v1:tx3")); verifyValues(bookmark, "neo4j:bookmark:v1:tx1", "neo4j:bookmark:v1:txcat", "neo4j:bookmark:v1:tx3"); } @@ -144,15 +144,15 @@ void shouldReturnAllBookmarks() { singleton("neo4j:bookmark:v1:tx42"), InternalBookmark.parse("neo4j:bookmark:v1:tx42").values()); - Set bookmarks = asSet("neo4j:bookmark:v1:tx1", "neo4j:bookmark:v1:tx2", "neo4j:bookmark:v1:tx3"); + var bookmarks = asSet("neo4j:bookmark:v1:tx1", "neo4j:bookmark:v1:tx2", "neo4j:bookmark:v1:tx3"); assertIterableEquals(bookmarks, InternalBookmark.parse(bookmarks).values()); } @Test @SuppressWarnings("deprecation") void valueShouldBeReadOnly() { - Bookmark bookmark = InternalBookmark.parse(asSet("first", "second")); - Set values = bookmark.values(); + var bookmark = InternalBookmark.parse(asSet("first", "second")); + var values = bookmark.values(); assertThrows(UnsupportedOperationException.class, () -> values.add("third")); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java index 71626faa01..9e7fdb03e9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java @@ -36,19 +36,17 @@ import java.util.concurrent.CompletableFuture; import org.junit.jupiter.api.Test; import org.neo4j.driver.Config; -import org.neo4j.driver.Metrics; import org.neo4j.driver.QueryConfig; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.metrics.DevNullMetricsProvider; -import org.neo4j.driver.internal.metrics.MetricsProvider; import org.neo4j.driver.internal.security.SecurityPlanImpl; class InternalDriverTest { @Test void shouldCloseSessionFactory() { - SessionFactory sessionFactory = sessionFactoryMock(); - InternalDriver driver = newDriver(sessionFactory); + var sessionFactory = sessionFactoryMock(); + var driver = newDriver(sessionFactory); assertNull(await(driver.closeAsync())); verify(sessionFactory).close(); @@ -56,8 +54,8 @@ void shouldCloseSessionFactory() { @Test void shouldNotCloseSessionFactoryMultipleTimes() { - SessionFactory sessionFactory = sessionFactoryMock(); - InternalDriver driver = newDriver(sessionFactory); + var sessionFactory = sessionFactoryMock(); + var driver = newDriver(sessionFactory); assertNull(await(driver.closeAsync())); assertNull(await(driver.closeAsync())); @@ -68,34 +66,33 @@ void shouldNotCloseSessionFactoryMultipleTimes() { @Test void shouldVerifyConnectivity() { - SessionFactory sessionFactory = sessionFactoryMock(); + var sessionFactory = sessionFactoryMock(); CompletableFuture connectivityStage = completedWithNull(); when(sessionFactory.verifyConnectivity()).thenReturn(connectivityStage); - InternalDriver driver = newDriver(sessionFactory); + var driver = newDriver(sessionFactory); assertEquals(connectivityStage, driver.verifyConnectivityAsync()); } @Test void shouldThrowWhenUnableToVerifyConnectivity() { - SessionFactory sessionFactory = mock(SessionFactory.class); - ServiceUnavailableException error = new ServiceUnavailableException("Hello"); + var sessionFactory = mock(SessionFactory.class); + var error = new ServiceUnavailableException("Hello"); when(sessionFactory.verifyConnectivity()).thenReturn(failedFuture(error)); - InternalDriver driver = newDriver(sessionFactory); + var driver = newDriver(sessionFactory); - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> await(driver.verifyConnectivityAsync())); + var e = assertThrows(ServiceUnavailableException.class, () -> await(driver.verifyConnectivityAsync())); assertEquals(e.getMessage(), "Hello"); } @Test void shouldThrowClientExceptionIfMetricsNotEnabled() throws Throwable { // Given - InternalDriver driver = newDriver(false); + var driver = newDriver(false); // When - ClientException error = assertThrows(ClientException.class, driver::metrics); + var error = assertThrows(ClientException.class, driver::metrics); // Then assertTrue(error.getMessage().contains("Driver metrics are not enabled.")); @@ -104,10 +101,10 @@ void shouldThrowClientExceptionIfMetricsNotEnabled() throws Throwable { @Test void shouldReturnMetricsIfMetricsEnabled() { // Given - InternalDriver driver = newDriver(true); + var driver = newDriver(true); // When - Metrics metrics = driver.metrics(); + var metrics = driver.metrics(); // Then we shall have no problem to get the metrics assertNotNull(metrics); @@ -136,19 +133,19 @@ private static InternalDriver newDriver(SessionFactory sessionFactory) { } private static SessionFactory sessionFactoryMock() { - SessionFactory sessionFactory = mock(SessionFactory.class); + var sessionFactory = mock(SessionFactory.class); when(sessionFactory.close()).thenReturn(completedWithNull()); return sessionFactory; } private static InternalDriver newDriver(boolean isMetricsEnabled) { - SessionFactory sessionFactory = sessionFactoryMock(); - Config config = Config.defaultConfig(); + var sessionFactory = sessionFactoryMock(); + var config = Config.defaultConfig(); if (isMetricsEnabled) { config = Config.builder().withDriverMetrics().build(); } - MetricsProvider metricsProvider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); + var metricsProvider = DriverFactory.getOrCreateMetricsProvider(config, Clock.systemUTC()); return new InternalDriver(SecurityPlanImpl.insecure(), sessionFactory, metricsProvider, DEV_NULL_LOGGING); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalExecutableQueryTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalExecutableQueryTest.java index 2367b5627b..940c914a68 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalExecutableQueryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalExecutableQueryTest.java @@ -170,7 +170,7 @@ var record = mock(Record.class); var executeResult = executableQuery.execute(recordCollector, finisherWithSummary); // THEN - ArgumentCaptor sessionConfigCapture = ArgumentCaptor.forClass(SessionConfig.class); + var sessionConfigCapture = ArgumentCaptor.forClass(SessionConfig.class); then(driver).should().session(sessionConfigCapture.capture()); var sessionConfig = sessionConfigCapture.getValue(); var expectedSessionConfig = SessionConfig.builder() diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalIsoDurationTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalIsoDurationTest.java index c44d0cb415..bf8ae558c1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalIsoDurationTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalIsoDurationTest.java @@ -32,7 +32,6 @@ import java.time.Duration; import java.time.LocalDateTime; import java.time.Period; -import java.time.temporal.Temporal; import java.time.temporal.UnsupportedTemporalTypeException; import org.junit.jupiter.api.Test; import org.neo4j.driver.types.IsoDuration; @@ -40,69 +39,69 @@ class InternalIsoDurationTest { @Test void shouldExposeMonths() { - IsoDuration duration = newDuration(42, 1, 2, 3); + var duration = newDuration(42, 1, 2, 3); assertEquals(42, duration.months()); assertEquals(42, duration.get(MONTHS)); } @Test void shouldExposeDays() { - IsoDuration duration = newDuration(1, 42, 2, 3); + var duration = newDuration(1, 42, 2, 3); assertEquals(42, duration.days()); assertEquals(42, duration.get(DAYS)); } @Test void shouldExposeSeconds() { - IsoDuration duration = newDuration(1, 2, 42, 3); + var duration = newDuration(1, 2, 42, 3); assertEquals(42, duration.seconds()); assertEquals(42, duration.get(SECONDS)); } @Test void shouldExposeNanoseconds() { - IsoDuration duration = newDuration(1, 2, 3, 42); + var duration = newDuration(1, 2, 3, 42); assertEquals(42, duration.nanoseconds()); assertEquals(42, duration.get(NANOS)); } @Test void shouldFailToGetUnsupportedTemporalUnit() { - IsoDuration duration = newDuration(1, 2, 3, 4); + var duration = newDuration(1, 2, 3, 4); assertThrows(UnsupportedTemporalTypeException.class, () -> duration.get(YEARS)); } @Test void shouldExposeSupportedTemporalUnits() { - IsoDuration duration = newDuration(1, 2, 3, 4); + var duration = newDuration(1, 2, 3, 4); assertEquals(asList(MONTHS, DAYS, SECONDS, NANOS), duration.getUnits()); } @Test void shouldAddTo() { - IsoDuration duration = newDuration(1, 2, 3, 4); - LocalDateTime dateTime = LocalDateTime.of(1990, 1, 1, 0, 0, 0, 0); + var duration = newDuration(1, 2, 3, 4); + var dateTime = LocalDateTime.of(1990, 1, 1, 0, 0, 0, 0); - Temporal result = duration.addTo(dateTime); + var result = duration.addTo(dateTime); assertEquals(LocalDateTime.of(1990, 2, 3, 0, 0, 3, 4), result); } @Test void shouldSubtractFrom() { - IsoDuration duration = newDuration(4, 3, 2, 1); - LocalDateTime dateTime = LocalDateTime.of(1990, 7, 19, 0, 0, 59, 999); + var duration = newDuration(4, 3, 2, 1); + var dateTime = LocalDateTime.of(1990, 7, 19, 0, 0, 59, 999); - Temporal result = duration.subtractFrom(dateTime); + var result = duration.subtractFrom(dateTime); assertEquals(LocalDateTime.of(1990, 3, 16, 0, 0, 57, 998), result); } @Test void shouldImplementEqualsAndHashCode() { - IsoDuration duration1 = newDuration(1, 2, 3, 4); - IsoDuration duration2 = newDuration(1, 2, 3, 4); + var duration1 = newDuration(1, 2, 3, 4); + var duration2 = newDuration(1, 2, 3, 4); assertEquals(duration1, duration2); assertEquals(duration1.hashCode(), duration2.hashCode()); @@ -110,9 +109,9 @@ void shouldImplementEqualsAndHashCode() { @Test void shouldCreateFromPeriod() { - Period period = Period.of(3, 5, 12); + var period = Period.of(3, 5, 12); - InternalIsoDuration duration = new InternalIsoDuration(period); + var duration = new InternalIsoDuration(period); assertEquals(period.toTotalMonths(), duration.months()); assertEquals(period.getDays(), duration.days()); @@ -122,9 +121,9 @@ void shouldCreateFromPeriod() { @Test void shouldCreateFromDuration() { - Duration duration = Duration.ofSeconds(391784, 4879173); + var duration = Duration.ofSeconds(391784, 4879173); - InternalIsoDuration isoDuration = new InternalIsoDuration(duration); + var isoDuration = new InternalIsoDuration(duration); assertEquals(0, isoDuration.months()); assertEquals(0, isoDuration.days()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalMapAccessorWithDefaultValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalMapAccessorWithDefaultValueTest.java index 3c43db9c0c..074b251b3b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalMapAccessorWithDefaultValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalMapAccessorWithDefaultValueTest.java @@ -53,7 +53,7 @@ class InternalMapAccessorWithDefaultValueTest { @Test void shouldGetValueFromRecord() { - Record record = createRecord(); + var record = createRecord(); // Scalar Values assertThat(record.get("NullValue", NullValue.NULL), equalTo(NullValue.NULL)); @@ -104,7 +104,7 @@ void shouldGetValueFromRecord() { @Test void shouldGetObjectFromRecord() { - Record record = createRecord(); + var record = createRecord(); // IntegerValue.asObject returns Long assertThat(record.get("IntegerValue", (Object) 3), equalTo(11L)); @@ -113,7 +113,7 @@ void shouldGetObjectFromRecord() { @Test void shouldGetNumberFromRecord() { - Record record = createRecord(); + var record = createRecord(); // IntegerValue.asNumber returns Long assertThat(record.get("IntegerValue", (Number) 3), equalTo((Object) 11L)); @@ -122,7 +122,7 @@ void shouldGetNumberFromRecord() { @Test void shouldGetEntityFromRecord() { - Record record = createRecord(); + var record = createRecord(); Entity defaultNodeEntity = new InternalNode(0L); assertThat(record.get("NodeValue", defaultNodeEntity), equalTo(createNode())); @@ -135,7 +135,7 @@ void shouldGetEntityFromRecord() { @Test void shouldGetNodeFromRecord() { - Record record = createRecord(); + var record = createRecord(); Node defaultNode = new InternalNode(0L); assertThat(record.get("NodeValue", defaultNode), equalTo(createNode())); @@ -144,7 +144,7 @@ void shouldGetNodeFromRecord() { @Test void shouldGetRelFromRecord() { - Record record = createRecord(); + var record = createRecord(); Relationship defaultRel = new InternalRelationship(0L, 0L, 1L, "T"); assertThat(record.get("RelValue", defaultRel), equalTo(createRel())); @@ -153,7 +153,7 @@ void shouldGetRelFromRecord() { @Test void shouldGetPathFromRecord() { - Record record = createRecord(); + var record = createRecord(); Path defaultPath = new InternalPath(new InternalNode(0L), new InternalRelationship(0L, 0L, 1L, "T"), new InternalNode(1L)); @@ -163,7 +163,7 @@ void shouldGetPathFromRecord() { @Test void shouldGetListOfObjectsFromRecord() { - Record record = createRecord(); + var record = createRecord(); List defaultValue = new ArrayList<>(); // List of java objects, therefore IntegerValue will be converted to Long @@ -173,7 +173,7 @@ void shouldGetListOfObjectsFromRecord() { @Test void shouldGetListOfTFromRecord() { - Record record = createRecord(); + var record = createRecord(); List defaultValue = new ArrayList<>(); assertThat(record.get("ListValue", defaultValue, ofInteger()), equalTo(asList(1, 2))); @@ -182,7 +182,7 @@ void shouldGetListOfTFromRecord() { @Test void shouldGetMapOfStringObjectFromRecord() { - Record record = createRecord(); + var record = createRecord(); Map expected = new HashMap<>(); expected.put("key1", 1L); @@ -195,7 +195,7 @@ void shouldGetMapOfStringObjectFromRecord() { @Test void shouldGetMapOfStringTFromRecord() { - Record record = createRecord(); + var record = createRecord(); Map expected = new HashMap<>(); expected.put("key1", 1); @@ -208,7 +208,7 @@ void shouldGetMapOfStringTFromRecord() { @Test void shouldGetPrimitiveTypesFromRecord() { - Record record = createRecord(); + var record = createRecord(); // boolean assertThat(record.get("BooleanValue", false), equalTo(true)); @@ -237,7 +237,7 @@ void shouldGetPrimitiveTypesFromRecord() { @Test void shouldGetFromMap() { - MapValue mapValue = new MapValue(createMap()); + var mapValue = new MapValue(createMap()); assertThat(mapValue.get("key1", 0L), equalTo(1L)); assertThat(mapValue.get("key2", 0), equalTo(2)); assertThat(mapValue.get(wrongKey, ""), equalTo("")); @@ -248,7 +248,7 @@ void shouldGetFromNode() { Map props = new HashMap<>(); props.put("k1", value(43)); props.put("k2", value("hello world")); - NodeValue nodeValue = new NodeValue(new InternalNode(42L, Collections.singletonList("L"), props)); + var nodeValue = new NodeValue(new InternalNode(42L, Collections.singletonList("L"), props)); assertThat(nodeValue.get("k1", 0), equalTo(43)); assertThat(nodeValue.get("k2", ""), equalTo("hello world")); @@ -260,7 +260,7 @@ void shouldGetFromRel() { Map props = new HashMap<>(); props.put("k1", value(43)); props.put("k2", value("hello world")); - RelationshipValue relValue = new RelationshipValue(new InternalRelationship(0L, 0L, 1L, "T", props)); + var relValue = new RelationshipValue(new InternalRelationship(0L, 0L, 1L, "T", props)); assertThat(relValue.get("k1", 0), equalTo(43)); assertThat(relValue.get("k2", ""), equalTo("hello world")); @@ -288,12 +288,12 @@ private Map createMap() { } private Record createRecord() { - Map map = createMap(); - Path path = createPath(); - Node node = createNode(); - Relationship rel = createRel(); + var map = createMap(); + var path = createPath(); + var node = createNode(); + var rel = createRel(); - List keys = asList( + var keys = asList( "NullValue", "BooleanValue", "StringValue", @@ -305,7 +305,7 @@ private Record createRecord() { "NodeValue", "RelValue", "float"); - Value[] values = new Value[] { + var values = new Value[] { NullValue.NULL, BooleanValue.TRUE, new StringValue("hello world"), diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalNodeTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalNodeTest.java index 0cfc009264..fe36d784f6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalNodeTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalNodeTest.java @@ -26,7 +26,6 @@ import java.util.Collections; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import java.util.function.Function; import org.junit.jupiter.api.Test; @@ -36,14 +35,14 @@ class InternalNodeTest { @Test void extractValuesFromNode() { // GIVEN - InternalNode node = createNode(); + var node = createNode(); Function extractor = Value::asInt; // WHEN - Iterable values = node.values(extractor); + var values = node.values(extractor); // THEN - Iterator iterator = values.iterator(); + var iterator = values.iterator(); assertThat(iterator.next(), equalTo(1)); assertThat(iterator.next(), equalTo(2)); assertFalse(iterator.hasNext()); @@ -51,7 +50,7 @@ void extractValuesFromNode() { @Test void accessUnknownKeyShouldBeNull() { - InternalNode node = createNode(); + var node = createNode(); assertThat(node.get("k1"), equalTo(value(1))); assertThat(node.get("k2"), equalTo(value(2))); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalPairTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalPairTest.java index c988408bac..293c3b9b4c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalPairTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalPairTest.java @@ -23,13 +23,11 @@ import static org.neo4j.driver.Values.value; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Value; -import org.neo4j.driver.util.Pair; class InternalPairTest { @Test void testMethods() { - Pair pair = InternalPair.of("k", value("v")); + var pair = InternalPair.of("k", value("v")); assertThat(pair.key(), equalTo("k")); assertThat(pair.value(), equalTo(value("v"))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalPathTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalPathTest.java index c466067604..38b6dfae09 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalPathTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalPathTest.java @@ -23,7 +23,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.Arrays; -import java.util.List; import org.hamcrest.MatcherAssert; import org.junit.jupiter.api.Test; import org.neo4j.driver.internal.util.Iterables; @@ -47,7 +46,7 @@ private InternalPath testPath() { @Test void pathSizeShouldReturnNumberOfRelationships() { // When - InternalPath path = testPath(); + var path = testPath(); // Then assertThat(path.length(), equalTo(3)); @@ -56,7 +55,7 @@ void pathSizeShouldReturnNumberOfRelationships() { @Test void shouldBeAbleToCreatePathWithSingleNode() { // When - InternalPath path = new InternalPath(new InternalNode(1)); + var path = new InternalPath(new InternalNode(1)); // Then assertThat(path.length(), equalTo(0)); @@ -65,10 +64,10 @@ void shouldBeAbleToCreatePathWithSingleNode() { @Test void shouldBeAbleToIterateOverPathAsSegments() { // Given - InternalPath path = testPath(); + var path = testPath(); // When - List segments = Iterables.asList(path); + var segments = Iterables.asList(path); // Then MatcherAssert.assertThat( @@ -87,10 +86,10 @@ void shouldBeAbleToIterateOverPathAsSegments() { @Test void shouldBeAbleToIterateOverPathNodes() { // Given - InternalPath path = testPath(); + var path = testPath(); // When - List segments = Iterables.asList(path.nodes()); + var segments = Iterables.asList(path.nodes()); // Then assertThat( @@ -102,10 +101,10 @@ void shouldBeAbleToIterateOverPathNodes() { @Test void shouldBeAbleToIterateOverPathRelationships() { // Given - InternalPath path = testPath(); + var path = testPath(); // When - List segments = Iterables.asList(path.relationships()); + var segments = Iterables.asList(path.relationships()); // Then assertThat( diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalRecordTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalRecordTest.java index 6adb7f0079..1e3b3d5d19 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalRecordTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalRecordTest.java @@ -29,9 +29,7 @@ import java.util.Arrays; import java.util.Collections; -import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.NoSuchElementException; import java.util.function.Function; import org.junit.jupiter.api.Test; @@ -42,7 +40,7 @@ class InternalRecordTest { @Test void accessingUnknownKeyShouldBeNull() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.get("k1"), equalTo(value(0))); assertThat(record.get("k2"), equalTo(value(1))); @@ -51,26 +49,26 @@ void accessingUnknownKeyShouldBeNull() { @Test void shouldHaveCorrectSize() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.size(), equalTo(2)); } @Test void shouldHaveCorrectFieldIndices() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.index("k1"), equalTo(0)); assertThat(record.index("k2"), equalTo(1)); } @Test void shouldThrowWhenAskingForIndexOfUnknownField() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThrows(NoSuchElementException.class, () -> record.index("BATMAN")); } @Test void accessingOutOfBoundsShouldBeNull() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.get(0), equalTo(value(0))); assertThat(record.get(1), equalTo(value(1))); @@ -80,7 +78,7 @@ void accessingOutOfBoundsShouldBeNull() { @Test void testContainsKey() { - InternalRecord record = createRecord(); + var record = createRecord(); assertTrue(record.containsKey("k1")); assertTrue(record.containsKey("k2")); @@ -89,7 +87,7 @@ void testContainsKey() { @Test void testIndex() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.index("k1"), equalTo(0)); assertThat(record.index("k2"), equalTo(1)); @@ -98,10 +96,10 @@ void testIndex() { @Test void testAsMap() { // GIVEN - InternalRecord record = createRecord(); + var record = createRecord(); // WHEN - Map map = record.asMap(); + var map = record.asMap(); // THEN assertThat(map.keySet(), containsInAnyOrder("k1", "k2")); @@ -112,11 +110,11 @@ void testAsMap() { @Test void testMapExtraction() { // GIVEN - InternalRecord record = createRecord(); + var record = createRecord(); Function addOne = value -> value.asInt() + 1; // WHEN - Map map = Extract.map(record, addOne); + var map = Extract.map(record, addOne); // THEN assertThat(map.keySet(), contains("k1", "k2")); @@ -127,23 +125,23 @@ void testMapExtraction() { @Test void mapExtractionShouldPreserveIterationOrder() { // GIVEN - List keys = Arrays.asList("k2", "k1"); - InternalRecord record = new InternalRecord(keys, new Value[] {value(0), value(1)}); + var keys = Arrays.asList("k2", "k1"); + var record = new InternalRecord(keys, new Value[] {value(0), value(1)}); Function addOne = value -> value.asInt() + 1; // WHEN - Map map = Extract.map(record, addOne); + var map = Extract.map(record, addOne); // THEN assertThat(map.keySet(), contains("k2", "k1")); - Iterator values = map.values().iterator(); + var values = map.values().iterator(); assertThat(values.next(), equalTo(1)); assertThat(values.next(), equalTo(2)); } @Test void testToString() { - InternalRecord record = createRecord(); + var record = createRecord(); assertThat(record.toString(), equalTo("Record<{k1: 0, k2: 1}>")); } @@ -151,11 +149,11 @@ void testToString() { @Test void shouldHaveMethodToGetKeys() { // GIVEN - List keys = Arrays.asList("k2", "k1"); - InternalRecord record = new InternalRecord(keys, new Value[] {value(0), value(1)}); + var keys = Arrays.asList("k2", "k1"); + var record = new InternalRecord(keys, new Value[] {value(0), value(1)}); // WHEN - List appendedKeys = record.keys(); + var appendedKeys = record.keys(); // THEN assertThat(appendedKeys, equalTo(keys)); @@ -165,10 +163,10 @@ void shouldHaveMethodToGetKeys() { void emptyKeysShouldGiveEmptyList() { // GIVEN List keys = Collections.emptyList(); - InternalRecord record = new InternalRecord(keys, new Value[] {}); + var record = new InternalRecord(keys, new Value[] {}); // WHEN - List appendedKeys = record.keys(); + var appendedKeys = record.keys(); // THEN assertThat(appendedKeys, equalTo(keys)); @@ -177,12 +175,12 @@ void emptyKeysShouldGiveEmptyList() { @Test void shouldHaveMethodToGetValues() { // GIVEN - List keys = Arrays.asList("k2", "k1"); - Value[] values = new Value[] {value(0), value(1)}; - InternalRecord record = new InternalRecord(keys, values); + var keys = Arrays.asList("k2", "k1"); + var values = new Value[] {value(0), value(1)}; + var record = new InternalRecord(keys, values); // WHEN - List appendedValues = record.values(); + var appendedValues = record.values(); // THEN assertThat(appendedValues, equalTo(Arrays.asList(values))); @@ -192,18 +190,18 @@ void shouldHaveMethodToGetValues() { void emptyValuesShouldGiveEmptyList() { // GIVEN List keys = Collections.emptyList(); - Value[] values = new Value[] {}; - InternalRecord record = new InternalRecord(keys, values); + var values = new Value[] {}; + var record = new InternalRecord(keys, values); // WHEN - List appendedValues = record.values(); + var appendedValues = record.values(); // THEN assertThat(appendedValues, equalTo(Arrays.asList(values))); } private InternalRecord createRecord() { - List keys = Arrays.asList("k1", "k2"); + var keys = Arrays.asList("k1", "k2"); return new InternalRecord(keys, new Value[] {value(0), value(1)}); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalRelationshipTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalRelationshipTest.java index 5d156d2bb9..fc66c274b7 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalRelationshipTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalRelationshipTest.java @@ -25,7 +25,6 @@ import static org.neo4j.driver.Values.value; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import java.util.function.Function; import org.junit.jupiter.api.Test; @@ -35,14 +34,14 @@ class InternalRelationshipTest { @Test void extractValuesFromNode() { // GIVEN - InternalRelationship relationship = createRelationship(); + var relationship = createRelationship(); Function extractor = Value::asInt; // WHEN - Iterable values = relationship.values(extractor); + var values = relationship.values(extractor); // THEN - Iterator iterator = values.iterator(); + var iterator = values.iterator(); assertThat(iterator.next(), equalTo(1)); assertThat(iterator.next(), equalTo(2)); assertFalse(iterator.hasNext()); @@ -50,7 +49,7 @@ void extractValuesFromNode() { @Test void accessUnknownKeyShouldBeNull() { - InternalRelationship relationship = createRelationship(); + var relationship = createRelationship(); assertThat(relationship.get("k1"), equalTo(value(1))); assertThat(relationship.get("k2"), equalTo(value(2))); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalResultTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalResultTest.java index 0ce7b7737f..9cf8be0473 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalResultTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalResultTest.java @@ -62,13 +62,12 @@ import org.neo4j.driver.internal.messaging.v43.BoltProtocolV43; import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.value.NullValue; -import org.neo4j.driver.util.Pair; class InternalResultTest { @Test void iterationShouldWorksAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // WHEN assertTrue(result.hasNext()); @@ -89,7 +88,7 @@ void iterationShouldWorksAsExpected() { @Test void firstOfFieldNameShouldWorkAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // THEN assertThat(result.next().get("k1"), equalTo(value("v1-1"))); @@ -99,7 +98,7 @@ void firstOfFieldNameShouldWorkAsExpected() { @Test void firstOfFieldIndexShouldWorkAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // THEN assertThat(result.next().get(0), equalTo(value("v1-1"))); @@ -109,7 +108,7 @@ void firstOfFieldIndexShouldWorkAsExpected() { @Test void singlePastFirstShouldFail() { // GIVEN - Result result = createResult(2); + var result = createResult(2); result.next(); result.next(); @@ -120,7 +119,7 @@ void singlePastFirstShouldFail() { @Test void singleNoneShouldFail() { // GIVEN - Result result = createResult(0); + var result = createResult(0); // THEN assertThrows(NoSuchRecordException.class, result::single); @@ -129,7 +128,7 @@ void singleNoneShouldFail() { @Test void singleWhenMoreThanOneShouldFail() { // GIVEN - Result result = createResult(2); + var result = createResult(2); // THEN assertThrows(NoSuchRecordException.class, result::single); @@ -138,7 +137,7 @@ void singleWhenMoreThanOneShouldFail() { @Test void singleOfFieldNameShouldWorkAsExpected() { // GIVEN - Result result = createResult(1); + var result = createResult(1); // THEN assertThat(result.single().get("k1"), equalTo(value("v1-1"))); @@ -148,7 +147,7 @@ void singleOfFieldNameShouldWorkAsExpected() { @Test void singleOfFieldIndexShouldWorkAsExpected() { // GIVEN - Result result = createResult(1); + var result = createResult(1); // THEN assertThat(result.single().get(0), equalTo(value("v1-1"))); @@ -173,7 +172,7 @@ void singleShouldThrowOnEmptyResult() { @Test void singleShouldThrowOnConsumedResult() { assertThrows(ResultConsumedException.class, () -> { - Result result = createResult(2); + var result = createResult(2); result.consume(); result.single(); }); @@ -182,7 +181,7 @@ void singleShouldThrowOnConsumedResult() { @Test void shouldConsumeTwice() { // GIVEN - Result result = createResult(2); + var result = createResult(2); result.consume(); // WHEN @@ -195,8 +194,8 @@ void shouldConsumeTwice() { @Test void shouldList() { // GIVEN - Result result = createResult(2); - List records = result.list(column("k1", ofString())); + var result = createResult(2); + var records = result.list(column("k1", ofString())); // THEN assertThat(records, equalTo(asList("v1-1", "v1-2"))); @@ -205,19 +204,19 @@ void shouldList() { @Test void shouldListTwice() { // GIVEN - Result result = createResult(2); - List firstList = result.list(); + var result = createResult(2); + var firstList = result.list(); assertThat(firstList.size(), equalTo(2)); // THEN - List secondList = result.list(); + var secondList = result.list(); assertThat(secondList.size(), equalTo(0)); } @Test void singleShouldNotThrowOnPartiallyConsumedResult() { // Given - Result result = createResult(2); + var result = createResult(2); result.next(); // When + Then @@ -226,7 +225,7 @@ void singleShouldNotThrowOnPartiallyConsumedResult() { @Test void singleShouldConsumeIfFailing() { - Result result = createResult(2); + var result = createResult(2); assertThrows(NoSuchRecordException.class, result::single); assertFalse(result.hasNext()); @@ -235,10 +234,10 @@ void singleShouldConsumeIfFailing() { @Test void retainShouldWorkAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // WHEN - List records = result.list(); + var records = result.list(); // THEN assertFalse(result.hasNext()); @@ -248,10 +247,10 @@ void retainShouldWorkAsExpected() { @Test void retainAndMapByKeyShouldWorkAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // WHEN - List records = result.list(column("k1")); + var records = result.list(column("k1")); // THEN assertFalse(result.hasNext()); @@ -261,10 +260,10 @@ void retainAndMapByKeyShouldWorkAsExpected() { @Test void retainAndMapByIndexShouldWorkAsExpected() { // GIVEN - Result result = createResult(3); + var result = createResult(3); // WHEN - List records = result.list(column(0)); + var records = result.list(column(0)); // THEN assertFalse(result.hasNext()); @@ -274,10 +273,10 @@ void retainAndMapByIndexShouldWorkAsExpected() { @Test void accessingOutOfBoundsShouldBeNull() { // GIVEN - Result result = createResult(1); + var result = createResult(1); // WHEN - Record record = result.single(); + var record = result.single(); // THEN assertThat(record.get(0), equalTo(value("v1-1"))); @@ -289,7 +288,7 @@ void accessingOutOfBoundsShouldBeNull() { @Test void accessingKeysWithoutCallingNextShouldNotFail() { // GIVEN - Result result = createResult(11); + var result = createResult(11); // WHEN // not calling next or single @@ -301,7 +300,7 @@ void accessingKeysWithoutCallingNextShouldNotFail() { @Test void shouldPeekIntoTheFuture() { // WHEN - Result result = createResult(2); + var result = createResult(2); // THEN assertThat(result.peek().get("k1"), equalTo(value("v1-1"))); @@ -322,7 +321,7 @@ void shouldPeekIntoTheFuture() { @Test void shouldNotPeekIntoTheFutureWhenResultIsEmpty() { // GIVEN - Result result = createResult(0); + var result = createResult(0); // THEN assertThrows(NoSuchRecordException.class, result::peek); @@ -332,12 +331,12 @@ void shouldNotPeekIntoTheFutureWhenResultIsEmpty() { @ValueSource(booleans = {true, false}) void shouldDelegateIsOpen(boolean expectedState) { // GIVEN - AsyncResultCursor cursor = mock(AsyncResultCursor.class); + var cursor = mock(AsyncResultCursor.class); given(cursor.isOpenAsync()).willReturn(CompletableFuture.completedFuture(expectedState)); Result result = new InternalResult(null, cursor); // WHEN - boolean actualState = result.isOpen(); + var actualState = result.isOpen(); // THEN assertEquals(expectedState, actualState); @@ -345,12 +344,12 @@ void shouldDelegateIsOpen(boolean expectedState) { } private Result createResult(int numberOfRecords) { - RunResponseHandler runHandler = new RunResponseHandler( + var runHandler = new RunResponseHandler( new CompletableFuture<>(), BoltProtocolV3.METADATA_EXTRACTOR, mock(Connection.class), null); runHandler.onSuccess(singletonMap("fields", value(Arrays.asList("k1", "k2")))); - Query query = new Query(""); - Connection connection = mock(Connection.class); + var query = new Query(""); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(LOCAL_DEFAULT); when(connection.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(connection.serverAgent()).thenReturn("Neo4j/4.2.5"); @@ -361,7 +360,7 @@ private Result createResult(int numberOfRecords) { BoltProtocolV3.METADATA_EXTRACTOR, mock(PullResponseCompletionListener.class)); - for (int i = 1; i <= numberOfRecords; i++) { + for (var i = 1; i <= numberOfRecords; i++) { pullAllHandler.onRecord(new Value[] {value("v1-" + i), value("v2-" + i)}); } pullAllHandler.onSuccess(emptyMap()); @@ -372,7 +371,7 @@ private Result createResult(int numberOfRecords) { private List values(Record record) { List result = new ArrayList<>(record.keys().size()); - for (Pair property : record.fields()) { + for (var property : record.fields()) { result.add(property.value()); } return result; diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java index c6085d01d6..5ee9f55459 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java @@ -54,13 +54,13 @@ void beforeEach() { @MethodSource("executeVariations") void shouldDelegateExecuteReadToRetryLogic(ExecuteVariation executeVariation) { // GIVEN - RetryLogic logic = mock(RetryLogic.class); - String expected = ""; + var logic = mock(RetryLogic.class); + var expected = ""; given(logic.retry(any())).willReturn(expected); given(networkSession.retryLogic()).willReturn(logic); TransactionCallback tc = (ignored) -> expected; Consumer consumer = (ignored) -> {}; - TransactionConfig config = TransactionConfig.builder().build(); + var config = TransactionConfig.builder().build(); // WHEN String actual = null; diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalTransactionTest.java index 3601c13f5f..4bdcc6f412 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalTransactionTest.java @@ -54,7 +54,6 @@ import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.spi.ConnectionProvider; import org.neo4j.driver.internal.value.IntegerValue; -import org.neo4j.driver.summary.ResultSummary; class InternalTransactionTest { private static final String DATABASE = "neo4j"; @@ -64,13 +63,13 @@ class InternalTransactionTest { @BeforeEach void setUp() { connection = connectionMock(BoltProtocolV4.INSTANCE); - ConnectionProvider connectionProvider = mock(ConnectionProvider.class); + var connectionProvider = mock(ConnectionProvider.class); when(connectionProvider.acquireConnection(any(ConnectionContext.class))).thenAnswer(invocation -> { var context = (ConnectionContext) invocation.getArgument(0); context.databaseNameFuture().complete(DatabaseNameUtil.database(DATABASE)); return completedFuture(connection); }); - InternalSession session = new InternalSession(newSession(connectionProvider)); + var session = new InternalSession(newSession(connectionProvider)); tx = session.beginTransaction(); } @@ -88,8 +87,8 @@ private static Stream> allSessionRunMethods() { void shouldFlushOnRun(Function runReturnOne) { setupSuccessfulRunAndPull(connection); - Result result = runReturnOne.apply(tx); - ResultSummary summary = result.consume(); + var result = runReturnOne.apply(tx); + var summary = result.consume(); verifyRunAndPull(connection, summary.query().text()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/SchemeTest.java b/driver/src/test/java/org/neo4j/driver/internal/SchemeTest.java index 8af04f44a8..97445ade07 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/SchemeTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/SchemeTest.java @@ -37,14 +37,14 @@ void shouldAcceptValidSchemes(String input) { @ParameterizedTest @ValueSource(strings = {"bob", "grey", "", " ", "blah"}) void shouldRejectInvalidSchemes(String input) { - IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> Scheme.validateScheme(input)); + var ex = assertThrows(IllegalArgumentException.class, () -> Scheme.validateScheme(input)); assertTrue(ex.getMessage().contains("Invalid address format " + input)); } @ParameterizedTest @NullSource void shouldRejectNullScheme(String input) { - IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> Scheme.validateScheme(input)); + var ex = assertThrows(IllegalArgumentException.class, () -> Scheme.validateScheme(input)); assertTrue(ex.getMessage().contains("Scheme must not be null")); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/SecuritySettingsTest.java b/driver/src/test/java/org/neo4j/driver/internal/SecuritySettingsTest.java index 0548842410..e5f87cbe2b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/SecuritySettingsTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/SecuritySettingsTest.java @@ -35,18 +35,18 @@ class SecuritySettingsTest { class SerializationTests { @Test void defaultSettingsShouldNotBeCustomizedWhenReadBack() throws IOException, ClassNotFoundException { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); assertFalse(isCustomized(securitySettings)); - SecuritySettings verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); + var verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); assertFalse(isCustomized(verify)); } @Test void defaultsShouldBeCheckCorrect() throws IOException, ClassNotFoundException { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withoutEncryption() .withTrustStrategy(Config.TrustStrategy.trustSystemCertificates()) .build(); @@ -55,14 +55,14 @@ void defaultsShouldBeCheckCorrect() throws IOException, ClassNotFoundException { // customized. assertFalse(isCustomized(securitySettings)); - SecuritySettings verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); + var verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); assertFalse(isCustomized(verify)); } @Test void shouldReadBackChangedEncryption() throws IOException, ClassNotFoundException { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withEncryption() .withTrustStrategy(Config.TrustStrategy.trustSystemCertificates()) .build(); @@ -70,7 +70,7 @@ void shouldReadBackChangedEncryption() throws IOException, ClassNotFoundExceptio assertTrue(isCustomized(securitySettings)); assertTrue(securitySettings.encrypted()); - SecuritySettings verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); + var verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); assertTrue(isCustomized(verify)); assertTrue(securitySettings.encrypted()); @@ -78,7 +78,7 @@ void shouldReadBackChangedEncryption() throws IOException, ClassNotFoundExceptio @Test void shouldReadBackChangedStrategey() throws IOException, ClassNotFoundException { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withoutEncryption() .withTrustStrategy(Config.TrustStrategy.trustAllCertificates()) .build(); @@ -91,7 +91,7 @@ void shouldReadBackChangedStrategey() throws IOException, ClassNotFoundException Config.TrustStrategy.trustAllCertificates().strategy(), securitySettings.trustStrategy().strategy()); - SecuritySettings verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); + var verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); assertTrue(isCustomized(verify)); assertFalse(securitySettings.encrypted()); @@ -102,7 +102,7 @@ void shouldReadBackChangedStrategey() throws IOException, ClassNotFoundException @Test void shouldReadBackChangedCertFile() throws IOException, ClassNotFoundException { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withoutEncryption() .withTrustStrategy(Config.TrustStrategy.trustCustomCertificateSignedBy(new File("some.cert"))) .build(); @@ -116,7 +116,7 @@ void shouldReadBackChangedCertFile() throws IOException, ClassNotFoundException .strategy(), securitySettings.trustStrategy().strategy()); - SecuritySettings verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); + var verify = TestUtil.serializeAndReadBack(securitySettings, SecuritySettings.class); assertTrue(isCustomized(verify)); assertFalse(securitySettings.encrypted()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/SelfContainedNodeTest.java b/driver/src/test/java/org/neo4j/driver/internal/SelfContainedNodeTest.java index 894e125fb1..bbea54a990 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/SelfContainedNodeTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/SelfContainedNodeTest.java @@ -24,7 +24,6 @@ import static org.neo4j.driver.Values.ofValue; import static org.neo4j.driver.Values.parameters; -import java.util.List; import org.junit.jupiter.api.Test; import org.neo4j.driver.Values; import org.neo4j.driver.internal.util.Iterables; @@ -42,7 +41,7 @@ private Node adamTheNode() { @SuppressWarnings("deprecation") void testIdentity() { // Given - Node node = adamTheNode(); + var node = adamTheNode(); // Then assertThat(node.id(), equalTo(1l)); @@ -51,10 +50,10 @@ void testIdentity() { @Test void testLabels() { // Given - Node node = adamTheNode(); + var node = adamTheNode(); // Then - List labels = Iterables.asList(node.labels()); + var labels = Iterables.asList(node.labels()); assertThat(labels.size(), equalTo(1)); assertThat(labels.contains("Person"), equalTo(true)); } @@ -62,10 +61,10 @@ void testLabels() { @Test void testKeys() { // Given - Node node = adamTheNode(); + var node = adamTheNode(); // Then - List keys = Iterables.asList(node.keys()); + var keys = Iterables.asList(node.keys()); assertThat(keys.size(), equalTo(1)); assertThat(keys.contains("name"), equalTo(true)); } @@ -73,7 +72,7 @@ void testKeys() { @Test void testValue() { // Given - Node node = adamTheNode(); + var node = adamTheNode(); // Then assertThat(node.get("name").asString(), equalTo("Adam")); diff --git a/driver/src/test/java/org/neo4j/driver/internal/SessionFactoryImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/SessionFactoryImplTest.java index d9fdaf2d0b..def9144ca6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/SessionFactoryImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/SessionFactoryImplTest.java @@ -35,31 +35,31 @@ class SessionFactoryImplTest { @Test void createsNetworkSessions() { - Config config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); - SessionFactory factory = newSessionFactory(config); + var config = Config.builder().withLogging(DEV_NULL_LOGGING).build(); + var factory = newSessionFactory(config); - NetworkSession readSession = factory.newInstance( + var readSession = factory.newInstance( builder().withDefaultAccessMode(AccessMode.READ).build(), null); assertThat(readSession, instanceOf(NetworkSession.class)); - NetworkSession writeSession = factory.newInstance( + var writeSession = factory.newInstance( builder().withDefaultAccessMode(AccessMode.WRITE).build(), null); assertThat(writeSession, instanceOf(NetworkSession.class)); } @Test void createsLeakLoggingNetworkSessions() { - Config config = Config.builder() + var config = Config.builder() .withLogging(DEV_NULL_LOGGING) .withLeakedSessionsLogging() .build(); - SessionFactory factory = newSessionFactory(config); + var factory = newSessionFactory(config); - NetworkSession readSession = factory.newInstance( + var readSession = factory.newInstance( builder().withDefaultAccessMode(AccessMode.READ).build(), null); assertThat(readSession, instanceOf(LeakLoggingNetworkSession.class)); - NetworkSession writeSession = factory.newInstance( + var writeSession = factory.newInstance( builder().withDefaultAccessMode(AccessMode.WRITE).build(), null); assertThat(writeSession, instanceOf(LeakLoggingNetworkSession.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java b/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java index ad6fd7d703..e7c867ecbe 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/ValuesTest.java @@ -56,8 +56,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Stream; @@ -73,15 +71,7 @@ import org.neo4j.driver.internal.value.LocalDateTimeValue; import org.neo4j.driver.internal.value.LocalTimeValue; import org.neo4j.driver.internal.value.MapValue; -import org.neo4j.driver.internal.value.NodeValue; -import org.neo4j.driver.internal.value.PathValue; -import org.neo4j.driver.internal.value.RelationshipValue; import org.neo4j.driver.internal.value.TimeValue; -import org.neo4j.driver.types.IsoDuration; -import org.neo4j.driver.types.Node; -import org.neo4j.driver.types.Path; -import org.neo4j.driver.types.Point; -import org.neo4j.driver.types.Relationship; class ValuesTest { @Test @@ -125,7 +115,7 @@ void shouldConvertPrimitiveArraysFromObject() { @Test void shouldComplainAboutStrangeTypes() { - ClientException e = assertThrows(ClientException.class, () -> value(new Object())); + var e = assertThrows(ClientException.class, () -> value(new Object())); assertEquals("Unable to convert java.lang.Object to Neo4j Value.", e.getMessage()); } @@ -161,19 +151,19 @@ void shouldMapDriverComplexTypesToListOfJavaPrimitiveTypes() { map.put("Cat", new ListValue(values("meow", "miaow"))); map.put("Dog", new ListValue(values("wow"))); map.put("Wrong", new ListValue(values(-1))); - MapValue mapValue = new MapValue(map); + var mapValue = new MapValue(map); // When - Iterable> list = mapValue.values(ofList(ofToString())); + var list = mapValue.values(ofList(ofToString())); // Then assertEquals(3, mapValue.size()); - Iterator> listIterator = list.iterator(); + var listIterator = list.iterator(); Set setA = new HashSet<>(3); Set setB = new HashSet<>(3); - for (Value value : mapValue.values()) { - String a = value.get(0).toString(); - String b = listIterator.next().get(0); + for (var value : mapValue.values()) { + var a = value.get(0).toString(); + var b = listIterator.next().get(0); setA.add(a); setB.add(b); } @@ -186,10 +176,10 @@ void shouldMapDriverMapsToJavaMaps() { Map map = new HashMap<>(); map.put("Cat", value(1)); map.put("Dog", value(2)); - MapValue values = new MapValue(map); + var values = new MapValue(map); // When - Map result = values.asMap(Values.ofToString()); + var result = values.asMap(Values.ofToString()); // Then assertThat(result.size(), equalTo(2)); @@ -215,7 +205,7 @@ void shouldNotBeAbleToGetSizeOnNonSizedValues() { @Test void shouldMapInteger() { // Given - Value val = value(1, 2, 3); + var val = value(1, 2, 3); // When/Then assertThat(val.asList(ofInteger()), contains(1, 2, 3)); @@ -227,7 +217,7 @@ void shouldMapInteger() { @Test void shouldMapFloat() { // Given - Value val = value(1.0, 1.2, 3.2); + var val = value(1.0, 1.2, 3.2); // When/Then assertThat(val.asList(ofDouble()), contains(1.0, 1.2, 3.2)); @@ -240,7 +230,7 @@ void shouldMapFloatToJavaFloat() { // Given all double -> float conversions other than integers // loose precision, as far as java is concerned, so we // can only convert integer numbers to float. - Value val = value(1.0, 2.0, 3.0); + var val = value(1.0, 2.0, 3.0); // When/Then assertThat(val.asList(ofFloat()), contains(1.0F, 2.0F, 3.0F)); @@ -249,7 +239,7 @@ void shouldMapFloatToJavaFloat() { @Test void shouldMapString() { // Given - Value val = value("hello", "world"); + var val = value("hello", "world"); // When/Then assertThat(val.asList(ofString()), contains("hello", "world")); @@ -262,7 +252,7 @@ void shouldMapMapOfString() { // Given Map map = new HashMap<>(); map.put("hello", "world"); - Value val = value(asList(map, map)); + var val = value(asList(map, map)); // When/Then assertThat(val.asList(ofMap()), contains(map, map)); @@ -275,7 +265,7 @@ void shouldHandleCollection() { Collection collection = new ArrayDeque<>(); collection.add("hello"); collection.add("world"); - Value val = value(collection); + var val = value(collection); // When/Then assertThat(val.asList(), Matchers.containsInAnyOrder("hello", "world")); @@ -284,8 +274,8 @@ void shouldHandleCollection() { @Test void shouldHandleIterator() { // Given - Iterator iterator = asList("hello", "world").iterator(); - Value val = value(iterator); + var iterator = asList("hello", "world").iterator(); + var val = value(iterator); // When/Then assertThat(val.asList(), Matchers.containsInAnyOrder("hello", "world")); @@ -293,8 +283,8 @@ void shouldHandleIterator() { @Test void shouldCreateDateValueFromLocalDate() { - LocalDate localDate = LocalDate.now(); - Value value = value(localDate); + var localDate = LocalDate.now(); + var value = value(localDate); assertThat(value, instanceOf(DateValue.class)); assertEquals(localDate, value.asLocalDate()); @@ -303,7 +293,7 @@ void shouldCreateDateValueFromLocalDate() { @Test void shouldCreateDateValue() { Object localDate = LocalDate.now(); - Value value = value(localDate); + var value = value(localDate); assertThat(value, instanceOf(DateValue.class)); assertEquals(localDate, value.asObject()); @@ -311,8 +301,8 @@ void shouldCreateDateValue() { @Test void shouldCreateTimeValueFromOffsetTime() { - OffsetTime offsetTime = OffsetTime.now(); - Value value = value(offsetTime); + var offsetTime = OffsetTime.now(); + var value = value(offsetTime); assertThat(value, instanceOf(TimeValue.class)); assertEquals(offsetTime, value.asOffsetTime()); @@ -320,8 +310,8 @@ void shouldCreateTimeValueFromOffsetTime() { @Test void shouldCreateTimeValue() { - OffsetTime offsetTime = OffsetTime.now(); - Value value = value(offsetTime); + var offsetTime = OffsetTime.now(); + var value = value(offsetTime); assertThat(value, instanceOf(TimeValue.class)); assertEquals(offsetTime, value.asObject()); @@ -329,8 +319,8 @@ void shouldCreateTimeValue() { @Test void shouldCreateLocalTimeValueFromLocalTime() { - LocalTime localTime = LocalTime.now(); - Value value = value(localTime); + var localTime = LocalTime.now(); + var value = value(localTime); assertThat(value, instanceOf(LocalTimeValue.class)); assertEquals(localTime, value.asLocalTime()); @@ -338,8 +328,8 @@ void shouldCreateLocalTimeValueFromLocalTime() { @Test void shouldCreateLocalTimeValue() { - LocalTime localTime = LocalTime.now(); - Value value = value(localTime); + var localTime = LocalTime.now(); + var value = value(localTime); assertThat(value, instanceOf(LocalTimeValue.class)); assertEquals(localTime, value.asObject()); @@ -347,8 +337,8 @@ void shouldCreateLocalTimeValue() { @Test void shouldCreateLocalDateTimeValueFromLocalDateTime() { - LocalDateTime localDateTime = LocalDateTime.now(); - Value value = value(localDateTime); + var localDateTime = LocalDateTime.now(); + var value = value(localDateTime); assertThat(value, instanceOf(LocalDateTimeValue.class)); assertEquals(localDateTime, value.asLocalDateTime()); @@ -356,8 +346,8 @@ void shouldCreateLocalDateTimeValueFromLocalDateTime() { @Test void shouldCreateLocalDateTimeValue() { - LocalDateTime localDateTime = LocalDateTime.now(); - Value value = value(localDateTime); + var localDateTime = LocalDateTime.now(); + var value = value(localDateTime); assertThat(value, instanceOf(LocalDateTimeValue.class)); assertEquals(localDateTime, value.asObject()); @@ -365,8 +355,8 @@ void shouldCreateLocalDateTimeValue() { @Test void shouldCreateDateTimeValueFromOffsetDateTime() { - OffsetDateTime offsetDateTime = OffsetDateTime.now(); - Value value = value(offsetDateTime); + var offsetDateTime = OffsetDateTime.now(); + var value = value(offsetDateTime); assertThat(value, instanceOf(DateTimeValue.class)); assertEquals(offsetDateTime, value.asOffsetDateTime()); @@ -376,8 +366,8 @@ void shouldCreateDateTimeValueFromOffsetDateTime() { @Test void shouldCreateDateTimeValueFromZonedDateTime() { - ZonedDateTime zonedDateTime = ZonedDateTime.now(); - Value value = value(zonedDateTime); + var zonedDateTime = ZonedDateTime.now(); + var value = value(zonedDateTime); assertThat(value, instanceOf(DateTimeValue.class)); assertEquals(zonedDateTime, value.asZonedDateTime()); @@ -385,8 +375,8 @@ void shouldCreateDateTimeValueFromZonedDateTime() { @Test void shouldCreateDateTimeValue() { - ZonedDateTime zonedDateTime = ZonedDateTime.now(); - Value value = value(zonedDateTime); + var zonedDateTime = ZonedDateTime.now(); + var value = value(zonedDateTime); assertThat(value, instanceOf(DateTimeValue.class)); assertEquals(zonedDateTime, value.asObject()); @@ -394,10 +384,10 @@ void shouldCreateDateTimeValue() { @Test void shouldCreateIsoDurationValue() { - Value value = isoDuration(42_1, 42_2, 42_3, 42_4); + var value = isoDuration(42_1, 42_2, 42_3, 42_4); assertThat(value, instanceOf(DurationValue.class)); - IsoDuration duration = value.asIsoDuration(); + var duration = value.asIsoDuration(); assertEquals(42_1, duration.months()); assertEquals(42_2, duration.days()); @@ -407,9 +397,9 @@ void shouldCreateIsoDurationValue() { @Test void shouldCreateValueFromIsoDuration() { - Value durationValue1 = isoDuration(1, 2, 3, 4); - IsoDuration duration = durationValue1.asIsoDuration(); - Value durationValue2 = value(duration); + var durationValue1 = isoDuration(1, 2, 3, 4); + var duration = durationValue1.asIsoDuration(); + var durationValue2 = value(duration); assertEquals(duration, durationValue1.asIsoDuration()); assertEquals(duration, durationValue2.asIsoDuration()); @@ -418,10 +408,10 @@ void shouldCreateValueFromIsoDuration() { @Test void shouldCreateValueFromPeriod() { - Period period = Period.of(5, 11, 190); + var period = Period.of(5, 11, 190); - Value value = value(period); - IsoDuration isoDuration = value.asIsoDuration(); + var value = value(period); + var isoDuration = value.asIsoDuration(); assertEquals(period.toTotalMonths(), isoDuration.months()); assertEquals(period.getDays(), isoDuration.days()); @@ -431,10 +421,10 @@ void shouldCreateValueFromPeriod() { @Test void shouldCreateValueFromDuration() { - Duration duration = Duration.ofSeconds(183951, 4384718937L); + var duration = Duration.ofSeconds(183951, 4384718937L); - Value value = value(duration); - IsoDuration isoDuration = value.asIsoDuration(); + var value = value(duration); + var isoDuration = value.asIsoDuration(); assertEquals(0, isoDuration.months()); assertEquals(0, isoDuration.days()); @@ -444,9 +434,9 @@ void shouldCreateValueFromDuration() { @Test void shouldCreateValueFromPoint2D() { - Value point2DValue1 = point(1, 2, 3); - Point point2D = point2DValue1.asPoint(); - Value point2DValue2 = value(point2D); + var point2DValue1 = point(1, 2, 3); + var point2D = point2DValue1.asPoint(); + var point2DValue2 = value(point2D); assertEquals(point2D, point2DValue1.asPoint()); assertEquals(point2D, point2DValue2.asPoint()); @@ -455,9 +445,9 @@ void shouldCreateValueFromPoint2D() { @Test void shouldCreateValueFromPoint3D() { - Value point3DValue1 = point(1, 2, 3, 4); - Point point3D = point3DValue1.asPoint(); - Value point3DValue2 = value(point3D); + var point3DValue1 = point(1, 2, 3, 4); + var point3D = point3DValue1.asPoint(); + var point3DValue2 = value(point3D); assertEquals(point3D, point3DValue1.asPoint()); assertEquals(point3D, point3DValue2.asPoint()); @@ -466,71 +456,71 @@ void shouldCreateValueFromPoint3D() { @Test void shouldCreateValueFromNodeValue() { - NodeValue node = emptyNodeValue(); - Value value = value(node); + var node = emptyNodeValue(); + var value = value(node); assertEquals(node, value); } @Test void shouldCreateValueFromNode() { - Node node = emptyNodeValue().asNode(); - Value value = value(node); + var node = emptyNodeValue().asNode(); + var value = value(node); assertEquals(node, value.asNode()); } @Test void shouldCreateValueFromRelationshipValue() { - RelationshipValue rel = emptyRelationshipValue(); - Value value = value(rel); + var rel = emptyRelationshipValue(); + var value = value(rel); assertEquals(rel, value); } @Test void shouldCreateValueFromRelationship() { - Relationship rel = emptyRelationshipValue().asRelationship(); - Value value = value(rel); + var rel = emptyRelationshipValue().asRelationship(); + var value = value(rel); assertEquals(rel, value.asRelationship()); } @Test void shouldCreateValueFromPathValue() { - PathValue path = filledPathValue(); - Value value = value(path); + var path = filledPathValue(); + var value = value(path); assertEquals(path, value); } @Test void shouldCreateValueFromPath() { - Path path = filledPathValue().asPath(); - Value value = value(path); + var path = filledPathValue().asPath(); + var value = value(path); assertEquals(path, value.asPath()); } @Test void shouldCreateValueFromStream() { - Stream stream = Stream.of("foo", "bar", "baz", "qux"); - Value value = value(stream); + var stream = Stream.of("foo", "bar", "baz", "qux"); + var value = value(stream); assertEquals(asList("foo", "bar", "baz", "qux"), value.asObject()); } @Test void shouldFailToConvertStreamOfUnsupportedTypeToValue() { - Stream stream = Stream.of(new Object(), new Object()); - ClientException e = assertThrows(ClientException.class, () -> value(stream)); + var stream = Stream.of(new Object(), new Object()); + var e = assertThrows(ClientException.class, () -> value(stream)); assertEquals("Unable to convert java.lang.Object to Neo4j Value.", e.getMessage()); } @Test void shouldCreateValueFromStreamOfStreams() { - Stream> stream = Stream.of(Stream.of("foo", "bar"), Stream.of("baz", "qux")); - Value value = value(stream); + var stream = Stream.of(Stream.of("foo", "bar"), Stream.of("baz", "qux")); + var value = value(stream); assertEquals(asList(asList("foo", "bar"), asList("baz", "qux")), value.asObject()); } @Test void shouldCreateValueFromStreamOfNulls() { - Stream stream = Stream.of(null, null, null); - Value value = value(stream); + var stream = Stream.of(null, null, null); + var value = value(stream); assertEquals(asList(null, null, null), value.asObject()); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/AsyncResultCursorImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/AsyncResultCursorImplTest.java index e347427fcb..41818fca46 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/AsyncResultCursorImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/AsyncResultCursorImplTest.java @@ -41,7 +41,6 @@ import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; @@ -67,20 +66,20 @@ class AsyncResultCursorImplTest { @Test void shouldReturnQueryKeys() { - RunResponseHandler runHandler = newRunResponseHandler(); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullAllHandler = mock(PullAllResponseHandler.class); - List keys = asList("key1", "key2", "key3"); + var keys = asList("key1", "key2", "key3"); runHandler.onSuccess(singletonMap("fields", value(keys))); - AsyncResultCursorImpl cursor = newCursor(runHandler, pullAllHandler); + var cursor = newCursor(runHandler, pullAllHandler); assertEquals(keys, cursor.keys()); } @Test void shouldReturnSummary() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); ResultSummary summary = new InternalResultSummary( new Query("RETURN 42"), @@ -95,95 +94,95 @@ void shouldReturnSummary() { 42); when(pullAllHandler.consumeAsync()).thenReturn(completedFuture(summary)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(summary, await(cursor.consumeAsync())); } @Test void shouldReturnNextExistingRecord() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record = new InternalRecord(asList("key1", "key2"), values(1, 2)); when(pullAllHandler.nextAsync()).thenReturn(completedFuture(record)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(record, await(cursor.nextAsync())); } @Test void shouldReturnNextNonExistingRecord() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); when(pullAllHandler.nextAsync()).thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertNull(await(cursor.nextAsync())); } @Test void shouldPeekExistingRecord() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record = new InternalRecord(asList("key1", "key2", "key3"), values(3, 2, 1)); when(pullAllHandler.peekAsync()).thenReturn(completedFuture(record)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(record, await(cursor.peekAsync())); } @Test void shouldPeekNonExistingRecord() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); when(pullAllHandler.peekAsync()).thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertNull(await(cursor.peekAsync())); } @Test void shouldReturnSingleRecord() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record = new InternalRecord(asList("key1", "key2"), values(42, 42)); when(pullAllHandler.nextAsync()).thenReturn(completedFuture(record)).thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(record, await(cursor.singleAsync())); } @Test void shouldFailWhenAskedForSingleRecordButResultIsEmpty() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); when(pullAllHandler.nextAsync()).thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("result is empty")); } @Test void shouldFailWhenAskedForSingleRecordButResultContainsMore() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record1 = new InternalRecord(asList("key1", "key2"), values(1, 1)); Record record2 = new InternalRecord(asList("key1", "key2"), values(2, 2)); when(pullAllHandler.nextAsync()).thenReturn(completedFuture(record1)).thenReturn(completedFuture(record2)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - NoSuchRecordException e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); + var e = assertThrows(NoSuchRecordException.class, () -> await(cursor.singleAsync())); assertThat(e.getMessage(), containsString("Ensure your query returns only one record")); } @Test void shouldForEachAsyncWhenResultContainsMultipleRecords() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record1 = new InternalRecord(asList("key1", "key2", "key3"), values(1, 1, 1)); Record record2 = new InternalRecord(asList("key1", "key2", "key3"), values(2, 2, 2)); @@ -194,13 +193,13 @@ void shouldForEachAsyncWhenResultContainsMultipleRecords() { .thenReturn(completedFuture(record3)) .thenReturn(completedWithNull()); - ResultSummary summary = mock(ResultSummary.class); + var summary = mock(ResultSummary.class); when(pullAllHandler.consumeAsync()).thenReturn(completedFuture(summary)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); List records = new CopyOnWriteArrayList<>(); - CompletionStage summaryStage = cursor.forEachAsync(records::add); + var summaryStage = cursor.forEachAsync(records::add); assertEquals(summary, await(summaryStage)); assertEquals(asList(record1, record2, record3), records); @@ -208,18 +207,18 @@ void shouldForEachAsyncWhenResultContainsMultipleRecords() { @Test void shouldForEachAsyncWhenResultContainsOneRecords() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record = new InternalRecord(asList("key1", "key2", "key3"), values(1, 1, 1)); when(pullAllHandler.nextAsync()).thenReturn(completedFuture(record)).thenReturn(completedWithNull()); - ResultSummary summary = mock(ResultSummary.class); + var summary = mock(ResultSummary.class); when(pullAllHandler.consumeAsync()).thenReturn(completedFuture(summary)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); List records = new CopyOnWriteArrayList<>(); - CompletionStage summaryStage = cursor.forEachAsync(records::add); + var summaryStage = cursor.forEachAsync(records::add); assertEquals(summary, await(summaryStage)); assertEquals(singletonList(record), records); @@ -227,16 +226,16 @@ void shouldForEachAsyncWhenResultContainsOneRecords() { @Test void shouldForEachAsyncWhenResultContainsNoRecords() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); when(pullAllHandler.nextAsync()).thenReturn(completedWithNull()); - ResultSummary summary = mock(ResultSummary.class); + var summary = mock(ResultSummary.class); when(pullAllHandler.consumeAsync()).thenReturn(completedFuture(summary)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); List records = new CopyOnWriteArrayList<>(); - CompletionStage summaryStage = cursor.forEachAsync(records::add); + var summaryStage = cursor.forEachAsync(records::add); assertEquals(summary, await(summaryStage)); assertEquals(0, records.size()); @@ -244,7 +243,7 @@ void shouldForEachAsyncWhenResultContainsNoRecords() { @Test void shouldFailForEachWhenGivenActionThrows() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record1 = new InternalRecord(asList("key1", "key2"), values(1, 1)); Record record2 = new InternalRecord(asList("key1", "key2"), values(2, 2)); @@ -255,12 +254,12 @@ void shouldFailForEachWhenGivenActionThrows() { .thenReturn(completedFuture(record3)) .thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - AtomicInteger recordsProcessed = new AtomicInteger(); - RuntimeException error = new RuntimeException("Hello"); + var recordsProcessed = new AtomicInteger(); + var error = new RuntimeException("Hello"); - CompletionStage stage = cursor.forEachAsync(record -> { + var stage = cursor.forEachAsync(record -> { if (record.get("key2").asInt() == 2) { throw error; } else { @@ -268,7 +267,7 @@ void shouldFailForEachWhenGivenActionThrows() { } }); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(stage)); + var e = assertThrows(RuntimeException.class, () -> await(stage)); assertEquals(error, e); assertEquals(1, recordsProcessed.get()); @@ -277,37 +276,37 @@ void shouldFailForEachWhenGivenActionThrows() { @Test void shouldReturnFailureWhenExists() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); - ServiceUnavailableException error = new ServiceUnavailableException("Hi"); + var error = new ServiceUnavailableException("Hi"); when(pullAllHandler.pullAllFailureAsync()).thenReturn(completedFuture(error)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(error, await(cursor.pullAllFailureAsync())); } @Test void shouldReturnNullFailureWhenDoesNotExist() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); when(pullAllHandler.pullAllFailureAsync()).thenReturn(completedWithNull()); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertNull(await(cursor.pullAllFailureAsync())); } @Test void shouldListAsyncWithoutMapFunction() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); Record record1 = new InternalRecord(asList("key1", "key2"), values(1, 1)); Record record2 = new InternalRecord(asList("key1", "key2"), values(2, 2)); - List records = asList(record1, record2); + var records = asList(record1, record2); when(pullAllHandler.listAsync(Function.identity())).thenReturn(completedFuture(records)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(records, await(cursor.listAsync())); verify(pullAllHandler).listAsync(Function.identity()); @@ -316,12 +315,12 @@ void shouldListAsyncWithoutMapFunction() { @Test void shouldListAsyncWithMapFunction() { Function mapFunction = record -> record.get(0).asString(); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); - List values = asList("a", "b", "c", "d", "e"); + var values = asList("a", "b", "c", "d", "e"); when(pullAllHandler.listAsync(mapFunction)).thenReturn(completedFuture(values)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(values, await(cursor.listAsync(mapFunction))); verify(pullAllHandler).listAsync(mapFunction); @@ -329,13 +328,13 @@ void shouldListAsyncWithMapFunction() { @Test void shouldPropagateFailureFromListAsyncWithoutMapFunction() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); - RuntimeException error = new RuntimeException("Hi"); + var pullAllHandler = mock(PullAllResponseHandler.class); + var error = new RuntimeException("Hi"); when(pullAllHandler.listAsync(Function.identity())).thenReturn(failedFuture(error)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(cursor.listAsync())); + var e = assertThrows(RuntimeException.class, () -> await(cursor.listAsync())); assertEquals(error, e); verify(pullAllHandler).listAsync(Function.identity()); } @@ -343,13 +342,13 @@ void shouldPropagateFailureFromListAsyncWithoutMapFunction() { @Test void shouldPropagateFailureFromListAsyncWithMapFunction() { Function mapFunction = record -> record.get(0).asString(); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); - RuntimeException error = new RuntimeException("Hi"); + var pullAllHandler = mock(PullAllResponseHandler.class); + var error = new RuntimeException("Hi"); when(pullAllHandler.listAsync(mapFunction)).thenReturn(failedFuture(error)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(cursor.listAsync(mapFunction))); + var e = assertThrows(RuntimeException.class, () -> await(cursor.listAsync(mapFunction))); assertEquals(error, e); verify(pullAllHandler).listAsync(mapFunction); @@ -357,31 +356,31 @@ void shouldPropagateFailureFromListAsyncWithMapFunction() { @Test void shouldConsumeAsync() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); - ResultSummary summary = mock(ResultSummary.class); + var pullAllHandler = mock(PullAllResponseHandler.class); + var summary = mock(ResultSummary.class); when(pullAllHandler.consumeAsync()).thenReturn(completedFuture(summary)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); assertEquals(summary, await(cursor.consumeAsync())); } @Test void shouldPropagateFailureInConsumeAsync() { - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); - RuntimeException error = new RuntimeException("Hi"); + var pullAllHandler = mock(PullAllResponseHandler.class); + var error = new RuntimeException("Hi"); when(pullAllHandler.consumeAsync()).thenReturn(failedFuture(error)); - AsyncResultCursorImpl cursor = newCursor(pullAllHandler); + var cursor = newCursor(pullAllHandler); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(cursor.consumeAsync())); + var e = assertThrows(RuntimeException.class, () -> await(cursor.consumeAsync())); assertEquals(error, e); } @Test void shouldThrowOnIsOpenAsync() { // GIVEN - AsyncResultCursorImpl cursor = new AsyncResultCursorImpl(null, null, null); + var cursor = new AsyncResultCursorImpl(null, null, null); // WHEN & THEN assertThrows(UnsupportedOperationException.class, cursor::isOpenAsync); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/DelegatingAsyncTransactionContextTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/DelegatingAsyncTransactionContextTest.java index 0704b80f07..d8eac50575 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/DelegatingAsyncTransactionContextTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/DelegatingAsyncTransactionContextTest.java @@ -48,13 +48,13 @@ void beforeEach() { @Test void shouldDelegateRunWithValueParams() { // GIVEN - String query = "something"; - Value params = mock(Value.class); + var query = "something"; + var params = mock(Value.class); CompletionStage expected = CompletableFuture.completedFuture(null); given(transaction.runAsync(query, params)).willReturn(expected); // WHEN - CompletionStage actual = context.runAsync(query, params); + var actual = context.runAsync(query, params); // THEN assertEquals(expected, actual); @@ -64,13 +64,13 @@ void shouldDelegateRunWithValueParams() { @Test void shouldDelegateRunWithMapParams() { // GIVEN - String query = "something"; + var query = "something"; Map params = Collections.emptyMap(); CompletionStage expected = CompletableFuture.completedFuture(null); given(transaction.runAsync(query, params)).willReturn(expected); // WHEN - CompletionStage actual = context.runAsync(query, params); + var actual = context.runAsync(query, params); // THEN assertEquals(expected, actual); @@ -80,13 +80,13 @@ void shouldDelegateRunWithMapParams() { @Test void shouldDelegateRunWithRecordParams() { // GIVEN - String query = "something"; - Record params = mock(Record.class); + var query = "something"; + var params = mock(Record.class); CompletionStage expected = CompletableFuture.completedFuture(null); given(transaction.runAsync(query, params)).willReturn(expected); // WHEN - CompletionStage actual = context.runAsync(query, params); + var actual = context.runAsync(query, params); // THEN assertEquals(expected, actual); @@ -96,12 +96,12 @@ void shouldDelegateRunWithRecordParams() { @Test void shouldDelegateRun() { // GIVEN - String query = "something"; + var query = "something"; CompletionStage expected = CompletableFuture.completedFuture(null); given(transaction.runAsync(query)).willReturn(expected); // WHEN - CompletionStage actual = context.runAsync(query); + var actual = context.runAsync(query); // THEN assertEquals(expected, actual); @@ -111,12 +111,12 @@ void shouldDelegateRun() { @Test void shouldDelegateRunWithQueryType() { // GIVEN - Query query = mock(Query.class); + var query = mock(Query.class); CompletionStage expected = CompletableFuture.completedFuture(null); given(transaction.runAsync(query)).willReturn(expected); // WHEN - CompletionStage actual = context.runAsync(query); + var actual = context.runAsync(query); // THEN assertEquals(expected, actual); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java index ab8c803fcd..d6227b7ca1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java @@ -139,7 +139,7 @@ private static Stream>> allRunTxM void shouldFlushOnRun(Function> runReturnOne) { setupSuccessfulRunAndPull(connection); - ResultCursor cursor = await(runReturnOne.apply(asyncSession)); + var cursor = await(runReturnOne.apply(asyncSession)); verifyRunAndPull(connection, await(cursor.consumeAsync()).query().text()); } @@ -147,7 +147,7 @@ void shouldFlushOnRun(Function> runR @ParameterizedTest @MethodSource("allBeginTxMethods") void shouldDelegateBeginTx(Function> beginTx) { - AsyncTransaction tx = await(beginTx.apply(asyncSession)); + var tx = await(beginTx.apply(asyncSession)); verifyBeginTx(connection); assertNotNull(tx); @@ -156,7 +156,7 @@ void shouldDelegateBeginTx(Function> runTx) { - String string = await(runTx.apply(asyncSession)); + var string = await(runTx.apply(asyncSession)); verifyBeginTx(connection); verifyCommitTx(connection); @@ -233,17 +233,17 @@ void shouldReturnBookmark() { void shouldDelegateExecuteReadToRetryLogic(ExecuteVariation executeVariation) throws ExecutionException, InterruptedException { // GIVEN - NetworkSession networkSession = mock(NetworkSession.class); + var networkSession = mock(NetworkSession.class); AsyncSession session = new InternalAsyncSession(networkSession); - RetryLogic logic = mock(RetryLogic.class); - String expected = ""; + var logic = mock(RetryLogic.class); + var expected = ""; given(networkSession.retryLogic()).willReturn(logic); AsyncTransactionCallback> tc = (ignored) -> CompletableFuture.completedFuture(expected); given(logic.retryAsync(any())).willReturn(tc.execute(null)); - TransactionConfig config = TransactionConfig.builder().build(); + var config = TransactionConfig.builder().build(); // WHEN - CompletionStage actual = executeVariation.readOnly + var actual = executeVariation.readOnly ? (executeVariation.explicitTxConfig ? session.executeReadAsync(tc, config) : session.executeReadAsync(tc)) @@ -264,7 +264,7 @@ private void testTxRollbackWhenThrows(AccessMode transactionMode) { throw error; }; - Exception e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, transactionMode, work)); + var e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, transactionMode, work)); assertEquals(error, e); verify(connectionProvider).acquireConnection(any(ConnectionContext.class)); @@ -273,14 +273,14 @@ private void testTxRollbackWhenThrows(AccessMode transactionMode) { } private void testTxIsRetriedUntilSuccessWhenFunctionThrows(AccessMode mode) { - int failures = 12; - int retries = failures + 1; + var failures = 12; + var retries = failures + 1; RetryLogic retryLogic = new FixedRetryLogic(retries); session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - TxWork work = spy(new TxWork(42, failures, new SessionExpiredException(""))); + var work = spy(new TxWork(42, failures, new SessionExpiredException(""))); int answer = executeTransaction(asyncSession, mode, work); assertEquals(42, answer); @@ -290,15 +290,15 @@ private void testTxIsRetriedUntilSuccessWhenFunctionThrows(AccessMode mode) { } private void testTxIsRetriedUntilSuccessWhenCommitThrows(AccessMode mode) { - int failures = 13; - int retries = failures + 1; + var failures = 13; + var retries = failures + 1; RetryLogic retryLogic = new FixedRetryLogic(retries); setupFailingCommit(connection, failures); session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - TxWork work = spy(new TxWork(43)); + var work = spy(new TxWork(43)); int answer = executeTransaction(asyncSession, mode, work); assertEquals(43, answer); @@ -307,16 +307,16 @@ private void testTxIsRetriedUntilSuccessWhenCommitThrows(AccessMode mode) { } private void testTxIsRetriedUntilFailureWhenFunctionThrows(AccessMode mode) { - int failures = 14; - int retries = failures - 1; + var failures = 14; + var retries = failures - 1; RetryLogic retryLogic = new FixedRetryLogic(retries); session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - TxWork work = spy(new TxWork(42, failures, new SessionExpiredException("Oh!"))); + var work = spy(new TxWork(42, failures, new SessionExpiredException("Oh!"))); - Exception e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, mode, work)); + var e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, mode, work)); MatcherAssert.assertThat(e, instanceOf(SessionExpiredException.class)); assertEquals("Oh!", e.getMessage()); @@ -326,17 +326,17 @@ private void testTxIsRetriedUntilFailureWhenFunctionThrows(AccessMode mode) { } private void testTxIsRetriedUntilFailureWhenCommitFails(AccessMode mode) { - int failures = 17; - int retries = failures - 1; + var failures = 17; + var retries = failures - 1; RetryLogic retryLogic = new FixedRetryLogic(retries); setupFailingCommit(connection, failures); session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - TxWork work = spy(new TxWork(42)); + var work = spy(new TxWork(42)); - Exception e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, mode, work)); + var e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, mode, work)); MatcherAssert.assertThat(e, instanceOf(ServiceUnavailableException.class)); verifyInvocationCount(work, failures); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java index a950ee1e03..077349b51e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java @@ -59,7 +59,6 @@ import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.spi.ConnectionProvider; import org.neo4j.driver.internal.value.IntegerValue; -import org.neo4j.driver.summary.ResultSummary; class InternalAsyncTransactionTest { private static final String DATABASE = "neo4j"; @@ -70,14 +69,14 @@ class InternalAsyncTransactionTest { @BeforeEach void setUp() { connection = connectionMock(BoltProtocolV4.INSTANCE); - ConnectionProvider connectionProvider = mock(ConnectionProvider.class); + var connectionProvider = mock(ConnectionProvider.class); when(connectionProvider.acquireConnection(any(ConnectionContext.class))).thenAnswer(invocation -> { var context = (ConnectionContext) invocation.getArgument(0); context.databaseNameFuture().complete(DatabaseNameUtil.database(DATABASE)); return completedFuture(connection); }); networkSession = newSession(connectionProvider); - InternalAsyncSession session = new InternalAsyncSession(networkSession); + var session = new InternalAsyncSession(networkSession); tx = (InternalAsyncTransaction) await(session.beginTransactionAsync()); } @@ -96,8 +95,8 @@ private static Stream>> void shouldFlushOnRun(Function> runReturnOne) { setupSuccessfulRunAndPull(connection); - ResultCursor result = await(runReturnOne.apply(tx)); - ResultSummary summary = await(result.consumeAsync()); + var result = await(runReturnOne.apply(tx)); + var summary = await(result.consumeAsync()); verifyRunAndPull(connection, summary.query().text()); } @@ -141,8 +140,8 @@ void shouldReleaseConnectionWhenFailedToRollback() { @Test void shouldDelegateIsOpenAsync() throws ExecutionException, InterruptedException { // GIVEN - UnmanagedTransaction utx = mock(UnmanagedTransaction.class); - boolean expected = false; + var utx = mock(UnmanagedTransaction.class); + var expected = false; given(utx.isOpen()).willReturn(expected); tx = new InternalAsyncTransaction(utx); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/LeakLoggingNetworkSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/LeakLoggingNetworkSessionTest.java index 8c42e242b3..9e5fe8c08f 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/LeakLoggingNetworkSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/LeakLoggingNetworkSessionTest.java @@ -32,7 +32,6 @@ import static org.neo4j.driver.internal.DatabaseNameUtil.defaultDatabase; import static org.neo4j.driver.testutil.TestUtil.DEFAULT_TEST_PROTOCOL; -import java.lang.reflect.Method; import java.util.Collections; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @@ -50,10 +49,10 @@ class LeakLoggingNetworkSessionTest { @Test void logsNothingDuringFinalizationIfClosed() throws Exception { - Logging logging = mock(Logging.class); - Logger log = mock(Logger.class); + var logging = mock(Logging.class); + var log = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(log); - LeakLoggingNetworkSession session = newSession(logging, false); + var session = newSession(logging, false); finalize(session); @@ -62,21 +61,21 @@ void logsNothingDuringFinalizationIfClosed() throws Exception { @Test void logsMessageWithStacktraceDuringFinalizationIfLeaked(TestInfo testInfo) throws Exception { - Logging logging = mock(Logging.class); - Logger log = mock(Logger.class); + var logging = mock(Logging.class); + var log = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(log); - LeakLoggingNetworkSession session = newSession(logging, true); + var session = newSession(logging, true); // begin transaction to make session obtain a connection session.beginTransactionAsync(TransactionConfig.empty()); finalize(session); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); + var messageCaptor = ArgumentCaptor.forClass(String.class); verify(log).error(messageCaptor.capture(), any()); assertEquals(1, messageCaptor.getAllValues().size()); - String loggedMessage = messageCaptor.getValue(); + var loggedMessage = messageCaptor.getValue(); assertThat(loggedMessage, containsString("Neo4j Session object leaked")); assertThat(loggedMessage, containsString("Session was create at")); assertThat( @@ -86,7 +85,7 @@ void logsMessageWithStacktraceDuringFinalizationIfLeaked(TestInfo testInfo) thro } private static void finalize(NetworkSession session) throws Exception { - Method finalizeMethod = session.getClass().getDeclaredMethod("finalize"); + var finalizeMethod = session.getClass().getDeclaredMethod("finalize"); finalizeMethod.setAccessible(true); finalizeMethod.invoke(session); } @@ -107,14 +106,14 @@ private static LeakLoggingNetworkSession newSession(Logging logging, boolean ope } private static ConnectionProvider connectionProviderMock(boolean openConnection) { - ConnectionProvider provider = mock(ConnectionProvider.class); - Connection connection = connectionMock(openConnection); + var provider = mock(ConnectionProvider.class); + var connection = connectionMock(openConnection); when(provider.acquireConnection(any(ConnectionContext.class))).thenReturn(completedFuture(connection)); return provider; } private static Connection connectionMock(boolean open) { - Connection connection = TestUtil.connectionMock(DEFAULT_TEST_PROTOCOL); + var connection = TestUtil.connectionMock(DEFAULT_TEST_PROTOCOL); when(connection.isOpen()).thenReturn(open); return connection; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java index dd5d93affc..6ac8dab00d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java @@ -48,8 +48,6 @@ import io.netty.channel.embedded.EmbeddedChannel; import java.util.List; import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -92,21 +90,21 @@ void tearDown() throws Exception { @Test void shouldBeOpenAfterCreated() { - NetworkConnection connection = newConnection(newChannel()); + var connection = newConnection(newChannel()); assertTrue(connection.isOpen()); } @Test void shouldNotBeOpenAfterRelease() { - NetworkConnection connection = newConnection(newChannel()); + var connection = newConnection(newChannel()); connection.release(); assertFalse(connection.isOpen()); } @Test void shouldSendResetOnRelease() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); connection.release(); channel.runPendingTasks(); @@ -138,10 +136,10 @@ void shouldWriteForceReleaseInEventLoopThread() throws Exception { @Test void shouldEnableAutoReadWhenReleased() { - EmbeddedChannel channel = newChannel(); + var channel = newChannel(); channel.config().setAutoRead(false); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.release(); channel.runPendingTasks(); @@ -151,10 +149,10 @@ void shouldEnableAutoReadWhenReleased() { @Test void shouldNotDisableAutoReadWhenReleased() { - EmbeddedChannel channel = newChannel(); + var channel = newChannel(); channel.config().setAutoRead(true); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.release(); connection.disableAutoRead(); // does nothing on released connection @@ -163,8 +161,8 @@ void shouldNotDisableAutoReadWhenReleased() { @Test void shouldWriteSingleMessage() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); connection.write(PULL_ALL, NO_OP_HANDLER); @@ -176,8 +174,8 @@ void shouldWriteSingleMessage() { @Test void shouldWriteAndFlushSingleMessage() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); connection.writeAndFlush(PULL_ALL, NO_OP_HANDLER); channel.runPendingTasks(); // writeAndFlush is scheduled to execute in the event loop thread, trigger its @@ -189,74 +187,74 @@ void shouldWriteAndFlushSingleMessage() { @Test void shouldNotWriteSingleMessageWhenReleased() { - ResponseHandler handler = mock(ResponseHandler.class); - NetworkConnection connection = newConnection(newChannel()); + var handler = mock(ResponseHandler.class); + var connection = newConnection(newChannel()); connection.release(); connection.write(RunWithMetadataMessage.unmanagedTxRunMessage(new Query("RETURN 1")), handler); - ArgumentCaptor failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); + var failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); verify(handler).onFailure(failureCaptor.capture()); assertConnectionReleasedError(failureCaptor.getValue()); } @Test void shouldNotWriteAndFlushSingleMessageWhenReleased() { - ResponseHandler handler = mock(ResponseHandler.class); - NetworkConnection connection = newConnection(newChannel()); + var handler = mock(ResponseHandler.class); + var connection = newConnection(newChannel()); connection.release(); connection.writeAndFlush(RunWithMetadataMessage.unmanagedTxRunMessage(new Query("RETURN 1")), handler); - ArgumentCaptor failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); + var failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); verify(handler).onFailure(failureCaptor.capture()); assertConnectionReleasedError(failureCaptor.getValue()); } @Test void shouldNotWriteSingleMessageWhenTerminated() { - ResponseHandler handler = mock(ResponseHandler.class); - NetworkConnection connection = newConnection(newChannel()); + var handler = mock(ResponseHandler.class); + var connection = newConnection(newChannel()); connection.terminateAndRelease("42"); connection.write(RunWithMetadataMessage.unmanagedTxRunMessage(new Query("RETURN 1")), handler); - ArgumentCaptor failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); + var failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); verify(handler).onFailure(failureCaptor.capture()); assertConnectionTerminatedError(failureCaptor.getValue()); } @Test void shouldNotWriteAndFlushSingleMessageWhenTerminated() { - ResponseHandler handler = mock(ResponseHandler.class); - NetworkConnection connection = newConnection(newChannel()); + var handler = mock(ResponseHandler.class); + var connection = newConnection(newChannel()); connection.terminateAndRelease("42"); connection.writeAndFlush(RunWithMetadataMessage.unmanagedTxRunMessage(new Query("RETURN 1")), handler); - ArgumentCaptor failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); + var failureCaptor = ArgumentCaptor.forClass(IllegalStateException.class); verify(handler).onFailure(failureCaptor.capture()); assertConnectionTerminatedError(failureCaptor.getValue()); } @Test void shouldReturnServerAgentWhenCreated() { - EmbeddedChannel channel = newChannel(); - String agent = "Neo4j/4.2.5"; + var channel = newChannel(); + var agent = "Neo4j/4.2.5"; ChannelAttributes.setServerAgent(channel, agent); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); assertEquals(agent, connection.serverAgent()); } @Test void shouldReturnServerAgentWhenReleased() { - EmbeddedChannel channel = newChannel(); - String agent = "Neo4j/4.2.5"; + var channel = newChannel(); + var agent = "Neo4j/4.2.5"; ChannelAttributes.setServerAgent(channel, agent); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.release(); assertEquals(agent, connection.serverAgent()); @@ -264,11 +262,11 @@ void shouldReturnServerAgentWhenReleased() { @Test void shouldReturnServerAddressWhenReleased() { - EmbeddedChannel channel = newChannel(); - BoltServerAddress address = new BoltServerAddress("host", 4242); + var channel = newChannel(); + var address = new BoltServerAddress("host", 4242); ChannelAttributes.setServerAddress(channel, address); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.release(); assertEquals(address, connection.serverAddress()); @@ -276,12 +274,12 @@ void shouldReturnServerAddressWhenReleased() { @Test void shouldReturnSameCompletionStageFromRelease() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); - CompletionStage releaseStage1 = connection.release(); - CompletionStage releaseStage2 = connection.release(); - CompletionStage releaseStage3 = connection.release(); + var releaseStage1 = connection.release(); + var releaseStage2 = connection.release(); + var releaseStage3 = connection.release(); channel.runPendingTasks(); @@ -296,9 +294,9 @@ void shouldReturnSameCompletionStageFromRelease() { @Test void shouldEnableAutoRead() { - EmbeddedChannel channel = newChannel(); + var channel = newChannel(); channel.config().setAutoRead(false); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.enableAutoRead(); @@ -307,9 +305,9 @@ void shouldEnableAutoRead() { @Test void shouldDisableAutoRead() { - EmbeddedChannel channel = newChannel(); + var channel = newChannel(); channel.config().setAutoRead(true); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.disableAutoRead(); @@ -318,10 +316,10 @@ void shouldDisableAutoRead() { @Test void shouldSetTerminationReasonOnChannelWhenTerminated() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); - String reason = "Something really bad has happened"; + var reason = "Something really bad has happened"; connection.terminateAndRelease(reason); assertEquals(reason, terminationReason(channel)); @@ -329,8 +327,8 @@ void shouldSetTerminationReasonOnChannelWhenTerminated() { @Test void shouldCloseChannelWhenTerminated() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); assertTrue(channel.isActive()); connection.terminateAndRelease("test"); @@ -340,9 +338,9 @@ void shouldCloseChannelWhenTerminated() { @Test void shouldReleaseChannelWhenTerminated() { - EmbeddedChannel channel = newChannel(); - ExtendedChannelPool pool = mock(ExtendedChannelPool.class); - NetworkConnection connection = newConnection(channel, pool); + var channel = newChannel(); + var pool = mock(ExtendedChannelPool.class); + var connection = newConnection(channel, pool); verify(pool, never()).release(any()); connection.terminateAndRelease("test"); @@ -352,9 +350,9 @@ void shouldReleaseChannelWhenTerminated() { @Test void shouldNotReleaseChannelMultipleTimesWhenTerminatedMultipleTimes() { - EmbeddedChannel channel = newChannel(); - ExtendedChannelPool pool = mock(ExtendedChannelPool.class); - NetworkConnection connection = newConnection(channel, pool); + var channel = newChannel(); + var pool = mock(ExtendedChannelPool.class); + var connection = newConnection(channel, pool); verify(pool, never()).release(any()); connection.terminateAndRelease("reason 1"); @@ -369,13 +367,13 @@ void shouldNotReleaseChannelMultipleTimesWhenTerminatedMultipleTimes() { @Test void shouldNotReleaseAfterTermination() { - EmbeddedChannel channel = newChannel(); - ExtendedChannelPool pool = mock(ExtendedChannelPool.class); - NetworkConnection connection = newConnection(channel, pool); + var channel = newChannel(); + var pool = mock(ExtendedChannelPool.class); + var connection = newConnection(channel, pool); verify(pool, never()).release(any()); connection.terminateAndRelease("test"); - CompletionStage releaseStage = connection.release(); + var releaseStage = connection.release(); // release stage should be completed immediately assertTrue(releaseStage.toCompletableFuture().isDone()); @@ -385,8 +383,8 @@ void shouldNotReleaseAfterTermination() { @Test void shouldSendResetMessageWhenReset() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); connection.reset(null); channel.runPendingTasks(); @@ -397,10 +395,10 @@ void shouldSendResetMessageWhenReset() { @Test void shouldCompleteResetFutureWhenSuccessResponseArrives() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); - CompletableFuture resetFuture = connection.reset(null).toCompletableFuture(); + var resetFuture = connection.reset(null).toCompletableFuture(); channel.runPendingTasks(); assertFalse(resetFuture.isDone()); @@ -411,10 +409,10 @@ void shouldCompleteResetFutureWhenSuccessResponseArrives() { @Test void shouldCompleteResetFutureWhenFailureResponseArrives() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); - CompletableFuture resetFuture = connection.reset(null).toCompletableFuture(); + var resetFuture = connection.reset(null).toCompletableFuture(); channel.runPendingTasks(); assertFalse(resetFuture.isDone()); @@ -425,13 +423,13 @@ void shouldCompleteResetFutureWhenFailureResponseArrives() { @Test void shouldDoNothingInResetWhenClosed() { - EmbeddedChannel channel = newChannel(); - NetworkConnection connection = newConnection(channel); + var channel = newChannel(); + var connection = newConnection(channel); connection.release(); channel.runPendingTasks(); - CompletableFuture resetFuture = connection.reset(null).toCompletableFuture(); + var resetFuture = connection.reset(null).toCompletableFuture(); channel.runPendingTasks(); assertEquals(1, channel.outboundMessages().size()); @@ -442,9 +440,9 @@ void shouldDoNothingInResetWhenClosed() { @Test void shouldEnableAutoReadWhenDoingReset() { - EmbeddedChannel channel = newChannel(); + var channel = newChannel(); channel.config().setAutoRead(false); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); connection.reset(null); channel.runPendingTasks(); @@ -571,13 +569,13 @@ static List queryMessages() { private record QueryMessage(boolean flush, Message message) {} private void testWriteInEventLoop(String threadName, Consumer action) throws Exception { - EmbeddedChannel channel = spy(new EmbeddedChannel()); + var channel = spy(new EmbeddedChannel()); initializeEventLoop(channel, threadName); - ThreadTrackingInboundMessageDispatcher dispatcher = new ThreadTrackingInboundMessageDispatcher(channel); + var dispatcher = new ThreadTrackingInboundMessageDispatcher(channel); ChannelAttributes.setProtocolVersion(channel, DEFAULT_TEST_PROTOCOL_VERSION); ChannelAttributes.setMessageDispatcher(channel, dispatcher); - NetworkConnection connection = newConnection(channel); + var connection = newConnection(channel); action.accept(connection); shutdownEventLoop(); @@ -601,8 +599,8 @@ private void shutdownEventLoop() throws Exception { } private static EmbeddedChannel newChannel() { - EmbeddedChannel channel = new EmbeddedChannel(); - InboundMessageDispatcher messageDispatcher = new InboundMessageDispatcher(channel, DEV_NULL_LOGGING); + var channel = new EmbeddedChannel(); + var messageDispatcher = new InboundMessageDispatcher(channel, DEV_NULL_LOGGING); ChannelAttributes.setProtocolVersion(channel, DEFAULT_TEST_PROTOCOL_VERSION); ChannelAttributes.setMessageDispatcher(channel, messageDispatcher); return channel; diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java index 2c069bbbe1..74f9d40224 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java @@ -56,9 +56,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; -import org.mockito.InOrder; import org.neo4j.driver.AccessMode; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.async.ResultCursor; @@ -66,7 +64,6 @@ import org.neo4j.driver.internal.DatabaseBookmark; import org.neo4j.driver.internal.DatabaseNameUtil; import org.neo4j.driver.internal.InternalBookmark; -import org.neo4j.driver.internal.messaging.BoltProtocol; import org.neo4j.driver.internal.messaging.request.PullMessage; import org.neo4j.driver.internal.messaging.request.RunWithMetadataMessage; import org.neo4j.driver.internal.messaging.v4.BoltProtocolV4; @@ -122,7 +119,7 @@ void shouldBeAbleToOpenTxAfterPreviousIsClosed() { await(beginTransaction(session).closeAsync()); // When - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); // Then we should've gotten a transaction object back assertNotNull(tx); @@ -142,7 +139,7 @@ void shouldNotBeAbleToUseSessionWhileOngoingTransaction() { void shouldBeAbleToUseSessionAgainWhenTransactionIsClosed() { // Given await(beginTransaction(session).closeAsync()); - String query = "RETURN 1"; + var query = "RETURN 1"; setupSuccessfulRunAndPull(connection, query); // When @@ -167,14 +164,14 @@ void shouldNotCloseAlreadyClosedSession() { void runThrowsWhenSessionIsClosed() { close(session); - Exception e = assertThrows(Exception.class, () -> run(session, "CREATE ()")); + var e = assertThrows(Exception.class, () -> run(session, "CREATE ()")); assertThat(e, instanceOf(ClientException.class)); assertThat(e.getMessage(), containsString("session is already closed")); } @Test void acquiresNewConnectionForRun() { - String query = "RETURN 1"; + var query = "RETURN 1"; setupSuccessfulRunAndPull(connection, query); run(session, query); @@ -184,14 +181,14 @@ void acquiresNewConnectionForRun() { @Test void releasesOpenConnectionUsedForRunWhenSessionIsClosed() { - String query = "RETURN 1"; + var query = "RETURN 1"; setupSuccessfulRunAndPull(connection, query); run(session, query); close(session); - InOrder inOrder = inOrder(connection); + var inOrder = inOrder(connection); inOrder.verify(connection).write(any(RunWithMetadataMessage.class), any()); inOrder.verify(connection).writeAndFlush(any(PullMessage.class), any()); inOrder.verify(connection, atLeastOnce()).release(); @@ -207,7 +204,7 @@ void resetDoesNothingWhenNoTransactionAndNoConnection() { @Test void closeWithoutConnection() { - NetworkSession session = newSession(connectionProvider); + var session = newSession(connectionProvider); close(session); @@ -216,7 +213,7 @@ void closeWithoutConnection() { @Test void acquiresNewConnectionForBeginTx() { - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); assertNotNull(tx); verify(connectionProvider).acquireConnection(any(ConnectionContext.class)); @@ -224,18 +221,18 @@ void acquiresNewConnectionForBeginTx() { @Test void updatesBookmarkWhenTxIsClosed() { - Bookmark bookmarkAfterCommit = InternalBookmark.parse("TheBookmark"); + var bookmarkAfterCommit = InternalBookmark.parse("TheBookmark"); - BoltProtocol protocol = spy(BoltProtocolV4.INSTANCE); + var protocol = spy(BoltProtocolV4.INSTANCE); doReturn(completedFuture(new DatabaseBookmark(DATABASE, bookmarkAfterCommit))) .when(protocol) .commitTransaction(any(Connection.class)); when(connection.protocol()).thenReturn(protocol); - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); assertThat(session.lastBookmarks(), instanceOf(Set.class)); - Set bookmarks = session.lastBookmarks(); + var bookmarks = session.lastBookmarks(); assertTrue(bookmarks.isEmpty()); await(tx.commitAsync()); @@ -244,10 +241,10 @@ void updatesBookmarkWhenTxIsClosed() { @Test void releasesConnectionWhenTxIsClosed() { - String query = "RETURN 42"; + var query = "RETURN 42"; setupSuccessfulRunAndPull(connection, query); - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); await(tx.runAsync(new Query(query))); verify(connectionProvider).acquireConnection(any(ConnectionContext.class)); @@ -259,22 +256,22 @@ void releasesConnectionWhenTxIsClosed() { @Test void bookmarkIsPropagatedFromSession() { - Set bookmarks = Collections.singleton(InternalBookmark.parse("Bookmarks")); - NetworkSession session = newSession(connectionProvider, bookmarks); + var bookmarks = Collections.singleton(InternalBookmark.parse("Bookmarks")); + var session = newSession(connectionProvider, bookmarks); - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); assertNotNull(tx); verifyBeginTx(connection); } @Test void bookmarkIsPropagatedBetweenTransactions() { - Bookmark bookmark1 = InternalBookmark.parse("Bookmark1"); - Bookmark bookmark2 = InternalBookmark.parse("Bookmark2"); + var bookmark1 = InternalBookmark.parse("Bookmark1"); + var bookmark2 = InternalBookmark.parse("Bookmark2"); - NetworkSession session = newSession(connectionProvider); + var session = newSession(connectionProvider); - BoltProtocol protocol = spy(BoltProtocolV4.INSTANCE); + var protocol = spy(BoltProtocolV4.INSTANCE); doReturn( completedFuture(new DatabaseBookmark(DATABASE, bookmark1)), completedFuture(new DatabaseBookmark(DATABASE, bookmark2))) @@ -283,11 +280,11 @@ void bookmarkIsPropagatedBetweenTransactions() { when(connection.protocol()).thenReturn(protocol); - UnmanagedTransaction tx1 = beginTransaction(session); + var tx1 = beginTransaction(session); await(tx1.commitAsync()); assertEquals(Collections.singleton(bookmark1), session.lastBookmarks()); - UnmanagedTransaction tx2 = beginTransaction(session); + var tx2 = beginTransaction(session); verifyBeginTx(connection, 2); await(tx2.commitAsync()); @@ -305,29 +302,29 @@ void accessModeUsedToAcquireWriteConnections() { } private void accessModeUsedToAcquireConnections(AccessMode mode) { - NetworkSession session2 = newSession(connectionProvider, mode); + var session2 = newSession(connectionProvider, mode); beginTransaction(session2); - ArgumentCaptor argument = ArgumentCaptor.forClass(ConnectionContext.class); + var argument = ArgumentCaptor.forClass(ConnectionContext.class); verify(connectionProvider).acquireConnection(argument.capture()); assertEquals(mode, argument.getValue().mode()); } @Test void testPassingNoBookmarkShouldRetainBookmark() { - Set bookmarks = Collections.singleton(InternalBookmark.parse("X")); - NetworkSession session = newSession(connectionProvider, bookmarks); + var bookmarks = Collections.singleton(InternalBookmark.parse("X")); + var session = newSession(connectionProvider, bookmarks); beginTransaction(session); assertThat(session.lastBookmarks(), equalTo(bookmarks)); } @Test void connectionShouldBeResetAfterSessionReset() { - String query = "RETURN 1"; + var query = "RETURN 1"; setupSuccessfulRunAndPull(connection, query); run(session, query); - InOrder connectionInOrder = inOrder(connection); + var connectionInOrder = inOrder(connection); connectionInOrder.verify(connection, never()).reset(null); connectionInOrder.verify(connection).release(); @@ -343,10 +340,10 @@ void shouldHaveEmptyLastBookmarksInitially() { @Test void shouldDoNothingWhenClosingWithoutAcquiredConnection() { - RuntimeException error = new RuntimeException("Hi"); + var error = new RuntimeException("Hi"); when(connectionProvider.acquireConnection(any(ConnectionContext.class))).thenReturn(failedFuture(error)); - Exception e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); + var e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); assertEquals(error, e); close(session); @@ -354,7 +351,7 @@ void shouldDoNothingWhenClosingWithoutAcquiredConnection() { @Test void shouldRunAfterRunFailure() { - RuntimeException error = new RuntimeException("Hi"); + var error = new RuntimeException("Hi"); when(connectionProvider.acquireConnection(any(ConnectionContext.class))) .thenReturn(failedFuture(error)) .thenAnswer(invocation -> { @@ -363,11 +360,11 @@ void shouldRunAfterRunFailure() { return completedFuture(connection); }); - Exception e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); + var e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); assertEquals(error, e); - String query = "RETURN 2"; + var query = "RETURN 2"; setupSuccessfulRunAndPull(connection, query); run(session, query); @@ -378,10 +375,10 @@ void shouldRunAfterRunFailure() { @Test void shouldRunAfterBeginTxFailureOnBookmark() { - RuntimeException error = new RuntimeException("Hi"); - Connection connection1 = connectionMock(BoltProtocolV4.INSTANCE); + var error = new RuntimeException("Hi"); + var connection1 = connectionMock(BoltProtocolV4.INSTANCE); setupFailingBegin(connection1, error); - Connection connection2 = connectionMock(BoltProtocolV4.INSTANCE); + var connection2 = connectionMock(BoltProtocolV4.INSTANCE); when(connectionProvider.acquireConnection(any(ConnectionContext.class))) .thenAnswer(invocation -> { @@ -395,12 +392,12 @@ void shouldRunAfterBeginTxFailureOnBookmark() { return completedFuture(connection2); }); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); - NetworkSession session = newSession(connectionProvider, bookmarks); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); + var session = newSession(connectionProvider, bookmarks); - Exception e = assertThrows(Exception.class, () -> beginTransaction(session)); + var e = assertThrows(Exception.class, () -> beginTransaction(session)); assertEquals(error, e); - String query = "RETURN 2"; + var query = "RETURN 2"; setupSuccessfulRunAndPull(connection2, query); run(session, query); @@ -412,10 +409,10 @@ void shouldRunAfterBeginTxFailureOnBookmark() { @Test void shouldBeginTxAfterBeginTxFailureOnBookmark() { - RuntimeException error = new RuntimeException("Hi"); - Connection connection1 = connectionMock(BoltProtocolV4.INSTANCE); + var error = new RuntimeException("Hi"); + var connection1 = connectionMock(BoltProtocolV4.INSTANCE); setupFailingBegin(connection1, error); - Connection connection2 = connectionMock(BoltProtocolV4.INSTANCE); + var connection2 = connectionMock(BoltProtocolV4.INSTANCE); when(connectionProvider.acquireConnection(any(ConnectionContext.class))) .thenAnswer(invocation -> { @@ -429,10 +426,10 @@ void shouldBeginTxAfterBeginTxFailureOnBookmark() { return completedFuture(connection2); }); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); - NetworkSession session = newSession(connectionProvider, bookmarks); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); + var session = newSession(connectionProvider, bookmarks); - Exception e = assertThrows(Exception.class, () -> beginTransaction(session)); + var e = assertThrows(Exception.class, () -> beginTransaction(session)); assertEquals(error, e); beginTransaction(session); @@ -444,7 +441,7 @@ void shouldBeginTxAfterBeginTxFailureOnBookmark() { @Test void shouldBeginTxAfterRunFailureToAcquireConnection() { - RuntimeException error = new RuntimeException("Hi"); + var error = new RuntimeException("Hi"); when(connectionProvider.acquireConnection(any(ConnectionContext.class))) .thenReturn(failedFuture(error)) .thenAnswer(invocation -> { @@ -453,7 +450,7 @@ void shouldBeginTxAfterRunFailureToAcquireConnection() { return completedFuture(connection); }); - Exception e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); + var e = assertThrows(Exception.class, () -> run(session, "RETURN 1")); assertEquals(error, e); beginTransaction(session); @@ -464,7 +461,7 @@ void shouldBeginTxAfterRunFailureToAcquireConnection() { @Test void shouldMarkTransactionAsTerminatedAndThenResetConnectionOnReset() { - UnmanagedTransaction tx = beginTransaction(session); + var tx = beginTransaction(session); assertTrue(tx.isOpen()); verify(connection, never()).reset(null); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/ResultCursorsHolderTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/ResultCursorsHolderTest.java index cd640604a3..d613925f16 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/ResultCursorsHolderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/ResultCursorsHolderTest.java @@ -39,65 +39,65 @@ class ResultCursorsHolderTest { @Test void shouldReturnNoErrorWhenNoCursorStages() { - ResultCursorsHolder holder = new ResultCursorsHolder(); + var holder = new ResultCursorsHolder(); - Throwable error = await(holder.retrieveNotConsumedError()); + var error = await(holder.retrieveNotConsumedError()); assertNull(error); } @Test void shouldFailToAddNullCursorStage() { - ResultCursorsHolder holder = new ResultCursorsHolder(); + var holder = new ResultCursorsHolder(); assertThrows(NullPointerException.class, () -> holder.add(null)); } @Test void shouldReturnNoErrorWhenCursorStagesHaveNoErrors() { - ResultCursorsHolder holder = new ResultCursorsHolder(); + var holder = new ResultCursorsHolder(); holder.add(cursorWithoutError()); holder.add(cursorWithoutError()); holder.add(cursorWithoutError()); holder.add(cursorWithoutError()); - Throwable error = await(holder.retrieveNotConsumedError()); + var error = await(holder.retrieveNotConsumedError()); assertNull(error); } @Test void shouldNotReturnStageErrors() { - ResultCursorsHolder holder = new ResultCursorsHolder(); + var holder = new ResultCursorsHolder(); holder.add(Futures.failedFuture(new RuntimeException("Failed to acquire a connection"))); holder.add(cursorWithoutError()); holder.add(cursorWithoutError()); holder.add(Futures.failedFuture(new IOException("Failed to do IO"))); - Throwable error = await(holder.retrieveNotConsumedError()); + var error = await(holder.retrieveNotConsumedError()); assertNull(error); } @Test void shouldReturnErrorWhenOneCursorFailed() { - IOException error = new IOException("IO failed"); - ResultCursorsHolder holder = new ResultCursorsHolder(); + var error = new IOException("IO failed"); + var holder = new ResultCursorsHolder(); holder.add(cursorWithoutError()); holder.add(cursorWithoutError()); holder.add(cursorWithError(error)); holder.add(cursorWithoutError()); - Throwable retrievedError = await(holder.retrieveNotConsumedError()); + var retrievedError = await(holder.retrieveNotConsumedError()); assertEquals(error, retrievedError); } @Test void shouldReturnFirstError() { - RuntimeException error1 = new RuntimeException("Error 1"); - IOException error2 = new IOException("Error 2"); - TimeoutException error3 = new TimeoutException("Error 3"); - ResultCursorsHolder holder = new ResultCursorsHolder(); + var error1 = new RuntimeException("Error 1"); + var error2 = new IOException("Error 2"); + var error3 = new TimeoutException("Error 3"); + var holder = new ResultCursorsHolder(); holder.add(cursorWithoutError()); holder.add(cursorWithError(error1)); @@ -109,16 +109,15 @@ void shouldReturnFirstError() { @Test void shouldWaitForAllFailuresToArrive() { - RuntimeException error1 = new RuntimeException("Error 1"); - CompletableFuture error2Future = new CompletableFuture<>(); - ResultCursorsHolder holder = new ResultCursorsHolder(); + var error1 = new RuntimeException("Error 1"); + var error2Future = new CompletableFuture(); + var holder = new ResultCursorsHolder(); holder.add(cursorWithoutError()); holder.add(cursorWithError(error1)); holder.add(cursorWithFailureFuture(error2Future)); - CompletableFuture failureFuture = - holder.retrieveNotConsumedError().toCompletableFuture(); + var failureFuture = holder.retrieveNotConsumedError().toCompletableFuture(); assertFalse(failureFuture.isDone()); error2Future.complete(null); @@ -136,7 +135,7 @@ private static CompletionStage cursorWithError(Throwable } private static CompletionStage cursorWithFailureFuture(CompletableFuture future) { - AsyncResultCursorImpl cursor = mock(AsyncResultCursorImpl.class); + var cursor = mock(AsyncResultCursorImpl.class); when(cursor.discardAllFailureAsync()).thenReturn(future); return completedFuture(cursor); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java index 25c1c05c90..9d4eb45083 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java @@ -67,7 +67,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.InOrder; import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; @@ -89,8 +88,8 @@ class UnmanagedTransactionTest { @Test void shouldFlushOnRunAsync() { // Given - Connection connection = connectionMock(BoltProtocolV4.INSTANCE); - UnmanagedTransaction tx = beginTx(connection); + var connection = connectionMock(BoltProtocolV4.INSTANCE); + var tx = beginTx(connection); setupSuccessfulRunAndPull(connection); // When @@ -103,8 +102,8 @@ void shouldFlushOnRunAsync() { @Test void shouldFlushOnRunRx() { // Given - Connection connection = connectionMock(BoltProtocolV4.INSTANCE); - UnmanagedTransaction tx = beginTx(connection); + var connection = connectionMock(BoltProtocolV4.INSTANCE); + var tx = beginTx(connection); setupSuccessfulRunRx(connection); // When @@ -117,14 +116,14 @@ void shouldFlushOnRunRx() { @Test void shouldRollbackOnImplicitFailure() { // Given - Connection connection = connectionMock(); - UnmanagedTransaction tx = beginTx(connection); + var connection = connectionMock(); + var tx = beginTx(connection); // When await(tx.closeAsync()); // Then - InOrder order = inOrder(connection); + var order = inOrder(connection); verifyBeginTx(connection); verifyRollbackTx(connection); order.verify(connection).release(); @@ -132,7 +131,7 @@ void shouldRollbackOnImplicitFailure() { @Test void shouldOnlyQueueMessagesWhenNoBookmarkGiven() { - Connection connection = connectionMock(); + var connection = connectionMock(); beginTx(connection, Collections.emptySet()); @@ -141,8 +140,8 @@ void shouldOnlyQueueMessagesWhenNoBookmarkGiven() { @Test void shouldFlushWhenBookmarkGiven() { - Set bookmarks = Collections.singleton(InternalBookmark.parse("hi, I'm bookmark")); - Connection connection = connectionMock(); + var bookmarks = Collections.singleton(InternalBookmark.parse("hi, I'm bookmark")); + var connection = connectionMock(); beginTx(connection, bookmarks); @@ -151,7 +150,7 @@ void shouldFlushWhenBookmarkGiven() { @Test void shouldBeOpenAfterConstruction() { - UnmanagedTransaction tx = beginTx(connectionMock()); + var tx = beginTx(connectionMock()); assertTrue(tx.isOpen()); } @@ -177,15 +176,14 @@ void shouldBeClosedWhenMarkedTerminatedAndClosed() { @Test void shouldReleaseConnectionWhenBeginFails() { - RuntimeException error = new RuntimeException("Wrong bookmark!"); - Connection connection = connectionWithBegin(handler -> handler.onFailure(error)); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var error = new RuntimeException("Wrong bookmark!"); + var connection = connectionWithBegin(handler -> handler.onFailure(error)); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - Set bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); - TransactionConfig txConfig = TransactionConfig.empty(); + var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); + var txConfig = TransactionConfig.empty(); - RuntimeException e = - assertThrows(RuntimeException.class, () -> await(tx.beginAsync(bookmarks, txConfig, null))); + var e = assertThrows(RuntimeException.class, () -> await(tx.beginAsync(bookmarks, txConfig, null))); assertEquals(error, e); verify(connection).release(); @@ -193,11 +191,11 @@ void shouldReleaseConnectionWhenBeginFails() { @Test void shouldNotReleaseConnectionWhenBeginSucceeds() { - Connection connection = connectionWithBegin(handler -> handler.onSuccess(emptyMap())); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var connection = connectionWithBegin(handler -> handler.onSuccess(emptyMap())); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - Set bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); - TransactionConfig txConfig = TransactionConfig.empty(); + var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); + var txConfig = TransactionConfig.empty(); await(tx.beginAsync(bookmarks, txConfig, null)); @@ -244,7 +242,7 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseDifferentFromCursorFail assertNoCircularReferences(e); assertEquals(1, e.getSuppressed().length); - Throwable suppressed = e.getSuppressed()[0]; + var suppressed = e.getSuppressed()[0]; assertEquals(terminationCause, suppressed.getCause()); } @@ -275,8 +273,8 @@ void shouldReleaseConnectionWhenTerminatedAndRolledBack() { @Test void shouldReleaseConnectionWhenClose() { - Connection connection = connectionMock(); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var connection = connectionMock(); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); await(tx.closeAsync()); @@ -285,13 +283,13 @@ void shouldReleaseConnectionWhenClose() { @Test void shouldReleaseConnectionOnConnectionAuthorizationExpiredExceptionFailure() { - AuthorizationExpiredException exception = new AuthorizationExpiredException("code", "message"); - Connection connection = connectionWithBegin(handler -> handler.onFailure(exception)); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - Set bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); - TransactionConfig txConfig = TransactionConfig.empty(); + var exception = new AuthorizationExpiredException("code", "message"); + var connection = connectionWithBegin(handler -> handler.onFailure(exception)); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); + var txConfig = TransactionConfig.empty(); - AuthorizationExpiredException actualException = assertThrows( + var actualException = assertThrows( AuthorizationExpiredException.class, () -> await(tx.beginAsync(bookmarks, txConfig, null))); assertSame(exception, actualException); @@ -301,13 +299,12 @@ void shouldReleaseConnectionOnConnectionAuthorizationExpiredExceptionFailure() { @Test void shouldReleaseConnectionOnConnectionReadTimeoutExceptionFailure() { - Connection connection = - connectionWithBegin(handler -> handler.onFailure(ConnectionReadTimeoutException.INSTANCE)); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - Set bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); - TransactionConfig txConfig = TransactionConfig.empty(); + var connection = connectionWithBegin(handler -> handler.onFailure(ConnectionReadTimeoutException.INSTANCE)); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); + var txConfig = TransactionConfig.empty(); - ConnectionReadTimeoutException actualException = assertThrows( + var actualException = assertThrows( ConnectionReadTimeoutException.class, () -> await(tx.beginAsync(bookmarks, txConfig, null))); assertSame(ConnectionReadTimeoutException.INSTANCE, actualException); @@ -328,17 +325,15 @@ private static Stream similarTransactionCompletingActionArgs() { @MethodSource("similarTransactionCompletingActionArgs") void shouldReturnExistingStageOnSimilarCompletingAction( boolean protocolCommit, String initialAction, String similarAction) { - Connection connection = mock(Connection.class); - BoltProtocol protocol = mock(BoltProtocol.class); + var connection = mock(Connection.class); + var protocol = mock(BoltProtocol.class); given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(new CompletableFuture<>()); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - CompletionStage initialStage = - mapTransactionAction(initialAction, tx).get(); - CompletionStage similarStage = - mapTransactionAction(similarAction, tx).get(); + var initialStage = mapTransactionAction(initialAction, tx).get(); + var similarStage = mapTransactionAction(similarAction, tx).get(); assertSame(initialStage, similarStage); if (protocolCommit) { @@ -370,17 +365,15 @@ void shouldReturnFailingStageOnConflictingCompletingAction( String initialAction, String conflictingAction, String expectedErrorMsg) { - Connection connection = mock(Connection.class); - BoltProtocol protocol = mock(BoltProtocol.class); + var connection = mock(Connection.class); + var protocol = mock(BoltProtocol.class); given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(protocolActionCompleted ? completedFuture(null) : new CompletableFuture<>()); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - CompletionStage originalActionStage = - mapTransactionAction(initialAction, tx).get(); - CompletionStage conflictingActionStage = - mapTransactionAction(conflictingAction, tx).get(); + var originalActionStage = mapTransactionAction(initialAction, tx).get(); + var conflictingActionStage = mapTransactionAction(conflictingAction, tx).get(); assertNotNull(originalActionStage); if (protocolCommit) { @@ -389,7 +382,7 @@ void shouldReturnFailingStageOnConflictingCompletingAction( then(protocol).should(times(1)).rollbackTransaction(connection); } assertTrue(conflictingActionStage.toCompletableFuture().isCompletedExceptionally()); - Throwable throwable = assertThrows( + var throwable = assertThrows( ExecutionException.class, () -> conflictingActionStage.toCompletableFuture().get()) .getCause(); @@ -413,16 +406,15 @@ private static Stream closingNotActionTransactionArgs() { @MethodSource("closingNotActionTransactionArgs") void shouldReturnCompletedWithNullStageOnClosingInactiveTransactionExceptCommittingAborted( boolean protocolCommit, int expectedProtocolInvocations, String originalAction, Boolean commitOnClose) { - Connection connection = mock(Connection.class); - BoltProtocol protocol = mock(BoltProtocol.class); + var connection = mock(Connection.class); + var protocol = mock(BoltProtocol.class); given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(completedFuture(null)); - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); - CompletionStage originalActionStage = - mapTransactionAction(originalAction, tx).get(); - CompletionStage closeStage = commitOnClose != null ? tx.closeAsync(commitOnClose) : tx.closeAsync(); + var originalActionStage = mapTransactionAction(originalAction, tx).get(); + var closeStage = commitOnClose != null ? tx.closeAsync(commitOnClose) : tx.closeAsync(); assertTrue(originalActionStage.toCompletableFuture().isDone()); assertFalse(originalActionStage.toCompletableFuture().isCompletedExceptionally()); @@ -450,12 +442,12 @@ void shouldTerminateOnTerminateAsync() { @Test void shouldServeTheSameStageOnTerminateAsync() { // Given - Connection connection = connectionMock(BoltProtocolV4.INSTANCE); - UnmanagedTransaction tx = beginTx(connection); + var connection = connectionMock(BoltProtocolV4.INSTANCE); + var tx = beginTx(connection); // When - CompletionStage stage0 = tx.terminateAsync(); - CompletionStage stage1 = tx.terminateAsync(); + var stage0 = tx.terminateAsync(); + var stage1 = tx.terminateAsync(); // Then assertEquals(stage0, stage1); @@ -557,12 +549,12 @@ private static UnmanagedTransaction beginTx(Connection connection) { } private static UnmanagedTransaction beginTx(Connection connection, Set initialBookmarks) { - UnmanagedTransaction tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); return await(tx.beginAsync(initialBookmarks, TransactionConfig.empty(), null)); } private static Connection connectionWithBegin(Consumer beginBehaviour) { - Connection connection = connectionMock(); + var connection = connectionMock(); doAnswer(invocation -> { ResponseHandler beginHandler = invocation.getArgument(1); @@ -576,8 +568,8 @@ private static Connection connectionWithBegin(Consumer beginBeh } private ResultCursorsHolder mockResultCursorWith(ClientException clientException) { - ResultCursorsHolder resultCursorsHolder = new ResultCursorsHolder(); - FailableCursor cursor = mock(FailableCursor.class); + var resultCursorsHolder = new ResultCursorsHolder(); + var cursor = mock(FailableCursor.class); doReturn(completedFuture(clientException)).when(cursor).discardAllFailureAsync(); resultCursorsHolder.add(completedFuture(cursor)); return resultCursorsHolder; diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/BoltProtocolUtilTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/BoltProtocolUtilTest.java index 09e7655c34..2c2f199a2c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/BoltProtocolUtilTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/BoltProtocolUtilTest.java @@ -27,7 +27,6 @@ import static org.neo4j.driver.internal.async.connection.BoltProtocolUtil.writeMessageBoundary; import static org.neo4j.driver.testutil.TestUtil.assertByteBufContains; -import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import org.junit.jupiter.api.Test; import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3; @@ -54,7 +53,7 @@ void shouldReturnHandshakeString() { @Test void shouldWriteMessageBoundary() { - ByteBuf buf = Unpooled.buffer(); + var buf = Unpooled.buffer(); buf.writeInt(1); buf.writeInt(2); @@ -66,7 +65,7 @@ void shouldWriteMessageBoundary() { @Test void shouldWriteEmptyChunkHeader() { - ByteBuf buf = Unpooled.buffer(); + var buf = Unpooled.buffer(); writeEmptyChunkHeader(buf); buf.writeInt(1); @@ -78,7 +77,7 @@ void shouldWriteEmptyChunkHeader() { @Test void shouldWriteChunkHeader() { - ByteBuf buf = Unpooled.buffer(); + var buf = Unpooled.buffer(); writeEmptyChunkHeader(buf); buf.writeInt(1); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelAttributesTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelAttributesTest.java index fad2eae9bb..67de5ad208 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelAttributesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelAttributesTest.java @@ -83,14 +83,14 @@ void shouldFailToSetProtocolVersionTwice() { @Test void shouldSetAndGetServerAgent() { - String agent = "Neo4j/4.2.5"; + var agent = "Neo4j/4.2.5"; setServerAgent(channel, agent); assertEquals(agent, serverAgent(channel)); } @Test void shouldFailToSetServerAgentTwice() { - String agent = "Neo4j/4.2.5"; + var agent = "Neo4j/4.2.5"; setServerAgent(channel, agent); assertThrows(IllegalStateException.class, () -> setServerAgent(channel, agent)); @@ -98,7 +98,7 @@ void shouldFailToSetServerAgentTwice() { @Test void shouldSetAndGetAddress() { - BoltServerAddress address = new BoltServerAddress("local:42"); + var address = new BoltServerAddress("local:42"); setServerAddress(channel, address); assertEquals(address, serverAddress(channel)); } @@ -141,7 +141,7 @@ void shouldAllowSettingLastUsedTimestampMultipleTimes() { @Test void shouldSetAndGetMessageDispatcher() { - InboundMessageDispatcher dispatcher = mock(InboundMessageDispatcher.class); + var dispatcher = mock(InboundMessageDispatcher.class); setMessageDispatcher(channel, dispatcher); assertEquals(dispatcher, messageDispatcher(channel)); } @@ -156,7 +156,7 @@ void shouldFailToSetMessageDispatcherTwice() { @Test void shouldSetAndGetTerminationReason() { - String reason = "This channel has been terminated"; + var reason = "This channel has been terminated"; setTerminationReason(channel, reason); assertEquals(reason, terminationReason(channel)); } @@ -170,31 +170,31 @@ void shouldFailToSetTerminationReasonTwice() { @Test void shouldSetAndGetAuthorizationStateListener() { - AuthorizationStateListener listener = mock(AuthorizationStateListener.class); + var listener = mock(AuthorizationStateListener.class); setAuthorizationStateListener(channel, listener); assertEquals(listener, authorizationStateListener(channel)); } @Test void shouldAllowOverridingAuthorizationStateListener() { - AuthorizationStateListener listener = mock(AuthorizationStateListener.class); + var listener = mock(AuthorizationStateListener.class); setAuthorizationStateListener(channel, listener); assertEquals(listener, authorizationStateListener(channel)); - AuthorizationStateListener newListener = mock(AuthorizationStateListener.class); + var newListener = mock(AuthorizationStateListener.class); setAuthorizationStateListener(channel, newListener); assertEquals(newListener, authorizationStateListener(channel)); } @Test void shouldSetAndGetConnectionReadTimeout() { - long timeout = 15L; + var timeout = 15L; setConnectionReadTimeout(channel, timeout); assertEquals(timeout, connectionReadTimeout(channel).orElse(null)); } @Test void shouldFailToSetConnectionReadTimeoutTwice() { - long timeout = 15L; + var timeout = 15L; setConnectionReadTimeout(channel, timeout); assertThrows(IllegalStateException.class, () -> setConnectionReadTimeout(channel, timeout)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelConnectedListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelConnectedListenerTest.java index 1b090e1dca..17cfa145cb 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelConnectedListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelConnectedListenerTest.java @@ -44,26 +44,25 @@ void tearDown() { @Test void shouldFailPromiseWhenChannelConnectionFails() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - ChannelConnectedListener listener = newListener(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var listener = newListener(handshakeCompletedPromise); - ChannelPromise channelConnectedPromise = channel.newPromise(); - IOException cause = new IOException("Unable to connect!"); + var channelConnectedPromise = channel.newPromise(); + var cause = new IOException("Unable to connect!"); channelConnectedPromise.setFailure(cause); listener.operationComplete(channelConnectedPromise); - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(cause, error.getCause()); } @Test void shouldWriteHandshakeWhenChannelConnected() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - ChannelConnectedListener listener = newListener(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var listener = newListener(handshakeCompletedPromise); - ChannelPromise channelConnectedPromise = channel.newPromise(); + var channelConnectedPromise = channel.newPromise(); channelConnectedPromise.setSuccess(); listener.operationComplete(channelConnectedPromise); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelErrorHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelErrorHandlerTest.java index 04f51e1d65..bdcbbcca5a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelErrorHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelErrorHandlerTest.java @@ -61,7 +61,7 @@ void tearDown() { void shouldHandleChannelInactive() { channel.pipeline().fireChannelInactive(); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertThat(error, instanceOf(ServiceUnavailableException.class)); assertThat(error.getMessage(), startsWith("Connection to the database terminated")); @@ -70,11 +70,11 @@ void shouldHandleChannelInactive() { @Test void shouldHandleChannelInactiveAfterExceptionCaught() { - RuntimeException originalError = new RuntimeException("Hi!"); + var originalError = new RuntimeException("Hi!"); channel.pipeline().fireExceptionCaught(originalError); channel.pipeline().fireChannelInactive(); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertEquals(originalError, error); assertFalse(channel.isOpen()); @@ -82,12 +82,12 @@ void shouldHandleChannelInactiveAfterExceptionCaught() { @Test void shouldHandleChannelInactiveWhenTerminationReasonSet() { - String terminationReason = "Something really bad happened"; + var terminationReason = "Something really bad happened"; setTerminationReason(channel, terminationReason); channel.pipeline().fireChannelInactive(); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertThat(error, instanceOf(ServiceUnavailableException.class)); assertThat(error.getMessage(), startsWith("Connection to the database terminated")); @@ -97,11 +97,11 @@ void shouldHandleChannelInactiveWhenTerminationReasonSet() { @Test void shouldHandleCodecException() { - RuntimeException cause = new RuntimeException("Hi!"); - CodecException codecException = new CodecException("Unable to encode or decode message", cause); + var cause = new RuntimeException("Hi!"); + var codecException = new CodecException("Unable to encode or decode message", cause); channel.pipeline().fireExceptionCaught(codecException); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertEquals(cause, error); assertFalse(channel.isOpen()); @@ -109,10 +109,10 @@ void shouldHandleCodecException() { @Test void shouldHandleCodecExceptionWithoutCause() { - CodecException codecException = new CodecException("Unable to encode or decode message"); + var codecException = new CodecException("Unable to encode or decode message"); channel.pipeline().fireExceptionCaught(codecException); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertEquals(codecException, error); assertFalse(channel.isOpen()); @@ -120,10 +120,10 @@ void shouldHandleCodecExceptionWithoutCause() { @Test void shouldHandleIOException() { - IOException ioException = new IOException("Write or read failed"); + var ioException = new IOException("Write or read failed"); channel.pipeline().fireExceptionCaught(ioException); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertThat(error, instanceOf(ServiceUnavailableException.class)); assertEquals(ioException, error.getCause()); @@ -132,10 +132,10 @@ void shouldHandleIOException() { @Test void shouldHandleException() { - RuntimeException originalError = new RuntimeException("Random failure"); + var originalError = new RuntimeException("Random failure"); channel.pipeline().fireExceptionCaught(originalError); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertEquals(originalError, error); assertFalse(channel.isOpen()); @@ -143,13 +143,13 @@ void shouldHandleException() { @Test void shouldHandleMultipleExceptions() { - RuntimeException error1 = new RuntimeException("Failure 1"); - RuntimeException error2 = new RuntimeException("Failure 2"); + var error1 = new RuntimeException("Failure 1"); + var error2 = new RuntimeException("Failure 2"); channel.pipeline().fireExceptionCaught(error1); channel.pipeline().fireExceptionCaught(error2); - Throwable error = messageDispatcher.currentError(); + var error = messageDispatcher.currentError(); assertEquals(error1, error); assertFalse(channel.isOpen()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelPipelineBuilderImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelPipelineBuilderImplTest.java index 6296f9a6b0..ee33096c58 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelPipelineBuilderImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/ChannelPipelineBuilderImplTest.java @@ -23,10 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; -import io.netty.channel.ChannelHandler; import io.netty.channel.embedded.EmbeddedChannel; -import java.util.Iterator; -import java.util.Map; import org.junit.jupiter.api.Test; import org.neo4j.driver.internal.async.inbound.ChannelErrorHandler; import org.neo4j.driver.internal.async.inbound.ChunkDecoder; @@ -39,13 +36,12 @@ class ChannelPipelineBuilderImplTest { @Test void shouldBuildPipeline() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); ChannelAttributes.setMessageDispatcher(channel, new InboundMessageDispatcher(channel, DEV_NULL_LOGGING)); new ChannelPipelineBuilderImpl().build(new MessageFormatV3(), channel.pipeline(), DEV_NULL_LOGGING); - Iterator> iterator = - channel.pipeline().iterator(); + var iterator = channel.pipeline().iterator(); assertThat(iterator.next().getValue(), instanceOf(ChunkDecoder.class)); assertThat(iterator.next().getValue(), instanceOf(MessageDecoder.class)); assertThat(iterator.next().getValue(), instanceOf(InboundMessageHandler.class)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/DecoratedConnectionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/DecoratedConnectionTest.java index 313e7ad465..d13b879ba4 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/DecoratedConnectionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/DecoratedConnectionTest.java @@ -42,10 +42,10 @@ class DecoratedConnectionTest { @ParameterizedTest @ValueSource(strings = {"true", "false"}) void shouldDelegateIsOpen(String open) { - Connection mockConnection = mock(Connection.class); + var mockConnection = mock(Connection.class); when(mockConnection.isOpen()).thenReturn(Boolean.valueOf(open)); - DirectConnection connection = newConnection(mockConnection); + var connection = newConnection(mockConnection); assertEquals(Boolean.valueOf(open).booleanValue(), connection.isOpen()); verify(mockConnection).isOpen(); @@ -53,8 +53,8 @@ void shouldDelegateIsOpen(String open) { @Test void shouldDelegateEnableAutoRead() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); connection.enableAutoRead(); @@ -63,8 +63,8 @@ void shouldDelegateEnableAutoRead() { @Test void shouldDelegateDisableAutoRead() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); connection.disableAutoRead(); @@ -73,11 +73,11 @@ void shouldDelegateDisableAutoRead() { @Test void shouldDelegateWrite() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); - Message message = mock(Message.class); - ResponseHandler handler = mock(ResponseHandler.class); + var message = mock(Message.class); + var handler = mock(ResponseHandler.class); connection.write(message, handler); @@ -86,11 +86,11 @@ void shouldDelegateWrite() { @Test void shouldDelegateWriteAndFlush() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); - Message message = mock(Message.class); - ResponseHandler handler = mock(ResponseHandler.class); + var message = mock(Message.class); + var handler = mock(ResponseHandler.class); connection.writeAndFlush(message, handler); @@ -99,8 +99,8 @@ void shouldDelegateWriteAndFlush() { @Test void shouldDelegateReset() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); connection.reset(null); @@ -109,8 +109,8 @@ void shouldDelegateReset() { @Test void shouldDelegateRelease() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); connection.release(); @@ -119,8 +119,8 @@ void shouldDelegateRelease() { @Test void shouldDelegateTerminateAndRelease() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); connection.terminateAndRelease("a reason"); @@ -129,10 +129,10 @@ void shouldDelegateTerminateAndRelease() { @Test void shouldDelegateServerAddress() { - BoltServerAddress address = BoltServerAddress.from(ServerAddress.of("localhost", 9999)); - Connection mockConnection = mock(Connection.class); + var address = BoltServerAddress.from(ServerAddress.of("localhost", 9999)); + var mockConnection = mock(Connection.class); when(mockConnection.serverAddress()).thenReturn(address); - DirectConnection connection = newConnection(mockConnection); + var connection = newConnection(mockConnection); assertSame(address, connection.serverAddress()); verify(mockConnection).serverAddress(); @@ -140,10 +140,10 @@ void shouldDelegateServerAddress() { @Test void shouldDelegateProtocol() { - BoltProtocol protocol = mock(BoltProtocol.class); - Connection mockConnection = mock(Connection.class); + var protocol = mock(BoltProtocol.class); + var mockConnection = mock(Connection.class); when(mockConnection.protocol()).thenReturn(protocol); - DirectConnection connection = newConnection(mockConnection); + var connection = newConnection(mockConnection); assertSame(protocol, connection.protocol()); verify(mockConnection).protocol(); @@ -152,15 +152,15 @@ void shouldDelegateProtocol() { @ParameterizedTest @EnumSource(AccessMode.class) void shouldReturnModeFromConstructor(AccessMode mode) { - DirectConnection connection = new DirectConnection(mock(Connection.class), defaultDatabase(), mode, null); + var connection = new DirectConnection(mock(Connection.class), defaultDatabase(), mode, null); assertEquals(mode, connection.mode()); } @Test void shouldReturnConnection() { - Connection mockConnection = mock(Connection.class); - DirectConnection connection = newConnection(mockConnection); + var mockConnection = mock(Connection.class); + var connection = newConnection(mockConnection); assertSame(mockConnection, connection.connection()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/DirectConnectionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/DirectConnectionTest.java index 9dc25116b0..447ec6fa40 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/DirectConnectionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/DirectConnectionTest.java @@ -32,13 +32,13 @@ public class DirectConnectionTest { @Test void shouldReturnServerAgent() { // given - Connection connection = mock(Connection.class); - DirectConnection directConnection = new DirectConnection(connection, defaultDatabase(), READ, null); - String agent = "Neo4j/4.2.5"; + var connection = mock(Connection.class); + var directConnection = new DirectConnection(connection, defaultDatabase(), READ, null); + var agent = "Neo4j/4.2.5"; given(connection.serverAgent()).willReturn(agent); // when - String actualAgent = directConnection.serverAgent(); + var actualAgent = directConnection.serverAgent(); // then assertEquals(agent, actualAgent); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java index b430e598ff..b1dbb5b1bf 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java @@ -32,7 +32,6 @@ import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.util.concurrent.Future; import java.util.concurrent.ExecutionException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -52,7 +51,7 @@ void shouldReturnCorrectChannelClass() { @Test void shouldCreateEventLoopGroupWithSpecifiedThreadCount() { - int threadCount = 2; + var threadCount = 2; eventLoopGroup = EventLoopGroupFactory.newEventLoopGroup(threadCount); assertEquals(threadCount, count(eventLoopGroup)); assertThat(eventLoopGroup, instanceOf(NioEventLoopGroup.class)); @@ -66,9 +65,9 @@ void shouldAssertNotInEventLoopThread() throws Exception { EventLoopGroupFactory.assertNotInEventLoopThread(); // submit assertion to the event loop thread, it should fail there - Future assertFuture = eventLoopGroup.submit(EventLoopGroupFactory::assertNotInEventLoopThread); + var assertFuture = eventLoopGroup.submit(EventLoopGroupFactory::assertNotInEventLoopThread); - ExecutionException error = assertThrows(ExecutionException.class, () -> assertFuture.get(30, SECONDS)); + var error = assertThrows(ExecutionException.class, () -> assertFuture.get(30, SECONDS)); assertThat(error.getCause(), is(blockingOperationInEventLoopError())); } @@ -76,7 +75,7 @@ void shouldAssertNotInEventLoopThread() throws Exception { void shouldCheckIfEventLoopThread() throws Exception { eventLoopGroup = EventLoopGroupFactory.newEventLoopGroup(1); - Thread eventLoopThread = getThread(eventLoopGroup); + var eventLoopThread = getThread(eventLoopGroup); assertTrue(EventLoopGroupFactory.isEventLoopThread(eventLoopThread)); assertFalse(EventLoopGroupFactory.isEventLoopThread(Thread.currentThread())); @@ -88,11 +87,11 @@ void shouldCheckIfEventLoopThread() throws Exception { */ @Test void shouldUseSameThreadClassAsNioEventLoopGroupDoesByDefault() throws Exception { - NioEventLoopGroup nioEventLoopGroup = new NioEventLoopGroup(1); + var nioEventLoopGroup = new NioEventLoopGroup(1); eventLoopGroup = EventLoopGroupFactory.newEventLoopGroup(1); try { - Thread defaultThread = getThread(nioEventLoopGroup); - Thread driverThread = getThread(eventLoopGroup); + var defaultThread = getThread(nioEventLoopGroup); + var driverThread = getThread(eventLoopGroup); assertEquals(defaultThread.getClass(), driverThread.getClass().getSuperclass()); assertEquals(defaultThread.getPriority(), driverThread.getPriority()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java index 97e776eae1..f8f9dc4e8a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java @@ -33,7 +33,6 @@ import static org.neo4j.driver.internal.async.connection.ChannelAttributes.setProtocolVersion; import static org.neo4j.driver.testutil.TestUtil.await; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.io.IOException; import java.time.Clock; @@ -69,8 +68,8 @@ void tearDown() { @Test void shouldFailConnectionInitializedPromiseWhenHandshakeFails() { - ChannelPromise channelInitializedPromise = channel.newPromise(); - HandshakeCompletedListener listener = new HandshakeCompletedListener( + var channelInitializedPromise = channel.newPromise(); + var listener = new HandshakeCompletedListener( USER_AGENT, BoltAgentUtil.VALUE, RoutingContext.EMPTY, @@ -78,13 +77,13 @@ void shouldFailConnectionInitializedPromiseWhenHandshakeFails() { null, mock(Clock.class)); - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - IOException cause = new IOException("Bad handshake"); + var handshakeCompletedPromise = channel.newPromise(); + var cause = new IOException("Bad handshake"); handshakeCompletedPromise.setFailure(cause); listener.operationComplete(handshakeCompletedPromise); - Exception error = assertThrows(Exception.class, () -> await(channelInitializedPromise)); + var error = assertThrows(Exception.class, () -> await(channelInitializedPromise)); assertEquals(cause, error); } @@ -139,12 +138,12 @@ private void testWritingOfInitializationMessage( BoltProtocolVersion protocolVersion, Message expectedMessage, Class handlerType) { - InboundMessageDispatcher messageDispatcher = mock(InboundMessageDispatcher.class); + var messageDispatcher = mock(InboundMessageDispatcher.class); setProtocolVersion(channel, protocolVersion); setMessageDispatcher(channel, messageDispatcher); - ChannelPromise channelInitializedPromise = channel.newPromise(); - HandshakeCompletedListener listener = new HandshakeCompletedListener( + var channelInitializedPromise = channel.newPromise(); + var listener = new HandshakeCompletedListener( USER_AGENT, BoltAgentUtil.VALUE, RoutingContext.EMPTY, @@ -152,14 +151,14 @@ private void testWritingOfInitializationMessage( null, mock(Clock.class)); - ChannelPromise handshakeCompletedPromise = channel.newPromise(); + var handshakeCompletedPromise = channel.newPromise(); handshakeCompletedPromise.setSuccess(); listener.operationComplete(handshakeCompletedPromise); assertTrue(channel.finish()); verify(messageDispatcher).enqueue(any(handlerType)); - Object outboundMessage = channel.readOutbound(); + var outboundMessage = channel.readOutbound(); assertEquals(expectedMessage, outboundMessage); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeHandlerTest.java index e3ea065955..a14eabcaf9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeHandlerTest.java @@ -79,16 +79,15 @@ void tearDown() { @Test void shouldFailGivenPromiseWhenExceptionCaught() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - RuntimeException cause = new RuntimeException("Error!"); + var cause = new RuntimeException("Error!"); channel.pipeline().fireExceptionCaught(cause); // promise should fail - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(cause, error.getCause()); // channel should be closed @@ -97,16 +96,15 @@ void shouldFailGivenPromiseWhenExceptionCaught() { @Test void shouldFailGivenPromiseWhenServiceUnavailableExceptionCaught() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - ServiceUnavailableException error = new ServiceUnavailableException("Bad error"); + var error = new ServiceUnavailableException("Bad error"); channel.pipeline().fireExceptionCaught(error); // promise should fail - ServiceUnavailableException e = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var e = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(error, e); // channel should be closed @@ -115,39 +113,37 @@ void shouldFailGivenPromiseWhenServiceUnavailableExceptionCaught() { @Test void shouldFailGivenPromiseWhenMultipleExceptionsCaught() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - RuntimeException error1 = new RuntimeException("Error 1"); - RuntimeException error2 = new RuntimeException("Error 2"); + var error1 = new RuntimeException("Error 1"); + var error2 = new RuntimeException("Error 2"); channel.pipeline().fireExceptionCaught(error1); channel.pipeline().fireExceptionCaught(error2); // promise should fail - ServiceUnavailableException e1 = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var e1 = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(error1, e1.getCause()); // channel should be closed assertNull(await(channel.closeFuture())); - RuntimeException e2 = assertThrows(RuntimeException.class, channel::checkException); + var e2 = assertThrows(RuntimeException.class, channel::checkException); assertEquals(error2, e2); } @Test void shouldUnwrapDecoderException() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - IOException cause = new IOException("Error!"); + var cause = new IOException("Error!"); channel.pipeline().fireExceptionCaught(new DecoderException(cause)); // promise should fail - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(cause, error.getCause()); // channel should be closed @@ -156,15 +152,14 @@ void shouldUnwrapDecoderException() { @Test void shouldHandleDecoderExceptionWithoutCause() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - DecoderException decoderException = new DecoderException("Unable to decode a message"); + var decoderException = new DecoderException("Unable to decode a message"); channel.pipeline().fireExceptionCaught(decoderException); - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(decoderException, error.getCause()); // channel should be closed @@ -173,15 +168,15 @@ void shouldHandleDecoderExceptionWithoutCause() { @Test void shouldTranslateSSLHandshakeException() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); - SSLHandshakeException error = new SSLHandshakeException("Invalid certificate"); + var error = new SSLHandshakeException("Invalid certificate"); channel.pipeline().fireExceptionCaught(error); // promise should fail - SecurityException e = assertThrows(SecurityException.class, () -> await(handshakeCompletedPromise)); + var e = assertThrows(SecurityException.class, () -> await(handshakeCompletedPromise)); assertEquals(error, e.getCause()); // channel should be closed @@ -192,9 +187,9 @@ void shouldTranslateSSLHandshakeException() { @MethodSource("protocolVersions") public void testProtocolSelection( BoltProtocolVersion protocolVersion, Class expectedMessageFormatClass) { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - MemorizingChannelPipelineBuilder pipelineBuilder = new MemorizingChannelPipelineBuilder(); - HandshakeHandler handler = newHandler(pipelineBuilder, handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var pipelineBuilder = new MemorizingChannelPipelineBuilder(); + var handler = newHandler(pipelineBuilder, handshakeCompletedPromise); channel.pipeline().addLast(handler); channel.pipeline().fireChannelRead(copyInt(protocolVersion.toInt())); @@ -234,15 +229,14 @@ void shouldFailGivenPromiseWhenServerSuggestsUnknownProtocol() { @Test void shouldFailGivenPromiseWhenChannelInactive() { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); channel.pipeline().fireChannelInactive(); // promise should fail - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(ServiceUnavailableException.class, () -> await(handshakeCompletedPromise)); assertEquals(ErrorUtil.newConnectionTerminatedError().getMessage(), error.getMessage()); // channel should be closed @@ -250,8 +244,8 @@ void shouldFailGivenPromiseWhenChannelInactive() { } private void testFailure(BoltProtocolVersion serverSuggestedVersion, String expectedMessagePrefix) { - ChannelPromise handshakeCompletedPromise = channel.newPromise(); - HandshakeHandler handler = newHandler(handshakeCompletedPromise); + var handshakeCompletedPromise = channel.newPromise(); + var handler = newHandler(handshakeCompletedPromise); channel.pipeline().addLast(handler); channel.pipeline().fireChannelRead(copyInt(serverSuggestedVersion.toInt())); @@ -260,7 +254,7 @@ private void testFailure(BoltProtocolVersion serverSuggestedVersion, String expe assertNull(channel.pipeline().get(HandshakeHandler.class)); // promise should fail - Exception error = assertThrows(Exception.class, () -> await(handshakeCompletedPromise)); + var error = assertThrows(Exception.class, () -> await(handshakeCompletedPromise)); assertThat(error, instanceOf(ClientException.class)); assertThat(error.getMessage(), startsWith(expectedMessagePrefix)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/NettyChannelInitializerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/NettyChannelInitializerTest.java index 9c3b096b41..31b1f1deed 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/NettyChannelInitializerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/NettyChannelInitializerTest.java @@ -38,11 +38,7 @@ import io.netty.handler.ssl.SslHandler; import java.security.GeneralSecurityException; import java.time.Clock; -import java.util.List; import javax.net.ssl.SNIHostName; -import javax.net.ssl.SNIServerName; -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLParameters; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.neo4j.driver.AuthTokens; @@ -63,8 +59,8 @@ void tearDown() { @Test void shouldAddSslHandlerWhenRequiresEncryption() throws Exception { - SecurityPlan security = trustAllCertificates(); - NettyChannelInitializer initializer = newInitializer(security); + var security = trustAllCertificates(); + var initializer = newInitializer(security); initializer.initChannel(channel); @@ -73,8 +69,8 @@ void shouldAddSslHandlerWhenRequiresEncryption() throws Exception { @Test void shouldNotAddSslHandlerWhenDoesNotRequireEncryption() { - SecurityPlan security = SecurityPlanImpl.insecure(); - NettyChannelInitializer initializer = newInitializer(security); + var security = SecurityPlanImpl.insecure(); + var initializer = newInitializer(security); initializer.initChannel(channel); @@ -83,23 +79,23 @@ void shouldNotAddSslHandlerWhenDoesNotRequireEncryption() { @Test void shouldAddSslHandlerWithHandshakeTimeout() throws Exception { - int timeoutMillis = 424242; - SecurityPlan security = trustAllCertificates(); - NettyChannelInitializer initializer = newInitializer(security, timeoutMillis); + var timeoutMillis = 424242; + var security = trustAllCertificates(); + var initializer = newInitializer(security, timeoutMillis); initializer.initChannel(channel); - SslHandler sslHandler = channel.pipeline().get(SslHandler.class); + var sslHandler = channel.pipeline().get(SslHandler.class); assertNotNull(sslHandler); assertEquals(timeoutMillis, sslHandler.getHandshakeTimeoutMillis()); } @Test void shouldUpdateChannelAttributes() { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); when(clock.millis()).thenReturn(42L); - SecurityPlan security = SecurityPlanImpl.insecure(); - NettyChannelInitializer initializer = newInitializer(security, Integer.MAX_VALUE, clock); + var security = SecurityPlanImpl.insecure(); + var initializer = newInitializer(security, Integer.MAX_VALUE, clock); initializer.initChannel(channel); @@ -111,8 +107,8 @@ void shouldUpdateChannelAttributes() { @Test void shouldIncludeSniHostName() throws Exception { - BoltServerAddress address = new BoltServerAddress("database.neo4j.com", 8989); - NettyChannelInitializer initializer = new NettyChannelInitializer( + var address = new BoltServerAddress("database.neo4j.com", 8989); + var initializer = new NettyChannelInitializer( address, trustAllCertificates(), 10000, @@ -122,10 +118,10 @@ void shouldIncludeSniHostName() throws Exception { initializer.initChannel(channel); - SslHandler sslHandler = channel.pipeline().get(SslHandler.class); - SSLEngine sslEngine = sslHandler.engine(); - SSLParameters sslParameters = sslEngine.getSSLParameters(); - List sniServerNames = sslParameters.getServerNames(); + var sslHandler = channel.pipeline().get(SslHandler.class); + var sslEngine = sslHandler.engine(); + var sslParameters = sslEngine.getSSLParameters(); + var sniServerNames = sslParameters.getServerNames(); assertThat(sniServerNames, hasSize(1)); assertThat(sniServerNames.get(0), instanceOf(SNIHostName.class)); assertThat(((SNIHostName) sniServerNames.get(0)).getAsciiName(), equalTo(address.host())); @@ -142,14 +138,14 @@ void shouldNotEnableHostnameVerificationWhenNotConfigured() throws Exception { } private void testHostnameVerificationSetting(boolean enabled, String expectedValue) throws Exception { - NettyChannelInitializer initializer = + var initializer = newInitializer(SecurityPlanImpl.forAllCertificates(enabled, RevocationCheckingStrategy.NO_CHECKS)); initializer.initChannel(channel); - SslHandler sslHandler = channel.pipeline().get(SslHandler.class); - SSLEngine sslEngine = sslHandler.engine(); - SSLParameters sslParameters = sslEngine.getSSLParameters(); + var sslHandler = channel.pipeline().get(SslHandler.class); + var sslEngine = sslHandler.engine(); + var sslParameters = sslEngine.getSSLParameters(); assertEquals(expectedValue, sslParameters.getEndpointIdentificationAlgorithm()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/RoutingConnectionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/RoutingConnectionTest.java index 0efef85ce2..82c3fa049a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/RoutingConnectionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/RoutingConnectionTest.java @@ -51,15 +51,14 @@ void shouldWrapHandlersWhenWritingAndFlushingSingleMessage() { @Test void shouldReturnServerAgent() { // given - Connection connection = mock(Connection.class); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); - RoutingConnection routingConnection = - new RoutingConnection(connection, defaultDatabase(), READ, null, errorHandler); - String agent = "Neo4j/4.2.5"; + var connection = mock(Connection.class); + var errorHandler = mock(RoutingErrorHandler.class); + var routingConnection = new RoutingConnection(connection, defaultDatabase(), READ, null, errorHandler); + var agent = "Neo4j/4.2.5"; given(connection.serverAgent()).willReturn(agent); // when - String actualAgent = routingConnection.serverAgent(); + var actualAgent = routingConnection.serverAgent(); // then assertEquals(agent, actualAgent); @@ -67,10 +66,9 @@ void shouldReturnServerAgent() { } private static void testHandlersWrappingWithSingleMessage(boolean flush) { - Connection connection = mock(Connection.class); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); - RoutingConnection routingConnection = - new RoutingConnection(connection, defaultDatabase(), READ, null, errorHandler); + var connection = mock(Connection.class); + var errorHandler = mock(RoutingErrorHandler.class); + var routingConnection = new RoutingConnection(connection, defaultDatabase(), READ, null, errorHandler); if (flush) { routingConnection.writeAndFlush(PULL_ALL, mock(ResponseHandler.class)); @@ -78,7 +76,7 @@ private static void testHandlersWrappingWithSingleMessage(boolean flush) { routingConnection.write(PULL_ALL, mock(ResponseHandler.class)); } - ArgumentCaptor handlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var handlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); if (flush) { verify(connection).writeAndFlush(eq(PULL_ALL), handlerCaptor.capture()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ByteBufInputTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ByteBufInputTest.java index abc55cae9c..0fa74b9fa6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ByteBufInputTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ByteBufInputTest.java @@ -31,14 +31,14 @@ class ByteBufInputTest { @Test void shouldThrowWhenStartedWithNullBuf() { - ByteBufInput input = new ByteBufInput(); + var input = new ByteBufInput(); assertThrows(NullPointerException.class, () -> input.start(null)); } @Test void shouldThrowWhenStartedTwice() { - ByteBufInput input = new ByteBufInput(); + var input = new ByteBufInput(); input.start(mock(ByteBuf.class)); assertThrows(IllegalStateException.class, () -> input.start(mock(ByteBuf.class))); @@ -46,8 +46,8 @@ void shouldThrowWhenStartedTwice() { @Test void shouldDelegateReadByte() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.readByte()).thenReturn((byte) 42); input.start(buf); @@ -56,8 +56,8 @@ void shouldDelegateReadByte() { @Test void shouldDelegateReadShort() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.readShort()).thenReturn((short) -42); input.start(buf); @@ -66,8 +66,8 @@ void shouldDelegateReadShort() { @Test void shouldDelegateReadInt() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.readInt()).thenReturn(15); input.start(buf); @@ -76,8 +76,8 @@ void shouldDelegateReadInt() { @Test void shouldDelegateReadLong() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.readLong()).thenReturn(4242L); input.start(buf); @@ -86,8 +86,8 @@ void shouldDelegateReadLong() { @Test void shouldDelegateReadDouble() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.readDouble()).thenReturn(42.42D); input.start(buf); @@ -96,8 +96,8 @@ void shouldDelegateReadDouble() { @Test void shouldDelegateReadBytes() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); input.start(buf); input.readBytes(new byte[10], 3, 5); @@ -107,8 +107,8 @@ void shouldDelegateReadBytes() { @Test void shouldDelegatePeekByte() { - ByteBufInput input = new ByteBufInput(); - ByteBuf buf = mock(ByteBuf.class); + var input = new ByteBufInput(); + var buf = mock(ByteBuf.class); when(buf.getByte(anyInt())).thenReturn((byte) 42); input.start(buf); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ChunkDecoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ChunkDecoderTest.java index 2b2f187286..2cc45456a0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ChunkDecoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ChunkDecoderTest.java @@ -58,7 +58,7 @@ void tearDown() { @Test void shouldDecodeFullChunk() { // whole chunk with header and body arrives at once - ByteBuf input = buffer(); + var input = buffer(); input.writeShort(7); input.writeByte(1); input.writeByte(11); @@ -81,7 +81,7 @@ void shouldDecodeFullChunk() { @Test void shouldDecodeSplitChunk() { // first part of the chunk contains size header and some bytes - ByteBuf input1 = buffer(); + var input1 = buffer(); input1.writeShort(9); input1.writeByte(1); input1.writeByte(11); @@ -90,13 +90,13 @@ void shouldDecodeSplitChunk() { assertFalse(channel.writeInbound(input1)); // second part contains just a single byte - ByteBuf input2 = buffer(); + var input2 = buffer(); input2.writeByte(22); // nothing should be available for reading assertFalse(channel.writeInbound(input2)); // third part contains couple more bytes - ByteBuf input3 = buffer(); + var input3 = buffer(); input3.writeByte(3); input3.writeByte(33); input3.writeByte(4); @@ -104,7 +104,7 @@ void shouldDecodeSplitChunk() { assertFalse(channel.writeInbound(input3)); // fourth part contains couple more bytes, and the chunk is now complete - ByteBuf input4 = buffer(); + var input4 = buffer(); input4.writeByte(44); input4.writeByte(5); // there should be something to read now @@ -121,7 +121,7 @@ void shouldDecodeSplitChunk() { @Test void shouldDecodeEmptyChunk() { // chunk contains just the size header which is zero - ByteBuf input = copyShort(0); + var input = copyShort(0); assertTrue(channel.writeInbound(input)); assertTrue(channel.finish()); @@ -133,14 +133,14 @@ void shouldDecodeEmptyChunk() { @Test void shouldLogEmptyChunkOnTraceLevel() { - Logger logger = newTraceLogger(); + var logger = newTraceLogger(); channel = new EmbeddedChannel(new ChunkDecoder(newLogging(logger))); buffer = copyShort(0); assertTrue(channel.writeInbound(buffer.copy())); // copy buffer so we can verify against it later assertTrue(channel.finish()); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); + var messageCaptor = ArgumentCaptor.forClass(String.class); verify(logger).trace(anyString(), messageCaptor.capture()); // pretty hex dump should be logged @@ -152,10 +152,10 @@ void shouldLogEmptyChunkOnTraceLevel() { @Test void shouldLogNonEmptyChunkOnTraceLevel() { - Logger logger = newTraceLogger(); + var logger = newTraceLogger(); channel = new EmbeddedChannel(new ChunkDecoder(newLogging(logger))); - byte[] bytes = "Hello".getBytes(); + var bytes = "Hello".getBytes(); buffer = buffer(); buffer.writeShort(bytes.length); buffer.writeBytes(bytes); @@ -163,7 +163,7 @@ void shouldLogNonEmptyChunkOnTraceLevel() { assertTrue(channel.writeInbound(buffer.copy())); // copy buffer so we can verify against it later assertTrue(channel.finish()); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); + var messageCaptor = ArgumentCaptor.forClass(String.class); verify(logger).trace(anyString(), messageCaptor.capture()); // pretty hex dump should be logged @@ -175,9 +175,9 @@ void shouldLogNonEmptyChunkOnTraceLevel() { @Test public void shouldDecodeMaxSizeChunk() { - byte[] message = new byte[0xFFFF]; + var message = new byte[0xFFFF]; - ByteBuf input = buffer(); + var input = buffer(); input.writeShort(message.length); // chunk header input.writeBytes(message); // chunk body @@ -193,13 +193,13 @@ private static ChunkDecoder newChunkDecoder() { } private static Logger newTraceLogger() { - Logger logger = mock(Logger.class); + var logger = mock(Logger.class); when(logger.isTraceEnabled()).thenReturn(true); return logger; } private static Logging newLogging(Logger logger) { - Logging logging = mock(Logging.class); + var logging = mock(Logging.class); when(logging.getLog(any(Class.class))).thenReturn(logger); return logging; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ConnectTimeoutHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ConnectTimeoutHandlerTest.java index cacdb48d6b..f8f46caf7c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ConnectTimeoutHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/ConnectTimeoutHandlerTest.java @@ -36,27 +36,27 @@ void tearDown() { @Test void shouldFireExceptionOnTimeout() throws Exception { - int timeoutMillis = 100; + var timeoutMillis = 100; channel.pipeline().addLast(new ConnectTimeoutHandler(timeoutMillis)); // sleep for more than the timeout value Thread.sleep(timeoutMillis * 4); channel.runPendingTasks(); - ServiceUnavailableException error = assertThrows(ServiceUnavailableException.class, channel::checkException); + var error = assertThrows(ServiceUnavailableException.class, channel::checkException); assertEquals(error.getMessage(), "Unable to establish connection in " + timeoutMillis + "ms"); } @Test void shouldNotFireExceptionMultipleTimes() throws Exception { - int timeoutMillis = 70; + var timeoutMillis = 70; channel.pipeline().addLast(new ConnectTimeoutHandler(timeoutMillis)); // sleep for more than the timeout value Thread.sleep(timeoutMillis * 4); channel.runPendingTasks(); - ServiceUnavailableException error = assertThrows(ServiceUnavailableException.class, channel::checkException); + var error = assertThrows(ServiceUnavailableException.class, channel::checkException); assertEquals(error.getMessage(), "Unable to establish connection in " + timeoutMillis + "ms"); // sleep even more diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcherTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcherTest.java index f475d83b96..29b70cd6d8 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcherTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcherTest.java @@ -56,7 +56,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.ArgumentCaptor; -import org.mockito.InOrder; import org.neo4j.driver.AuthTokenManager; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Logger; @@ -95,9 +94,9 @@ void shouldFailWhenCreatedWithNullLogging() { @Test void shouldDequeHandlerOnSuccess() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); assertEquals(1, dispatcher.queuedHandlersCount()); @@ -112,9 +111,9 @@ void shouldDequeHandlerOnSuccess() { @Test void shouldDequeHandlerOnFailure() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); assertEquals(1, dispatcher.queuedHandlersCount()); @@ -129,8 +128,8 @@ void shouldDequeHandlerOnFailure() { @Test void shouldSendResetOnFailure() { - Channel channel = newChannelMock(); - InboundMessageDispatcher dispatcher = newDispatcher(channel); + var channel = newChannelMock(); + var dispatcher = newDispatcher(channel); dispatcher.enqueue(mock(ResponseHandler.class)); assertEquals(1, dispatcher.queuedHandlersCount()); @@ -142,7 +141,7 @@ void shouldSendResetOnFailure() { @Test void shouldClearFailureOnSuccessOfResetAfterFailure() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); dispatcher.enqueue(mock(ResponseHandler.class)); assertEquals(1, dispatcher.queuedHandlersCount()); @@ -155,9 +154,9 @@ void shouldClearFailureOnSuccessOfResetAfterFailure() { @Test void shouldPeekHandlerOnRecord() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); assertEquals(1, dispatcher.queuedHandlersCount()); @@ -177,20 +176,20 @@ void shouldPeekHandlerOnRecord() { @Test void shouldFailAllHandlersOnChannelError() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler1 = mock(ResponseHandler.class); - ResponseHandler handler2 = mock(ResponseHandler.class); - ResponseHandler handler3 = mock(ResponseHandler.class); + var handler1 = mock(ResponseHandler.class); + var handler2 = mock(ResponseHandler.class); + var handler3 = mock(ResponseHandler.class); dispatcher.enqueue(handler1); dispatcher.enqueue(handler2); dispatcher.enqueue(handler3); - RuntimeException fatalError = new RuntimeException("Fatal!"); + var fatalError = new RuntimeException("Fatal!"); dispatcher.handleChannelError(fatalError); - InOrder inOrder = inOrder(handler1, handler2, handler3); + var inOrder = inOrder(handler1, handler2, handler3); inOrder.verify(handler1).onFailure(fatalError); inOrder.verify(handler2).onFailure(fatalError); inOrder.verify(handler3).onFailure(fatalError); @@ -198,12 +197,12 @@ void shouldFailAllHandlersOnChannelError() { @Test void shouldFailNewHandlerAfterChannelError() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - RuntimeException fatalError = new RuntimeException("Fatal!"); + var fatalError = new RuntimeException("Fatal!"); dispatcher.handleChannelError(fatalError); - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); verify(handler).onFailure(fatalError); @@ -211,13 +210,13 @@ void shouldFailNewHandlerAfterChannelError() { @Test void shouldAttachChannelErrorOnExistingError() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); dispatcher.handleFailureMessage("Neo.ClientError", "First error!"); - RuntimeException fatalError = new RuntimeException("Second Error!"); + var fatalError = new RuntimeException("Second Error!"); dispatcher.handleChannelError(fatalError); verify(handler) @@ -229,8 +228,8 @@ void shouldAttachChannelErrorOnExistingError() { @Test void shouldDequeHandlerOnIgnored() { - InboundMessageDispatcher dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var dispatcher = newDispatcher(); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); dispatcher.handleIgnoredMessage(); @@ -240,9 +239,9 @@ void shouldDequeHandlerOnIgnored() { @Test void shouldFailHandlerOnIgnoredMessageWithExistingError() { - InboundMessageDispatcher dispatcher = newDispatcher(); - ResponseHandler handler1 = mock(ResponseHandler.class); - ResponseHandler handler2 = mock(ResponseHandler.class); + var dispatcher = newDispatcher(); + var handler1 = mock(ResponseHandler.class); + var handler2 = mock(ResponseHandler.class); dispatcher.enqueue(handler1); dispatcher.enqueue(handler2); @@ -257,8 +256,8 @@ void shouldFailHandlerOnIgnoredMessageWithExistingError() { @Test void shouldFailHandlerOnIgnoredMessageWhenNoErrorAndNotHandlingReset() { - InboundMessageDispatcher dispatcher = newDispatcher(); - ResponseHandler handler = mock(ResponseHandler.class); + var dispatcher = newDispatcher(); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); dispatcher.handleIgnoredMessage(); @@ -268,9 +267,9 @@ void shouldFailHandlerOnIgnoredMessageWhenNoErrorAndNotHandlingReset() { @Test void shouldDequeAndFailHandlerOnIgnoredWhenErrorHappened() { - InboundMessageDispatcher dispatcher = newDispatcher(); - ResponseHandler handler1 = mock(ResponseHandler.class); - ResponseHandler handler2 = mock(ResponseHandler.class); + var dispatcher = newDispatcher(); + var handler1 = mock(ResponseHandler.class); + var handler2 = mock(ResponseHandler.class); dispatcher.enqueue(handler1); dispatcher.enqueue(handler2); @@ -285,7 +284,7 @@ void shouldDequeAndFailHandlerOnIgnoredWhenErrorHappened() { @Test void shouldThrowWhenNoHandlerToHandleRecordMessage() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); assertThrows( IllegalStateException.class, () -> dispatcher.handleRecordMessage(new Value[] {value(1), value(2)})); @@ -293,17 +292,17 @@ void shouldThrowWhenNoHandlerToHandleRecordMessage() { @Test void shouldKeepSingleAutoReadManagingHandler() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler1 = newAutoReadManagingResponseHandler(); - ResponseHandler handler2 = newAutoReadManagingResponseHandler(); - ResponseHandler handler3 = newAutoReadManagingResponseHandler(); + var handler1 = newAutoReadManagingResponseHandler(); + var handler2 = newAutoReadManagingResponseHandler(); + var handler3 = newAutoReadManagingResponseHandler(); dispatcher.enqueue(handler1); dispatcher.enqueue(handler2); dispatcher.enqueue(handler3); - InOrder inOrder = inOrder(handler1, handler2, handler3); + var inOrder = inOrder(handler1, handler2, handler3); inOrder.verify(handler1).disableAutoReadManagement(); inOrder.verify(handler2).disableAutoReadManagement(); inOrder.verify(handler3, never()).disableAutoReadManagement(); @@ -311,10 +310,10 @@ void shouldKeepSingleAutoReadManagingHandler() { @Test void shouldKeepTrackOfAutoReadManagingHandler() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler1 = newAutoReadManagingResponseHandler(); - ResponseHandler handler2 = newAutoReadManagingResponseHandler(); + var handler1 = newAutoReadManagingResponseHandler(); + var handler2 = newAutoReadManagingResponseHandler(); assertNull(dispatcher.autoReadManagingHandler()); @@ -327,11 +326,11 @@ void shouldKeepTrackOfAutoReadManagingHandler() { @Test void shouldForgetAutoReadManagingHandlerWhenItIsRemoved() { - InboundMessageDispatcher dispatcher = newDispatcher(); + var dispatcher = newDispatcher(); - ResponseHandler handler1 = mock(ResponseHandler.class); - ResponseHandler handler2 = mock(ResponseHandler.class); - ResponseHandler handler3 = newAutoReadManagingResponseHandler(); + var handler1 = mock(ResponseHandler.class); + var handler2 = mock(ResponseHandler.class); + var handler3 = newAutoReadManagingResponseHandler(); dispatcher.enqueue(handler1); dispatcher.enqueue(handler2); @@ -347,10 +346,10 @@ void shouldForgetAutoReadManagingHandlerWhenItIsRemoved() { @Test void shouldReEnableAutoReadWhenAutoReadManagingHandlerIsRemoved() { - Channel channel = newChannelMock(); - InboundMessageDispatcher dispatcher = newDispatcher(channel); + var channel = newChannelMock(); + var dispatcher = newDispatcher(channel); - ResponseHandler handler = newAutoReadManagingResponseHandler(); + var handler = newAutoReadManagingResponseHandler(); dispatcher.enqueue(handler); assertEquals(handler, dispatcher.autoReadManagingHandler()); verify(handler, never()).disableAutoReadManagement(); @@ -367,15 +366,15 @@ void shouldReEnableAutoReadWhenAutoReadManagingHandlerIsRemoved() { @ValueSource(classes = {SuccessMessage.class, FailureMessage.class, RecordMessage.class, IgnoredMessage.class}) void shouldCreateChannelActivityLoggerAndLogDebugMessageOnMessageHandling(Class message) { // GIVEN - Channel channel = newChannelMock(); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var channel = newChannelMock(); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logger.isDebugEnabled()).thenReturn(true); when(logging.getLog(InboundMessageDispatcher.class)).thenReturn(logger); - ChannelErrorLogger errorLogger = mock(ChannelErrorLogger.class); + var errorLogger = mock(ChannelErrorLogger.class); when(logging.getLog(ChannelErrorLogger.class)).thenReturn(errorLogger); - InboundMessageDispatcher dispatcher = new InboundMessageDispatcher(channel, logging); - ResponseHandler handler = mock(ResponseHandler.class); + var dispatcher = new InboundMessageDispatcher(channel, logging); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); Runnable loggerVerification = () -> {}; @@ -417,18 +416,18 @@ void shouldCreateChannelActivityLoggerAndLogDebugMessageOnMessageHandling(Class< @Test void shouldCreateChannelErrorLoggerAndLogDebugMessageOnChannelError() { // GIVEN - Channel channel = newChannelMock(); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var channel = newChannelMock(); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logger.isDebugEnabled()).thenReturn(true); when(logging.getLog(InboundMessageDispatcher.class)).thenReturn(logger); - ChannelErrorLogger errorLogger = mock(ChannelErrorLogger.class); + var errorLogger = mock(ChannelErrorLogger.class); when(errorLogger.isDebugEnabled()).thenReturn(true); when(logging.getLog(ChannelErrorLogger.class)).thenReturn(errorLogger); - InboundMessageDispatcher dispatcher = new InboundMessageDispatcher(channel, logging); - ResponseHandler handler = mock(ResponseHandler.class); + var dispatcher = new InboundMessageDispatcher(channel, logging); + var handler = mock(ResponseHandler.class); dispatcher.enqueue(handler); - Throwable throwable = mock(Throwable.class); + var throwable = mock(Throwable.class); // WHEN dispatcher.handleChannelError(throwable); @@ -501,7 +500,7 @@ private static void verifyFailure(ResponseHandler handler) { private static void verifyFailure( ResponseHandler handler, String code, String message, Class exceptionCls) { - ArgumentCaptor captor = ArgumentCaptor.forClass(Neo4jException.class); + var captor = ArgumentCaptor.forClass(Neo4jException.class); verify(handler).onFailure(captor.capture()); var value = captor.getValue(); assertEquals(code, value.code()); @@ -521,9 +520,9 @@ private static InboundMessageDispatcher newDispatcher(Channel channel) { @SuppressWarnings("unchecked") private static Channel newChannelMock() { - Channel channel = mock(Channel.class); + var channel = mock(Channel.class); when(channel.id()).thenReturn(DefaultChannelId.newInstance()); - ChannelConfig channelConfig = mock(ChannelConfig.class); + var channelConfig = mock(ChannelConfig.class); when(channel.config()).thenReturn(channelConfig); Attribute attribute = mock(Attribute.class); when(channel.attr(any())).thenReturn(attribute); @@ -531,7 +530,7 @@ private static Channel newChannelMock() { } private static ResponseHandler newAutoReadManagingResponseHandler() { - ResponseHandler handler = mock(ResponseHandler.class); + var handler = mock(ResponseHandler.class); when(handler.canManageAutoRead()).thenReturn(true); return handler; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageHandlerTest.java index 80e39e0f6d..0a763172af 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageHandlerTest.java @@ -66,7 +66,7 @@ void setUp() { writer = new MessageToByteBufWriter(new KnowledgeableMessageFormat(false)); ChannelAttributes.setMessageDispatcher(channel, messageDispatcher); - InboundMessageHandler handler = new InboundMessageHandler(new MessageFormatV3(), DEV_NULL_LOGGING); + var handler = new InboundMessageHandler(new MessageFormatV3(), DEV_NULL_LOGGING); channel.pipeline().addFirst(handler); } @@ -79,7 +79,7 @@ void tearDown() { @Test void shouldReadSuccessMessage() { - ResponseHandler responseHandler = mock(ResponseHandler.class); + var responseHandler = mock(ResponseHandler.class); messageDispatcher.enqueue(responseHandler); Map metadata = new HashMap<>(); @@ -92,12 +92,12 @@ void shouldReadSuccessMessage() { @Test void shouldReadFailureMessage() { - ResponseHandler responseHandler = mock(ResponseHandler.class); + var responseHandler = mock(ResponseHandler.class); messageDispatcher.enqueue(responseHandler); channel.writeInbound(writer.asByteBuf(new FailureMessage("Neo.TransientError.General.ReadOnly", "Hi!"))); - ArgumentCaptor captor = ArgumentCaptor.forClass(Neo4jException.class); + var captor = ArgumentCaptor.forClass(Neo4jException.class); verify(responseHandler).onFailure(captor.capture()); assertEquals("Neo.TransientError.General.ReadOnly", captor.getValue().code()); assertEquals("Hi!", captor.getValue().getMessage()); @@ -105,10 +105,10 @@ void shouldReadFailureMessage() { @Test void shouldReadRecordMessage() { - ResponseHandler responseHandler = mock(ResponseHandler.class); + var responseHandler = mock(ResponseHandler.class); messageDispatcher.enqueue(responseHandler); - Value[] fields = {value(1), value(2), value(3)}; + var fields = new Value[] {value(1), value(2), value(3)}; channel.writeInbound(writer.asByteBuf(new RecordMessage(fields))); verify(responseHandler).onRecord(fields); @@ -116,7 +116,7 @@ void shouldReadRecordMessage() { @Test void shouldReadIgnoredMessage() { - ResponseHandler responseHandler = mock(ResponseHandler.class); + var responseHandler = mock(ResponseHandler.class); messageDispatcher.enqueue(responseHandler); channel.writeInbound(writer.asByteBuf(IgnoredMessage.IGNORED)); @@ -125,18 +125,18 @@ void shouldReadIgnoredMessage() { @Test void shouldRethrowReadErrors() throws IOException { - MessageFormat messageFormat = mock(MessageFormat.class); - Reader reader = mock(Reader.class); - RuntimeException error = new RuntimeException("Unable to decode!"); + var messageFormat = mock(MessageFormat.class); + var reader = mock(Reader.class); + var error = new RuntimeException("Unable to decode!"); doThrow(error).when(reader).read(any()); when(messageFormat.newReader(any())).thenReturn(reader); - InboundMessageHandler handler = new InboundMessageHandler(messageFormat, DEV_NULL_LOGGING); + var handler = new InboundMessageHandler(messageFormat, DEV_NULL_LOGGING); channel.pipeline().remove(InboundMessageHandler.class); channel.pipeline().addLast(handler); - DecoderException e = assertThrows(DecoderException.class, () -> channel.writeInbound(writer.asByteBuf(RESET))); + var e = assertThrows(DecoderException.class, () -> channel.writeInbound(writer.asByteBuf(RESET))); assertThat(e.getMessage(), startsWith("Failed to read inbound message")); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/ChunkAwareByteBufOutputTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/ChunkAwareByteBufOutputTest.java index 836f7289b7..b7cad38cd1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/ChunkAwareByteBufOutputTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/ChunkAwareByteBufOutputTest.java @@ -42,13 +42,13 @@ void shouldThrowForIllegalMaxChunkSize() { @Test void shouldThrowWhenStartedWithNullBuf() { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(16); + var output = new ChunkAwareByteBufOutput(16); assertThrows(NullPointerException.class, () -> output.start(null)); } @Test void shouldThrowWhenStartedTwice() { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(16); + var output = new ChunkAwareByteBufOutput(16); output.start(mock(ByteBuf.class)); assertThrows(IllegalStateException.class, () -> output.start(mock(ByteBuf.class))); @@ -57,7 +57,7 @@ void shouldThrowWhenStartedTwice() { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteByteAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(16); + var output = new ChunkAwareByteBufOutput(16); output.start(buf); output.writeByte((byte) 42); @@ -69,7 +69,7 @@ void shouldWriteByteAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteByteWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(16); + var output = new ChunkAwareByteBufOutput(16); output.start(buf); output.writeByte((byte) 1); @@ -85,7 +85,7 @@ void shouldWriteByteWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteByteWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(5); + var output = new ChunkAwareByteBufOutput(5); output.start(buf); output.writeByte((byte) 5); @@ -109,7 +109,7 @@ void shouldWriteByteWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteShortAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(10); + var output = new ChunkAwareByteBufOutput(10); output.start(buf); output.writeShort(Short.MAX_VALUE); @@ -121,7 +121,7 @@ void shouldWriteShortAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteShortWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(12); + var output = new ChunkAwareByteBufOutput(12); output.start(buf); output.writeShort((short) 1); @@ -138,7 +138,7 @@ void shouldWriteShortWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteShortWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(8); + var output = new ChunkAwareByteBufOutput(8); output.start(buf); output.writeShort((short) 14); @@ -162,7 +162,7 @@ void shouldWriteShortWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteIntAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(18); + var output = new ChunkAwareByteBufOutput(18); output.start(buf); output.writeInt(73649); @@ -174,7 +174,7 @@ void shouldWriteIntAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteIntWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(40); + var output = new ChunkAwareByteBufOutput(40); output.start(buf); output.writeInt(Integer.MAX_VALUE); @@ -190,7 +190,7 @@ void shouldWriteIntWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteIntWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(27); + var output = new ChunkAwareByteBufOutput(27); output.start(buf); output.writeInt(42); @@ -220,7 +220,7 @@ void shouldWriteIntWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteLongAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(12); + var output = new ChunkAwareByteBufOutput(12); output.start(buf); output.writeLong(15); @@ -232,7 +232,7 @@ void shouldWriteLongAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteLongWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(34); + var output = new ChunkAwareByteBufOutput(34); output.start(buf); output.writeLong(Long.MAX_VALUE); @@ -248,7 +248,7 @@ void shouldWriteLongWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteLongWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(38); + var output = new ChunkAwareByteBufOutput(38); output.start(buf); output.writeLong(12); @@ -274,7 +274,7 @@ void shouldWriteLongWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteDoubleAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(10); + var output = new ChunkAwareByteBufOutput(10); output.start(buf); output.writeDouble(12.99937); @@ -286,7 +286,7 @@ void shouldWriteDoubleAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteDoubleWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(18); + var output = new ChunkAwareByteBufOutput(18); output.start(buf); output.writeDouble(-5); @@ -300,7 +300,7 @@ void shouldWriteDoubleWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteDoubleWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(20); + var output = new ChunkAwareByteBufOutput(20); output.start(buf); output.writeDouble(1839); @@ -322,7 +322,7 @@ void shouldWriteDoubleWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteBytesAtTheBeginningOfChunk(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(10); + var output = new ChunkAwareByteBufOutput(10); output.start(buf); output.writeBytes(new byte[] {1, 2, 3, -1, -2, -3, 127}); @@ -335,7 +335,7 @@ void shouldWriteBytesAtTheBeginningOfChunk(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteBytesWhenCurrentChunkContainsSpace(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(13); + var output = new ChunkAwareByteBufOutput(13); output.start(buf); output.writeBytes(new byte[] {9, 8, -10}); @@ -364,7 +364,7 @@ void shouldWriteBytesWhenCurrentChunkContainsSpace(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteBytesWhenCurrentChunkIsFull(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(9); + var output = new ChunkAwareByteBufOutput(9); output.start(buf); output.writeBytes(new byte[] {1, 2}); @@ -393,7 +393,7 @@ void shouldWriteBytesWhenCurrentChunkIsFull(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteBytesThatSpanMultipleChunks(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(7); + var output = new ChunkAwareByteBufOutput(7); output.start(buf); output.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}); @@ -429,7 +429,7 @@ void shouldWriteBytesThatSpanMultipleChunks(ByteBuf buf) { @ParameterizedTest @MethodSource("testBuffers") void shouldWriteDataToMultipleChunks(ByteBuf buf) { - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(13); + var output = new ChunkAwareByteBufOutput(13); output.start(buf); output.writeDouble(12.3); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java index a0e2ab8de9..338c8ac9a0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java @@ -63,8 +63,8 @@ void tearDown() { @Test void shouldOutputByteBufAsWrittenByWriterAndMessageBoundary() { - MessageFormat messageFormat = mockMessageFormatWithWriter(1, 2, 3, 4, 5); - OutboundMessageHandler handler = newHandler(messageFormat); + var messageFormat = mockMessageFormatWithWriter(1, 2, 3, 4, 5); + var handler = newHandler(messageFormat); channel.pipeline().addLast(handler); // do not care which message, writer will return predefined bytes anyway @@ -89,7 +89,7 @@ void shouldOutputByteBufAsWrittenByWriterAndMessageBoundary() { @Test void shouldSupportByteArraysByDefault() { - OutboundMessageHandler handler = newHandler(new MessageFormatV3()); + var handler = newHandler(new MessageFormatV3()); channel.pipeline().addLast(handler); Map params = new HashMap<>(); @@ -100,7 +100,7 @@ void shouldSupportByteArraysByDefault() { } private static MessageFormat mockMessageFormatWithWriter(final int... bytesToWrite) { - MessageFormat messageFormat = mock(MessageFormat.class); + var messageFormat = mock(MessageFormat.class); when(messageFormat.newWriter(any(PackOutput.class))).then(invocation -> { PackOutput output = invocation.getArgument(0); @@ -111,10 +111,10 @@ private static MessageFormat mockMessageFormatWithWriter(final int... bytesToWri } private static Writer mockWriter(final PackOutput output, final int... bytesToWrite) throws IOException { - Writer writer = mock(Writer.class); + var writer = mock(Writer.class); doAnswer(invocation -> { - for (int b : bytesToWrite) { + for (var b : bytesToWrite) { output.writeByte((byte) b); } return writer; diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java index 70bd7455e5..02c4095a2c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java @@ -29,9 +29,7 @@ import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; import static org.neo4j.driver.testutil.TestUtil.await; -import io.netty.bootstrap.Bootstrap; import java.util.Collections; -import java.util.concurrent.CompletionStage; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -71,24 +69,24 @@ void tearDown() { @Test void shouldAcquireConnectionWhenPoolIsEmpty() { - Connection connection = await(pool.acquire(neo4j.address(), null)); + var connection = await(pool.acquire(neo4j.address(), null)); assertNotNull(connection); } @Test void shouldAcquireIdleConnection() { - Connection connection1 = await(pool.acquire(neo4j.address(), null)); + var connection1 = await(pool.acquire(neo4j.address(), null)); await(connection1.release()); - Connection connection2 = await(pool.acquire(neo4j.address(), null)); + var connection2 = await(pool.acquire(neo4j.address(), null)); assertNotNull(connection2); } @Test void shouldBeAbleToClosePoolInIOWorkerThread() throws Throwable { // In the IO worker thread of a channel obtained from a pool, we shall be able to close the pool. - CompletionStage future = pool.acquire(neo4j.address(), null) + var future = pool.acquire(neo4j.address(), null) .thenCompose(Connection::release) // This shall close all pools .whenComplete((ignored, error) -> pool.retainAll(Collections.emptySet())); @@ -99,7 +97,7 @@ void shouldBeAbleToClosePoolInIOWorkerThread() throws Throwable { @Test void shouldFailToAcquireConnectionToWrongAddress() { - ServiceUnavailableException e = assertThrows( + var e = assertThrows( ServiceUnavailableException.class, () -> await(pool.acquire(new BoltServerAddress("wrong-localhost"), null))); @@ -108,11 +106,11 @@ void shouldFailToAcquireConnectionToWrongAddress() { @Test void shouldFailToAcquireWhenPoolClosed() { - Connection connection = await(pool.acquire(neo4j.address(), null)); + var connection = await(pool.acquire(neo4j.address(), null)); await(connection.release()); await(pool.close()); - IllegalStateException e = assertThrows(IllegalStateException.class, () -> pool.acquire(neo4j.address(), null)); + var e = assertThrows(IllegalStateException.class, () -> pool.acquire(neo4j.address(), null)); assertThat(e.getMessage(), startsWith("Pool closed")); } @@ -125,18 +123,17 @@ void shouldNotCloseWhenClosed() { @Test void shouldFailToAcquireConnectionWhenPoolIsClosed() { await(pool.acquire(neo4j.address(), null)); - ExtendedChannelPool channelPool = this.pool.getPool(neo4j.address()); + var channelPool = this.pool.getPool(neo4j.address()); await(channelPool.close()); - ServiceUnavailableException error = - assertThrows(ServiceUnavailableException.class, () -> await(pool.acquire(neo4j.address(), null))); + var error = assertThrows(ServiceUnavailableException.class, () -> await(pool.acquire(neo4j.address(), null))); assertThat(error.getMessage(), containsString("closed while acquiring a connection")); assertThat(error.getCause(), instanceOf(IllegalStateException.class)); assertThat(error.getCause().getMessage(), containsString("FixedChannelPool was closed")); } private ConnectionPoolImpl newPool() { - FakeClock clock = new FakeClock(); - ConnectionSettings connectionSettings = new ConnectionSettings(neo4j.authTokenManager(), "test", 5000); + var clock = new FakeClock(); + var connectionSettings = new ConnectionSettings(neo4j.authTokenManager(), "test", 5000); ChannelConnector connector = new ChannelConnectorImpl( connectionSettings, SecurityPlanImpl.insecure(), @@ -146,8 +143,8 @@ private ConnectionPoolImpl newPool() { DefaultDomainNameResolver.getInstance(), null, BoltAgentUtil.VALUE); - PoolSettings poolSettings = newSettings(); - Bootstrap bootstrap = BootstrapFactory.newBootstrap(1); + var poolSettings = newSettings(); + var bootstrap = BootstrapFactory.newBootstrap(1); return new ConnectionPoolImpl( connector, bootstrap, poolSettings, DevNullMetricsListener.INSTANCE, DEV_NULL_LOGGING, clock, true); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java index 20d7a17cc2..5a65470489 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java @@ -49,8 +49,8 @@ class ConnectionPoolImplTest { @Test void shouldDoNothingWhenRetainOnEmptyPool() { - NettyChannelTracker nettyChannelTracker = mock(NettyChannelTracker.class); - TestConnectionPool pool = newConnectionPool(nettyChannelTracker); + var nettyChannelTracker = mock(NettyChannelTracker.class); + var pool = newConnectionPool(nettyChannelTracker); pool.retainAll(singleton(LOCAL_DEFAULT)); @@ -59,23 +59,23 @@ void shouldDoNothingWhenRetainOnEmptyPool() { @Test void shouldRetainSpecifiedAddresses() { - NettyChannelTracker nettyChannelTracker = mock(NettyChannelTracker.class); - TestConnectionPool pool = newConnectionPool(nettyChannelTracker); + var nettyChannelTracker = mock(NettyChannelTracker.class); + var pool = newConnectionPool(nettyChannelTracker); pool.acquire(ADDRESS_1, null); pool.acquire(ADDRESS_2, null); pool.acquire(ADDRESS_3, null); pool.retainAll(new HashSet<>(asList(ADDRESS_1, ADDRESS_2, ADDRESS_3))); - for (ExtendedChannelPool channelPool : pool.channelPoolsByAddress.values()) { + for (var channelPool : pool.channelPoolsByAddress.values()) { assertFalse(channelPool.isClosed()); } } @Test void shouldClosePoolsWhenRetaining() { - NettyChannelTracker nettyChannelTracker = mock(NettyChannelTracker.class); - TestConnectionPool pool = newConnectionPool(nettyChannelTracker); + var nettyChannelTracker = mock(NettyChannelTracker.class); + var pool = newConnectionPool(nettyChannelTracker); pool.acquire(ADDRESS_1, null); pool.acquire(ADDRESS_2, null); @@ -93,8 +93,8 @@ void shouldClosePoolsWhenRetaining() { @Test void shouldNotClosePoolsWithActiveConnectionsWhenRetaining() { - NettyChannelTracker nettyChannelTracker = mock(NettyChannelTracker.class); - TestConnectionPool pool = newConnectionPool(nettyChannelTracker); + var nettyChannelTracker = mock(NettyChannelTracker.class); + var pool = newConnectionPool(nettyChannelTracker); pool.acquire(ADDRESS_1, null); pool.acquire(ADDRESS_2, null); @@ -113,14 +113,14 @@ void shouldNotClosePoolsWithActiveConnectionsWhenRetaining() { @Disabled("to fix") @Test void shouldRegisterAuthorizationStateListenerWithChannel() throws ExecutionException, InterruptedException { - NettyChannelTracker nettyChannelTracker = mock(NettyChannelTracker.class); - NettyChannelHealthChecker nettyChannelHealthChecker = mock(NettyChannelHealthChecker.class); - ArgumentCaptor channelArgumentCaptor = ArgumentCaptor.forClass(Channel.class); - TestConnectionPool pool = newConnectionPool(nettyChannelTracker, nettyChannelHealthChecker); + var nettyChannelTracker = mock(NettyChannelTracker.class); + var nettyChannelHealthChecker = mock(NettyChannelHealthChecker.class); + var channelArgumentCaptor = ArgumentCaptor.forClass(Channel.class); + var pool = newConnectionPool(nettyChannelTracker, nettyChannelHealthChecker); pool.acquire(ADDRESS_1, null).toCompletableFuture().get(); verify(nettyChannelTracker).channelAcquired(channelArgumentCaptor.capture()); - Channel channel = channelArgumentCaptor.getValue(); + var channel = channelArgumentCaptor.getValue(); assertEquals(nettyChannelHealthChecker, authorizationStateListener(channel)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthCheckerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthCheckerTest.java index 67de25bcbb..e684cfc883 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthCheckerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthCheckerTest.java @@ -44,7 +44,6 @@ import static org.neo4j.driver.testutil.TestUtil.await; import io.netty.channel.embedded.EmbeddedChannel; -import io.netty.util.concurrent.Future; import java.time.Clock; import java.util.Collections; import java.util.List; @@ -92,32 +91,32 @@ void tearDown() { @Test void shouldDropTooOldChannelsWhenMaxLifetimeEnabled() { - int maxLifetime = 1000; - PoolSettings settings = new PoolSettings( + var maxLifetime = 1000; + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, maxLifetime, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - Clock clock = Clock.systemUTC(); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = Clock.systemUTC(); + var healthChecker = newHealthChecker(settings, clock); setCreationTimestamp(channel, clock.millis() - maxLifetime * 2); - Future healthy = healthChecker.isHealthy(channel); + var healthy = healthChecker.isHealthy(channel); assertThat(await(healthy), is(false)); } @Test void shouldAllowVeryOldChannelsWhenMaxLifetimeDisabled() { - PoolSettings settings = new PoolSettings( + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, Clock.systemUTC()); + var healthChecker = newHealthChecker(settings, Clock.systemUTC()); setCreationTimestamp(channel, 0); - Future healthy = healthChecker.isHealthy(channel); + var healthy = healthChecker.isHealthy(channel); channel.runPendingTasks(); assertThat(await(healthy), is(true)); @@ -137,18 +136,18 @@ public static List boltVersionsBefore51() { @ParameterizedTest @MethodSource("boltVersionsBefore51") void shouldFailAllConnectionsCreatedOnOrBeforeExpirationTimestamp(BoltProtocolVersion boltProtocolVersion) { - PoolSettings settings = new PoolSettings( + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - Clock clock = mock(Clock.class); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = mock(Clock.class); + var healthChecker = newHealthChecker(settings, clock); var authToken = AuthTokens.basic("username", "password"); var authTokenManager = mock(AuthTokenManager.class); given(authTokenManager.getToken()).willReturn(completedFuture(authToken)); - List channels = IntStream.range(0, 100) + var channels = IntStream.range(0, 100) .mapToObj(i -> { var channel = new EmbeddedChannel(); setProtocolVersion(channel, boltProtocolVersion); @@ -162,35 +161,35 @@ void shouldFailAllConnectionsCreatedOnOrBeforeExpirationTimestamp(BoltProtocolVe }) .toList(); - int authorizationExpiredChannelIndex = channels.size() / 2 - 1; + var authorizationExpiredChannelIndex = channels.size() / 2 - 1; given(clock.millis()).willReturn((long) authorizationExpiredChannelIndex); healthChecker.onExpired( new AuthorizationExpiredException("", ""), channels.get(authorizationExpiredChannelIndex)); - for (int i = 0; i < channels.size(); i++) { + for (var i = 0; i < channels.size(); i++) { var channel = channels.get(i); var future = healthChecker.isHealthy(channel); channel.runPendingTasks(); boolean health = Objects.requireNonNull(await(future)); - boolean expectedHealth = i > authorizationExpiredChannelIndex; + var expectedHealth = i > authorizationExpiredChannelIndex; assertEquals(expectedHealth, health, String.format("Channel %d has failed the check", i)); } } @Test void shouldMarkForLogoffAllConnectionsCreatedOnOrBeforeExpirationTimestamp() { - PoolSettings settings = new PoolSettings( + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - Clock clock = mock(Clock.class); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = mock(Clock.class); + var healthChecker = newHealthChecker(settings, clock); var authToken = AuthTokens.basic("username", "password"); var authTokenManager = mock(AuthTokenManager.class); given(authTokenManager.getToken()).willReturn(completedFuture(authToken)); - List channels = IntStream.range(0, 100) + var channels = IntStream.range(0, 100) .mapToObj(i -> { var channel = new EmbeddedChannel(); setProtocolVersion(channel, BoltProtocolV51.VERSION); @@ -204,18 +203,18 @@ void shouldMarkForLogoffAllConnectionsCreatedOnOrBeforeExpirationTimestamp() { }) .toList(); - int authorizationExpiredChannelIndex = channels.size() / 2 - 1; + var authorizationExpiredChannelIndex = channels.size() / 2 - 1; given(clock.millis()).willReturn((long) authorizationExpiredChannelIndex); healthChecker.onExpired( new AuthorizationExpiredException("", ""), channels.get(authorizationExpiredChannelIndex)); - for (int i = 0; i < channels.size(); i++) { + for (var i = 0; i < channels.size(); i++) { var channel = channels.get(i); var future = healthChecker.isHealthy(channel); channel.runPendingTasks(); boolean health = Objects.requireNonNull(await(future)); assertTrue(health, String.format("Channel %d has failed the check", i)); - boolean pendingLogoff = i <= authorizationExpiredChannelIndex; + var pendingLogoff = i <= authorizationExpiredChannelIndex; then(authContext(channel)) .should(pendingLogoff ? times(1) : never()) .markPendingLogoff(); @@ -224,15 +223,15 @@ void shouldMarkForLogoffAllConnectionsCreatedOnOrBeforeExpirationTimestamp() { @Test void shouldUseGreatestExpirationTimestamp() { - PoolSettings settings = new PoolSettings( + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - Clock clock = Clock.systemUTC(); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = Clock.systemUTC(); + var healthChecker = newHealthChecker(settings, clock); - long initialTimestamp = clock.millis(); + var initialTimestamp = clock.millis(); var channel1 = new EmbeddedChannel(); var channel2 = new EmbeddedChannel(); setCreationTimestamp(channel1, initialTimestamp); @@ -272,19 +271,19 @@ void shouldDropInactiveConnections() { } private void testPing(boolean resetMessageSuccessful) { - int idleTimeBeforeConnectionTest = 1000; - PoolSettings settings = new PoolSettings( + var idleTimeBeforeConnectionTest = 1000; + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, idleTimeBeforeConnectionTest); - Clock clock = Clock.systemUTC(); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = Clock.systemUTC(); + var healthChecker = newHealthChecker(settings, clock); setCreationTimestamp(channel, clock.millis()); setLastUsedTimestamp(channel, clock.millis() - idleTimeBeforeConnectionTest * 2); - Future healthy = healthChecker.isHealthy(channel); + var healthy = healthChecker.isHealthy(channel); channel.runPendingTasks(); assertEquals(ResetMessage.RESET, single(channel.outboundMessages())); @@ -300,23 +299,23 @@ private void testPing(boolean resetMessageSuccessful) { } private void testActiveConnectionCheck(boolean channelActive) { - PoolSettings settings = new PoolSettings( + var settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE, DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST); - Clock clock = Clock.systemUTC(); - NettyChannelHealthChecker healthChecker = newHealthChecker(settings, clock); + var clock = Clock.systemUTC(); + var healthChecker = newHealthChecker(settings, clock); setCreationTimestamp(channel, clock.millis()); if (channelActive) { - Future healthy = healthChecker.isHealthy(channel); + var healthy = healthChecker.isHealthy(channel); channel.runPendingTasks(); assertThat(await(healthy), is(true)); } else { channel.close().syncUninterruptibly(); - Future healthy = healthChecker.isHealthy(channel); + var healthy = healthChecker.isHealthy(channel); channel.runPendingTasks(); assertThat(await(healthy), is(false)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java index 19dca8780f..9f8f7259f3 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java @@ -98,7 +98,7 @@ void tearDown() { void shouldAcquireAndReleaseWithCorrectCredentials() { pool = newPool(neo4j.authTokenManager()); - Channel channel = await(pool.acquire(null)); + var channel = await(pool.acquire(null)); assertNotNull(channel); verify(poolHandler).channelCreated(eq(channel), any()); verify(poolHandler, never()).channelReleased(channel); @@ -131,18 +131,18 @@ void shouldFailToAcquireWithWrongCredentials() { @Test void shouldAllowAcquireAfterFailures() throws Exception { - int maxConnections = 2; + var maxConnections = 2; Map authTokenMap = new HashMap<>(); authTokenMap.put("scheme", value("basic")); authTokenMap.put("principal", value("neo4j")); authTokenMap.put("credentials", value("wrong")); - InternalAuthToken authToken = new InternalAuthToken(authTokenMap); + var authToken = new InternalAuthToken(authTokenMap); pool = newPool(new StaticAuthTokenManager(authToken), maxConnections); - for (int i = 0; i < maxConnections; i++) { - AuthenticationException e = assertThrows(AuthenticationException.class, () -> acquire(pool)); + for (var i = 0; i < maxConnections; i++) { + var e = assertThrows(AuthenticationException.class, () -> acquire(pool)); } authTokenMap.put("credentials", value(neo4j.adminPassword())); @@ -152,28 +152,28 @@ void shouldAllowAcquireAfterFailures() throws Exception { @Test void shouldLimitNumberOfConcurrentConnections() throws Exception { - int maxConnections = 5; + var maxConnections = 5; pool = newPool(neo4j.authTokenManager(), maxConnections); - for (int i = 0; i < maxConnections; i++) { + for (var i = 0; i < maxConnections; i++) { assertNotNull(acquire(pool)); } - TimeoutException e = assertThrows(TimeoutException.class, () -> acquire(pool)); + var e = assertThrows(TimeoutException.class, () -> acquire(pool)); assertEquals(e.getMessage(), "Acquire operation took longer then configured maximum time"); } @Test void shouldTrackActiveChannels() throws Exception { - NettyChannelTracker tracker = new NettyChannelTracker( + var tracker = new NettyChannelTracker( DevNullMetricsListener.INSTANCE, new ImmediateSchedulingEventExecutor(), DEV_NULL_LOGGING); poolHandler = tracker; pool = newPool(neo4j.authTokenManager()); - Channel channel1 = acquire(pool); - Channel channel2 = acquire(pool); - Channel channel3 = acquire(pool); + var channel1 = acquire(pool); + var channel2 = acquire(pool); + var channel3 = acquire(pool); assertEquals(3, tracker.inUseChannelCount(neo4j.address())); release(channel1); @@ -191,8 +191,8 @@ private NettyChannelPool newPool(AuthTokenManager authTokenManager) { } private NettyChannelPool newPool(AuthTokenManager authTokenManager, int maxConnections) { - ConnectionSettings settings = new ConnectionSettings(authTokenManager, "test", 5_000); - ChannelConnectorImpl connector = new ChannelConnectorImpl( + var settings = new ConnectionSettings(authTokenManager, "test", 5_000); + var connector = new ChannelConnectorImpl( settings, SecurityPlanImpl.insecure(), DEV_NULL_LOGGING, diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelTrackerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelTrackerTest.java index b86e56a23e..5f0d52f2cf 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelTrackerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelTrackerTest.java @@ -49,7 +49,7 @@ class NettyChannelTrackerTest { @Test void shouldIncrementIdleCountWhenChannelCreated() { - Channel channel = newChannel(); + var channel = newChannel(); assertEquals(0, tracker.inUseChannelCount(address)); assertEquals(0, tracker.idleChannelCount(address)); @@ -60,7 +60,7 @@ void shouldIncrementIdleCountWhenChannelCreated() { @Test void shouldIncrementInUseCountWhenChannelAcquired() { - Channel channel = newChannel(); + var channel = newChannel(); assertEquals(0, tracker.inUseChannelCount(address)); assertEquals(0, tracker.idleChannelCount(address)); @@ -75,7 +75,7 @@ void shouldIncrementInUseCountWhenChannelAcquired() { @Test void shouldIncrementIdleCountWhenChannelReleased() { - Channel channel = newChannel(); + var channel = newChannel(); assertEquals(0, tracker.inUseChannelCount(address)); assertEquals(0, tracker.idleChannelCount(address)); @@ -90,9 +90,9 @@ void shouldIncrementIdleCountWhenChannelReleased() { @Test void shouldIncrementIdleCountForAddress() { - Channel channel1 = newChannel(); - Channel channel2 = newChannel(); - Channel channel3 = newChannel(); + var channel1 = newChannel(); + var channel2 = newChannel(); + var channel3 = newChannel(); assertEquals(0, tracker.idleChannelCount(address)); tracker.channelCreated(channel1, null); @@ -106,9 +106,9 @@ void shouldIncrementIdleCountForAddress() { @Test void shouldDecrementCountForAddress() { - Channel channel1 = newChannel(); - Channel channel2 = newChannel(); - Channel channel3 = newChannel(); + var channel1 = newChannel(); + var channel2 = newChannel(); + var channel3 = newChannel(); channelCreatedAndAcquired(channel1); channelCreatedAndAcquired(channel2); @@ -130,7 +130,7 @@ void shouldDecrementCountForAddress() { @Test void shouldDecreaseIdleWhenClosedOutsidePool() throws Throwable { // Given - Channel channel = newChannel(); + var channel = newChannel(); channelCreatedAndAcquired(channel); assertEquals(1, tracker.inUseChannelCount(address)); assertEquals(0, tracker.idleChannelCount(address)); @@ -150,7 +150,7 @@ void shouldDecreaseIdleWhenClosedOutsidePool() throws Throwable { @Test void shouldDecreaseIdleWhenClosedInsidePool() throws Throwable { // Given - Channel channel = newChannel(); + var channel = newChannel(); channelCreatedAndAcquired(channel); assertEquals(1, tracker.inUseChannelCount(address)); assertEquals(0, tracker.idleChannelCount(address)); @@ -168,7 +168,7 @@ void shouldDecreaseIdleWhenClosedInsidePool() throws Throwable { @Test void shouldThrowWhenDecrementingForUnknownAddress() { - Channel channel = newChannel(); + var channel = newChannel(); assertThrows(IllegalStateException.class, () -> tracker.channelReleased(channel)); } @@ -180,10 +180,10 @@ void shouldReturnZeroActiveCountForUnknownAddress() { @Test void shouldAddChannelToGroupWhenChannelCreated() { - Channel channel = newChannel(); - Channel anotherChannel = newChannel(); - ChannelGroup group = mock(ChannelGroup.class); - NettyChannelTracker tracker = new NettyChannelTracker(DevNullMetricsListener.INSTANCE, group, DEV_NULL_LOGGING); + var channel = newChannel(); + var anotherChannel = newChannel(); + var group = mock(ChannelGroup.class); + var tracker = new NettyChannelTracker(DevNullMetricsListener.INSTANCE, group, DEV_NULL_LOGGING); tracker.channelCreated(channel, null); tracker.channelCreated(anotherChannel, null); @@ -194,12 +194,12 @@ void shouldAddChannelToGroupWhenChannelCreated() { @Test void shouldDelegateToProtocolPrepareToClose() { - EmbeddedChannel channel = newChannelWithProtocolV3(); - EmbeddedChannel anotherChannel = newChannelWithProtocolV3(); - ChannelGroup group = mock(ChannelGroup.class); + var channel = newChannelWithProtocolV3(); + var anotherChannel = newChannelWithProtocolV3(); + var group = mock(ChannelGroup.class); when(group.iterator()).thenReturn(new Arrays.Iterator<>(new Channel[] {channel, anotherChannel})); - NettyChannelTracker tracker = new NettyChannelTracker(DevNullMetricsListener.INSTANCE, group, DEV_NULL_LOGGING); + var tracker = new NettyChannelTracker(DevNullMetricsListener.INSTANCE, group, DEV_NULL_LOGGING); tracker.prepareToCloseChannels(); @@ -211,13 +211,13 @@ void shouldDelegateToProtocolPrepareToClose() { } private Channel newChannel() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); setServerAddress(channel, address); return channel; } private EmbeddedChannel newChannelWithProtocolV3() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); setServerAddress(channel, address); setProtocolVersion(channel, BoltProtocolV3.VERSION); setMessageDispatcher(channel, mock(InboundMessageDispatcher.class)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/PoolSettingsTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/PoolSettingsTest.java index 416fa467e7..67b3f601ac 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/PoolSettingsTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/PoolSettingsTest.java @@ -27,7 +27,7 @@ class PoolSettingsTest { @Test void idleTimeBeforeConnectionTestWhenConfigured() { - PoolSettings settings = new PoolSettings(5, -1, 10, 42); + var settings = new PoolSettings(5, -1, 10, 42); assertTrue(settings.idleTimeBeforeConnectionTestEnabled()); assertEquals(42, settings.idleTimeBeforeConnectionTest()); } @@ -35,7 +35,7 @@ void idleTimeBeforeConnectionTestWhenConfigured() { @Test void idleTimeBeforeConnectionTestWhenSetToZero() { // Always test idle time during acquisition - PoolSettings settings = new PoolSettings(5, -1, 10, 0); + var settings = new PoolSettings(5, -1, 10, 0); assertTrue(settings.idleTimeBeforeConnectionTestEnabled()); assertEquals(0, settings.idleTimeBeforeConnectionTest()); } @@ -50,7 +50,7 @@ void idleTimeBeforeConnectionTestWhenSetToNegativeValue() { @Test void maxConnectionLifetimeWhenConfigured() { - PoolSettings settings = new PoolSettings(5, -1, 42, 10); + var settings = new PoolSettings(5, -1, 42, 10); assertTrue(settings.maxConnectionLifetimeEnabled()); assertEquals(42, settings.maxConnectionLifetime()); } @@ -64,12 +64,12 @@ void maxConnectionLifetimeWhenSetToZeroOrNegativeValue() { } private static void testIdleTimeBeforeConnectionTestWithIllegalValue(int value) { - PoolSettings settings = new PoolSettings(5, -1, 10, value); + var settings = new PoolSettings(5, -1, 10, value); assertFalse(settings.idleTimeBeforeConnectionTestEnabled()); } private static void testMaxConnectionLifetimeWithIllegalValue(int value) { - PoolSettings settings = new PoolSettings(5, -1, value, 10); + var settings = new PoolSettings(5, -1, value, 10); assertFalse(settings.maxConnectionLifetimeEnabled()); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/TestConnectionPool.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/TestConnectionPool.java index 38a729ac1d..00f746d995 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/TestConnectionPool.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/TestConnectionPool.java @@ -37,7 +37,6 @@ import org.neo4j.driver.Logging; import org.neo4j.driver.internal.BoltServerAddress; import org.neo4j.driver.internal.async.connection.ChannelConnector; -import org.neo4j.driver.internal.metrics.ListenerEvent; import org.neo4j.driver.internal.metrics.MetricsListener; import org.neo4j.driver.internal.spi.Connection; @@ -73,16 +72,16 @@ ExtendedChannelPool getPool(BoltServerAddress address) { @Override ExtendedChannelPool newPool(BoltServerAddress address) { - ExtendedChannelPool channelPool = new ExtendedChannelPool() { + var channelPool = new ExtendedChannelPool() { private final AtomicBoolean isClosed = new AtomicBoolean(false); @Override public CompletionStage acquire(AuthToken overrideAuthToken) { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); setServerAddress(channel, address); setPoolId(channel, id()); - ListenerEvent event = nettyChannelTracker.channelCreating(id()); + var event = nettyChannelTracker.channelCreating(id()); nettyChannelTracker.channelCreated(channel, event); nettyChannelTracker.channelAcquired(channel); @@ -123,7 +122,7 @@ public NettyChannelHealthChecker healthChecker() { private static ConnectionFactory newConnectionFactory() { return (channel, pool) -> { - Connection conn = mock(Connection.class); + var conn = mock(Connection.class); when(conn.release()).thenAnswer(invocation -> pool.release(channel)); return conn; }; diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java index 8a79de2771..4f32bab6f9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java @@ -43,12 +43,10 @@ abstract class AbstractRoutingProcedureRunnerTest { @Test void shouldReturnFailedResponseOnClientException() { - ClientException error = new ClientException("Hi"); - SingleDatabaseRoutingProcedureRunner runner = - singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); + var error = new ClientException("Hi"); + var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); - RoutingProcedureResponse response = - await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); + var response = await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); assertFalse(response.isSuccess()); assertEquals(error, response.error()); @@ -56,11 +54,10 @@ void shouldReturnFailedResponseOnClientException() { @Test void shouldReturnFailedStageOnError() { - Exception error = new Exception("Hi"); - SingleDatabaseRoutingProcedureRunner runner = - singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); + var error = new Exception("Hi"); + var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); - Exception e = assertThrows( + var e = assertThrows( Exception.class, () -> await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null))); assertEquals(error, e); @@ -68,11 +65,10 @@ void shouldReturnFailedStageOnError() { @Test void shouldReleaseConnectionOnSuccess() { - SingleDatabaseRoutingProcedureRunner runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); + var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); - Connection connection = connection(); - RoutingProcedureResponse response = - await(runner.run(connection, defaultDatabase(), Collections.emptySet(), null)); + var connection = connection(); + var response = await(runner.run(connection, defaultDatabase(), Collections.emptySet(), null)); assertTrue(response.isSuccess()); verify(connection).release(); @@ -80,12 +76,12 @@ void shouldReleaseConnectionOnSuccess() { @Test void shouldPropagateReleaseError() { - SingleDatabaseRoutingProcedureRunner runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); + var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); - RuntimeException releaseError = new RuntimeException("Release failed"); - Connection connection = connection(failedFuture(releaseError)); + var releaseError = new RuntimeException("Release failed"); + var connection = connection(failedFuture(releaseError)); - RuntimeException e = assertThrows( + var e = assertThrows( RuntimeException.class, () -> await(runner.run(connection, defaultDatabase(), Collections.emptySet(), null))); assertEquals(releaseError, e); @@ -102,9 +98,9 @@ static Connection connection() { } static Connection connection(CompletionStage releaseStage) { - Connection connection = mock(Connection.class); - BoltProtocol boltProtocol = mock(BoltProtocol.class); - BoltProtocolVersion protocolVersion = new BoltProtocolVersion(4, 4); + var connection = mock(Connection.class); + var boltProtocol = mock(BoltProtocol.class); + var protocolVersion = new BoltProtocolVersion(4, 4); when(boltProtocol.version()).thenReturn(protocolVersion); when(connection.protocol()).thenReturn(boltProtocol); when(connection.release()).thenReturn(releaseStage); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionTest.java index 5c2d849738..35cbee50ac 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionTest.java @@ -47,97 +47,97 @@ class ClusterCompositionTest { @Test void hasWritersReturnsFalseWhenNoWriters() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(), addresses(C, D)); + var composition = newComposition(1, addresses(A, B), addresses(), addresses(C, D)); assertFalse(composition.hasWriters()); } @Test void hasWritersReturnsTrueWhenSomeWriters() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); assertTrue(composition.hasWriters()); } @Test void hasRoutersAndReadersReturnsFalseWhenNoRouters() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses()); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses()); assertFalse(composition.hasRoutersAndReaders()); } @Test void hasRoutersAndReadersReturnsFalseWhenNoReaders() { - ClusterComposition composition = newComposition(1, addresses(), addresses(A, B), addresses(C, D)); + var composition = newComposition(1, addresses(), addresses(A, B), addresses(C, D)); assertFalse(composition.hasRoutersAndReaders()); } @Test void hasRoutersAndReadersWhenSomeReadersAndRouters() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); assertTrue(composition.hasRoutersAndReaders()); } @Test void readersWhenEmpty() { - ClusterComposition composition = newComposition(1, addresses(), addresses(A, B), addresses(C, D)); + var composition = newComposition(1, addresses(), addresses(A, B), addresses(C, D)); assertEquals(0, composition.readers().size()); } @Test void writersWhenEmpty() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(), addresses(C, D)); + var composition = newComposition(1, addresses(A, B), addresses(), addresses(C, D)); assertEquals(0, composition.writers().size()); } @Test void routersWhenEmpty() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses()); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses()); assertEquals(0, composition.routers().size()); } @Test void readersWhenNonEmpty() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); assertEquals(addresses(A, B), composition.readers()); } @Test void writersWhenNonEmpty() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); assertEquals(addresses(C, D), composition.writers()); } @Test void routersWhenNonEmpty() { - ClusterComposition composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(1, addresses(A, B), addresses(C, D), addresses(E, F)); assertEquals(addresses(E, F), composition.routers()); } @Test void expirationTimestamp() { - ClusterComposition composition = newComposition(42, addresses(A, B), addresses(C, D), addresses(E, F)); + var composition = newComposition(42, addresses(A, B), addresses(C, D), addresses(E, F)); assertEquals(42, composition.expirationTimestamp()); } @Test void parseCorrectRecord() { - Value[] values = { + var values = new Value[] { value(42L), value(asList(serversEntry("READ", A, B), serversEntry("WRITE", C, D), serversEntry("ROUTE", E, F))) }; Record record = new InternalRecord(asList("ttl", "servers"), values); - ClusterComposition composition = ClusterComposition.parse(record, 0); + var composition = ClusterComposition.parse(record, 0); // TTL is received in seconds and is converted to millis assertEquals(42_000, composition.expirationTimestamp()); @@ -149,13 +149,13 @@ void parseCorrectRecord() { @Test void parsePreservesOrderOfReaders() { - Value[] values = { + var values = new Value[] { value(42L), value(asList(serversEntry("READ", A, C, E, B, F, D), serversEntry("WRITE"), serversEntry("ROUTE"))) }; Record record = new InternalRecord(asList("ttl", "servers"), values); - ClusterComposition composition = ClusterComposition.parse(record, 0); + var composition = ClusterComposition.parse(record, 0); assertThat(composition.readers(), contains(A, C, E, B, F, D)); assertEquals(0, composition.writers().size()); @@ -164,13 +164,13 @@ void parsePreservesOrderOfReaders() { @Test void parsePreservesOrderOfWriters() { - Value[] values = { + var values = new Value[] { value(42L), value(asList(serversEntry("READ"), serversEntry("WRITE", C, F, D, A, B, E), serversEntry("ROUTE"))) }; Record record = new InternalRecord(asList("ttl", "servers"), values); - ClusterComposition composition = ClusterComposition.parse(record, 0); + var composition = ClusterComposition.parse(record, 0); assertEquals(0, composition.readers().size()); assertThat(composition.writers(), contains(C, F, D, A, B, E)); @@ -179,13 +179,13 @@ void parsePreservesOrderOfWriters() { @Test void parsePreservesOrderOfRouters() { - Value[] values = { + var values = new Value[] { value(42L), value(asList(serversEntry("READ"), serversEntry("WRITE"), serversEntry("ROUTE", F, D, A, B, C, E))) }; Record record = new InternalRecord(asList("ttl", "servers"), values); - ClusterComposition composition = ClusterComposition.parse(record, 0); + var composition = ClusterComposition.parse(record, 0); assertEquals(0, composition.readers().size()); assertEquals(0, composition.writers().size()); @@ -208,7 +208,7 @@ private static Map serversEntry(String role, BoltServerAddress.. Map map = new HashMap<>(); map.put("role", role); List addressStrings = new ArrayList<>(); - for (BoltServerAddress address : addresses) { + for (var address : addresses) { addressStrings.add(address.toString()); } map.put("addresses", addressStrings); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java index 89304ef852..971bfe68d6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java @@ -39,7 +39,6 @@ import java.time.Clock; import java.time.Duration; -import java.util.List; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -50,7 +49,7 @@ class ClusterRoutingTableTest { @Test void shouldReturnStaleIfTtlExpired() { // Given - FakeClock clock = new FakeClock(); + var clock = new FakeClock(); RoutingTable routingTable = newRoutingTable(clock); // When @@ -117,7 +116,7 @@ void shouldBeNotStaleWithReadersWritersAndRouters() { @Test void shouldBeStaleForReadsAndWritesAfterCreation() { // Given - FakeClock clock = new FakeClock(); + var clock = new FakeClock(); // When RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), clock, A); @@ -131,7 +130,7 @@ void shouldBeStaleForReadsAndWritesAfterCreation() { @ValueSource(strings = {"Molly", "", "I AM A NAME"}) void shouldReturnDatabaseNameCorrectly(String db) { // Given - FakeClock clock = new FakeClock(); + var clock = new FakeClock(); // When RoutingTable routingTable = new ClusterRoutingTable(database(db), clock, A); @@ -143,7 +142,7 @@ void shouldReturnDatabaseNameCorrectly(String db) { @Test void shouldContainInitialRouters() { // Given - FakeClock clock = new FakeClock(); + var clock = new FakeClock(); // When RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), clock, A, B, C); @@ -157,8 +156,8 @@ void shouldContainInitialRouters() { @Test void shouldPreserveOrderingOfRouters() { - ClusterRoutingTable routingTable = newRoutingTable(); - List routers = asList(A, C, D, F, B, E); + var routingTable = newRoutingTable(); + var routers = asList(A, C, D, F, B, E); routingTable.update(createClusterComposition(routers, EMPTY, EMPTY)); @@ -169,8 +168,8 @@ void shouldPreserveOrderingOfRouters() { @Test void shouldPreserveOrderingOfWriters() { - ClusterRoutingTable routingTable = newRoutingTable(); - List writers = asList(D, F, A, C, E); + var routingTable = newRoutingTable(); + var writers = asList(D, F, A, C, E); routingTable.update(createClusterComposition(EMPTY, writers, EMPTY)); @@ -180,8 +179,8 @@ void shouldPreserveOrderingOfWriters() { @Test void shouldPreserveOrderingOfReaders() { - ClusterRoutingTable routingTable = newRoutingTable(); - List readers = asList(B, A, F, C, D); + var routingTable = newRoutingTable(); + var readers = asList(B, A, F, C, D); routingTable.update(createClusterComposition(EMPTY, EMPTY, readers)); @@ -191,11 +190,11 @@ void shouldPreserveOrderingOfReaders() { @Test void shouldTreatOneRouterAsValid() { - ClusterRoutingTable routingTable = newRoutingTable(); + var routingTable = newRoutingTable(); - List routers = singletonList(A); - List writers = asList(B, C); - List readers = asList(D, E); + var routers = singletonList(A); + var writers = asList(B, C); + var readers = asList(D, E); routingTable.update(createClusterComposition(routers, writers, readers)); @@ -205,25 +204,25 @@ void shouldTreatOneRouterAsValid() { @Test void shouldHaveBeStaleForExpiredTime() throws Throwable { - ClusterRoutingTable routingTable = newRoutingTable(Clock.systemUTC()); + var routingTable = newRoutingTable(Clock.systemUTC()); assertTrue(routingTable.hasBeenStaleFor(0)); } @Test void shouldNotHaveBeStaleForUnexpiredTime() throws Throwable { - ClusterRoutingTable routingTable = newRoutingTable(Clock.systemUTC()); + var routingTable = newRoutingTable(Clock.systemUTC()); assertFalse(routingTable.hasBeenStaleFor(Duration.ofSeconds(30).toMillis())); } @Test void shouldDefaultToPreferInitialRouter() throws Throwable { - ClusterRoutingTable routingTable = newRoutingTable(); + var routingTable = newRoutingTable(); assertTrue(routingTable.preferInitialRouter()); } @Test void shouldPreferInitialRouterIfNoWriter() throws Throwable { - ClusterRoutingTable routingTable = newRoutingTable(); + var routingTable = newRoutingTable(); routingTable.update(createClusterComposition(EMPTY, EMPTY, EMPTY)); assertTrue(routingTable.preferInitialRouter()); @@ -242,7 +241,7 @@ void shouldPreferInitialRouterIfNoWriter() throws Throwable { @Test void shouldNotPreferInitialRouterIfHasWriter() throws Throwable { - ClusterRoutingTable routingTable = newRoutingTable(); + var routingTable = newRoutingTable(); routingTable.update(createClusterComposition(EMPTY, singletonList(A), EMPTY)); assertFalse(routingTable.preferInitialRouter()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/IdentityResolverTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/IdentityResolverTest.java index 78a24f7d64..61fa8cae37 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/IdentityResolverTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/IdentityResolverTest.java @@ -24,16 +24,15 @@ import static org.mockito.Mockito.mock; import static org.neo4j.driver.internal.cluster.IdentityResolver.IDENTITY_RESOLVER; -import java.util.Set; import org.junit.jupiter.api.Test; import org.neo4j.driver.net.ServerAddress; class IdentityResolverTest { @Test void shouldReturnGivenAddress() { - ServerAddress address = mock(ServerAddress.class); + var address = mock(ServerAddress.class); - Set resolved = IDENTITY_RESOLVER.resolve(address); + var resolved = IDENTITY_RESOLVER.resolve(address); assertThat(resolved.size(), equalTo(1)); assertThat(resolved.iterator().next(), is(address)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java index 1b45d26ea5..d20cf2aa3a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java @@ -47,15 +47,14 @@ import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.internal.spi.Connection; class MultiDatabasesRoutingProcedureRunnerTest extends AbstractRoutingProcedureRunnerTest { @ParameterizedTest @ValueSource(strings = {"", SYSTEM_DATABASE_NAME, " this is a db name "}) void shouldCallGetRoutingTableWithEmptyMapOnSystemDatabaseForDatabase(String db) { - TestRoutingProcedureRunner runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); - RoutingProcedureResponse response = await(runner.run(connection(), database(db), Collections.emptySet(), null)); + var runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); + var response = await(runner.run(connection(), database(db), Collections.emptySet(), null)); assertTrue(response.isSuccess()); assertEquals(1, response.records().size()); @@ -64,18 +63,18 @@ void shouldCallGetRoutingTableWithEmptyMapOnSystemDatabaseForDatabase(String db) assertThat(runner.connection.databaseName(), equalTo(systemDatabase())); assertThat(runner.connection.mode(), equalTo(AccessMode.READ)); - Query query = generateMultiDatabaseRoutingQuery(Collections.emptyMap(), db); + var query = generateMultiDatabaseRoutingQuery(Collections.emptyMap(), db); assertThat(runner.procedure, equalTo(query)); } @ParameterizedTest @ValueSource(strings = {"", SYSTEM_DATABASE_NAME, " this is a db name "}) void shouldCallGetRoutingTableWithParamOnSystemDatabaseForDatabase(String db) { - URI uri = URI.create("neo4j://localhost/?key1=value1&key2=value2"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost/?key1=value1&key2=value2"); + var context = new RoutingContext(uri); - TestRoutingProcedureRunner runner = new TestRoutingProcedureRunner(context); - RoutingProcedureResponse response = await(runner.run(connection(), database(db), Collections.emptySet(), null)); + var runner = new TestRoutingProcedureRunner(context); + var response = await(runner.run(connection(), database(db), Collections.emptySet(), null)); assertTrue(response.isSuccess()); assertEquals(1, response.records().size()); @@ -84,7 +83,7 @@ void shouldCallGetRoutingTableWithParamOnSystemDatabaseForDatabase(String db) { assertThat(runner.connection.databaseName(), equalTo(systemDatabase())); assertThat(runner.connection.mode(), equalTo(AccessMode.READ)); - Query query = generateMultiDatabaseRoutingQuery(context.toMap(), db); + var query = generateMultiDatabaseRoutingQuery(context.toMap(), db); assertThat(response.procedure(), equalTo(query)); assertThat(runner.procedure, equalTo(query)); } @@ -101,7 +100,7 @@ SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner( } private static Query generateMultiDatabaseRoutingQuery(Map context, String db) { - Value parameters = parameters(ROUTING_CONTEXT, context, DATABASE_NAME, db); + var parameters = parameters(ROUTING_CONTEXT, context, DATABASE_NAME, db); return new Query(MULTI_DB_GET_ROUTING_TABLE, parameters); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java index 94206364b3..41b3dceb6e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java @@ -53,7 +53,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -88,17 +87,17 @@ class RediscoveryTest { @Test void shouldUseFirstRouterInTable() { - ClusterComposition expectedComposition = + var expectedComposition = new ClusterComposition(42, asOrderedSet(B, C), asOrderedSet(C, D), asOrderedSet(B), null); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(B, expectedComposition); // first -> valid cluster composition - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(B); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(B); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -108,7 +107,7 @@ void shouldUseFirstRouterInTable() { @Test void shouldSkipFailingRouters() { - ClusterComposition expectedComposition = + var expectedComposition = new ClusterComposition(42, asOrderedSet(A, B, C), asOrderedSet(B, C, D), asOrderedSet(A, B), null); Map responsesByAddress = new HashMap<>(); @@ -116,11 +115,11 @@ void shouldSkipFailingRouters() { responsesByAddress.put(B, new ServiceUnavailableException("Hi!")); // second -> non-fatal failure responsesByAddress.put(C, expectedComposition); // third -> valid cluster composition - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -132,18 +131,17 @@ void shouldSkipFailingRouters() { @Test void shouldFailImmediatelyOnAuthError() { - AuthenticationException authError = - new AuthenticationException("Neo.ClientError.Security.Unauthorized", "Wrong password"); + var authError = new AuthenticationException("Neo.ClientError.Security.Unauthorized", "Wrong password"); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(A, new RuntimeException("Hi!")); // first router -> non-fatal failure responsesByAddress.put(B, authError); // second router -> fatal auth error - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - AuthenticationException error = assertThrows( + var error = assertThrows( AuthenticationException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertEquals(authError, error); @@ -152,7 +150,7 @@ void shouldFailImmediatelyOnAuthError() { @Test void shouldUseAnotherRouterOnAuthorizationExpiredException() { - ClusterComposition expectedComposition = + var expectedComposition = new ClusterComposition(42, asOrderedSet(A, B, C), asOrderedSet(B, C, D), asOrderedSet(A, B), null); Map responsesByAddress = new HashMap<>(); @@ -160,11 +158,11 @@ void shouldUseAnotherRouterOnAuthorizationExpiredException() { A, new AuthorizationExpiredException("Neo.ClientError.Security.AuthorizationExpired", "message")); responsesByAddress.put(B, expectedComposition); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -181,17 +179,17 @@ void shouldUseAnotherRouterOnAuthorizationExpiredException() { "Neo.ClientError.Transaction.InvalidBookmarkMixture" }) void shouldFailImmediatelyOnBookmarkErrors(String code) { - ClientException error = new ClientException(code, "Invalid"); + var error = new ClientException(code, "Invalid"); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(A, new RuntimeException("Hi!")); responsesByAddress.put(B, error); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - ClientException actualError = assertThrows( + var actualError = assertThrows( ClientException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertEquals(error, actualError); @@ -200,17 +198,17 @@ void shouldFailImmediatelyOnBookmarkErrors(String code) { @Test void shouldFailImmediatelyOnClosedPoolError() { - IllegalStateException error = new IllegalStateException(ConnectionPool.CONNECTION_POOL_CLOSED_ERROR_MESSAGE); + var error = new IllegalStateException(ConnectionPool.CONNECTION_POOL_CLOSED_ERROR_MESSAGE); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(A, new RuntimeException("Hi!")); responsesByAddress.put(B, error); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - IllegalStateException actualError = assertThrows( + var actualError = assertThrows( IllegalStateException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertEquals(error, actualError); @@ -219,8 +217,8 @@ void shouldFailImmediatelyOnClosedPoolError() { @Test void shouldFallbackToInitialRouterWhenKnownRoutersFail() { - BoltServerAddress initialRouter = A; - ClusterComposition expectedComposition = + var initialRouter = A; + var expectedComposition = new ClusterComposition(42, asOrderedSet(C, B, A), asOrderedSet(A, B), asOrderedSet(D, E), null); Map responsesByAddress = new HashMap<>(); @@ -228,12 +226,12 @@ void shouldFallbackToInitialRouterWhenKnownRoutersFail() { responsesByAddress.put(C, new ServiceUnavailableException("Hi!")); // second -> non-fatal failure responsesByAddress.put(initialRouter, expectedComposition); // initial -> valid response - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - ServerAddressResolver resolver = resolverMock(initialRouter, initialRouter); - Rediscovery rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); - RoutingTable table = routingTableMock(B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var resolver = resolverMock(initialRouter, initialRouter); + var rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); + var table = routingTableMock(B, C); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -245,31 +243,29 @@ void shouldFallbackToInitialRouterWhenKnownRoutersFail() { @Disabled("this test looks wrong") @Test void shouldFailImmediatelyWhenClusterCompositionProviderReturnsFailure() { - ClusterComposition validComposition = - new ClusterComposition(42, asOrderedSet(A), asOrderedSet(B), asOrderedSet(C), null); - ProtocolException protocolError = new ProtocolException("Wrong record!"); + var validComposition = new ClusterComposition(42, asOrderedSet(A), asOrderedSet(B), asOrderedSet(C), null); + var protocolError = new ProtocolException("Wrong record!"); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(B, protocolError); // first -> fatal failure responsesByAddress.put(C, validComposition); // second -> valid cluster composition - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class), logging); - RoutingTable table = routingTableMock(B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class), logging); + var table = routingTableMock(B, C); // When - ClusterComposition composition = await( - rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) + var composition = await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); assertEquals(validComposition, composition); - ArgumentCaptor warningMessageCaptor = ArgumentCaptor.forClass(String.class); - ArgumentCaptor debugMessageCaptor = ArgumentCaptor.forClass(String.class); - ArgumentCaptor debugThrowableCaptor = ArgumentCaptor.forClass(DiscoveryException.class); + var warningMessageCaptor = ArgumentCaptor.forClass(String.class); + var debugMessageCaptor = ArgumentCaptor.forClass(String.class); + var debugThrowableCaptor = ArgumentCaptor.forClass(DiscoveryException.class); verify(logging).getLog(RediscoveryImpl.class); verify(logger).warn(warningMessageCaptor.capture()); verify(logger).debug(debugMessageCaptor.capture(), debugThrowableCaptor.capture()); @@ -280,8 +276,8 @@ void shouldFailImmediatelyWhenClusterCompositionProviderReturnsFailure() { @Test void shouldResolveInitialRouterAddress() { - BoltServerAddress initialRouter = A; - ClusterComposition expectedComposition = + var initialRouter = A; + var expectedComposition = new ClusterComposition(42, asOrderedSet(A, B), asOrderedSet(A, B), asOrderedSet(A, B), null); Map responsesByAddress = new HashMap<>(); @@ -290,13 +286,13 @@ void shouldResolveInitialRouterAddress() { responsesByAddress.put(D, new IOException("Hi!")); // resolved first -> non-fatal failure responsesByAddress.put(E, expectedComposition); // resolved second -> valid response - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); + var compositionProvider = compositionProviderMock(responsesByAddress); // initial router resolved to two other addresses - ServerAddressResolver resolver = resolverMock(initialRouter, D, E); - Rediscovery rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); - RoutingTable table = routingTableMock(B, C); + var resolver = resolverMock(initialRouter, D, E); + var rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); + var table = routingTableMock(B, C); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -308,7 +304,7 @@ void shouldResolveInitialRouterAddress() { @Test void shouldResolveInitialRouterAddressUsingCustomResolver() { - ClusterComposition expectedComposition = + var expectedComposition = new ClusterComposition(42, asOrderedSet(A, B, C), asOrderedSet(A, B, C), asOrderedSet(B, E), null); ServerAddressResolver resolver = address -> { @@ -321,11 +317,11 @@ void shouldResolveInitialRouterAddressUsingCustomResolver() { responsesByAddress.put(C, new ServiceUnavailableException("Hi!")); // second -> non-fatal failure responsesByAddress.put(E, expectedComposition); // resolved second -> valid response - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, resolver); - RoutingTable table = routingTableMock(B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, resolver); + var table = routingTableMock(B, C); - ClusterComposition actualComposition = await( + var actualComposition = await( rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); @@ -336,20 +332,20 @@ void shouldResolveInitialRouterAddressUsingCustomResolver() { @Test void shouldPropagateFailureWhenResolverFails() { - ClusterComposition expectedComposition = + var expectedComposition = new ClusterComposition(42, asOrderedSet(A, B), asOrderedSet(A, B), asOrderedSet(A, B), null); Map responsesByAddress = singletonMap(A, expectedComposition); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); + var compositionProvider = compositionProviderMock(responsesByAddress); // failing server address resolver - ServerAddressResolver resolver = mock(ServerAddressResolver.class); + var resolver = mock(ServerAddressResolver.class); when(resolver.resolve(A)).thenThrow(new RuntimeException("Resolver fails!")); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, resolver); - RoutingTable table = routingTableMock(); + var rediscovery = newRediscovery(A, compositionProvider, resolver); + var table = routingTableMock(); - RuntimeException error = assertThrows( + var error = assertThrows( RuntimeException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertEquals("Resolver fails!", error.getMessage()); @@ -361,18 +357,18 @@ void shouldPropagateFailureWhenResolverFails() { @Test void shouldRecordAllErrorsWhenNoRouterRespond() { Map responsesByAddress = new HashMap<>(); - ServiceUnavailableException first = new ServiceUnavailableException("Hi!"); + var first = new ServiceUnavailableException("Hi!"); responsesByAddress.put(A, first); // first -> non-fatal failure - SessionExpiredException second = new SessionExpiredException("Hi!"); + var second = new SessionExpiredException("Hi!"); responsesByAddress.put(B, second); // second -> non-fatal failure - IOException third = new IOException("Hi!"); + var third = new IOException("Hi!"); responsesByAddress.put(C, third); // third -> non-fatal failure - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); - ServiceUnavailableException e = assertThrows( + var e = assertThrows( ServiceUnavailableException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertThat(e.getMessage(), containsString("Could not perform discovery")); @@ -384,51 +380,47 @@ void shouldRecordAllErrorsWhenNoRouterRespond() { @Test void shouldUseInitialRouterAfterDiscoveryReturnsNoWriters() { - BoltServerAddress initialRouter = A; - ClusterComposition noWritersComposition = - new ClusterComposition(42, asOrderedSet(D, E), emptySet(), asOrderedSet(D, E), null); - ClusterComposition validComposition = + var initialRouter = A; + var noWritersComposition = new ClusterComposition(42, asOrderedSet(D, E), emptySet(), asOrderedSet(D, E), null); + var validComposition = new ClusterComposition(42, asOrderedSet(B, A), asOrderedSet(B, A), asOrderedSet(B, A), null); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(initialRouter, validComposition); // initial -> valid composition - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - ServerAddressResolver resolver = resolverMock(initialRouter, initialRouter); - Rediscovery rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); + var compositionProvider = compositionProviderMock(responsesByAddress); + var resolver = resolverMock(initialRouter, initialRouter); + var rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); RoutingTable table = new ClusterRoutingTable(defaultDatabase(), new FakeClock()); table.update(noWritersComposition); - ClusterComposition composition2 = await( - rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) + var composition2 = await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); assertEquals(validComposition, composition2); } @Test void shouldUseInitialRouterToStartWith() { - BoltServerAddress initialRouter = A; - ClusterComposition validComposition = - new ClusterComposition(42, asOrderedSet(A), asOrderedSet(A), asOrderedSet(A), null); + var initialRouter = A; + var validComposition = new ClusterComposition(42, asOrderedSet(A), asOrderedSet(A), asOrderedSet(A), null); Map responsesByAddress = new HashMap<>(); responsesByAddress.put(initialRouter, validComposition); // initial -> valid composition - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - ServerAddressResolver resolver = resolverMock(initialRouter, initialRouter); - Rediscovery rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); - RoutingTable table = routingTableMock(true, B, C, D); + var compositionProvider = compositionProviderMock(responsesByAddress); + var resolver = resolverMock(initialRouter, initialRouter); + var rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); + var table = routingTableMock(true, B, C, D); - ClusterComposition composition = await( - rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) + var composition = await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); assertEquals(validComposition, composition); } @Test void shouldUseKnownRoutersWhenInitialRouterFails() { - BoltServerAddress initialRouter = A; - ClusterComposition validComposition = + var initialRouter = A; + var validComposition = new ClusterComposition(42, asOrderedSet(D, E), asOrderedSet(E, D), asOrderedSet(A, B), null); Map responsesByAddress = new HashMap<>(); @@ -436,13 +428,12 @@ void shouldUseKnownRoutersWhenInitialRouterFails() { responsesByAddress.put(D, new IOException("Hi")); // first known -> non-fatal failure responsesByAddress.put(E, validComposition); // second known -> valid composition - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - ServerAddressResolver resolver = resolverMock(initialRouter, initialRouter); - Rediscovery rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); - RoutingTable table = routingTableMock(true, D, E); + var compositionProvider = compositionProviderMock(responsesByAddress); + var resolver = resolverMock(initialRouter, initialRouter); + var rediscovery = newRediscovery(initialRouter, compositionProvider, resolver); + var table = routingTableMock(true, D, E); - ClusterComposition composition = await( - rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) + var composition = await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null)) .getClusterComposition(); assertEquals(validComposition, composition); verify(table).forget(initialRouter); @@ -452,18 +443,18 @@ void shouldUseKnownRoutersWhenInitialRouterFails() { @Test void shouldNotLogWhenSingleRetryAttemptFails() { Map responsesByAddress = singletonMap(A, new ServiceUnavailableException("Hi!")); - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - ServerAddressResolver resolver = resolverMock(A, A); + var compositionProvider = compositionProviderMock(responsesByAddress); + var resolver = resolverMock(A, A); - ImmediateSchedulingEventExecutor eventExecutor = new ImmediateSchedulingEventExecutor(); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var eventExecutor = new ImmediateSchedulingEventExecutor(); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); Rediscovery rediscovery = new RediscoveryImpl(A, compositionProvider, resolver, logging, DefaultDomainNameResolver.getInstance()); - RoutingTable table = routingTableMock(A); + var table = routingTableMock(A); - ServiceUnavailableException e = assertThrows( + var e = assertThrows( ServiceUnavailableException.class, () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); assertThat(e.getMessage(), containsString("Could not perform discovery")); @@ -476,13 +467,13 @@ void shouldNotLogWhenSingleRetryAttemptFails() { @Test void shouldResolveToIP() throws UnknownHostException { - ServerAddressResolver resolver = resolverMock(A, A); - DomainNameResolver domainNameResolver = mock(DomainNameResolver.class); - InetAddress localhost = InetAddress.getLocalHost(); + var resolver = resolverMock(A, A); + var domainNameResolver = mock(DomainNameResolver.class); + var localhost = InetAddress.getLocalHost(); when(domainNameResolver.resolve(A.host())).thenReturn(new InetAddress[] {localhost}); Rediscovery rediscovery = new RediscoveryImpl(A, null, resolver, DEV_NULL_LOGGING, domainNameResolver); - List addresses = rediscovery.resolve(); + var addresses = rediscovery.resolve(); verify(resolver, times(1)).resolve(A); verify(domainNameResolver, times(1)).resolve(A.host()); @@ -498,9 +489,9 @@ void shouldFailImmediatelyOnAuthTokenManagerExecutionException() { responsesByAddress.put(A, new RuntimeException("Hi!")); // first router -> non-fatal failure responsesByAddress.put(B, exception); // second router -> fatal auth error - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); var actualException = assertThrows( AuthTokenManagerExecutionException.class, @@ -517,9 +508,9 @@ void shouldFailImmediatelyOnUnsupportedFeatureException() { responsesByAddress.put(A, new RuntimeException("Hi!")); // first router -> non-fatal failure responsesByAddress.put(B, exception); // second router -> fatal auth error - ClusterCompositionProvider compositionProvider = compositionProviderMock(responsesByAddress); - Rediscovery rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); - RoutingTable table = routingTableMock(A, B, C); + var compositionProvider = compositionProviderMock(responsesByAddress); + var rediscovery = newRediscovery(A, compositionProvider, mock(ServerAddressResolver.class)); + var table = routingTableMock(A, B, C); var actualException = assertThrows( UnsupportedFeatureException.class, @@ -576,12 +567,12 @@ private Rediscovery newRediscovery( @SuppressWarnings("unchecked") private static ClusterCompositionProvider compositionProviderMock( Map responsesByAddress) { - ClusterCompositionProvider provider = mock(ClusterCompositionProvider.class); + var provider = mock(ClusterCompositionProvider.class); when(provider.getClusterComposition(any(Connection.class), any(DatabaseName.class), any(Set.class), any())) .then(invocation -> { Connection connection = invocation.getArgument(0); - BoltServerAddress address = connection.serverAddress(); - Object response = responsesByAddress.get(address); + var address = connection.serverAddress(); + var response = responsesByAddress.get(address); assertNotNull(response); if (response instanceof Throwable) { return failedFuture((Throwable) response); @@ -593,13 +584,13 @@ private static ClusterCompositionProvider compositionProviderMock( } private static ServerAddressResolver resolverMock(BoltServerAddress address, BoltServerAddress... resolved) { - ServerAddressResolver resolver = mock(ServerAddressResolver.class); + var resolver = mock(ServerAddressResolver.class); when(resolver.resolve(address)).thenReturn(asOrderedSet(resolved)); return resolver; } private static ConnectionPool asyncConnectionPoolMock() { - ConnectionPool pool = mock(ConnectionPool.class); + var pool = mock(ConnectionPool.class); when(pool.acquire(any(), any())).then(invocation -> { BoltServerAddress address = invocation.getArgument(0); return completedFuture(asyncConnectionMock(address)); @@ -608,7 +599,7 @@ private static ConnectionPool asyncConnectionPoolMock() { } private static Connection asyncConnectionMock(BoltServerAddress address) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(address); return connection; } @@ -618,7 +609,7 @@ private static RoutingTable routingTableMock(BoltServerAddress... routers) { } private static RoutingTable routingTableMock(boolean preferInitialRouter, BoltServerAddress... routers) { - RoutingTable routingTable = mock(RoutingTable.class); + var routingTable = mock(RoutingTable.class); when(routingTable.routers()).thenReturn(Arrays.asList(routers)); when(routingTable.database()).thenReturn(defaultDatabase()); when(routingTable.preferInitialRouter()).thenReturn(preferInitialRouter); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java index 65c0a37df3..2100517220 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java @@ -42,7 +42,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.neo4j.driver.Bookmark; -import org.neo4j.driver.Record; import org.neo4j.driver.Value; import org.neo4j.driver.Values; import org.neo4j.driver.internal.DatabaseName; @@ -70,15 +69,14 @@ private static Stream shouldRequestRoutingTableForAllValidInputScenar @ParameterizedTest @MethodSource void shouldRequestRoutingTableForAllValidInputScenarios(RoutingContext routingContext, DatabaseName databaseName) { - Map routingTable = getRoutingTable(); - CompletableFuture> completableFuture = CompletableFuture.completedFuture(routingTable); - RouteMessageRoutingProcedureRunner runner = - new RouteMessageRoutingProcedureRunner(routingContext, () -> completableFuture); - Connection connection = mock(Connection.class); + var routingTable = getRoutingTable(); + var completableFuture = CompletableFuture.completedFuture(routingTable); + var runner = new RouteMessageRoutingProcedureRunner(routingContext, () -> completableFuture); + var connection = mock(Connection.class); CompletableFuture releaseConnectionFuture = CompletableFuture.completedFuture(null); doReturn(releaseConnectionFuture).when(connection).release(); - RoutingProcedureResponse response = TestUtil.await(runner.run(connection, databaseName, null, null)); + var response = TestUtil.await(runner.run(connection, databaseName, null, null)); assertNotNull(response); assertTrue(response.isSuccess()); @@ -86,7 +84,7 @@ void shouldRequestRoutingTableForAllValidInputScenarios(RoutingContext routingCo assertEquals(1, response.records().size()); assertNotNull(response.records().get(0)); - Record record = response.records().get(0); + var record = response.records().get(0); assertEquals(routingTable.get("ttl"), record.get("ttl")); assertEquals(routingTable.get("servers"), record.get("servers")); @@ -97,16 +95,14 @@ void shouldRequestRoutingTableForAllValidInputScenarios(RoutingContext routingCo @Test void shouldReturnFailureWhenSomethingHappensGettingTheRoutingTable() { Throwable reason = new RuntimeException("Some error"); - CompletableFuture> completableFuture = new CompletableFuture<>(); + var completableFuture = new CompletableFuture>(); completableFuture.completeExceptionally(reason); - RouteMessageRoutingProcedureRunner runner = - new RouteMessageRoutingProcedureRunner(RoutingContext.EMPTY, () -> completableFuture); - Connection connection = mock(Connection.class); + var runner = new RouteMessageRoutingProcedureRunner(RoutingContext.EMPTY, () -> completableFuture); + var connection = mock(Connection.class); CompletableFuture releaseConnectionFuture = CompletableFuture.completedFuture(null); doReturn(releaseConnectionFuture).when(connection).release(); - RoutingProcedureResponse response = - TestUtil.await(runner.run(connection, DatabaseNameUtil.defaultDatabase(), null, null)); + var response = TestUtil.await(runner.run(connection, DatabaseNameUtil.defaultDatabase(), null, null)); assertNotNull(response); assertFalse(response.isSuccess()); @@ -125,7 +121,7 @@ private void verifyMessageWasWrittenAndFlushed( RoutingContext routingContext, Set bookmarks, DatabaseName databaseName) { - Map context = routingContext.toMap().entrySet().stream() + var context = routingContext.toMap().entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, entry -> Values.value(entry.getValue()))); verify(connection) diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingContextTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingContextTest.java index 946a5994c3..9a2c6b07dc 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingContextTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingContextTest.java @@ -53,8 +53,8 @@ void uriWithEmptyQueryIsParsedToEmptyContext() { @Test void uriWithQueryIsParsed() { - URI uri = URI.create("neo4j://localhost:7687/?key1=value1&key2=value2&key3=value3"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost:7687/?key1=value1&key2=value2&key3=value3"); + var context = new RoutingContext(uri); assertTrue(context.isDefined()); Map expectedMap = new HashMap<>(); @@ -67,16 +67,16 @@ void uriWithQueryIsParsed() { @Test void boltUriDisablesServerSideRouting() { - URI uri = URI.create("bolt://localhost:7687/?key1=value1&key2=value2&key3=value3"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("bolt://localhost:7687/?key1=value1&key2=value2&key3=value3"); + var context = new RoutingContext(uri); assertEquals(false, context.isServerRoutingEnabled()); } @Test void neo4jUriEnablesServerSideRouting() { - URI uri = URI.create("neo4j://localhost:7687/?key1=value1&key2=value2&key3=value3"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost:7687/?key1=value1&key2=value2&key3=value3"); + var context = new RoutingContext(uri); assertEquals(true, context.isServerRoutingEnabled()); } @@ -103,8 +103,8 @@ void throwsForDuplicatedUriQueryParameters() { @Test void mapRepresentationIsUnmodifiable() { - URI uri = URI.create("neo4j://localhost:7687/?key1=value1"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost:7687/?key1=value1"); + var context = new RoutingContext(uri); Map expectedMap = new HashMap<>(); expectedMap.put("key1", "value1"); @@ -118,17 +118,17 @@ void mapRepresentationIsUnmodifiable() { @Test void populateAddressWithDefaultPort() { - URI uri = URI.create("neo4j://localhost/"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost/"); + var context = new RoutingContext(uri); assertEquals(singletonMap("address", "localhost:7687"), context.toMap()); } @Test void throwsExceptionIfAddressIsUsedInContext() { - URI uri = URI.create("neo4j://localhost:7687/?key1=value1&address=someaddress:9010"); + var uri = URI.create("neo4j://localhost:7687/?key1=value1&address=someaddress:9010"); - IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> new RoutingContext(uri)); + var e = assertThrows(IllegalArgumentException.class, () -> new RoutingContext(uri)); assertEquals("The key 'address' is reserved for routing context.", e.getMessage()); } @@ -137,7 +137,7 @@ private static void testIllegalUri(URI uri) { } private static void testEmptyRoutingContext(URI uri) { - RoutingContext context = new RoutingContext(uri); + var context = new RoutingContext(uri); Map expectedMap = new HashMap<>(); expectedMap.put("address", "localhost:7687"); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java index 81968ce86e..1951ff5ed6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java @@ -60,16 +60,16 @@ class RoutingProcedureClusterCompositionProviderTest { @Test void shouldProtocolErrorWhenNoRecord() { // Given - SingleDatabaseRoutingProcedureRunner mockedRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var mockedRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection); - RoutingProcedureResponse noRecordsResponse = newRoutingResponse(); + var noRecordsResponse = newRoutingResponse(); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(noRecordsResponse)); // When & Then - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -79,17 +79,17 @@ void shouldProtocolErrorWhenNoRecord() { @Test void shouldProtocolErrorWhenMoreThanOneRecord() { // Given - SingleDatabaseRoutingProcedureRunner mockedRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var mockedRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection); Record aRecord = new InternalRecord(asList("key1", "key2"), new Value[] {new StringValue("a value")}); - RoutingProcedureResponse routingResponse = newRoutingResponse(aRecord, aRecord); + var routingResponse = newRoutingResponse(aRecord, aRecord); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -99,17 +99,17 @@ void shouldProtocolErrorWhenMoreThanOneRecord() { @Test void shouldProtocolErrorWhenUnparsableRecord() { // Given - SingleDatabaseRoutingProcedureRunner mockedRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var mockedRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection); Record aRecord = new InternalRecord(asList("key1", "key2"), new Value[] {new StringValue("a value")}); - RoutingProcedureResponse routingResponse = newRoutingResponse(aRecord); + var routingResponse = newRoutingResponse(aRecord); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -119,21 +119,21 @@ void shouldProtocolErrorWhenUnparsableRecord() { @Test void shouldProtocolErrorWhenNoRouters() { // Given - MultiDatabasesRoutingProcedureRunner mockedRunner = newMultiDBProcedureRunnerMock(); - Connection connection = mock(Connection.class); - Clock mockedClock = mock(Clock.class); + var mockedRunner = newMultiDBProcedureRunnerMock(); + var connection = mock(Connection.class); + var mockedClock = mock(Clock.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { value(100), value(asList(serverInfo("READ", "one:1337", "two:1337"), serverInfo("WRITE", "one:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -143,21 +143,21 @@ void shouldProtocolErrorWhenNoRouters() { @Test void routeMessageRoutingProcedureShouldProtocolErrorWhenNoRouters() { // Given - RouteMessageRoutingProcedureRunner mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); - Connection connection = mock(Connection.class); - Clock mockedClock = mock(Clock.class); + var mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); + var connection = mock(Connection.class); + var mockedClock = mock(Clock.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { value(100), value(asList(serverInfo("READ", "one:1337", "two:1337"), serverInfo("WRITE", "one:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -167,21 +167,21 @@ void routeMessageRoutingProcedureShouldProtocolErrorWhenNoRouters() { @Test void shouldProtocolErrorWhenNoReaders() { // Given - MultiDatabasesRoutingProcedureRunner mockedRunner = newMultiDBProcedureRunnerMock(); - Connection connection = mock(Connection.class); - Clock mockedClock = mock(Clock.class); + var mockedRunner = newMultiDBProcedureRunnerMock(); + var connection = mock(Connection.class); + var mockedClock = mock(Clock.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { value(100), value(asList(serverInfo("WRITE", "one:1337"), serverInfo("ROUTE", "one:1337", "two:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -191,21 +191,21 @@ void shouldProtocolErrorWhenNoReaders() { @Test void routeMessageRoutingProcedureShouldProtocolErrorWhenNoReaders() { // Given - RouteMessageRoutingProcedureRunner mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); - Connection connection = mock(Connection.class); - Clock mockedClock = mock(Clock.class); + var mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); + var connection = mock(Connection.class); + var mockedClock = mock(Clock.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { value(100), value(asList(serverInfo("WRITE", "one:1337"), serverInfo("ROUTE", "one:1337", "two:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ProtocolException error = assertThrows( + var error = assertThrows( ProtocolException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -215,15 +215,15 @@ void routeMessageRoutingProcedureShouldProtocolErrorWhenNoReaders() { @Test void shouldPropagateConnectionFailureExceptions() { // Given - SingleDatabaseRoutingProcedureRunner mockedRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var mockedRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(failedFuture(new ServiceUnavailableException("Connection breaks during cypher execution"))); // When & Then - ServiceUnavailableException e = assertThrows( + var e = assertThrows( ServiceUnavailableException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -233,9 +233,9 @@ void shouldPropagateConnectionFailureExceptions() { @Test void shouldReturnSuccessResultWhenNoError() { // Given - Clock mockedClock = mock(Clock.class); - Connection connection = mock(Connection.class); - MultiDatabasesRoutingProcedureRunner mockedRunner = newMultiDBProcedureRunnerMock(); + var mockedClock = mock(Clock.class); + var connection = mock(Connection.class); + var mockedRunner = newMultiDBProcedureRunnerMock(); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { @@ -245,13 +245,13 @@ void shouldReturnSuccessResultWhenNoError() { serverInfo("WRITE", "one:1337"), serverInfo("ROUTE", "one:1337", "two:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ClusterComposition cluster = + var cluster = await(provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null)); // Then @@ -264,9 +264,9 @@ void shouldReturnSuccessResultWhenNoError() { @Test void routeMessageRoutingProcedureShouldReturnSuccessResultWhenNoError() { // Given - Clock mockedClock = mock(Clock.class); - Connection connection = mock(Connection.class); - RouteMessageRoutingProcedureRunner mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); + var mockedClock = mock(Clock.class); + var connection = mock(Connection.class); + var mockedRunner = newRouteMessageRoutingProcedureRunnerMock(); ClusterCompositionProvider provider = newClusterCompositionProvider(mockedRunner, connection, mockedClock); Record record = new InternalRecord(asList("ttl", "servers"), new Value[] { @@ -276,13 +276,13 @@ void routeMessageRoutingProcedureShouldReturnSuccessResultWhenNoError() { serverInfo("WRITE", "one:1337"), serverInfo("ROUTE", "one:1337", "two:1337"))) }); - RoutingProcedureResponse routingResponse = newRoutingResponse(record); + var routingResponse = newRoutingResponse(record); when(mockedRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(routingResponse)); when(mockedClock.millis()).thenReturn(12345L); // When - ClusterComposition cluster = + var cluster = await(provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null)); // Then @@ -294,17 +294,16 @@ void routeMessageRoutingProcedureShouldReturnSuccessResultWhenNoError() { @Test void shouldReturnFailureWhenProcedureRunnerFails() { - SingleDatabaseRoutingProcedureRunner procedureRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var procedureRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); - RuntimeException error = new RuntimeException("hi"); + var error = new RuntimeException("hi"); when(procedureRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedFuture(newRoutingResponse(error))); - RoutingProcedureClusterCompositionProvider provider = - newClusterCompositionProvider(procedureRunner, connection); + var provider = newClusterCompositionProvider(procedureRunner, connection); - RuntimeException e = assertThrows( + var e = assertThrows( RuntimeException.class, () -> await( provider.getClusterComposition(connection, defaultDatabase(), Collections.emptySet(), null))); @@ -313,11 +312,10 @@ void shouldReturnFailureWhenProcedureRunnerFails() { @Test void shouldUseMultiDBProcedureRunnerWhenConnectingWith40Server() throws Throwable { - MultiDatabasesRoutingProcedureRunner procedureRunner = newMultiDBProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var procedureRunner = newMultiDBProcedureRunnerMock(); + var connection = mock(Connection.class); - RoutingProcedureClusterCompositionProvider provider = - newClusterCompositionProvider(procedureRunner, connection); + var provider = newClusterCompositionProvider(procedureRunner, connection); when(procedureRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedWithNull()); @@ -328,11 +326,10 @@ void shouldUseMultiDBProcedureRunnerWhenConnectingWith40Server() throws Throwabl @Test void shouldUseProcedureRunnerWhenConnectingWith35AndPreviousServers() throws Throwable { - SingleDatabaseRoutingProcedureRunner procedureRunner = newProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var procedureRunner = newProcedureRunnerMock(); + var connection = mock(Connection.class); - RoutingProcedureClusterCompositionProvider provider = - newClusterCompositionProvider(procedureRunner, connection); + var provider = newClusterCompositionProvider(procedureRunner, connection); when(procedureRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedWithNull()); @@ -343,11 +340,10 @@ void shouldUseProcedureRunnerWhenConnectingWith35AndPreviousServers() throws Thr @Test void shouldUseRouteMessageProcedureRunnerWhenConnectingWithProtocol43() throws Throwable { - RouteMessageRoutingProcedureRunner procedureRunner = newRouteMessageRoutingProcedureRunnerMock(); - Connection connection = mock(Connection.class); + var procedureRunner = newRouteMessageRoutingProcedureRunnerMock(); + var connection = mock(Connection.class); - RoutingProcedureClusterCompositionProvider provider = - newClusterCompositionProvider(procedureRunner, connection); + var provider = newClusterCompositionProvider(procedureRunner, connection); when(procedureRunner.run(eq(connection), any(DatabaseName.class), any(), any())) .thenReturn(completedWithNull()); @@ -365,7 +361,7 @@ private static Map serverInfo(String role, String... addresses) private static Set serverSet(String... addresses) { Set result = new HashSet<>(); - for (String address : addresses) { + for (var address : addresses) { result.add(new BoltServerAddress(address)); } return result; diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureResponseTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureResponseTest.java index 4fcc2c5bab..3e8593b9ba 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureResponseTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureResponseTest.java @@ -41,48 +41,48 @@ class RoutingProcedureResponseTest { @Test void shouldBeSuccessfulWithRecords() { - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); + var response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); assertTrue(response.isSuccess()); } @Test void shouldNotBeSuccessfulWithError() { - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, new RuntimeException()); + var response = new RoutingProcedureResponse(PROCEDURE, new RuntimeException()); assertFalse(response.isSuccess()); } @Test void shouldThrowWhenFailedAndAskedForRecords() { - RuntimeException error = new RuntimeException(); - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, error); + var error = new RuntimeException(); + var response = new RoutingProcedureResponse(PROCEDURE, error); - IllegalStateException e = assertThrows(IllegalStateException.class, response::records); + var e = assertThrows(IllegalStateException.class, response::records); assertEquals(e.getCause(), error); } @Test void shouldThrowWhenSuccessfulAndAskedForError() { - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); + var response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); assertThrows(IllegalStateException.class, response::error); } @Test void shouldHaveErrorWhenFailed() { - RuntimeException error = new RuntimeException("Hi!"); - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, error); + var error = new RuntimeException("Hi!"); + var response = new RoutingProcedureResponse(PROCEDURE, error); assertEquals(error, response.error()); } @Test void shouldHaveRecordsWhenSuccessful() { - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); + var response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); assertEquals(asList(RECORD_1, RECORD_2), response.records()); } @Test void shouldHaveProcedure() { - RoutingProcedureResponse response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); + var response = new RoutingProcedureResponse(PROCEDURE, asList(RECORD_1, RECORD_2)); assertEquals(PROCEDURE, response.procedure()); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java index dfd5dfa130..bf83c110b8 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java @@ -52,7 +52,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.List; import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletionStage; @@ -74,8 +73,7 @@ void shouldRemoveAddressFromRoutingTableOnConnectionFailure() { routingTable.update( new ClusterComposition(42, asOrderedSet(A, B, C), asOrderedSet(A, C, E), asOrderedSet(B, D, F), null)); - RoutingTableHandler handler = - newRoutingTableHandler(routingTable, newRediscoveryMock(), newConnectionPoolMock()); + var handler = newRoutingTableHandler(routingTable, newRediscoveryMock(), newConnectionPoolMock()); handler.onConnectionFailure(B); @@ -93,24 +91,24 @@ void shouldRemoveAddressFromRoutingTableOnConnectionFailure() { @Test void acquireShouldUpdateRoutingTableWhenKnownRoutingTableIsStale() { - BoltServerAddress initialRouter = new BoltServerAddress("initialRouter", 1); - BoltServerAddress reader1 = new BoltServerAddress("reader-1", 2); - BoltServerAddress reader2 = new BoltServerAddress("reader-1", 3); - BoltServerAddress writer1 = new BoltServerAddress("writer-1", 4); - BoltServerAddress router1 = new BoltServerAddress("router-1", 5); + var initialRouter = new BoltServerAddress("initialRouter", 1); + var reader1 = new BoltServerAddress("reader-1", 2); + var reader2 = new BoltServerAddress("reader-1", 3); + var writer1 = new BoltServerAddress("writer-1", 4); + var router1 = new BoltServerAddress("router-1", 5); - ConnectionPool connectionPool = newConnectionPoolMock(); - ClusterRoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock(), initialRouter); + var connectionPool = newConnectionPoolMock(); + var routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock(), initialRouter); Set readers = new LinkedHashSet<>(asList(reader1, reader2)); Set writers = new LinkedHashSet<>(singletonList(writer1)); Set routers = new LinkedHashSet<>(singletonList(router1)); - ClusterComposition clusterComposition = new ClusterComposition(42, readers, writers, routers, null); + var clusterComposition = new ClusterComposition(42, readers, writers, routers, null); Rediscovery rediscovery = mock(RediscoveryImpl.class); when(rediscovery.lookupClusterComposition(eq(routingTable), eq(connectionPool), any(), any(), any())) .thenReturn(completedFuture(new ClusterCompositionLookupResult(clusterComposition))); - RoutingTableHandler handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); + var handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); assertNotNull(await(handler.ensureRoutingTable(simple(false)))); @@ -149,14 +147,14 @@ void shouldRetainAllFetchedAddressesInConnectionPoolAfterFetchingOfRoutingTable( RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock()); routingTable.update(new ClusterComposition(42, asOrderedSet(), asOrderedSet(B, C), asOrderedSet(D, E), null)); - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); - Rediscovery rediscovery = newRediscoveryMock(); + var rediscovery = newRediscoveryMock(); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(completedFuture(new ClusterCompositionLookupResult( new ClusterComposition(42, asOrderedSet(A, B), asOrderedSet(B, C), asOrderedSet(A, C), null)))); - RoutingTableRegistry registry = new RoutingTableRegistry() { + var registry = new RoutingTableRegistry() { @Override public CompletionStage ensureRoutingTable(ConnectionContext context) { throw new UnsupportedOperationException(); @@ -181,9 +179,9 @@ public Optional getRoutingTableHandler(DatabaseName databas } }; - RoutingTableHandler handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool, registry); + var handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool, registry); - RoutingTable actual = await(handler.ensureRoutingTable(simple(false))); + var actual = await(handler.ensureRoutingTable(simple(false))); assertEquals(routingTable, actual); verify(connectionPool).retainAll(new HashSet<>(asList(A, B, C))); @@ -194,15 +192,15 @@ void shouldRemoveRoutingTableHandlerIfFailedToLookup() throws Throwable { // Given RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock()); - Rediscovery rediscovery = newRediscoveryMock(); + var rediscovery = newRediscoveryMock(); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(Futures.failedFuture(new RuntimeException("Bang!"))); - ConnectionPool connectionPool = newConnectionPoolMock(); - RoutingTableRegistry registry = newRoutingTableRegistryMock(); + var connectionPool = newConnectionPoolMock(); + var registry = newRoutingTableRegistryMock(); // When - RoutingTableHandler handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool, registry); + var handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool, registry); assertThrows(RuntimeException.class, () -> await(handler.ensureRoutingTable(simple(false)))); // Then @@ -210,14 +208,14 @@ void shouldRemoveRoutingTableHandlerIfFailedToLookup() throws Throwable { } private void testRediscoveryWhenStale(AccessMode mode) { - ConnectionPool connectionPool = mock(ConnectionPool.class); + var connectionPool = mock(ConnectionPool.class); when(connectionPool.acquire(LOCAL_DEFAULT, null)).thenReturn(completedFuture(mock(Connection.class))); - RoutingTable routingTable = newStaleRoutingTableMock(mode); - Rediscovery rediscovery = newRediscoveryMock(); + var routingTable = newStaleRoutingTableMock(mode); + var rediscovery = newRediscoveryMock(); - RoutingTableHandler handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); - RoutingTable actual = await(handler.ensureRoutingTable(contextWithMode(mode))); + var handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); + var actual = await(handler.ensureRoutingTable(contextWithMode(mode))); assertEquals(routingTable, actual); verify(routingTable).isStaleFor(mode); @@ -225,13 +223,13 @@ private void testRediscoveryWhenStale(AccessMode mode) { } private void testNoRediscoveryWhenNotStale(AccessMode staleMode, AccessMode notStaleMode) { - ConnectionPool connectionPool = mock(ConnectionPool.class); + var connectionPool = mock(ConnectionPool.class); when(connectionPool.acquire(LOCAL_DEFAULT, null)).thenReturn(completedFuture(mock(Connection.class))); - RoutingTable routingTable = newStaleRoutingTableMock(staleMode); - Rediscovery rediscovery = newRediscoveryMock(); + var routingTable = newStaleRoutingTableMock(staleMode); + var rediscovery = newRediscoveryMock(); - RoutingTableHandler handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); + var handler = newRoutingTableHandler(routingTable, rediscovery, connectionPool); assertNotNull(await(handler.ensureRoutingTable(contextWithMode(notStaleMode)))); verify(routingTable).isStaleFor(notStaleMode); @@ -240,10 +238,10 @@ private void testNoRediscoveryWhenNotStale(AccessMode staleMode, AccessMode notS } private static RoutingTable newStaleRoutingTableMock(AccessMode mode) { - RoutingTable routingTable = mock(RoutingTable.class); + var routingTable = mock(RoutingTable.class); when(routingTable.isStaleFor(mode)).thenReturn(true); - List addresses = singletonList(LOCAL_DEFAULT); + var addresses = singletonList(LOCAL_DEFAULT); when(routingTable.readers()).thenReturn(addresses); when(routingTable.writers()).thenReturn(addresses); when(routingTable.database()).thenReturn(defaultDatabase()); @@ -258,7 +256,7 @@ private static RoutingTableRegistry newRoutingTableRegistryMock() { private static Rediscovery newRediscoveryMock() { Rediscovery rediscovery = mock(RediscoveryImpl.class); Set noServers = Collections.emptySet(); - ClusterComposition clusterComposition = new ClusterComposition(1, noServers, noServers, noServers, null); + var clusterComposition = new ClusterComposition(1, noServers, noServers, noServers, null); when(rediscovery.lookupClusterComposition( any(RoutingTable.class), any(ConnectionPool.class), any(), any(), any())) .thenReturn(completedFuture(new ClusterCompositionLookupResult(clusterComposition))); @@ -270,13 +268,13 @@ private static ConnectionPool newConnectionPoolMock() { } private static ConnectionPool newConnectionPoolMockWithFailures(Set unavailableAddresses) { - ConnectionPool pool = mock(ConnectionPool.class); + var pool = mock(ConnectionPool.class); when(pool.acquire(any(BoltServerAddress.class), any())).then(invocation -> { BoltServerAddress requestedAddress = invocation.getArgument(0); if (unavailableAddresses.contains(requestedAddress)) { return Futures.failedFuture(new ServiceUnavailableException(requestedAddress + " is unavailable!")); } - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(requestedAddress); return completedFuture(connection); }); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImplTest.java index 538b198516..eb1123ae48 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImplTest.java @@ -49,7 +49,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.junit.jupiter.api.Test; @@ -66,16 +65,16 @@ class RoutingTableRegistryImplTest { @Test void factoryShouldCreateARoutingTableWithSameDatabaseName() { - Clock clock = Clock.systemUTC(); - RoutingTableHandlerFactory factory = new RoutingTableHandlerFactory( + var clock = Clock.systemUTC(); + var factory = new RoutingTableHandlerFactory( mock(ConnectionPool.class), mock(RediscoveryImpl.class), clock, DEV_NULL_LOGGING, STALE_ROUTING_TABLE_PURGE_DELAY_MS); - RoutingTableHandler handler = factory.newInstance(database("Molly"), null); - RoutingTable table = handler.routingTable(); + var handler = factory.newInstance(database("Molly"), null); + var table = handler.routingTable(); assertThat(table.database().description(), equalTo("Molly")); @@ -92,11 +91,11 @@ void factoryShouldCreateARoutingTableWithSameDatabaseName() { void shouldCreateRoutingTableHandlerIfAbsentWhenFreshRoutingTable(String databaseName) { // Given ConcurrentMap map = new ConcurrentHashMap<>(); - RoutingTableHandlerFactory factory = mockedHandlerFactory(); - RoutingTableRegistryImpl routingTables = newRoutingTables(map, factory); + var factory = mockedHandlerFactory(); + var routingTables = newRoutingTables(map, factory); // When - DatabaseName database = database(databaseName); + var database = database(databaseName); routingTables.ensureRoutingTable( new ImmutableConnectionContext(database, Collections.emptySet(), AccessMode.READ)); @@ -110,17 +109,16 @@ void shouldCreateRoutingTableHandlerIfAbsentWhenFreshRoutingTable(String databas void shouldReturnExistingRoutingTableHandlerWhenFreshRoutingTable(String databaseName) { // Given ConcurrentMap map = new ConcurrentHashMap<>(); - RoutingTableHandler handler = mockedRoutingTableHandler(); - DatabaseName database = database(databaseName); + var handler = mockedRoutingTableHandler(); + var database = database(databaseName); map.put(database, handler); - RoutingTableHandlerFactory factory = mockedHandlerFactory(); - RoutingTableRegistryImpl routingTables = newRoutingTables(map, factory); - ImmutableConnectionContext context = - new ImmutableConnectionContext(database, Collections.emptySet(), AccessMode.READ); + var factory = mockedHandlerFactory(); + var routingTables = newRoutingTables(map, factory); + var context = new ImmutableConnectionContext(database, Collections.emptySet(), AccessMode.READ); // When - RoutingTableHandler actual = await(routingTables.ensureRoutingTable(context)); + var actual = await(routingTables.ensureRoutingTable(context)); // Then it is the one we put in map that is picked up. verify(handler).ensureRoutingTable(context); @@ -133,13 +131,12 @@ void shouldReturnExistingRoutingTableHandlerWhenFreshRoutingTable(String databas void shouldReturnFreshRoutingTable(AccessMode mode) { // Given ConcurrentMap map = new ConcurrentHashMap<>(); - RoutingTableHandler handler = mockedRoutingTableHandler(); - RoutingTableHandlerFactory factory = mockedHandlerFactory(handler); - RoutingTableRegistryImpl routingTables = + var handler = mockedRoutingTableHandler(); + var factory = mockedHandlerFactory(handler); + var routingTables = new RoutingTableRegistryImpl(map, factory, null, null, mock(Rediscovery.class), DEV_NULL_LOGGING); - ImmutableConnectionContext context = - new ImmutableConnectionContext(defaultDatabase(), Collections.emptySet(), mode); + var context = new ImmutableConnectionContext(defaultDatabase(), Collections.emptySet(), mode); // When routingTables.ensureRoutingTable(context); @@ -154,12 +151,12 @@ void shouldReturnServersInAllRoutingTables() { map.put(database("Apple"), mockedRoutingTableHandler(A, B, C)); map.put(database("Banana"), mockedRoutingTableHandler(B, C, D)); map.put(database("Orange"), mockedRoutingTableHandler(E, F, C)); - RoutingTableHandlerFactory factory = mockedHandlerFactory(); - RoutingTableRegistryImpl routingTables = + var factory = mockedHandlerFactory(); + var routingTables = new RoutingTableRegistryImpl(map, factory, null, null, mock(Rediscovery.class), DEV_NULL_LOGGING); // When - Set servers = routingTables.allServers(); + var servers = routingTables.allServers(); // Then assertThat(servers, containsInAnyOrder(A, B, C, D, E, F)); @@ -173,8 +170,8 @@ void shouldRemoveRoutingTableHandler() { map.put(database("Banana"), mockedRoutingTableHandler(B)); map.put(database("Orange"), mockedRoutingTableHandler(C)); - RoutingTableHandlerFactory factory = mockedHandlerFactory(); - RoutingTableRegistryImpl routingTables = newRoutingTables(map, factory); + var factory = mockedHandlerFactory(); + var routingTables = newRoutingTables(map, factory); // When routingTables.remove(database("Apple")); @@ -190,8 +187,8 @@ void shouldRemoveStaleRoutingTableHandlers() { map.put(database("Banana"), mockedRoutingTableHandler(B)); map.put(database("Orange"), mockedRoutingTableHandler(C)); - RoutingTableHandlerFactory factory = mockedHandlerFactory(); - RoutingTableRegistryImpl routingTables = newRoutingTables(map, factory); + var factory = mockedHandlerFactory(); + var routingTables = newRoutingTables(map, factory); // When routingTables.removeAged(); @@ -214,7 +211,7 @@ void shouldNotAcceptNullRediscovery() { } private RoutingTableHandler mockedRoutingTableHandler(BoltServerAddress... servers) { - RoutingTableHandler handler = mock(RoutingTableHandler.class); + var handler = mock(RoutingTableHandler.class); when(handler.servers()).thenReturn(new HashSet<>(Arrays.asList(servers))); when(handler.isRoutingTableAged()).thenReturn(true); return handler; @@ -226,7 +223,7 @@ private RoutingTableRegistryImpl newRoutingTables( } private RoutingTableHandlerFactory mockedHandlerFactory(RoutingTableHandler handler) { - RoutingTableHandlerFactory factory = mock(RoutingTableHandlerFactory.class); + var factory = mock(RoutingTableHandlerFactory.class); when(factory.newInstance(any(), any())).thenReturn(handler); return factory; } @@ -236,7 +233,7 @@ private RoutingTableHandlerFactory mockedHandlerFactory() { } private RoutingTableHandler mockedRoutingTableHandler() { - RoutingTableHandler handler = mock(RoutingTableHandler.class); + var handler = mock(RoutingTableHandler.class); when(handler.ensureRoutingTable(any())).thenReturn(completedFuture(mock(RoutingTable.class))); return handler; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java index 667eee9f1a..989370d67f 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java @@ -48,16 +48,14 @@ import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.FatalDiscoveryException; import org.neo4j.driver.internal.spi.Connection; class SingleDatabaseRoutingProcedureRunnerTest extends AbstractRoutingProcedureRunnerTest { @Test void shouldCallGetRoutingTableWithEmptyMap() { - TestRoutingProcedureRunner runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); - RoutingProcedureResponse response = - await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); + var runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); + var response = await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); assertTrue(response.isSuccess()); assertEquals(1, response.records().size()); @@ -66,18 +64,17 @@ void shouldCallGetRoutingTableWithEmptyMap() { assertThat(runner.connection.databaseName(), equalTo(defaultDatabase())); assertThat(runner.connection.mode(), equalTo(AccessMode.WRITE)); - Query query = generateRoutingQuery(Collections.emptyMap()); + var query = generateRoutingQuery(Collections.emptyMap()); assertThat(runner.procedure, equalTo(query)); } @Test void shouldCallGetRoutingTableWithParam() { - URI uri = URI.create("neo4j://localhost/?key1=value1&key2=value2"); - RoutingContext context = new RoutingContext(uri); + var uri = URI.create("neo4j://localhost/?key1=value1&key2=value2"); + var context = new RoutingContext(uri); - TestRoutingProcedureRunner runner = new TestRoutingProcedureRunner(context); - RoutingProcedureResponse response = - await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); + var runner = new TestRoutingProcedureRunner(context); + var response = await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); assertTrue(response.isSuccess()); assertEquals(1, response.records().size()); @@ -86,7 +83,7 @@ void shouldCallGetRoutingTableWithParam() { assertThat(runner.connection.databaseName(), equalTo(defaultDatabase())); assertThat(runner.connection.mode(), equalTo(AccessMode.WRITE)); - Query query = generateRoutingQuery(context.toMap()); + var query = generateRoutingQuery(context.toMap()); assertThat(response.procedure(), equalTo(query)); assertThat(runner.procedure, equalTo(query)); } @@ -94,7 +91,7 @@ void shouldCallGetRoutingTableWithParam() { @ParameterizedTest @MethodSource("invalidDatabaseNames") void shouldErrorWhenDatabaseIsNotAbsent(String db) throws Throwable { - TestRoutingProcedureRunner runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); + var runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); assertThrows( FatalDiscoveryException.class, () -> await(runner.run(connection(), database(db), Collections.emptySet(), null))); @@ -114,7 +111,7 @@ private static Stream invalidDatabaseNames() { } private static Query generateRoutingQuery(Map context) { - Value parameters = parameters(ROUTING_CONTEXT, context); + var parameters = parameters(ROUTING_CONTEXT, context); return new Query(GET_ROUTING_TABLE, parameters); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LeastConnectedLoadBalancingStrategyTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LeastConnectedLoadBalancingStrategyTest.java index 02a66a8e8f..22dcbc668a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LeastConnectedLoadBalancingStrategyTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LeastConnectedLoadBalancingStrategyTest.java @@ -64,21 +64,21 @@ void shouldHandleEmptyWriters() { @Test void shouldHandleSingleReaderWithoutActiveConnections() { - BoltServerAddress address = new BoltServerAddress("reader", 9999); + var address = new BoltServerAddress("reader", 9999); assertEquals(address, strategy.selectReader(Collections.singletonList(address))); } @Test void shouldHandleSingleWriterWithoutActiveConnections() { - BoltServerAddress address = new BoltServerAddress("writer", 9999); + var address = new BoltServerAddress("writer", 9999); assertEquals(address, strategy.selectWriter(Collections.singletonList(address))); } @Test void shouldHandleSingleReaderWithActiveConnections() { - BoltServerAddress address = new BoltServerAddress("reader", 9999); + var address = new BoltServerAddress("reader", 9999); when(connectionPool.inUseConnections(address)).thenReturn(42); assertEquals(address, strategy.selectReader(Collections.singletonList(address))); @@ -86,7 +86,7 @@ void shouldHandleSingleReaderWithActiveConnections() { @Test void shouldHandleSingleWriterWithActiveConnections() { - BoltServerAddress address = new BoltServerAddress("writer", 9999); + var address = new BoltServerAddress("writer", 9999); when(connectionPool.inUseConnections(address)).thenReturn(24); assertEquals(address, strategy.selectWriter(Collections.singletonList(address))); @@ -94,9 +94,9 @@ void shouldHandleSingleWriterWithActiveConnections() { @Test void shouldHandleMultipleReadersWithActiveConnections() { - BoltServerAddress address1 = new BoltServerAddress("reader", 1); - BoltServerAddress address2 = new BoltServerAddress("reader", 2); - BoltServerAddress address3 = new BoltServerAddress("reader", 3); + var address1 = new BoltServerAddress("reader", 1); + var address2 = new BoltServerAddress("reader", 2); + var address3 = new BoltServerAddress("reader", 3); when(connectionPool.inUseConnections(address1)).thenReturn(3); when(connectionPool.inUseConnections(address2)).thenReturn(4); @@ -107,10 +107,10 @@ void shouldHandleMultipleReadersWithActiveConnections() { @Test void shouldHandleMultipleWritersWithActiveConnections() { - BoltServerAddress address1 = new BoltServerAddress("writer", 1); - BoltServerAddress address2 = new BoltServerAddress("writer", 2); - BoltServerAddress address3 = new BoltServerAddress("writer", 3); - BoltServerAddress address4 = new BoltServerAddress("writer", 4); + var address1 = new BoltServerAddress("writer", 1); + var address2 = new BoltServerAddress("writer", 2); + var address3 = new BoltServerAddress("writer", 3); + var address4 = new BoltServerAddress("writer", 4); when(connectionPool.inUseConnections(address1)).thenReturn(5); when(connectionPool.inUseConnections(address2)).thenReturn(6); @@ -122,9 +122,9 @@ void shouldHandleMultipleWritersWithActiveConnections() { @Test void shouldReturnDifferentReaderOnEveryInvocationWhenNoActiveConnections() { - BoltServerAddress address1 = new BoltServerAddress("reader", 1); - BoltServerAddress address2 = new BoltServerAddress("reader", 2); - BoltServerAddress address3 = new BoltServerAddress("reader", 3); + var address1 = new BoltServerAddress("reader", 1); + var address2 = new BoltServerAddress("reader", 2); + var address3 = new BoltServerAddress("reader", 3); assertEquals(address1, strategy.selectReader(Arrays.asList(address1, address2, address3))); assertEquals(address2, strategy.selectReader(Arrays.asList(address1, address2, address3))); @@ -137,8 +137,8 @@ void shouldReturnDifferentReaderOnEveryInvocationWhenNoActiveConnections() { @Test void shouldReturnDifferentWriterOnEveryInvocationWhenNoActiveConnections() { - BoltServerAddress address1 = new BoltServerAddress("writer", 1); - BoltServerAddress address2 = new BoltServerAddress("writer", 2); + var address1 = new BoltServerAddress("writer", 1); + var address2 = new BoltServerAddress("writer", 2); assertEquals(address1, strategy.selectReader(Arrays.asList(address1, address2))); assertEquals(address2, strategy.selectReader(Arrays.asList(address1, address2))); @@ -149,8 +149,8 @@ void shouldReturnDifferentWriterOnEveryInvocationWhenNoActiveConnections() { @Test void shouldTraceLogWhenNoAddressSelected() { - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); LoadBalancingStrategy strategy = new LeastConnectedLoadBalancingStrategy(connectionPool, logging); @@ -164,8 +164,8 @@ void shouldTraceLogWhenNoAddressSelected() { @Test void shouldTraceLogSelectedAddress() { - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); when(connectionPool.inUseConnections(any(BoltServerAddress.class))).thenReturn(42); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancerTest.java index a60d8ba445..adcbc9fcfc 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancerTest.java @@ -58,7 +58,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.List; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.function.Function; @@ -67,7 +66,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.exceptions.AuthenticationException; import org.neo4j.driver.exceptions.SecurityException; @@ -95,16 +93,16 @@ class LoadBalancerTest { @ParameterizedTest @EnumSource(AccessMode.class) void returnsCorrectAccessMode(AccessMode mode) { - ConnectionPool connectionPool = newConnectionPoolMock(); - RoutingTable routingTable = mock(RoutingTable.class); - List readerAddresses = Collections.singletonList(A); - List writerAddresses = Collections.singletonList(B); + var connectionPool = newConnectionPoolMock(); + var routingTable = mock(RoutingTable.class); + var readerAddresses = Collections.singletonList(A); + var writerAddresses = Collections.singletonList(B); when(routingTable.readers()).thenReturn(readerAddresses); when(routingTable.writers()).thenReturn(writerAddresses); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); - Connection acquired = await(loadBalancer.acquireConnection(contextWithMode(mode))); + var acquired = await(loadBalancer.acquireConnection(contextWithMode(mode))); assertThat(acquired, instanceOf(RoutingConnection.class)); assertThat(acquired.mode(), equalTo(mode)); @@ -113,14 +111,14 @@ void returnsCorrectAccessMode(AccessMode mode) { @ParameterizedTest @ValueSource(strings = {"", "foo", "data"}) void returnsCorrectDatabaseName(String databaseName) { - ConnectionPool connectionPool = newConnectionPoolMock(); - RoutingTable routingTable = mock(RoutingTable.class); - List writerAddresses = Collections.singletonList(A); + var connectionPool = newConnectionPoolMock(); + var routingTable = mock(RoutingTable.class); + var writerAddresses = Collections.singletonList(A); when(routingTable.writers()).thenReturn(writerAddresses); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); - Connection acquired = await(loadBalancer.acquireConnection(contextWithDatabase(databaseName))); + var acquired = await(loadBalancer.acquireConnection(contextWithDatabase(databaseName))); assertThat(acquired, instanceOf(RoutingConnection.class)); assertThat(acquired.databaseName().description(), equalTo(databaseName)); @@ -129,39 +127,39 @@ void returnsCorrectDatabaseName(String databaseName) { @Test void shouldThrowWhenRediscoveryReturnsNoSuitableServers() { - ConnectionPool connectionPool = newConnectionPoolMock(); - RoutingTable routingTable = mock(RoutingTable.class); + var connectionPool = newConnectionPoolMock(); + var routingTable = mock(RoutingTable.class); when(routingTable.readers()).thenReturn(Collections.emptyList()); when(routingTable.writers()).thenReturn(Collections.emptyList()); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); - SessionExpiredException error1 = assertThrows( + var error1 = assertThrows( SessionExpiredException.class, () -> await(loadBalancer.acquireConnection(contextWithMode(READ)))); assertThat(error1.getMessage(), startsWith("Failed to obtain connection towards READ server")); - SessionExpiredException error2 = assertThrows( + var error2 = assertThrows( SessionExpiredException.class, () -> await(loadBalancer.acquireConnection(contextWithMode(WRITE)))); assertThat(error2.getMessage(), startsWith("Failed to obtain connection towards WRITE server")); } @Test void shouldSelectLeastConnectedAddress() { - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); when(connectionPool.inUseConnections(A)).thenReturn(0); when(connectionPool.inUseConnections(B)).thenReturn(20); when(connectionPool.inUseConnections(C)).thenReturn(0); - RoutingTable routingTable = mock(RoutingTable.class); - List readerAddresses = Arrays.asList(A, B, C); + var routingTable = mock(RoutingTable.class); + var readerAddresses = Arrays.asList(A, B, C); when(routingTable.readers()).thenReturn(readerAddresses); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); Set seenAddresses = new HashSet<>(); - for (int i = 0; i < 10; i++) { - Connection connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); + for (var i = 0; i < 10; i++) { + var connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); seenAddresses.add(connection.serverAddress()); } @@ -172,17 +170,17 @@ void shouldSelectLeastConnectedAddress() { @Test void shouldRoundRobinWhenNoActiveConnections() { - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); - RoutingTable routingTable = mock(RoutingTable.class); - List readerAddresses = Arrays.asList(A, B, C); + var routingTable = mock(RoutingTable.class); + var readerAddresses = Arrays.asList(A, B, C); when(routingTable.readers()).thenReturn(readerAddresses); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); Set seenAddresses = new HashSet<>(); - for (int i = 0; i < 10; i++) { - Connection connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); + for (var i = 0; i < 10; i++) { + var connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); seenAddresses.add(connection.serverAddress()); } @@ -192,16 +190,16 @@ void shouldRoundRobinWhenNoActiveConnections() { @Test void shouldTryMultipleServersAfterRediscovery() { - Set unavailableAddresses = asOrderedSet(A); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); + var unavailableAddresses = asOrderedSet(A); + var connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock()); routingTable.update( new ClusterComposition(-1, new LinkedHashSet<>(Arrays.asList(A, B)), emptySet(), emptySet(), null)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTable); + var loadBalancer = newLoadBalancer(connectionPool, routingTable); - Connection connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); + var connection = await(loadBalancer.acquireConnection(newBoltV4ConnectionContext())); assertNotNull(connection); assertEquals(B, connection.serverAddress()); @@ -211,29 +209,28 @@ void shouldTryMultipleServersAfterRediscovery() { @Test void shouldFailWithResolverError() throws Throwable { - ConnectionPool pool = mock(ConnectionPool.class); - Rediscovery rediscovery = mock(Rediscovery.class); + var pool = mock(ConnectionPool.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenThrow(new RuntimeException("hi there")); - LoadBalancer loadBalancer = newLoadBalancer(pool, rediscovery); + var loadBalancer = newLoadBalancer(pool, rediscovery); - RuntimeException exception = assertThrows(RuntimeException.class, () -> await(loadBalancer.supportsMultiDb())); + var exception = assertThrows(RuntimeException.class, () -> await(loadBalancer.supportsMultiDb())); assertThat(exception.getMessage(), equalTo("hi there")); } @Test void shouldFailAfterTryingAllServers() throws Throwable { - Set unavailableAddresses = asOrderedSet(A, B); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); + var unavailableAddresses = asOrderedSet(A, B); + var connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, rediscovery); - ServiceUnavailableException exception = - assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.supportsMultiDb())); - Throwable[] suppressed = exception.getSuppressed(); + var exception = assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.supportsMultiDb())); + var suppressed = exception.getSuppressed(); assertThat(suppressed.length, equalTo(2)); // one for A, one for B assertThat(suppressed[0].getMessage(), containsString(A.toString())); assertThat(suppressed[1].getMessage(), containsString(B.toString())); @@ -242,30 +239,29 @@ void shouldFailAfterTryingAllServers() throws Throwable { @Test void shouldFailEarlyOnSecurityError() throws Throwable { - Set unavailableAddresses = asOrderedSet(A, B); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures( + var unavailableAddresses = asOrderedSet(A, B); + var connectionPool = newConnectionPoolMockWithFailures( unavailableAddresses, address -> new SecurityException("code", "hi there")); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, rediscovery); - SecurityException exception = - assertThrows(SecurityException.class, () -> await(loadBalancer.supportsMultiDb())); + var exception = assertThrows(SecurityException.class, () -> await(loadBalancer.supportsMultiDb())); assertThat(exception.getMessage(), startsWith("hi there")); verify(connectionPool, times(1)).acquire(any(), any()); } @Test void shouldSuccessOnFirstSuccessfulServer() throws Throwable { - Set unavailableAddresses = asOrderedSet(A, B); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); + var unavailableAddresses = asOrderedSet(A, B); + var connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B, C, D)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, rediscovery); assertTrue(await(loadBalancer.supportsMultiDb())); verify(connectionPool, times(3)).acquire(any(), any()); @@ -273,83 +269,79 @@ void shouldSuccessOnFirstSuccessfulServer() throws Throwable { @Test void shouldThrowModifiedErrorWhenSupportMultiDbTestFails() throws Throwable { - Set unavailableAddresses = asOrderedSet(A, B); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); + var unavailableAddresses = asOrderedSet(A, B); + var connectionPool = newConnectionPoolMockWithFailures(unavailableAddresses); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, rediscovery); - ServiceUnavailableException exception = - assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.verifyConnectivity())); + var exception = assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.verifyConnectivity())); assertThat(exception.getMessage(), startsWith("Unable to connect to database management service,")); } @Test void shouldFailEarlyOnSecurityErrorWhenSupportMultiDbTestFails() throws Throwable { - Set unavailableAddresses = asOrderedSet(A, B); - ConnectionPool connectionPool = newConnectionPoolMockWithFailures( + var unavailableAddresses = asOrderedSet(A, B); + var connectionPool = newConnectionPoolMockWithFailures( unavailableAddresses, address -> new AuthenticationException("code", "error")); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, rediscovery); - AuthenticationException exception = - assertThrows(AuthenticationException.class, () -> await(loadBalancer.verifyConnectivity())); + var exception = assertThrows(AuthenticationException.class, () -> await(loadBalancer.verifyConnectivity())); assertThat(exception.getMessage(), startsWith("error")); } @Test void shouldThrowModifiedErrorWhenRefreshRoutingTableFails() throws Throwable { - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); + var routingTables = mock(RoutingTableRegistry.class); when(routingTables.ensureRoutingTable(any(ConnectionContext.class))) .thenThrow(new ServiceUnavailableException("boooo")); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); - ServiceUnavailableException exception = - assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.verifyConnectivity())); + var exception = assertThrows(ServiceUnavailableException.class, () -> await(loadBalancer.verifyConnectivity())); assertThat(exception.getMessage(), startsWith("Unable to connect to database management service,")); verify(routingTables).ensureRoutingTable(any(ConnectionContext.class)); } @Test void shouldThrowOriginalErrorWhenRefreshRoutingTableFails() throws Throwable { - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); + var routingTables = mock(RoutingTableRegistry.class); when(routingTables.ensureRoutingTable(any(ConnectionContext.class))).thenThrow(new RuntimeException("boo")); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); - RuntimeException exception = - assertThrows(RuntimeException.class, () -> await(loadBalancer.verifyConnectivity())); + var exception = assertThrows(RuntimeException.class, () -> await(loadBalancer.verifyConnectivity())); assertThat(exception.getMessage(), startsWith("boo")); verify(routingTables).ensureRoutingTable(any(ConnectionContext.class)); } @Test void shouldReturnSuccessVerifyConnectivity() throws Throwable { - ConnectionPool connectionPool = newConnectionPoolMock(); + var connectionPool = newConnectionPoolMock(); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); when(rediscovery.resolve()).thenReturn(Arrays.asList(A, B)); - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); + var routingTables = mock(RoutingTableRegistry.class); when(routingTables.ensureRoutingTable(any(ConnectionContext.class))).thenReturn(Futures.completedWithNull()); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables, rediscovery); await(loadBalancer.verifyConnectivity()); verify(routingTables).ensureRoutingTable(any(ConnectionContext.class)); @@ -358,26 +350,26 @@ void shouldReturnSuccessVerifyConnectivity() throws Throwable { @ParameterizedTest @ValueSource(booleans = {true, false}) void expectsCompetedDatabaseNameAfterRoutingTableRegistry(boolean completed) throws Throwable { - ConnectionPool connectionPool = newConnectionPoolMock(); - RoutingTable routingTable = mock(RoutingTable.class); - List readerAddresses = Collections.singletonList(A); - List writerAddresses = Collections.singletonList(B); + var connectionPool = newConnectionPoolMock(); + var routingTable = mock(RoutingTable.class); + var readerAddresses = Collections.singletonList(A); + var writerAddresses = Collections.singletonList(B); when(routingTable.readers()).thenReturn(readerAddresses); when(routingTable.writers()).thenReturn(writerAddresses); - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); - RoutingTableHandler handler = mock(RoutingTableHandler.class); + var routingTables = mock(RoutingTableRegistry.class); + var handler = mock(RoutingTableHandler.class); when(handler.routingTable()).thenReturn(routingTable); when(routingTables.ensureRoutingTable(any(ConnectionContext.class))) .thenReturn(CompletableFuture.completedFuture(handler)); - Rediscovery rediscovery = mock(Rediscovery.class); - LoadBalancer loadBalancer = new LoadBalancer( + var rediscovery = mock(Rediscovery.class); + var loadBalancer = new LoadBalancer( connectionPool, routingTables, rediscovery, new LeastConnectedLoadBalancingStrategy(connectionPool, DEV_NULL_LOGGING), GlobalEventExecutor.INSTANCE, DEV_NULL_LOGGING); - ConnectionContext context = mock(ConnectionContext.class); + var context = mock(ConnectionContext.class); CompletableFuture databaseNameFuture = spy(new CompletableFuture<>()); if (completed) { databaseNameFuture.complete(DatabaseNameUtil.systemDatabase()); @@ -397,7 +389,7 @@ void expectsCompetedDatabaseNameAfterRoutingTableRegistry(boolean completed) thr .getMessage()); } - InOrder inOrder = inOrder(routingTables, context, databaseNameFuture); + var inOrder = inOrder(routingTables, context, databaseNameFuture); inOrder.verify(routingTables).ensureRoutingTable(context); inOrder.verify(context).databaseNameFuture(); inOrder.verify(databaseNameFuture).isDone(); @@ -435,7 +427,7 @@ private static ConnectionPool newConnectionPoolMockWithFailures(Set unavailableAddresses, Function errorAction) { - ConnectionPool pool = mock(ConnectionPool.class); + var pool = mock(ConnectionPool.class); when(pool.acquire(any(BoltServerAddress.class), any())).then(invocation -> { BoltServerAddress requestedAddress = invocation.getArgument(0); if (unavailableAddresses.contains(requestedAddress)) { @@ -448,7 +440,7 @@ private static ConnectionPool newConnectionPoolMockWithFailures( } private static Connection newBoltV4Connection(BoltServerAddress address) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(address); when(connection.protocol()).thenReturn(BoltProtocol.forVersion(BoltProtocolV42.VERSION)); when(connection.release()).thenReturn(completedWithNull()); @@ -461,12 +453,12 @@ private static ConnectionContext newBoltV4ConnectionContext() { private static LoadBalancer newLoadBalancer(ConnectionPool connectionPool, RoutingTable routingTable) { // Used only in testing - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); - RoutingTableHandler handler = mock(RoutingTableHandler.class); + var routingTables = mock(RoutingTableRegistry.class); + var handler = mock(RoutingTableHandler.class); when(handler.routingTable()).thenReturn(routingTable); when(routingTables.ensureRoutingTable(any(ConnectionContext.class))) .thenReturn(CompletableFuture.completedFuture(handler)); - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); return new LoadBalancer( connectionPool, routingTables, @@ -478,7 +470,7 @@ private static LoadBalancer newLoadBalancer(ConnectionPool connectionPool, Routi private static LoadBalancer newLoadBalancer(ConnectionPool connectionPool, Rediscovery rediscovery) { // Used only in testing - RoutingTableRegistry routingTables = mock(RoutingTableRegistry.class); + var routingTables = mock(RoutingTableRegistry.class); return newLoadBalancer(connectionPool, routingTables, rediscovery); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoundRobinArrayIndexTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoundRobinArrayIndexTest.java index f0410e5ed4..61d0cef1c3 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoundRobinArrayIndexTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoundRobinArrayIndexTest.java @@ -25,32 +25,32 @@ class RoundRobinArrayIndexTest { @Test void shouldHandleZeroLength() { - RoundRobinArrayIndex roundRobinIndex = new RoundRobinArrayIndex(); + var roundRobinIndex = new RoundRobinArrayIndex(); - int index = roundRobinIndex.next(0); + var index = roundRobinIndex.next(0); assertEquals(-1, index); } @Test void shouldReturnIndexesInRoundRobinOrder() { - RoundRobinArrayIndex roundRobinIndex = new RoundRobinArrayIndex(); + var roundRobinIndex = new RoundRobinArrayIndex(); - for (int i = 0; i < 10; i++) { - int index = roundRobinIndex.next(10); + for (var i = 0; i < 10; i++) { + var index = roundRobinIndex.next(10); assertEquals(i, index); } - for (int i = 0; i < 5; i++) { - int index = roundRobinIndex.next(5); + for (var i = 0; i < 5; i++) { + var index = roundRobinIndex.next(5); assertEquals(i, index); } } @Test void shouldHandleOverflow() { - int arrayLength = 10; - RoundRobinArrayIndex roundRobinIndex = new RoundRobinArrayIndex(Integer.MAX_VALUE - 1); + var arrayLength = 10; + var roundRobinIndex = new RoundRobinArrayIndex(Integer.MAX_VALUE - 1); assertEquals((Integer.MAX_VALUE - 1) % arrayLength, roundRobinIndex.next(arrayLength)); assertEquals(Integer.MAX_VALUE % arrayLength, roundRobinIndex.next(arrayLength)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java index 1cf418e4d5..9645c03acc 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java @@ -34,7 +34,6 @@ import static org.neo4j.driver.internal.cluster.RoutingSettings.STALE_ROUTING_TABLE_PURGE_DELAY_MS; import static org.neo4j.driver.testutil.TestUtil.await; -import io.netty.bootstrap.Bootstrap; import io.netty.util.concurrent.GlobalEventExecutor; import java.time.Clock; import java.time.Duration; @@ -50,7 +49,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -98,12 +96,12 @@ class RoutingTableAndConnectionPoolTest { @Test void shouldAddServerToRoutingTableAndConnectionPool() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(clusterComposition(A)); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); @@ -118,12 +116,12 @@ void shouldAddServerToRoutingTableAndConnectionPool() { @Test void shouldNotAddToRoutingTableWhenFailedWithRoutingError() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(Futures.failedFuture(new FatalDiscoveryException("No database found"))); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When assertThrows( @@ -139,12 +137,12 @@ void shouldNotAddToRoutingTableWhenFailedWithRoutingError() { @Test void shouldNotAddToRoutingTableWhenFailedWithProtocolError() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(Futures.failedFuture(new ProtocolException("No database found"))); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When assertThrows( @@ -159,12 +157,12 @@ void shouldNotAddToRoutingTableWhenFailedWithProtocolError() { @Test void shouldNotAddToRoutingTableWhenFailedWithSecurityError() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(Futures.failedFuture(new SecurityException("No database found"))); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When assertThrows( @@ -179,15 +177,15 @@ void shouldNotAddToRoutingTableWhenFailedWithSecurityError() { @Test void shouldNotRemoveNewlyAddedRoutingTableEvenIfItIsExpired() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(expiredClusterComposition(A)); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When - Connection connection = await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); + var connection = await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); await(connection.release()); // Then @@ -202,16 +200,16 @@ void shouldNotRemoveNewlyAddedRoutingTableEvenIfItIsExpired() { @Test void shouldRemoveExpiredRoutingTableAndServers() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(expiredClusterComposition(A)) .thenReturn(clusterComposition(B)); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When - Connection connection = await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); + var connection = await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); await(connection.release()); await(loadBalancer.acquireConnection(contextWithDatabase("foo"))); @@ -228,13 +226,13 @@ void shouldRemoveExpiredRoutingTableAndServers() { @Test void shouldRemoveExpiredRoutingTableButNotServer() { // Given - ConnectionPool connectionPool = newConnectionPool(); - Rediscovery rediscovery = mock(Rediscovery.class); + var connectionPool = newConnectionPool(); + var rediscovery = mock(Rediscovery.class); when(rediscovery.lookupClusterComposition(any(), any(), any(), any(), any())) .thenReturn(expiredClusterComposition(A)) .thenReturn(clusterComposition(B)); - RoutingTableRegistryImpl routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var routingTables = newRoutingTables(connectionPool, rediscovery); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When await(loadBalancer.acquireConnection(contextWithDatabase("neo4j"))); @@ -254,16 +252,16 @@ void shouldRemoveExpiredRoutingTableButNotServer() { @Test void shouldHandleAddAndRemoveFromRoutingTableAndConnectionPool() throws Throwable { // Given - ConnectionPool connectionPool = newConnectionPool(); + var connectionPool = newConnectionPool(); Rediscovery rediscovery = new RandomizedRediscovery(); RoutingTableRegistry routingTables = newRoutingTables(connectionPool, rediscovery); - LoadBalancer loadBalancer = newLoadBalancer(connectionPool, routingTables); + var loadBalancer = newLoadBalancer(connectionPool, routingTables); // When acquireAndReleaseConnections(loadBalancer); - Set servers = routingTables.allServers(); + var servers = routingTables.allServers(); BoltServerAddress openServer = null; - for (BoltServerAddress server : servers) { + for (var server : servers) { if (connectionPool.isOpen(server)) { openServer = server; break; @@ -281,14 +279,14 @@ void shouldHandleAddAndRemoveFromRoutingTableAndConnectionPool() throws Throwabl } private void acquireAndReleaseConnections(LoadBalancer loadBalancer) throws InterruptedException { - ExecutorService executorService = Executors.newFixedThreadPool(4); - int count = 100; - Future[] futures = new Future[count]; - - for (int i = 0; i < count; i++) { - Future future = executorService.submit(() -> { - int index = random.nextInt(DATABASES.length); - CompletionStage task = loadBalancer + var executorService = Executors.newFixedThreadPool(4); + var count = 100; + var futures = new Future[count]; + + for (var i = 0; i < count; i++) { + var future = executorService.submit(() -> { + var index = random.nextInt(DATABASES.length); + var task = loadBalancer .acquireConnection(contextWithDatabase(DATABASES[index])) .thenCompose(Connection::release); await(task); @@ -300,7 +298,7 @@ private void acquireAndReleaseConnections(LoadBalancer loadBalancer) throws Inte executorService.awaitTermination(10, TimeUnit.SECONDS); List errors = new ArrayList<>(); - for (Future f : futures) { + for (var f : futures) { try { f.get(); } catch (ExecutionException e) { @@ -314,11 +312,11 @@ private void acquireAndReleaseConnections(LoadBalancer loadBalancer) throws Inte private ConnectionPool newConnectionPool() { MetricsListener metrics = DevNullMetricsListener.INSTANCE; - PoolSettings poolSettings = new PoolSettings(10, 5000, -1, -1); - Bootstrap bootstrap = BootstrapFactory.newBootstrap(1); - NettyChannelTracker channelTracker = + var poolSettings = new PoolSettings(10, 5000, -1, -1); + var bootstrap = BootstrapFactory.newBootstrap(1); + var channelTracker = new NettyChannelTracker(metrics, bootstrap.config().group().next(), logging); - NettyChannelHealthChecker channelHealthChecker = new NettyChannelHealthChecker(poolSettings, clock, logging); + var channelHealthChecker = new NettyChannelHealthChecker(poolSettings, clock, logging); return new TestConnectionPool( bootstrap, channelTracker, channelHealthChecker, poolSettings, metrics, logging, clock, true); @@ -330,7 +328,7 @@ private RoutingTableRegistryImpl newRoutingTables(ConnectionPool connectionPool, } private LoadBalancer newLoadBalancer(ConnectionPool connectionPool, RoutingTableRegistry routingTables) { - Rediscovery rediscovery = mock(Rediscovery.class); + var rediscovery = mock(Rediscovery.class); return new LoadBalancer( connectionPool, routingTables, @@ -351,9 +349,8 @@ private CompletableFuture expiredClusterComposit private CompletableFuture clusterComposition( long expireAfterMs, BoltServerAddress... addresses) { - HashSet servers = new HashSet<>(Arrays.asList(addresses)); - ClusterComposition composition = - new ClusterComposition(clock.millis() + expireAfterMs, servers, servers, servers, null); + var servers = new HashSet(Arrays.asList(addresses)); + var composition = new ClusterComposition(clock.millis() + expireAfterMs, servers, servers, servers, null); return CompletableFuture.completedFuture(new ClusterCompositionLookupResult(composition)); } @@ -367,22 +364,21 @@ public CompletionStage lookupClusterComposition( AuthToken overrideAuthToken) { // when looking up a new routing table, we return a valid random routing table back Set servers = new HashSet<>(); - for (int i = 0; i < 3; i++) { - int index = random.nextInt(SERVERS.size()); - BoltServerAddress server = SERVERS.get(index); + for (var i = 0; i < 3; i++) { + var index = random.nextInt(SERVERS.size()); + var server = SERVERS.get(index); if (server != null) { servers.add(server); } } if (servers.size() == 0) { - BoltServerAddress address = SERVERS.stream() + var address = SERVERS.stream() .filter(Objects::nonNull) .findFirst() .orElseThrow(() -> new RuntimeException("No non null server addresses are available")); servers.add(address); } - ClusterComposition composition = - new ClusterComposition(clock.millis() + 1, servers, servers, servers, null); + var composition = new ClusterComposition(clock.millis() + 1, servers, servers, servers, null); return CompletableFuture.completedFuture(new ClusterCompositionLookupResult(composition)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cursor/AsyncResultCursorOnlyFactoryTest.java b/driver/src/test/java/org/neo4j/driver/internal/cursor/AsyncResultCursorOnlyFactoryTest.java index 8102814bce..5d2b8d4261 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cursor/AsyncResultCursorOnlyFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cursor/AsyncResultCursorOnlyFactoryTest.java @@ -44,11 +44,11 @@ class AsyncResultCursorOnlyFactoryTest { @Test void shouldReturnAsyncResultWhenRunSucceeded() { // Given - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); ResultCursorFactory cursorFactory = newResultCursorFactory(connection, null); // When - CompletionStage cursorFuture = cursorFactory.asyncResult(); + var cursorFuture = cursorFactory.asyncResult(); // Then verifyRunCompleted(connection, cursorFuture); @@ -61,24 +61,24 @@ void shouldReturnAsyncResultWithRunErrorWhenRunFailed() { ResultCursorFactory cursorFactory = newResultCursorFactory(error); // When - CompletionStage cursorFuture = cursorFactory.asyncResult(); + var cursorFuture = cursorFactory.asyncResult(); // Then - AsyncResultCursor cursor = getNow(cursorFuture); - Throwable actual = assertThrows(error.getClass(), () -> await(cursor.mapSuccessfulRunCompletionAsync())); + var cursor = getNow(cursorFuture); + var actual = assertThrows(error.getClass(), () -> await(cursor.mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @Test void shouldPrePopulateRecords() { // Given - Connection connection = mock(Connection.class); - Message runMessage = mock(Message.class); + var connection = mock(Connection.class); + var runMessage = mock(Message.class); - RunResponseHandler runHandler = mock(RunResponseHandler.class); - CompletableFuture runFuture = new CompletableFuture<>(); + var runHandler = mock(RunResponseHandler.class); + var runFuture = new CompletableFuture(); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); ResultCursorFactory cursorFactory = new AsyncResultCursorOnlyFactory(connection, runMessage, runHandler, runFuture, pullAllHandler); @@ -97,31 +97,31 @@ void shouldErrorForRxResult() { ResultCursorFactory cursorFactory = newResultCursorFactory(null); // When & Then - CompletionStage rxCursorFuture = cursorFactory.rxResult(); - CompletionException error = assertThrows(CompletionException.class, () -> getNow(rxCursorFuture)); + var rxCursorFuture = cursorFactory.rxResult(); + var error = assertThrows(CompletionException.class, () -> getNow(rxCursorFuture)); assertThat( error.getCause().getMessage(), containsString("Driver is connected to the database that does not support driver reactive API")); } private AsyncResultCursorOnlyFactory newResultCursorFactory(Connection connection, Throwable runError) { - Message runMessage = mock(Message.class); + var runMessage = mock(Message.class); - RunResponseHandler runHandler = mock(RunResponseHandler.class); - CompletableFuture runFuture = new CompletableFuture<>(); + var runHandler = mock(RunResponseHandler.class); + var runFuture = new CompletableFuture(); if (runError != null) { runFuture.completeExceptionally(runError); } else { runFuture.complete(null); } - AutoPullResponseHandler pullHandler = mock(AutoPullResponseHandler.class); + var pullHandler = mock(AutoPullResponseHandler.class); return new AsyncResultCursorOnlyFactory(connection, runMessage, runHandler, runFuture, pullHandler); } private AsyncResultCursorOnlyFactory newResultCursorFactory(Throwable runError) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); return newResultCursorFactory(connection, runError); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cursor/DisposableAsyncResultCursorTest.java b/driver/src/test/java/org/neo4j/driver/internal/cursor/DisposableAsyncResultCursorTest.java index 7a3107428c..d0d5397469 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cursor/DisposableAsyncResultCursorTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cursor/DisposableAsyncResultCursorTest.java @@ -94,7 +94,7 @@ void shouldNotDisposeCursor() { @Test void shouldReturnItselfOnMapSuccessfulRunCompletionAsync() { // When - AsyncResultCursor actual = await(cursor.mapSuccessfulRunCompletionAsync()); + var actual = await(cursor.mapSuccessfulRunCompletionAsync()); // Then then(delegate).should().mapSuccessfulRunCompletionAsync(); @@ -104,11 +104,11 @@ void shouldReturnItselfOnMapSuccessfulRunCompletionAsync() { @Test void shouldFailOnMapSuccessfulRunCompletionAsyncFailure() { // Given - Throwable error = mock(Throwable.class); + var error = mock(Throwable.class); given(delegate.mapSuccessfulRunCompletionAsync()).willReturn(Futures.failedFuture(error)); // When - Throwable actual = assertThrows(Throwable.class, () -> await(cursor.mapSuccessfulRunCompletionAsync())); + var actual = assertThrows(Throwable.class, () -> await(cursor.mapSuccessfulRunCompletionAsync())); // Then then(delegate).should().mapSuccessfulRunCompletionAsync(); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cursor/ResultCursorFactoryImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/cursor/ResultCursorFactoryImplTest.java index d5d588147d..e73a02efe0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cursor/ResultCursorFactoryImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cursor/ResultCursorFactoryImplTest.java @@ -43,11 +43,11 @@ class ResultCursorFactoryImplTest { @Test void shouldReturnAsyncResultWhenRunSucceeded() { // Given - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); ResultCursorFactory cursorFactory = newResultCursorFactory(connection, null); // When - CompletionStage cursorFuture = cursorFactory.asyncResult(); + var cursorFuture = cursorFactory.asyncResult(); // Then verifyRunCompleted(connection, cursorFuture); @@ -60,25 +60,25 @@ void shouldReturnAsyncResultWithRunErrorWhenRunFailed() { ResultCursorFactory cursorFactory = newResultCursorFactory(error); // When - CompletionStage cursorFuture = cursorFactory.asyncResult(); + var cursorFuture = cursorFactory.asyncResult(); // Then - AsyncResultCursor cursor = getNow(cursorFuture); - Throwable actual = assertThrows(error.getClass(), () -> await(cursor.mapSuccessfulRunCompletionAsync())); + var cursor = getNow(cursorFuture); + var actual = assertThrows(error.getClass(), () -> await(cursor.mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @Test void shouldPrePopulateRecords() { // Given - Connection connection = mock(Connection.class); - Message runMessage = mock(Message.class); + var connection = mock(Connection.class); + var runMessage = mock(Message.class); - RunResponseHandler runHandler = mock(RunResponseHandler.class); - CompletableFuture runFuture = new CompletableFuture<>(); + var runHandler = mock(RunResponseHandler.class); + var runFuture = new CompletableFuture(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); ResultCursorFactory cursorFactory = new ResultCursorFactoryImpl(connection, runMessage, runHandler, runFuture, pullHandler, pullAllHandler); @@ -95,11 +95,11 @@ void shouldPrePopulateRecords() { @Test void shouldReturnRxResultWhenRunSucceeded() { // Given - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); ResultCursorFactory cursorFactory = newResultCursorFactory(connection, null); // When - CompletionStage cursorFuture = cursorFactory.rxResult(); + var cursorFuture = cursorFactory.rxResult(); // Then verifyRxRunCompleted(connection, cursorFuture); @@ -108,36 +108,36 @@ void shouldReturnRxResultWhenRunSucceeded() { @Test void shouldReturnRxResultWhenRunFailed() { // Given - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); Throwable error = new RuntimeException("Hi there"); ResultCursorFactory cursorFactory = newResultCursorFactory(connection, error); // When - CompletionStage cursorFuture = cursorFactory.rxResult(); + var cursorFuture = cursorFactory.rxResult(); // Then verifyRxRunCompleted(connection, cursorFuture); } private ResultCursorFactoryImpl newResultCursorFactory(Connection connection, Throwable runError) { - Message runMessage = mock(Message.class); + var runMessage = mock(Message.class); - RunResponseHandler runHandler = mock(RunResponseHandler.class); - CompletableFuture runFuture = new CompletableFuture<>(); + var runHandler = mock(RunResponseHandler.class); + var runFuture = new CompletableFuture(); if (runError != null) { runFuture.completeExceptionally(runError); } else { runFuture.complete(null); } - PullResponseHandler pullHandler = mock(PullResponseHandler.class); - PullAllResponseHandler pullAllHandler = mock(PullAllResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); + var pullAllHandler = mock(PullAllResponseHandler.class); return new ResultCursorFactoryImpl(connection, runMessage, runHandler, runFuture, pullHandler, pullAllHandler); } private ResultCursorFactoryImpl newResultCursorFactory(Throwable runError) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); return newResultCursorFactory(connection, runError); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cursor/RxResultCursorImplTest.java b/driver/src/test/java/org/neo4j/driver/internal/cursor/RxResultCursorImplTest.java index bc622e3eee..f462ce6050 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cursor/RxResultCursorImplTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cursor/RxResultCursorImplTest.java @@ -37,9 +37,7 @@ import static org.neo4j.driver.internal.util.Futures.failedFuture; import java.util.Collections; -import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutionException; import java.util.function.BiConsumer; import org.junit.jupiter.api.Test; @@ -57,9 +55,9 @@ class RxResultCursorImplTest { @SuppressWarnings("unchecked") void shouldInstallSummaryConsumerWithoutReportingError() { // Given - RuntimeException error = new RuntimeException("Hi"); - RunResponseHandler runHandler = newRunResponseHandler(error); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var error = new RuntimeException("Hi"); + var runHandler = newRunResponseHandler(error); + var pullHandler = mock(PullResponseHandler.class); // When new RxResultCursorImpl(error, runHandler, pullHandler); @@ -72,15 +70,15 @@ void shouldInstallSummaryConsumerWithoutReportingError() { @Test void shouldReturnQueryKeys() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - List expected = asList("key1", "key2", "key3"); + var runHandler = newRunResponseHandler(); + var expected = asList("key1", "key2", "key3"); runHandler.onSuccess(Collections.singletonMap("fields", value(expected))); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); // When RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); - List actual = cursor.keys(); + var actual = cursor.keys(); // Then assertEquals(expected, actual); @@ -89,17 +87,17 @@ void shouldReturnQueryKeys() { @Test void shouldSupportReturnQueryKeysMultipleTimes() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - List expected = asList("key1", "key2", "key3"); + var runHandler = newRunResponseHandler(); + var expected = asList("key1", "key2", "key3"); runHandler.onSuccess(Collections.singletonMap("fields", value(expected))); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); // When RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // Then - List actual = cursor.keys(); + var actual = cursor.keys(); assertEquals(expected, actual); // Many times @@ -113,8 +111,8 @@ void shouldSupportReturnQueryKeysMultipleTimes() { @Test void shouldPull() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullHandler = mock(PullResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // When @@ -127,8 +125,8 @@ void shouldPull() { @Test void shouldPullUnboundedOnLongMax() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullHandler = mock(PullResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // When @@ -141,8 +139,8 @@ void shouldPullUnboundedOnLongMax() { @Test void shouldCancel() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullHandler = mock(PullResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // When @@ -155,12 +153,12 @@ void shouldCancel() { @Test void shouldInstallRecordConsumerAndReportError() { // Given - RuntimeException error = new RuntimeException("Hi"); + var error = new RuntimeException("Hi"); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); // When - RunResponseHandler runHandler = newRunResponseHandler(error); + var runHandler = newRunResponseHandler(error); PullResponseHandler pullHandler = new ListBasedPullHandler(); RxResultCursor cursor = new RxResultCursorImpl(error, runHandler, pullHandler); cursor.installRecordConsumer(recordConsumer); @@ -173,7 +171,7 @@ void shouldInstallRecordConsumerAndReportError() { @Test void shouldReturnSummaryFuture() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); + var runHandler = newRunResponseHandler(); PullResponseHandler pullHandler = new ListBasedPullHandler(); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); @@ -189,7 +187,7 @@ void shouldReturnSummaryFuture() { @Test void shouldNotAllowToInstallRecordConsumerAfterSummary() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); + var runHandler = newRunResponseHandler(); PullResponseHandler pullHandler = new ListBasedPullHandler(); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); @@ -203,7 +201,7 @@ void shouldNotAllowToInstallRecordConsumerAfterSummary() { @Test void shouldAllowToCallSummaryMultipleTimes() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); + var runHandler = newRunResponseHandler(); PullResponseHandler pullHandler = new ListBasedPullHandler(); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); @@ -218,8 +216,8 @@ void shouldAllowToCallSummaryMultipleTimes() { @Test void shouldOnlyInstallRecordConsumerOnce() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullHandler = mock(PullResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // When @@ -233,8 +231,8 @@ void shouldOnlyInstallRecordConsumerOnce() { @Test void shouldCancelIfNotPulled() { // Given - RunResponseHandler runHandler = newRunResponseHandler(); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = newRunResponseHandler(); + var pullHandler = mock(PullResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); // When @@ -250,25 +248,25 @@ void shouldCancelIfNotPulled() { void shouldPropagateSummaryErrorViaSummaryStageWhenItIsRetrievedExternally() throws ExecutionException, InterruptedException { // Given - RunResponseHandler runHandler = mock(RunResponseHandler.class); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = mock(RunResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); @SuppressWarnings("unchecked") ArgumentCaptor> summaryConsumerCaptor = ArgumentCaptor.forClass(BiConsumer.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); verify(pullHandler, times(1)).installSummaryConsumer(summaryConsumerCaptor.capture()); - BiConsumer summaryConsumer = summaryConsumerCaptor.getValue(); - RuntimeException exception = mock(RuntimeException.class); + var summaryConsumer = summaryConsumerCaptor.getValue(); + var exception = mock(RuntimeException.class); // When - CompletionStage summaryStage = cursor.summaryAsync(); - CompletionStage discardStage = cursor.discardAllFailureAsync(); + var summaryStage = cursor.summaryAsync(); + var discardStage = cursor.discardAllFailureAsync(); summaryConsumer.accept(null, exception); // Then verify(pullHandler).installRecordConsumer(DISCARD_RECORD_CONSUMER); verify(pullHandler).cancel(); - ExecutionException actualException = assertThrows( + var actualException = assertThrows( ExecutionException.class, () -> summaryStage.toCompletableFuture().get()); assertSame(exception, actualException.getCause()); @@ -279,18 +277,18 @@ void shouldPropagateSummaryErrorViaSummaryStageWhenItIsRetrievedExternally() void shouldPropagateSummaryErrorViaDiscardStageWhenSummaryStageIsNotRetrievedExternally() throws ExecutionException, InterruptedException { // Given - RunResponseHandler runHandler = mock(RunResponseHandler.class); - PullResponseHandler pullHandler = mock(PullResponseHandler.class); + var runHandler = mock(RunResponseHandler.class); + var pullHandler = mock(PullResponseHandler.class); @SuppressWarnings("unchecked") ArgumentCaptor> summaryConsumerCaptor = ArgumentCaptor.forClass(BiConsumer.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); verify(pullHandler, times(1)).installSummaryConsumer(summaryConsumerCaptor.capture()); - BiConsumer summaryConsumer = summaryConsumerCaptor.getValue(); - RuntimeException exception = mock(RuntimeException.class); + var summaryConsumer = summaryConsumerCaptor.getValue(); + var exception = mock(RuntimeException.class); // When - CompletionStage discardStage = cursor.discardAllFailureAsync(); + var discardStage = cursor.discardAllFailureAsync(); summaryConsumer.accept(null, exception); // Then diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java index 98324cdd7f..b089f7aa37 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java @@ -50,11 +50,11 @@ void tearDown() { @Test void shouldReleaseChannelOnSuccess() { - ExtendedChannelPool pool = newChannelPoolMock(); - FakeClock clock = new FakeClock(); + var pool = newChannelPoolMock(); + var clock = new FakeClock(); clock.progress(5); - CompletableFuture releaseFuture = new CompletableFuture<>(); - ChannelReleasingResetResponseHandler handler = newHandler(pool, clock, releaseFuture); + var releaseFuture = new CompletableFuture(); + var handler = newHandler(pool, clock, releaseFuture); handler.onSuccess(emptyMap()); @@ -66,11 +66,11 @@ void shouldReleaseChannelOnSuccess() { @Test void shouldCloseAndReleaseChannelOnFailure() { - ExtendedChannelPool pool = newChannelPoolMock(); - FakeClock clock = new FakeClock(); + var pool = newChannelPoolMock(); + var clock = new FakeClock(); clock.progress(100); - CompletableFuture releaseFuture = new CompletableFuture<>(); - ChannelReleasingResetResponseHandler handler = newHandler(pool, clock, releaseFuture); + var releaseFuture = new CompletableFuture(); + var handler = newHandler(pool, clock, releaseFuture); handler.onFailure(new RuntimeException()); @@ -90,7 +90,7 @@ private ChannelReleasingResetResponseHandler newHandler( } private static ExtendedChannelPool newChannelPoolMock() { - ExtendedChannelPool pool = mock(ExtendedChannelPool.class); + var pool = mock(ExtendedChannelPool.class); when(pool.release(any())).thenReturn(completedWithNull()); return pool; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/CommitTxResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/CommitTxResponseHandlerTest.java index 5862c0e4c6..124ffab3a9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/CommitTxResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/CommitTxResponseHandlerTest.java @@ -44,7 +44,7 @@ void shouldHandleSuccessWithoutBookmark() { @Test void shouldHandleSuccessWithBookmark() { - String bookmarkString = "neo4j:bookmark:v1:tx12345"; + var bookmarkString = "neo4j:bookmark:v1:tx12345"; handler.onSuccess(singletonMap("bookmark", value(bookmarkString))); @@ -53,11 +53,11 @@ void shouldHandleSuccessWithBookmark() { @Test void shouldHandleFailure() { - RuntimeException error = new RuntimeException("Hello"); + var error = new RuntimeException("Hello"); handler.onFailure(error); - RuntimeException receivedError = assertThrows(RuntimeException.class, () -> await(future)); + var receivedError = assertThrows(RuntimeException.class, () -> await(future)); assertEquals(error, receivedError); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/HelloResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/HelloResponseHandlerTest.java index eaaa1d0284..63bacad093 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/HelloResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/HelloResponseHandlerTest.java @@ -32,9 +32,6 @@ import static org.neo4j.driver.internal.async.outbound.OutboundMessageHandler.NAME; import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.HashMap; @@ -63,7 +60,7 @@ class HelloResponseHandlerTest { void setUp() { setAuthContext(channel, new AuthContext(new StaticAuthTokenManager(AuthTokens.none()))); setMessageDispatcher(channel, new InboundMessageDispatcher(channel, DEV_NULL_LOGGING)); - ChannelPipeline pipeline = channel.pipeline(); + var pipeline = channel.pipeline(); pipeline.addLast(NAME, new OutboundMessageHandler(new MessageFormatV3(), DEV_NULL_LOGGING)); pipeline.addLast(new ChannelErrorHandler(DEV_NULL_LOGGING)); } @@ -75,10 +72,10 @@ void tearDown() { @Test void shouldSetServerAgentOnChannel() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, "bolt-1"); + var metadata = metadata(SERVER_AGENT, "bolt-1"); handler.onSuccess(metadata); assertTrue(channelPromise.isSuccess()); @@ -87,10 +84,10 @@ void shouldSetServerAgentOnChannel() { @Test void shouldThrowWhenServerVersionNotReturned() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(null, "bolt-1"); + var metadata = metadata(null, "bolt-1"); assertThrows(UntrustedServerException.class, () -> handler.onSuccess(metadata)); assertFalse(channelPromise.isSuccess()); // initialization failed @@ -99,10 +96,10 @@ void shouldThrowWhenServerVersionNotReturned() { @Test void shouldThrowWhenServerVersionIsNull() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(Values.NULL, "bolt-x"); + var metadata = metadata(Values.NULL, "bolt-x"); assertThrows(UntrustedServerException.class, () -> handler.onSuccess(metadata)); assertFalse(channelPromise.isSuccess()); // initialization failed @@ -111,10 +108,10 @@ void shouldThrowWhenServerVersionIsNull() { @Test void shouldThrowWhenServerAgentIsUnrecognised() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata("WrongServerVersion", "bolt-x"); + var metadata = metadata("WrongServerVersion", "bolt-x"); assertThrows(UntrustedServerException.class, () -> handler.onSuccess(metadata)); assertFalse(channelPromise.isSuccess()); // initialization failed @@ -123,10 +120,10 @@ void shouldThrowWhenServerAgentIsUnrecognised() { @Test void shouldSetConnectionIdOnChannel() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, "bolt-42"); + var metadata = metadata(SERVER_AGENT, "bolt-42"); handler.onSuccess(metadata); assertTrue(channelPromise.isSuccess()); @@ -135,10 +132,10 @@ void shouldSetConnectionIdOnChannel() { @Test void shouldThrowWhenConnectionIdNotReturned() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, null); + var metadata = metadata(SERVER_AGENT, null); assertThrows(IllegalStateException.class, () -> handler.onSuccess(metadata)); assertFalse(channelPromise.isSuccess()); // initialization failed @@ -147,10 +144,10 @@ void shouldThrowWhenConnectionIdNotReturned() { @Test void shouldThrowWhenConnectionIdIsNull() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, Values.NULL); + var metadata = metadata(SERVER_AGENT, Values.NULL); assertThrows(IllegalStateException.class, () -> handler.onSuccess(metadata)); assertFalse(channelPromise.isSuccess()); // initialization failed @@ -159,13 +156,13 @@ void shouldThrowWhenConnectionIdIsNull() { @Test void shouldCloseChannelOnFailure() throws Exception { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - RuntimeException error = new RuntimeException("Hi!"); + var error = new RuntimeException("Hi!"); handler.onFailure(error); - ChannelFuture channelCloseFuture = channel.closeFuture(); + var channelCloseFuture = channel.closeFuture(); channelCloseFuture.await(5, TimeUnit.SECONDS); assertTrue(channelCloseFuture.isSuccess()); @@ -175,10 +172,10 @@ void shouldCloseChannelOnFailure() throws Exception { @Test void shouldNotThrowWhenConfigurationHintsAreAbsent() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, "bolt-x"); + var metadata = metadata(SERVER_AGENT, "bolt-x"); handler.onSuccess(metadata); assertTrue(channelPromise.isSuccess()); @@ -187,10 +184,10 @@ void shouldNotThrowWhenConfigurationHintsAreAbsent() { @Test void shouldNotThrowWhenConfigurationHintsAreEmpty() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, "bolt-x", value(new HashMap<>())); + var metadata = metadata(SERVER_AGENT, "bolt-x", value(new HashMap<>())); handler.onSuccess(metadata); assertTrue(channelPromise.isSuccess()); @@ -199,10 +196,10 @@ void shouldNotThrowWhenConfigurationHintsAreEmpty() { @Test void shouldNotThrowWhenConfigurationHintsAreNull() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - Map metadata = metadata(SERVER_AGENT, "bolt-x", Values.NULL); + var metadata = metadata(SERVER_AGENT, "bolt-x", Values.NULL); handler.onSuccess(metadata); assertTrue(channelPromise.isSuccess()); @@ -211,13 +208,13 @@ void shouldNotThrowWhenConfigurationHintsAreNull() { @Test void shouldSetConnectionTimeoutHint() { - ChannelPromise channelPromise = channel.newPromise(); - HelloResponseHandler handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); + var channelPromise = channel.newPromise(); + var handler = new HelloResponseHandler(channelPromise, mock(Clock.class)); - long timeout = 15L; + var timeout = 15L; Map hints = new HashMap<>(); hints.put(HelloResponseHandler.CONNECTION_RECEIVE_TIMEOUT_SECONDS_KEY, value(timeout)); - Map metadata = metadata(SERVER_AGENT, "bolt-x", value(hints)); + var metadata = metadata(SERVER_AGENT, "bolt-x", value(hints)); handler.onSuccess(metadata); assertEquals(timeout, connectionReadTimeout(channel).orElse(null)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/LegacyPullAllResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/LegacyPullAllResponseHandlerTest.java index a9e67d3e03..c35df877ca 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/LegacyPullAllResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/LegacyPullAllResponseHandlerTest.java @@ -39,18 +39,16 @@ import java.util.function.Function; import org.junit.jupiter.api.Test; import org.neo4j.driver.Query; -import org.neo4j.driver.Record; import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3; import org.neo4j.driver.internal.spi.Connection; -import org.neo4j.driver.summary.ResultSummary; class LegacyPullAllResponseHandlerTest extends PullAllResponseHandlerTestBase { @Test void shouldDisableAutoReadWhenTooManyRecordsArrive() { - Connection connection = connectionMock(); - LegacyPullAllResponseHandler handler = newHandler(asList("key1", "key2"), connection); + var connection = connectionMock(); + var handler = newHandler(asList("key1", "key2"), connection); - for (int i = 0; i < LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 1; i++) { + for (var i = 0; i < LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 1; i++) { handler.onRecord(values(100, 200)); } @@ -59,9 +57,9 @@ void shouldDisableAutoReadWhenTooManyRecordsArrive() { @Test void shouldEnableAutoReadWhenRecordsRetrievedFromBuffer() { - Connection connection = connectionMock(); - List keys = asList("key1", "key2"); - LegacyPullAllResponseHandler handler = newHandler(keys, connection); + var connection = connectionMock(); + var keys = asList("key1", "key2"); + var handler = newHandler(keys, connection); int i; for (i = 0; i < LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 1; i++) { @@ -72,7 +70,7 @@ void shouldEnableAutoReadWhenRecordsRetrievedFromBuffer() { verify(connection).disableAutoRead(); while (i-- > LegacyPullAllResponseHandler.RECORD_BUFFER_LOW_WATERMARK - 1) { - Record record = await(handler.nextAsync()); + var record = await(handler.nextAsync()); assertNotNull(record); assertEquals(keys, record.keys()); assertEquals(100, record.get("key1").asInt()); @@ -83,15 +81,15 @@ void shouldEnableAutoReadWhenRecordsRetrievedFromBuffer() { @Test void shouldNotDisableAutoReadWhenSummaryRequested() { - Connection connection = connectionMock(); - List keys = asList("key1", "key2"); - LegacyPullAllResponseHandler handler = newHandler(keys, connection); + var connection = connectionMock(); + var keys = asList("key1", "key2"); + var handler = newHandler(keys, connection); - CompletableFuture summaryFuture = handler.consumeAsync().toCompletableFuture(); + var summaryFuture = handler.consumeAsync().toCompletableFuture(); assertFalse(summaryFuture.isDone()); - int recordCount = LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 10; - for (int i = 0; i < recordCount; i++) { + var recordCount = LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 10; + for (var i = 0; i < recordCount; i++) { handler.onRecord(values("a", "b")); } @@ -100,36 +98,35 @@ void shouldNotDisableAutoReadWhenSummaryRequested() { handler.onSuccess(emptyMap()); assertTrue(summaryFuture.isDone()); - ResultSummary summary = await(summaryFuture); + var summary = await(summaryFuture); assertNotNull(summary); assertNull(await(handler.nextAsync())); } @Test void shouldNotDisableAutoReadWhenFailureRequested() { - Connection connection = connectionMock(); - List keys = asList("key1", "key2"); - LegacyPullAllResponseHandler handler = newHandler(keys, connection); + var connection = connectionMock(); + var keys = asList("key1", "key2"); + var handler = newHandler(keys, connection); - CompletableFuture failureFuture = - handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture = handler.pullAllFailureAsync().toCompletableFuture(); assertFalse(failureFuture.isDone()); - int recordCount = LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 5; - for (int i = 0; i < recordCount; i++) { + var recordCount = LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 5; + for (var i = 0; i < recordCount; i++) { handler.onRecord(values(123, 456)); } verify(connection, never()).disableAutoRead(); - IllegalStateException error = new IllegalStateException("Wrong config"); + var error = new IllegalStateException("Wrong config"); handler.onFailure(error); assertTrue(failureFuture.isDone()); assertEquals(error, await(failureFuture)); - for (int i = 0; i < recordCount; i++) { - Record record = await(handler.nextAsync()); + for (var i = 0; i < recordCount; i++) { + var record = await(handler.nextAsync()); assertNotNull(record); assertEquals(keys, record.keys()); assertEquals(123, record.get("key1").asInt()); @@ -141,8 +138,8 @@ void shouldNotDisableAutoReadWhenFailureRequested() { @Test void shouldEnableAutoReadOnConnectionWhenFailureRequestedButNotAvailable() throws Exception { - Connection connection = connectionMock(); - LegacyPullAllResponseHandler handler = newHandler(asList("key1", "key2"), connection); + var connection = connectionMock(); + var handler = newHandler(asList("key1", "key2"), connection); handler.onRecord(values(1, 2)); handler.onRecord(values(3, 4)); @@ -150,8 +147,7 @@ void shouldEnableAutoReadOnConnectionWhenFailureRequestedButNotAvailable() throw verify(connection, never()).enableAutoRead(); verify(connection, never()).disableAutoRead(); - CompletableFuture failureFuture = - handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture = handler.pullAllFailureAsync().toCompletableFuture(); assertFalse(failureFuture.isDone()); verify(connection).enableAutoRead(); @@ -160,7 +156,7 @@ void shouldEnableAutoReadOnConnectionWhenFailureRequestedButNotAvailable() throw assertNotNull(await(handler.nextAsync())); assertNotNull(await(handler.nextAsync())); - RuntimeException error = new RuntimeException("Oh my!"); + var error = new RuntimeException("Oh my!"); handler.onFailure(error); assertTrue(failureFuture.isDone()); @@ -169,11 +165,11 @@ void shouldEnableAutoReadOnConnectionWhenFailureRequestedButNotAvailable() throw @Test void shouldNotDisableAutoReadWhenAutoReadManagementDisabled() { - Connection connection = connectionMock(); - LegacyPullAllResponseHandler handler = newHandler(asList("key1", "key2"), connection); + var connection = connectionMock(); + var handler = newHandler(asList("key1", "key2"), connection); handler.disableAutoReadManagement(); - for (int i = 0; i < LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 1; i++) { + for (var i = 0; i < LegacyPullAllResponseHandler.RECORD_BUFFER_HIGH_WATERMARK + 1; i++) { handler.onRecord(values(100, 200)); } @@ -182,9 +178,9 @@ void shouldNotDisableAutoReadWhenAutoReadManagementDisabled() { @Test void shouldReturnEmptyListInListAsyncAfterFailure() { - LegacyPullAllResponseHandler handler = newHandler(); + var handler = newHandler(); - RuntimeException error = new RuntimeException("Hi"); + var error = new RuntimeException("Hi"); handler.onFailure(error); // consume the error @@ -195,7 +191,7 @@ void shouldReturnEmptyListInListAsyncAfterFailure() { @Test void shouldEnableAutoReadOnConnectionWhenSummaryRequestedButNotAvailable() throws Exception // TODO for auto run { - Connection connection = connectionMock(); + var connection = connectionMock(); PullAllResponseHandler handler = newHandler(asList("key1", "key2", "key3"), connection); handler.onRecord(values(1, 2, 3)); @@ -204,7 +200,7 @@ void shouldEnableAutoReadOnConnectionWhenSummaryRequestedButNotAvailable() throw verify(connection, never()).enableAutoRead(); verify(connection, never()).disableAutoRead(); - CompletableFuture summaryFuture = handler.consumeAsync().toCompletableFuture(); + var summaryFuture = handler.consumeAsync().toCompletableFuture(); assertFalse(summaryFuture.isDone()); verify(connection).enableAutoRead(); @@ -219,7 +215,7 @@ void shouldEnableAutoReadOnConnectionWhenSummaryRequestedButNotAvailable() throw } protected LegacyPullAllResponseHandler newHandler(Query query, List queryKeys, Connection connection) { - RunResponseHandler runResponseHandler = new RunResponseHandler( + var runResponseHandler = new RunResponseHandler( new CompletableFuture<>(), BoltProtocolV3.METADATA_EXTRACTOR, mock(Connection.class), null); runResponseHandler.onSuccess(singletonMap("fields", value(queryKeys))); return new LegacyPullAllResponseHandler( diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/PingResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/PingResponseHandlerTest.java index 3c12950f1b..a0f50a8e36 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/PingResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/PingResponseHandlerTest.java @@ -34,8 +34,8 @@ class PingResponseHandlerTest { @Test void shouldResolvePromiseOnSuccess() { - Promise promise = newPromise(); - PingResponseHandler handler = newHandler(promise); + var promise = newPromise(); + var handler = newHandler(promise); handler.onSuccess(emptyMap()); @@ -45,8 +45,8 @@ void shouldResolvePromiseOnSuccess() { @Test void shouldResolvePromiseOnFailure() { - Promise promise = newPromise(); - PingResponseHandler handler = newHandler(promise); + var promise = newPromise(); + var handler = newHandler(promise); handler.onFailure(new RuntimeException()); @@ -56,7 +56,7 @@ void shouldResolvePromiseOnFailure() { @Test void shouldNotSupportRecordMessages() { - PingResponseHandler handler = newHandler(newPromise()); + var handler = newHandler(newPromise()); assertThrows(UnsupportedOperationException.class, () -> handler.onRecord(new Value[0])); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/PullAllResponseHandlerTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/PullAllResponseHandlerTestBase.java index d869f7520a..7708d2f452 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/PullAllResponseHandlerTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/PullAllResponseHandlerTestBase.java @@ -38,13 +38,9 @@ import java.io.IOException; import java.nio.channels.ClosedChannelException; import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; import java.util.function.Function; import org.junit.jupiter.api.Test; import org.neo4j.driver.Query; -import org.neo4j.driver.Record; -import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.exceptions.SessionExpiredException; import org.neo4j.driver.internal.BoltServerAddress; @@ -52,7 +48,6 @@ import org.neo4j.driver.internal.messaging.v43.BoltProtocolV43; import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.summary.QueryType; -import org.neo4j.driver.summary.ResultSummary; public abstract class PullAllResponseHandlerTestBase { @Test @@ -60,7 +55,7 @@ void shouldReturnNoFailureWhenAlreadySucceeded() { PullAllResponseHandler handler = newHandler(); handler.onSuccess(emptyMap()); - Throwable failure = await(handler.pullAllFailureAsync()); + var failure = await(handler.pullAllFailureAsync()); assertNull(failure); } @@ -69,8 +64,7 @@ void shouldReturnNoFailureWhenAlreadySucceeded() { void shouldReturnNoFailureWhenSucceededAfterFailureRequested() { PullAllResponseHandler handler = newHandler(); - CompletableFuture failureFuture = - handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture = handler.pullAllFailureAsync().toCompletableFuture(); assertFalse(failureFuture.isDone()); handler.onSuccess(emptyMap()); @@ -83,10 +77,10 @@ void shouldReturnNoFailureWhenSucceededAfterFailureRequested() { void shouldReturnFailureWhenAlreadyFailed() { PullAllResponseHandler handler = newHandler(); - RuntimeException failure = new RuntimeException("Ops"); + var failure = new RuntimeException("Ops"); handler.onFailure(failure); - Throwable receivedFailure = await(handler.pullAllFailureAsync()); + var receivedFailure = await(handler.pullAllFailureAsync()); assertEquals(failure, receivedFailure); } @@ -94,11 +88,10 @@ void shouldReturnFailureWhenAlreadyFailed() { void shouldReturnFailureWhenFailedAfterFailureRequested() { PullAllResponseHandler handler = newHandler(); - CompletableFuture failureFuture = - handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture = handler.pullAllFailureAsync().toCompletableFuture(); assertFalse(failureFuture.isDone()); - IOException failure = new IOException("Broken pipe"); + var failure = new IOException("Broken pipe"); handler.onFailure(failure); assertTrue(failureFuture.isDone()); @@ -109,15 +102,13 @@ void shouldReturnFailureWhenFailedAfterFailureRequested() { void shouldReturnFailureWhenRequestedMultipleTimes() { PullAllResponseHandler handler = newHandler(); - CompletableFuture failureFuture1 = - handler.pullAllFailureAsync().toCompletableFuture(); - CompletableFuture failureFuture2 = - handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture1 = handler.pullAllFailureAsync().toCompletableFuture(); + var failureFuture2 = handler.pullAllFailureAsync().toCompletableFuture(); assertFalse(failureFuture1.isDone()); assertFalse(failureFuture2.isDone()); - RuntimeException failure = new RuntimeException("Unable to contact database"); + var failure = new RuntimeException("Unable to contact database"); handler.onFailure(failure); assertTrue(failureFuture1.isDone()); @@ -131,7 +122,7 @@ void shouldReturnFailureWhenRequestedMultipleTimes() { void shouldReturnFailureOnlyOnceWhenFailedBeforeFailureRequested() { PullAllResponseHandler handler = newHandler(); - ServiceUnavailableException failure = new ServiceUnavailableException("Connection terminated"); + var failure = new ServiceUnavailableException("Connection terminated"); handler.onFailure(failure); assertEquals(failure, await(handler.pullAllFailureAsync())); @@ -142,9 +133,9 @@ void shouldReturnFailureOnlyOnceWhenFailedBeforeFailureRequested() { void shouldReturnFailureOnlyOnceWhenFailedAfterFailureRequested() { PullAllResponseHandler handler = newHandler(); - CompletionStage failureFuture = handler.pullAllFailureAsync(); + var failureFuture = handler.pullAllFailureAsync(); - SessionExpiredException failure = new SessionExpiredException("Network unreachable"); + var failure = new SessionExpiredException("Network unreachable"); handler.onFailure(failure); assertEquals(failure, await(failureFuture)); @@ -153,26 +144,26 @@ void shouldReturnFailureOnlyOnceWhenFailedAfterFailureRequested() { @Test void shouldReturnSummaryWhenAlreadyFailedAndFailureConsumed() { - Query query = new Query("CREATE ()"); + var query = new Query("CREATE ()"); PullAllResponseHandler handler = newHandler(query); - ServiceUnavailableException failure = new ServiceUnavailableException("Neo4j unreachable"); + var failure = new ServiceUnavailableException("Neo4j unreachable"); handler.onFailure(failure); assertEquals(failure, await(handler.pullAllFailureAsync())); - ResultSummary summary = await(handler.consumeAsync()); + var summary = await(handler.consumeAsync()); assertNotNull(summary); assertEquals(query, summary.query()); } @Test void shouldReturnSummaryWhenAlreadySucceeded() { - Query query = new Query("CREATE () RETURN 42"); + var query = new Query("CREATE () RETURN 42"); PullAllResponseHandler handler = newHandler(query); handler.onSuccess(singletonMap("type", value("rw"))); - ResultSummary summary = await(handler.consumeAsync()); + var summary = await(handler.consumeAsync()); assertEquals(query, summary.query()); assertEquals(QueryType.READ_WRITE, summary.queryType()); @@ -180,16 +171,16 @@ void shouldReturnSummaryWhenAlreadySucceeded() { @Test void shouldReturnSummaryWhenSucceededAfterSummaryRequested() { - Query query = new Query("RETURN 'Hi!"); + var query = new Query("RETURN 'Hi!"); PullAllResponseHandler handler = newHandler(query); - CompletableFuture summaryFuture = handler.consumeAsync().toCompletableFuture(); + var summaryFuture = handler.consumeAsync().toCompletableFuture(); assertFalse(summaryFuture.isDone()); handler.onSuccess(singletonMap("type", value("r"))); assertTrue(summaryFuture.isDone()); - ResultSummary summary = await(summaryFuture); + var summary = await(summaryFuture); assertEquals(query, summary.query()); assertEquals(QueryType.READ_ONLY, summary.queryType()); @@ -199,10 +190,10 @@ void shouldReturnSummaryWhenSucceededAfterSummaryRequested() { void shouldReturnFailureWhenSummaryRequestedWhenAlreadyFailed() { PullAllResponseHandler handler = newHandler(); - RuntimeException failure = new RuntimeException("Computer is burning"); + var failure = new RuntimeException("Computer is burning"); handler.onFailure(failure); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.consumeAsync())); + var e = assertThrows(RuntimeException.class, () -> await(handler.consumeAsync())); assertEquals(failure, e); } @@ -210,14 +201,14 @@ void shouldReturnFailureWhenSummaryRequestedWhenAlreadyFailed() { void shouldReturnFailureWhenFailedAfterSummaryRequested() { PullAllResponseHandler handler = newHandler(); - CompletableFuture summaryFuture = handler.consumeAsync().toCompletableFuture(); + var summaryFuture = handler.consumeAsync().toCompletableFuture(); assertFalse(summaryFuture.isDone()); - IOException failure = new IOException("FAILED to write"); + var failure = new IOException("FAILED to write"); handler.onFailure(failure); assertTrue(summaryFuture.isDone()); - Exception e = assertThrows(Exception.class, () -> await(summaryFuture)); + var e = assertThrows(Exception.class, () -> await(summaryFuture)); assertEquals(failure, e); } @@ -225,47 +216,47 @@ void shouldReturnFailureWhenFailedAfterSummaryRequested() { void shouldFailSummaryWhenRequestedMultipleTimes() { PullAllResponseHandler handler = newHandler(); - CompletableFuture summaryFuture1 = handler.consumeAsync().toCompletableFuture(); - CompletableFuture summaryFuture2 = handler.consumeAsync().toCompletableFuture(); + var summaryFuture1 = handler.consumeAsync().toCompletableFuture(); + var summaryFuture2 = handler.consumeAsync().toCompletableFuture(); assertFalse(summaryFuture1.isDone()); assertFalse(summaryFuture2.isDone()); - ClosedChannelException failure = new ClosedChannelException(); + var failure = new ClosedChannelException(); handler.onFailure(failure); assertTrue(summaryFuture1.isDone()); assertTrue(summaryFuture2.isDone()); - Exception e1 = assertThrows(Exception.class, () -> await(summaryFuture2)); + var e1 = assertThrows(Exception.class, () -> await(summaryFuture2)); assertEquals(failure, e1); - Exception e2 = assertThrows(Exception.class, () -> await(summaryFuture1)); + var e2 = assertThrows(Exception.class, () -> await(summaryFuture1)); assertEquals(failure, e2); } @Test void shouldPropagateFailureOnlyOnceFromSummary() { - Query query = new Query("CREATE INDEX ON :Person(name)"); + var query = new Query("CREATE INDEX ON :Person(name)"); PullAllResponseHandler handler = newHandler(query); - IllegalStateException failure = new IllegalStateException("Some state is illegal :("); + var failure = new IllegalStateException("Some state is illegal :("); handler.onFailure(failure); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.consumeAsync())); + var e = assertThrows(RuntimeException.class, () -> await(handler.consumeAsync())); assertEquals(failure, e); - ResultSummary summary = await(handler.consumeAsync()); + var summary = await(handler.consumeAsync()); assertNotNull(summary); assertEquals(query, summary.query()); } @Test void shouldPeekSingleAvailableRecord() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); handler.onRecord(values("a", "b")); - Record record = await(handler.peekAsync()); + var record = await(handler.peekAsync()); assertEquals(keys, record.keys()); assertEquals("a", record.get("key1").asString()); @@ -274,14 +265,14 @@ void shouldPeekSingleAvailableRecord() { @Test void shouldPeekFirstRecordWhenMultipleAvailable() { - List keys = asList("key1", "key2", "key3"); + var keys = asList("key1", "key2", "key3"); PullAllResponseHandler handler = newHandler(keys); handler.onRecord(values("a1", "b1", "c1")); handler.onRecord(values("a2", "b2", "c2")); handler.onRecord(values("a3", "b3", "c3")); - Record record = await(handler.peekAsync()); + var record = await(handler.peekAsync()); assertEquals(keys, record.keys()); assertEquals("a1", record.get("key1").asString()); @@ -291,16 +282,16 @@ void shouldPeekFirstRecordWhenMultipleAvailable() { @Test void shouldPeekRecordThatBecomesAvailableLater() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); - CompletableFuture recordFuture = handler.peekAsync().toCompletableFuture(); + var recordFuture = handler.peekAsync().toCompletableFuture(); assertFalse(recordFuture.isDone()); handler.onRecord(values(24, 42)); assertTrue(recordFuture.isDone()); - Record record = await(recordFuture); + var record = await(recordFuture); assertEquals(keys, record.keys()); assertEquals(24, record.get("key1").asInt()); assertEquals(42, record.get("key2").asInt()); @@ -308,13 +299,13 @@ void shouldPeekRecordThatBecomesAvailableLater() { @Test void shouldPeekAvailableNothingAfterSuccess() { - List keys = asList("key1", "key2", "key3"); + var keys = asList("key1", "key2", "key3"); PullAllResponseHandler handler = newHandler(keys); handler.onRecord(values(1, 2, 3)); handler.onSuccess(emptyMap()); - Record record = await(handler.peekAsync()); + var record = await(handler.peekAsync()); assertEquals(keys, record.keys()); assertEquals(1, record.get("key1").asInt()); assertEquals(2, record.get("key2").asInt()); @@ -331,12 +322,12 @@ void shouldPeekNothingAfterSuccess() { @Test void shouldPeekWhenRequestedMultipleTimes() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); - CompletableFuture recordFuture1 = handler.peekAsync().toCompletableFuture(); - CompletableFuture recordFuture2 = handler.peekAsync().toCompletableFuture(); - CompletableFuture recordFuture3 = handler.peekAsync().toCompletableFuture(); + var recordFuture1 = handler.peekAsync().toCompletableFuture(); + var recordFuture2 = handler.peekAsync().toCompletableFuture(); + var recordFuture3 = handler.peekAsync().toCompletableFuture(); assertFalse(recordFuture1.isDone()); assertFalse(recordFuture2.isDone()); @@ -348,9 +339,9 @@ void shouldPeekWhenRequestedMultipleTimes() { assertTrue(recordFuture2.isDone()); assertTrue(recordFuture3.isDone()); - Record record1 = await(recordFuture1); - Record record2 = await(recordFuture2); - Record record3 = await(recordFuture3); + var record1 = await(recordFuture1); + var record2 = await(recordFuture2); + var record3 = await(recordFuture3); assertEquals(keys, record1.keys()); assertEquals(keys, record2.keys()); @@ -370,10 +361,10 @@ void shouldPeekWhenRequestedMultipleTimes() { void shouldPropagateNotConsumedFailureInPeek() { PullAllResponseHandler handler = newHandler(); - RuntimeException failure = new RuntimeException("Something is wrong"); + var failure = new RuntimeException("Something is wrong"); handler.onFailure(failure); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.peekAsync())); + var e = assertThrows(RuntimeException.class, () -> await(handler.peekAsync())); assertEquals(failure, e); } @@ -381,13 +372,13 @@ void shouldPropagateNotConsumedFailureInPeek() { void shouldPropagateFailureInPeekWhenItBecomesAvailable() { PullAllResponseHandler handler = newHandler(); - CompletableFuture recordFuture = handler.peekAsync().toCompletableFuture(); + var recordFuture = handler.peekAsync().toCompletableFuture(); assertFalse(recordFuture.isDone()); - RuntimeException failure = new RuntimeException("Error"); + var failure = new RuntimeException("Error"); handler.onFailure(failure); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(recordFuture)); + var e = assertThrows(RuntimeException.class, () -> await(recordFuture)); assertEquals(failure, e); } @@ -395,21 +386,21 @@ void shouldPropagateFailureInPeekWhenItBecomesAvailable() { void shouldPropagateFailureInPeekOnlyOnce() { PullAllResponseHandler handler = newHandler(); - RuntimeException failure = new RuntimeException("Something is wrong"); + var failure = new RuntimeException("Something is wrong"); handler.onFailure(failure); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.peekAsync())); + var e = assertThrows(RuntimeException.class, () -> await(handler.peekAsync())); assertEquals(failure, e); assertNull(await(handler.peekAsync())); } @Test void shouldReturnSingleAvailableRecordInNextAsync() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); handler.onRecord(values("1", "2")); - Record record = await(handler.nextAsync()); + var record = await(handler.nextAsync()); assertNotNull(record); assertEquals(keys, record.keys()); @@ -429,7 +420,7 @@ void shouldReturnNoRecordsWhenNoneAvailableInNextAsync() { void shouldReturnNoRecordsWhenSuccessComesAfterNextAsync() { PullAllResponseHandler handler = newHandler(asList("key1", "key2")); - CompletableFuture recordFuture = handler.nextAsync().toCompletableFuture(); + var recordFuture = handler.nextAsync().toCompletableFuture(); assertFalse(recordFuture.isDone()); handler.onSuccess(emptyMap()); @@ -440,7 +431,7 @@ void shouldReturnNoRecordsWhenSuccessComesAfterNextAsync() { @Test void shouldPullAllAvailableRecordsWithNextAsync() { - List keys = asList("key1", "key2", "key3"); + var keys = asList("key1", "key2", "key3"); PullAllResponseHandler handler = newHandler(keys); handler.onRecord(values(1, 2, 3)); @@ -449,28 +440,28 @@ void shouldPullAllAvailableRecordsWithNextAsync() { handler.onRecord(values(1111, 2222, 3333)); handler.onSuccess(emptyMap()); - Record record1 = await(handler.nextAsync()); + var record1 = await(handler.nextAsync()); assertNotNull(record1); assertEquals(keys, record1.keys()); assertEquals(1, record1.get("key1").asInt()); assertEquals(2, record1.get("key2").asInt()); assertEquals(3, record1.get("key3").asInt()); - Record record2 = await(handler.nextAsync()); + var record2 = await(handler.nextAsync()); assertNotNull(record2); assertEquals(keys, record2.keys()); assertEquals(11, record2.get("key1").asInt()); assertEquals(22, record2.get("key2").asInt()); assertEquals(33, record2.get("key3").asInt()); - Record record3 = await(handler.nextAsync()); + var record3 = await(handler.nextAsync()); assertNotNull(record3); assertEquals(keys, record3.keys()); assertEquals(111, record3.get("key1").asInt()); assertEquals(222, record3.get("key2").asInt()); assertEquals(333, record3.get("key3").asInt()); - Record record4 = await(handler.nextAsync()); + var record4 = await(handler.nextAsync()); assertNotNull(record4); assertEquals(keys, record4.keys()); assertEquals(1111, record4.get("key1").asInt()); @@ -483,16 +474,16 @@ void shouldPullAllAvailableRecordsWithNextAsync() { @Test void shouldReturnRecordInNextAsyncWhenItBecomesAvailableLater() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); - CompletableFuture recordFuture = handler.nextAsync().toCompletableFuture(); + var recordFuture = handler.nextAsync().toCompletableFuture(); assertFalse(recordFuture.isDone()); handler.onRecord(values(24, 42)); assertTrue(recordFuture.isDone()); - Record record = await(recordFuture); + var record = await(recordFuture); assertNotNull(record); assertEquals(keys, record.keys()); assertEquals(24, record.get("key1").asInt()); @@ -501,11 +492,11 @@ void shouldReturnRecordInNextAsyncWhenItBecomesAvailableLater() { @Test void shouldReturnSameRecordOnceWhenRequestedMultipleTimesInNextAsync() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); - CompletableFuture recordFuture1 = handler.nextAsync().toCompletableFuture(); - CompletableFuture recordFuture2 = handler.nextAsync().toCompletableFuture(); + var recordFuture1 = handler.nextAsync().toCompletableFuture(); + var recordFuture2 = handler.nextAsync().toCompletableFuture(); assertFalse(recordFuture1.isDone()); assertFalse(recordFuture2.isDone()); @@ -513,12 +504,12 @@ void shouldReturnSameRecordOnceWhenRequestedMultipleTimesInNextAsync() { assertTrue(recordFuture1.isDone()); assertTrue(recordFuture2.isDone()); - Record record1 = await(recordFuture1); - Record record2 = await(recordFuture2); + var record1 = await(recordFuture1); + var record2 = await(recordFuture2); // record should be returned only once because #nextAsync() polls it assertTrue(record1 != null || record2 != null); - Record record = record1 != null ? record1 : record2; + var record = record1 != null ? record1 : record2; assertNotNull(record); assertEquals(keys, record.keys()); @@ -529,10 +520,10 @@ void shouldReturnSameRecordOnceWhenRequestedMultipleTimesInNextAsync() { @Test void shouldPropagateExistingFailureInNextAsync() { PullAllResponseHandler handler = newHandler(); - RuntimeException error = new RuntimeException("FAILED to read"); + var error = new RuntimeException("FAILED to read"); handler.onFailure(error); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.nextAsync())); + var e = assertThrows(RuntimeException.class, () -> await(handler.nextAsync())); assertEquals(error, e); } @@ -540,24 +531,24 @@ void shouldPropagateExistingFailureInNextAsync() { void shouldPropagateFailureInNextAsyncWhenFailureMessagesArrivesLater() { PullAllResponseHandler handler = newHandler(); - CompletableFuture recordFuture = handler.nextAsync().toCompletableFuture(); + var recordFuture = handler.nextAsync().toCompletableFuture(); assertFalse(recordFuture.isDone()); - RuntimeException error = new RuntimeException("Network failed"); + var error = new RuntimeException("Network failed"); handler.onFailure(error); assertTrue(recordFuture.isDone()); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(recordFuture)); + var e = assertThrows(RuntimeException.class, () -> await(recordFuture)); assertEquals(error, e); } @Test void shouldPropagateFailureFromListAsync() { PullAllResponseHandler handler = newHandler(); - RuntimeException error = new RuntimeException("Hi!"); + var error = new RuntimeException("Hi!"); handler.onFailure(error); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.listAsync(Function.identity()))); + var e = assertThrows(RuntimeException.class, () -> await(handler.listAsync(Function.identity()))); assertEquals(error, e); } @@ -567,10 +558,10 @@ void shouldPropagateFailureAfterRecordFromListAsync() { handler.onRecord(values("a", "b")); - RuntimeException error = new RuntimeException("Hi!"); + var error = new RuntimeException("Hi!"); handler.onFailure(error); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(handler.listAsync(Function.identity()))); + var e = assertThrows(RuntimeException.class, () -> await(handler.listAsync(Function.identity()))); assertEquals(error, e); } @@ -581,16 +572,16 @@ void shouldFailListAsyncWhenTransformationFunctionThrows() { handler.onRecord(values(3, 4)); handler.onSuccess(emptyMap()); - RuntimeException error = new RuntimeException("Hi!"); + var error = new RuntimeException("Hi!"); - CompletionStage> stage = handler.listAsync(record -> { + var stage = handler.listAsync(record -> { if (record.get(1).asInt() == 4) { throw error; } return 42; }); - RuntimeException e = assertThrows(RuntimeException.class, () -> await(stage)); + var e = assertThrows(RuntimeException.class, () -> await(stage)); assertEquals(error, e); } @@ -613,29 +604,28 @@ void shouldReturnTransformedListInListAsync() { handler.onRecord(values(4)); handler.onSuccess(emptyMap()); - List transformedList = - await(handler.listAsync(record -> record.get(0).asInt() * 2)); + var transformedList = await(handler.listAsync(record -> record.get(0).asInt() * 2)); assertEquals(asList(2, 4, 6, 8), transformedList); } @Test void shouldReturnNotTransformedListInListAsync() { - List keys = asList("key1", "key2"); + var keys = asList("key1", "key2"); PullAllResponseHandler handler = newHandler(keys); - Value[] fields1 = values("a", "b"); - Value[] fields2 = values("c", "d"); - Value[] fields3 = values("e", "f"); + var fields1 = values("a", "b"); + var fields2 = values("c", "d"); + var fields3 = values("e", "f"); handler.onRecord(fields1); handler.onRecord(fields2); handler.onRecord(fields3); handler.onSuccess(emptyMap()); - List list = await(handler.listAsync(Function.identity())); + var list = await(handler.listAsync(Function.identity())); - List expectedRecords = asList( + var expectedRecords = asList( new InternalRecord(keys, fields1), new InternalRecord(keys, fields2), new InternalRecord(keys, fields3)); @@ -666,7 +656,7 @@ protected T newHandler(List queryKeys, Connection connection) { protected abstract T newHandler(Query query, List queryKeys, Connection connection); protected Connection connectionMock() { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(BoltServerAddress.LOCAL_DEFAULT); when(connection.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(connection.serverAgent()).thenReturn("Neo4j/4.2.5"); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/ResetResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/ResetResponseHandlerTest.java index 6e27331364..6761c3f70a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/ResetResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/ResetResponseHandlerTest.java @@ -33,8 +33,8 @@ class ResetResponseHandlerTest { @Test void shouldCompleteFutureOnSuccess() throws Exception { - CompletableFuture future = new CompletableFuture<>(); - ResetResponseHandler handler = newHandler(future); + var future = new CompletableFuture(); + var handler = newHandler(future); assertFalse(future.isDone()); @@ -46,8 +46,8 @@ void shouldCompleteFutureOnSuccess() throws Exception { @Test void shouldCompleteFutureOnFailure() throws Exception { - CompletableFuture future = new CompletableFuture<>(); - ResetResponseHandler handler = newHandler(future); + var future = new CompletableFuture(); + var handler = newHandler(future); assertFalse(future.isDone()); @@ -59,7 +59,7 @@ void shouldCompleteFutureOnFailure() throws Exception { @Test void shouldThrowWhenOnRecord() { - ResetResponseHandler handler = newHandler(new CompletableFuture<>()); + var handler = newHandler(new CompletableFuture<>()); assertThrows(UnsupportedOperationException.class, () -> handler.onRecord(values(1, 2, 3))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java index deadf06c92..3bff40f60e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java @@ -36,10 +36,10 @@ class RouteMessageResponseHandlerTest { @Test void onSuccessShouldSuccessFullyCompleteFutureWithRoutingTable() throws Exception { - CompletableFuture> completableFuture = new CompletableFuture<>(); - RouteMessageResponseHandler responseHandler = new RouteMessageResponseHandler(completableFuture); - Map routingTable = getRoutingTable(); - Map metadata = getMetadataWithRoutingTable(routingTable); + var completableFuture = new CompletableFuture>(); + var responseHandler = new RouteMessageResponseHandler(completableFuture); + var routingTable = getRoutingTable(); + var metadata = getMetadataWithRoutingTable(routingTable); responseHandler.onSuccess(metadata); @@ -48,8 +48,8 @@ void onSuccessShouldSuccessFullyCompleteFutureWithRoutingTable() throws Exceptio @Test void onSuccessShouldExceptionallyCompleteFutureWhenMetadataDoesNotHaveRoutingTable() throws Exception { - CompletableFuture> completableFuture = new CompletableFuture<>(); - RouteMessageResponseHandler responseHandler = new RouteMessageResponseHandler(completableFuture); + var completableFuture = new CompletableFuture>(); + var responseHandler = new RouteMessageResponseHandler(completableFuture); Map metadata = new HashMap<>(); responseHandler.onSuccess(metadata); @@ -59,9 +59,9 @@ void onSuccessShouldExceptionallyCompleteFutureWhenMetadataDoesNotHaveRoutingTab @Test void onFailureShouldCompleteExceptionallyWithTheOriginalException() { - CompletableFuture> completableFuture = new CompletableFuture<>(); - RouteMessageResponseHandler responseHandler = new RouteMessageResponseHandler(completableFuture); - RuntimeException expectedException = new RuntimeException("Test exception"); + var completableFuture = new CompletableFuture>(); + var responseHandler = new RouteMessageResponseHandler(completableFuture); + var expectedException = new RuntimeException("Test exception"); responseHandler.onFailure(expectedException); @@ -75,8 +75,8 @@ void onFailureShouldCompleteExceptionallyWithTheOriginalException() { @Test void onRecordShouldThrowUnsupportedOperation() { - CompletableFuture> completableFuture = new CompletableFuture<>(); - RouteMessageResponseHandler responseHandler = new RouteMessageResponseHandler(completableFuture); + var completableFuture = new CompletableFuture>(); + var responseHandler = new RouteMessageResponseHandler(completableFuture); responseHandler.onRecord(new Value[0]); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/RoutingResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/RoutingResponseHandlerTest.java index f4ceee5a15..e549c3df1a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/RoutingResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/RoutingResponseHandlerTest.java @@ -40,10 +40,10 @@ class RoutingResponseHandlerTest { @Test void shouldUnwrapCompletionException() { - RuntimeException error = new RuntimeException("Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new RuntimeException("Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(new CompletionException(error), errorHandler); + var handledError = handle(new CompletionException(error), errorHandler); assertEquals(error, handledError); verifyNoInteractions(errorHandler); @@ -51,10 +51,10 @@ void shouldUnwrapCompletionException() { @Test void shouldHandleServiceUnavailableException() { - ServiceUnavailableException error = new ServiceUnavailableException("Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new ServiceUnavailableException("Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler); + var handledError = handle(error, errorHandler); assertThat(handledError, instanceOf(SessionExpiredException.class)); verify(errorHandler).onConnectionFailure(LOCAL_DEFAULT); @@ -62,10 +62,10 @@ void shouldHandleServiceUnavailableException() { @Test void shouldHandleDatabaseUnavailableError() { - TransientException error = new TransientException("Neo.TransientError.General.DatabaseUnavailable", "Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new TransientException("Neo.TransientError.General.DatabaseUnavailable", "Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler); + var handledError = handle(error, errorHandler); assertEquals(error, handledError); verify(errorHandler).onConnectionFailure(LOCAL_DEFAULT); @@ -73,10 +73,10 @@ void shouldHandleDatabaseUnavailableError() { @Test void shouldHandleTransientException() { - TransientException error = new TransientException("Neo.TransientError.Transaction.DeadlockDetected", "Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new TransientException("Neo.TransientError.Transaction.DeadlockDetected", "Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler); + var handledError = handle(error, errorHandler); assertEquals(error, handledError); verifyNoInteractions(errorHandler); @@ -104,10 +104,10 @@ void shouldHandleForbiddenOnReadOnlyDatabaseErrorWithWriteAccessMode() { @Test void shouldHandleClientException() { - ClientException error = new ClientException("Neo.ClientError.Request.Invalid", "Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new ClientException("Neo.ClientError.Request.Invalid", "Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler, AccessMode.READ); + var handledError = handle(error, errorHandler, AccessMode.READ); assertEquals(error, handledError); verifyNoInteractions(errorHandler); @@ -115,9 +115,8 @@ void shouldHandleClientException() { @Test public void shouldDelegateCanManageAutoRead() { - ResponseHandler responseHandler = mock(ResponseHandler.class); - RoutingResponseHandler routingResponseHandler = - new RoutingResponseHandler(responseHandler, LOCAL_DEFAULT, AccessMode.READ, null); + var responseHandler = mock(ResponseHandler.class); + var routingResponseHandler = new RoutingResponseHandler(responseHandler, LOCAL_DEFAULT, AccessMode.READ, null); routingResponseHandler.canManageAutoRead(); @@ -126,9 +125,8 @@ public void shouldDelegateCanManageAutoRead() { @Test public void shouldDelegateDisableAutoReadManagement() { - ResponseHandler responseHandler = mock(ResponseHandler.class); - RoutingResponseHandler routingResponseHandler = - new RoutingResponseHandler(responseHandler, LOCAL_DEFAULT, AccessMode.READ, null); + var responseHandler = mock(ResponseHandler.class); + var routingResponseHandler = new RoutingResponseHandler(responseHandler, LOCAL_DEFAULT, AccessMode.READ, null); routingResponseHandler.disableAutoReadManagement(); @@ -136,10 +134,10 @@ public void shouldDelegateDisableAutoReadManagement() { } private void testWriteFailureWithReadAccessMode(String code) { - ClientException error = new ClientException(code, "Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new ClientException(code, "Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler, AccessMode.READ); + var handledError = handle(error, errorHandler, AccessMode.READ); assertThat(handledError, instanceOf(ClientException.class)); assertEquals("Write queries cannot be performed in READ access mode.", handledError.getMessage()); @@ -147,10 +145,10 @@ private void testWriteFailureWithReadAccessMode(String code) { } private void testWriteFailureWithWriteAccessMode(String code) { - ClientException error = new ClientException(code, "Hi"); - RoutingErrorHandler errorHandler = mock(RoutingErrorHandler.class); + var error = new ClientException(code, "Hi"); + var errorHandler = mock(RoutingErrorHandler.class); - Throwable handledError = handle(error, errorHandler, AccessMode.WRITE); + var handledError = handle(error, errorHandler, AccessMode.WRITE); assertThat(handledError, instanceOf(SessionExpiredException.class)); assertEquals("Server at " + LOCAL_DEFAULT + " no longer accepts writes", handledError.getMessage()); @@ -162,13 +160,13 @@ private static Throwable handle(Throwable error, RoutingErrorHandler errorHandle } private static Throwable handle(Throwable error, RoutingErrorHandler errorHandler, AccessMode accessMode) { - ResponseHandler responseHandler = mock(ResponseHandler.class); - RoutingResponseHandler routingResponseHandler = + var responseHandler = mock(ResponseHandler.class); + var routingResponseHandler = new RoutingResponseHandler(responseHandler, LOCAL_DEFAULT, accessMode, errorHandler); routingResponseHandler.onFailure(error); - ArgumentCaptor handledErrorCaptor = ArgumentCaptor.forClass(Throwable.class); + var handledErrorCaptor = ArgumentCaptor.forClass(Throwable.class); verify(responseHandler).onFailure(handledErrorCaptor.capture()); return handledErrorCaptor.getValue(); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java index 0b188a40e1..f28ed8f777 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java @@ -39,7 +39,6 @@ import static org.neo4j.driver.testutil.TestUtil.await; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -54,8 +53,8 @@ class RunResponseHandlerTest { @Test void shouldNotifyRunFutureOnSuccess() throws Exception { - CompletableFuture runFuture = new CompletableFuture<>(); - RunResponseHandler handler = newHandler(runFuture); + var runFuture = new CompletableFuture(); + var handler = newHandler(runFuture); assertFalse(runFuture.isDone()); handler.onSuccess(emptyMap()); @@ -66,28 +65,28 @@ void shouldNotifyRunFutureOnSuccess() throws Exception { @Test void shouldNotifyRunFutureOnFailure() { - CompletableFuture runFuture = new CompletableFuture<>(); - RunResponseHandler handler = newHandler(runFuture); + var runFuture = new CompletableFuture(); + var handler = newHandler(runFuture); assertFalse(runFuture.isDone()); - RuntimeException exception = new RuntimeException(); + var exception = new RuntimeException(); handler.onFailure(exception); assertTrue(runFuture.isCompletedExceptionally()); - ExecutionException executionException = assertThrows(ExecutionException.class, runFuture::get); + var executionException = assertThrows(ExecutionException.class, runFuture::get); assertThat(executionException.getCause(), equalTo(exception)); } @Test void shouldThrowOnRecord() { - RunResponseHandler handler = newHandler(); + var handler = newHandler(); assertThrows(UnsupportedOperationException.class, () -> handler.onRecord(values("a", "b", "c"))); } @Test void shouldReturnNoKeysWhenFailed() { - RunResponseHandler handler = newHandler(); + var handler = newHandler(); handler.onFailure(new RuntimeException()); @@ -97,7 +96,7 @@ void shouldReturnNoKeysWhenFailed() { @Test void shouldReturnDefaultResultAvailableAfterWhenFailed() { - RunResponseHandler handler = newHandler(); + var handler = newHandler(); handler.onFailure(new RuntimeException()); @@ -106,9 +105,9 @@ void shouldReturnDefaultResultAvailableAfterWhenFailed() { @Test void shouldReturnKeysWhenSucceeded() { - RunResponseHandler handler = newHandler(); + var handler = newHandler(); - List keys = asList("key1", "key2", "key3"); + var keys = asList("key1", "key2", "key3"); Map keyIndex = new HashMap<>(); keyIndex.put("key1", 0); keyIndex.put("key2", 1); @@ -126,18 +125,17 @@ void shouldReturnResultAvailableAfterWhenSucceededV3() { @Test void shouldMarkTxAndKeepConnectionAndFailOnFailure() { - CompletableFuture runFuture = new CompletableFuture<>(); - Connection connection = mock(Connection.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); - RunResponseHandler handler = - new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, tx); + var runFuture = new CompletableFuture(); + var connection = mock(Connection.class); + var tx = mock(UnmanagedTransaction.class); + var handler = new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, tx); Throwable throwable = new RuntimeException(); assertFalse(runFuture.isDone()); handler.onFailure(throwable); assertTrue(runFuture.isCompletedExceptionally()); - Throwable actualException = assertThrows(Throwable.class, () -> await(runFuture)); + var actualException = assertThrows(Throwable.class, () -> await(runFuture)); assertSame(throwable, actualException); verify(tx).markTerminated(throwable); verify(connection, never()).release(); @@ -146,17 +144,16 @@ void shouldMarkTxAndKeepConnectionAndFailOnFailure() { @Test void shouldNotReleaseConnectionAndFailOnFailure() { - CompletableFuture runFuture = new CompletableFuture<>(); - Connection connection = mock(Connection.class); - RunResponseHandler handler = - new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); + var runFuture = new CompletableFuture(); + var connection = mock(Connection.class); + var handler = new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); Throwable throwable = new RuntimeException(); assertFalse(runFuture.isDone()); handler.onFailure(throwable); assertTrue(runFuture.isCompletedExceptionally()); - Throwable actualException = assertThrows(Throwable.class, () -> await(runFuture)); + var actualException = assertThrows(Throwable.class, () -> await(runFuture)); assertSame(throwable, actualException); verify(connection, never()).release(); verify(connection, never()).terminateAndRelease(any(String.class)); @@ -164,19 +161,16 @@ void shouldNotReleaseConnectionAndFailOnFailure() { @Test void shouldReleaseConnectionImmediatelyAndFailOnAuthorizationExpiredExceptionFailure() { - CompletableFuture runFuture = new CompletableFuture<>(); - Connection connection = mock(Connection.class); - RunResponseHandler handler = - new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); - AuthorizationExpiredException authorizationExpiredException = - new AuthorizationExpiredException("code", "message"); + var runFuture = new CompletableFuture(); + var connection = mock(Connection.class); + var handler = new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); + var authorizationExpiredException = new AuthorizationExpiredException("code", "message"); assertFalse(runFuture.isDone()); handler.onFailure(authorizationExpiredException); assertTrue(runFuture.isCompletedExceptionally()); - AuthorizationExpiredException actualException = - assertThrows(AuthorizationExpiredException.class, () -> await(runFuture)); + var actualException = assertThrows(AuthorizationExpiredException.class, () -> await(runFuture)); assertSame(authorizationExpiredException, actualException); verify(connection).terminateAndRelease(AuthorizationExpiredException.DESCRIPTION); verify(connection, never()).release(); @@ -184,24 +178,22 @@ void shouldReleaseConnectionImmediatelyAndFailOnAuthorizationExpiredExceptionFai @Test void shouldReleaseConnectionImmediatelyAndFailOnConnectionReadTimeoutExceptionFailure() { - CompletableFuture runFuture = new CompletableFuture<>(); - Connection connection = mock(Connection.class); - RunResponseHandler handler = - new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); + var runFuture = new CompletableFuture(); + var connection = mock(Connection.class); + var handler = new RunResponseHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR, connection, null); assertFalse(runFuture.isDone()); handler.onFailure(ConnectionReadTimeoutException.INSTANCE); assertTrue(runFuture.isCompletedExceptionally()); - ConnectionReadTimeoutException actualException = - assertThrows(ConnectionReadTimeoutException.class, () -> await(runFuture)); + var actualException = assertThrows(ConnectionReadTimeoutException.class, () -> await(runFuture)); assertSame(ConnectionReadTimeoutException.INSTANCE, actualException); verify(connection).terminateAndRelease(ConnectionReadTimeoutException.INSTANCE.getMessage()); verify(connection, never()).release(); } private static void testResultAvailableAfterOnSuccess(String key, MetadataExtractor metadataExtractor) { - RunResponseHandler handler = newHandler(metadataExtractor); + var handler = newHandler(metadataExtractor); handler.onSuccess(singletonMap(key, value(42))); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/SessionPullResponseCompletionListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/SessionPullResponseCompletionListenerTest.java index c8eca8d81d..a3e7abde73 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/SessionPullResponseCompletionListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/SessionPullResponseCompletionListenerTest.java @@ -44,10 +44,10 @@ class SessionPullResponseCompletionListenerTest { @Test void shouldReleaseConnectionOnSuccess() { - Connection connection = newConnectionMock(); + var connection = newConnectionMock(); PullResponseCompletionListener listener = new SessionPullResponseCompletionListener(connection, (ignored) -> {}); - ResponseHandler handler = newHandler(connection, listener); + var handler = newHandler(connection, listener); handler.onSuccess(emptyMap()); @@ -56,10 +56,10 @@ void shouldReleaseConnectionOnSuccess() { @Test void shouldReleaseConnectionOnFailure() { - Connection connection = newConnectionMock(); + var connection = newConnectionMock(); PullResponseCompletionListener listener = new SessionPullResponseCompletionListener(connection, (ignored) -> {}); - ResponseHandler handler = newHandler(connection, listener); + var handler = newHandler(connection, listener); handler.onFailure(new RuntimeException()); @@ -68,13 +68,13 @@ void shouldReleaseConnectionOnFailure() { @Test void shouldUpdateBookmarksOnSuccess() { - Connection connection = newConnectionMock(); - String bookmarkValue = "neo4j:bookmark:v1:tx42"; + var connection = newConnectionMock(); + var bookmarkValue = "neo4j:bookmark:v1:tx42"; @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); PullResponseCompletionListener listener = new SessionPullResponseCompletionListener(connection, bookmarkConsumer); - ResponseHandler handler = newHandler(connection, listener); + var handler = newHandler(connection, listener); handler.onSuccess(singletonMap("bookmark", value(bookmarkValue))); @@ -83,11 +83,11 @@ void shouldUpdateBookmarksOnSuccess() { @Test void shouldReleaseConnectionImmediatelyOnAuthorizationExpiredExceptionFailure() { - Connection connection = newConnectionMock(); + var connection = newConnectionMock(); PullResponseCompletionListener listener = new SessionPullResponseCompletionListener(connection, (ignored) -> {}); - ResponseHandler handler = newHandler(connection, listener); - AuthorizationExpiredException exception = new AuthorizationExpiredException("code", "message"); + var handler = newHandler(connection, listener); + var exception = new AuthorizationExpiredException("code", "message"); handler.onFailure(exception); @@ -97,10 +97,10 @@ void shouldReleaseConnectionImmediatelyOnAuthorizationExpiredExceptionFailure() @Test void shouldReleaseConnectionImmediatelyOnConnectionReadTimeoutExceptionFailure() { - Connection connection = newConnectionMock(); + var connection = newConnectionMock(); PullResponseCompletionListener listener = new SessionPullResponseCompletionListener(connection, (ignored) -> {}); - ResponseHandler handler = newHandler(connection, listener); + var handler = newHandler(connection, listener); handler.onFailure(ConnectionReadTimeoutException.INSTANCE); @@ -109,9 +109,9 @@ void shouldReleaseConnectionImmediatelyOnConnectionReadTimeoutExceptionFailure() } private static ResponseHandler newHandler(Connection connection, PullResponseCompletionListener listener) { - RunResponseHandler runHandler = new RunResponseHandler( + var runHandler = new RunResponseHandler( new CompletableFuture<>(), BoltProtocolV3.METADATA_EXTRACTOR, mock(Connection.class), null); - BasicPullResponseHandler handler = new BasicPullResponseHandler( + var handler = new BasicPullResponseHandler( new Query("RETURN 1"), runHandler, connection, BoltProtocolV3.METADATA_EXTRACTOR, listener); handler.installRecordConsumer((record, throwable) -> {}); handler.installSummaryConsumer((resultSummary, throwable) -> {}); @@ -119,7 +119,7 @@ private static ResponseHandler newHandler(Connection connection, PullResponseCom } private static Connection newConnectionMock() { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(BoltServerAddress.LOCAL_DEFAULT); when(connection.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(connection.serverAgent()).thenReturn("Neo4j/4.2.5"); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/TransactionPullResponseCompletionListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/TransactionPullResponseCompletionListenerTest.java index e5ba714380..40b655ceaf 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/TransactionPullResponseCompletionListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/TransactionPullResponseCompletionListenerTest.java @@ -55,15 +55,14 @@ void shouldMarkTransactionAsTerminatedOnFailures() { } private static void testErrorHandling(Throwable error) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(BoltServerAddress.LOCAL_DEFAULT); when(connection.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(connection.serverAgent()).thenReturn("Neo4j/4.2.5"); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.isOpen()).thenReturn(true); - TransactionPullResponseCompletionListener listener = new TransactionPullResponseCompletionListener(tx); - RunResponseHandler runHandler = - new RunResponseHandler(new CompletableFuture<>(), METADATA_EXTRACTOR, null, null); + var listener = new TransactionPullResponseCompletionListener(tx); + var runHandler = new RunResponseHandler(new CompletableFuture<>(), METADATA_EXTRACTOR, null, null); PullResponseHandler handler = new BasicPullResponseHandler( new Query("RETURN 1"), runHandler, connection, METADATA_EXTRACTOR, listener); handler.installRecordConsumer((record, throwable) -> {}); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/AutoPullResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/AutoPullResponseHandlerTest.java index 71cd324629..be70ebae15 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/AutoPullResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/AutoPullResponseHandlerTest.java @@ -34,7 +34,6 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import org.junit.jupiter.api.Test; -import org.mockito.InOrder; import org.mockito.Mockito; import org.neo4j.driver.Query; import org.neo4j.driver.Value; @@ -49,10 +48,10 @@ class AutoPullResponseHandlerTest extends PullAllResponseHandlerTestBase { @Override protected AutoPullResponseHandler newHandler(Query query, List queryKeys, Connection connection) { - RunResponseHandler runResponseHandler = new RunResponseHandler( + var runResponseHandler = new RunResponseHandler( new CompletableFuture<>(), BoltProtocolV3.METADATA_EXTRACTOR, mock(Connection.class), null); runResponseHandler.onSuccess(singletonMap("fields", value(queryKeys))); - AutoPullResponseHandler handler = new AutoPullResponseHandler( + var handler = new AutoPullResponseHandler( query, runResponseHandler, connection, @@ -64,10 +63,10 @@ protected AutoPullResponseHandler newHandler(Query query, List queryKeys } protected AutoPullResponseHandler newHandler(Query query, Connection connection, long fetchSize) { - RunResponseHandler runResponseHandler = new RunResponseHandler( + var runResponseHandler = new RunResponseHandler( new CompletableFuture<>(), BoltProtocolV3.METADATA_EXTRACTOR, mock(Connection.class), null); runResponseHandler.onSuccess(emptyMap()); - AutoPullResponseHandler handler = new AutoPullResponseHandler( + var handler = new AutoPullResponseHandler( query, runResponseHandler, connection, @@ -80,11 +79,11 @@ protected AutoPullResponseHandler newHandler(Query query, Connection connection, @Test void shouldKeepRequestingWhenBetweenRange() { - Connection connection = connectionMock(); - InOrder inOrder = Mockito.inOrder(connection); + var connection = connectionMock(); + var inOrder = Mockito.inOrder(connection); // highwatermark=2, lowwatermark=1 - AutoPullResponseHandler handler = newHandler(new Query("RETURN 1"), connection, 4); + var handler = newHandler(new Query("RETURN 1"), connection, 4); Map metaData = new HashMap<>(1); metaData.put("has_more", BooleanValue.TRUE); @@ -101,11 +100,11 @@ void shouldKeepRequestingWhenBetweenRange() { @Test void shouldStopRequestingWhenOverMaxWatermark() { - Connection connection = connectionMock(); - InOrder inOrder = Mockito.inOrder(connection); + var connection = connectionMock(); + var inOrder = Mockito.inOrder(connection); // highWatermark=2, lowWatermark=1 - AutoPullResponseHandler handler = newHandler(new Query("RETURN 1"), connection, 4); + var handler = newHandler(new Query("RETURN 1"), connection, 4); Map metaData = new HashMap<>(1); metaData.put("has_more", BooleanValue.TRUE); @@ -123,11 +122,11 @@ void shouldStopRequestingWhenOverMaxWatermark() { @Test void shouldRestartRequestingWhenMinimumWatermarkMet() { - Connection connection = connectionMock(); - InOrder inOrder = Mockito.inOrder(connection); + var connection = connectionMock(); + var inOrder = Mockito.inOrder(connection); // highwatermark=4, lowwatermark=2 - AutoPullResponseHandler handler = newHandler(new Query("RETURN 1"), connection, 7); + var handler = newHandler(new Query("RETURN 1"), connection, 7); Map metaData = new HashMap<>(1); metaData.put("has_more", BooleanValue.TRUE); @@ -152,8 +151,8 @@ void shouldRestartRequestingWhenMinimumWatermarkMet() { @Test void shouldKeepRequestingMoreRecordsWhenPullAll() { - Connection connection = connectionMock(); - AutoPullResponseHandler handler = newHandler(new Query("RETURN 1"), connection, -1); + var connection = connectionMock(); + var handler = newHandler(new Query("RETURN 1"), connection, -1); Map metaData = new HashMap<>(1); metaData.put("has_more", BooleanValue.TRUE); @@ -172,11 +171,11 @@ void shouldKeepRequestingMoreRecordsWhenPullAll() { @Test void shouldFunctionWhenHighAndLowWatermarksAreEqual() { - Connection connection = connectionMock(); - InOrder inOrder = Mockito.inOrder(connection); + var connection = connectionMock(); + var inOrder = Mockito.inOrder(connection); // highwatermark=0, lowwatermark=0 - AutoPullResponseHandler handler = newHandler(new Query("RETURN 1"), connection, 1); + var handler = newHandler(new Query("RETURN 1"), connection, 1); Map metaData = new HashMap<>(1); metaData.put("has_more", BooleanValue.TRUE); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java index ac566fea72..d052449271 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java @@ -65,9 +65,8 @@ void shouldSuccessWithSummary(BasicPullResponseHandler.State state) throws Throw @Test void shouldRequestMoreWithHasMore() throws Throwable { // Given a handler in streaming state - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); // When handler.request(100); // I append a request to ask for more @@ -82,12 +81,12 @@ void shouldRequestMoreWithHasMore() throws Throwable { @Test void shouldInformSummaryConsumerSuccessWithHasMore() throws Throwable { // Given - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - BasicPullResponseHandler handler = newResponseHandlerWithStatus( + var handler = newResponseHandlerWithStatus( conn, recordConsumer, summaryConsumer, BasicPullResponseHandler.State.STREAMING_STATE); // When @@ -103,9 +102,8 @@ void shouldInformSummaryConsumerSuccessWithHasMore() throws Throwable { @Test void shouldDiscardIfStreamingIsCanceled() throws Throwable { // Given a handler in streaming state - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); handler.onSuccess(metaWithHasMoreEqualsTrue()); // Then @@ -124,12 +122,12 @@ void shouldErrorToRecordAndSummaryConsumer(BasicPullResponseHandler.State state) @Test void shouldReportRecordInStreaming() throws Throwable { // Given a handler in streaming state - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - BasicPullResponseHandler handler = newResponseHandlerWithStatus( + var handler = newResponseHandlerWithStatus( conn, recordConsumer, summaryConsumer, BasicPullResponseHandler.State.STREAMING_STATE); // When @@ -146,12 +144,12 @@ void shouldReportRecordInStreaming() throws Throwable { @MethodSource("allStatusExceptStreaming") void shouldNotReportRecordWhenNotStreaming(BasicPullResponseHandler.State state) throws Throwable { // Given a handler in streaming state - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - BasicPullResponseHandler handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); + var handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); // When handler.onRecord(new Value[0]); @@ -166,9 +164,8 @@ void shouldNotReportRecordWhenNotStreaming(BasicPullResponseHandler.State state) @Test void shouldStayInStreaming() throws Throwable { // Given - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); // When handler.request(100); @@ -180,9 +177,8 @@ void shouldStayInStreaming() throws Throwable { @Test void shouldPullAndSwitchStreamingInReady() throws Throwable { // Given - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); // When handler.request(100); @@ -196,9 +192,8 @@ void shouldPullAndSwitchStreamingInReady() throws Throwable { @Test void shouldStayInCancel() throws Throwable { // Given - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); // When handler.cancel(); @@ -211,9 +206,8 @@ void shouldStayInCancel() throws Throwable { @Test void shouldSwitchFromStreamingToCancel() throws Throwable { // Given - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); // When handler.cancel(); @@ -226,9 +220,8 @@ void shouldSwitchFromStreamingToCancel() throws Throwable { @Test void shouldSwitchFromReadyToCancel() throws Throwable { // Given - Connection conn = mockConnection(); - BasicPullResponseHandler handler = - newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); + var conn = mockConnection(); + var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); // When handler.cancel(); @@ -239,7 +232,7 @@ void shouldSwitchFromReadyToCancel() throws Throwable { } static Connection mockConnection() { - Connection conn = mock(Connection.class); + var conn = mock(Connection.class); when(conn.serverAddress()).thenReturn(mock(BoltServerAddress.class)); when(conn.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(conn.serverAgent()).thenReturn("Neo4j/4.2.5"); @@ -256,7 +249,7 @@ private BasicPullResponseHandler newResponseHandlerWithStatus( } private static HashMap metaWithHasMoreEqualsTrue() { - HashMap meta = new HashMap<>(1); + var meta = new HashMap(1); meta.put("has_more", BooleanValue.TRUE); return meta; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/SessionPullResponseCompletionListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/SessionPullResponseCompletionListenerTest.java index 37e881d736..0a0f4d15d9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/SessionPullResponseCompletionListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/SessionPullResponseCompletionListenerTest.java @@ -40,7 +40,7 @@ class SessionPullResponseCompletionListenerTest extends BasicPullResponseHandlerTestBase { protected void shouldHandleSuccessWithSummary(BasicPullResponseHandler.State state) { // Given - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") @@ -63,15 +63,15 @@ protected void shouldHandleSuccessWithSummary(BasicPullResponseHandler.State sta @Override protected void shouldHandleFailure(BasicPullResponseHandler.State state) { // Given - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - BasicPullResponseHandler handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); + var handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); // When - RuntimeException error = new RuntimeException("I am an error"); + var error = new RuntimeException("I am an error"); handler.onFailure(error); // Then @@ -96,10 +96,9 @@ private static BasicPullResponseHandler newSessionResponseHandler( BiConsumer summaryConsumer, Consumer bookmarkConsumer, BasicPullResponseHandler.State state) { - RunResponseHandler runHandler = mock(RunResponseHandler.class); - SessionPullResponseCompletionListener listener = - new SessionPullResponseCompletionListener(conn, bookmarkConsumer); - BasicPullResponseHandler handler = new BasicPullResponseHandler( + var runHandler = mock(RunResponseHandler.class); + var listener = new SessionPullResponseCompletionListener(conn, bookmarkConsumer); + var handler = new BasicPullResponseHandler( mock(Query.class), runHandler, conn, BoltProtocolV4.METADATA_EXTRACTOR, listener); handler.installRecordConsumer(recordConsumer); diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/TransactionPullResponseCompletionListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/TransactionPullResponseCompletionListenerTest.java index 0762d4ed92..83c36db5c4 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/TransactionPullResponseCompletionListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/TransactionPullResponseCompletionListenerTest.java @@ -41,12 +41,12 @@ public class TransactionPullResponseCompletionListenerTest extends BasicPullResp @Override protected void shouldHandleSuccessWithSummary(BasicPullResponseHandler.State state) { // Given - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - BasicPullResponseHandler handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); + var handler = newResponseHandlerWithStatus(conn, recordConsumer, summaryConsumer, state); // When handler.onSuccess(Collections.emptyMap()); @@ -60,17 +60,17 @@ protected void shouldHandleSuccessWithSummary(BasicPullResponseHandler.State sta @Override protected void shouldHandleFailure(BasicPullResponseHandler.State state) { // Given - Connection conn = mockConnection(); + var conn = mockConnection(); @SuppressWarnings("unchecked") BiConsumer recordConsumer = mock(BiConsumer.class); @SuppressWarnings("unchecked") BiConsumer summaryConsumer = mock(BiConsumer.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.isOpen()).thenReturn(true); - BasicPullResponseHandler handler = newTxResponseHandler(conn, recordConsumer, summaryConsumer, tx, state); + var handler = newTxResponseHandler(conn, recordConsumer, summaryConsumer, tx, state); // When - RuntimeException error = new RuntimeException("I am an error"); + var error = new RuntimeException("I am an error"); handler.onFailure(error); // Then @@ -86,7 +86,7 @@ protected BasicPullResponseHandler newResponseHandlerWithStatus( BiConsumer recordConsumer, BiConsumer summaryConsumer, BasicPullResponseHandler.State state) { - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); return newTxResponseHandler(conn, recordConsumer, summaryConsumer, tx, state); } @@ -96,9 +96,9 @@ private static BasicPullResponseHandler newTxResponseHandler( BiConsumer summaryConsumer, UnmanagedTransaction tx, BasicPullResponseHandler.State state) { - RunResponseHandler runHandler = mock(RunResponseHandler.class); - TransactionPullResponseCompletionListener listener = new TransactionPullResponseCompletionListener(tx); - BasicPullResponseHandler handler = new BasicPullResponseHandler( + var runHandler = mock(RunResponseHandler.class); + var listener = new TransactionPullResponseCompletionListener(tx); + var handler = new BasicPullResponseHandler( mock(Query.class), runHandler, conn, BoltProtocolV4.METADATA_EXTRACTOR, listener); handler.installRecordConsumer(recordConsumer); diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/ChannelActivityLoggerTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/ChannelActivityLoggerTest.java index 0f8c06208c..82a160767f 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/ChannelActivityLoggerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/ChannelActivityLoggerTest.java @@ -29,41 +29,41 @@ class ChannelActivityLoggerTest { @Test void shouldReformatWhenChannelIsNull() { - ChannelActivityLogger activityLogger = new ChannelActivityLogger(null, Logging.none(), getClass()); + var activityLogger = new ChannelActivityLogger(null, Logging.none(), getClass()); - String reformatted = activityLogger.reformat("Hello!"); + var reformatted = activityLogger.reformat("Hello!"); assertEquals("Hello!", reformatted); } @Test void shouldReformatWithChannelId() { - EmbeddedChannel channel = new EmbeddedChannel(); - ChannelActivityLogger activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); + var channel = new EmbeddedChannel(); + var activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); - String reformatted = activityLogger.reformat("Hello!"); + var reformatted = activityLogger.reformat("Hello!"); assertEquals("[0x" + channel.id() + "][][] Hello!", reformatted); } @Test void shouldReformatWithChannelIdAndServerAddress() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); ChannelAttributes.setServerAddress(channel, new BoltServerAddress("somewhere", 1234)); - ChannelActivityLogger activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); + var activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); - String reformatted = activityLogger.reformat("Hello!"); + var reformatted = activityLogger.reformat("Hello!"); assertEquals("[0x" + channel.id() + "][somewhere:1234][] Hello!", reformatted); } @Test void shouldReformatWithChannelIdAndConnectionId() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); ChannelAttributes.setConnectionId(channel, "bolt-12345"); - ChannelActivityLogger activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); + var activityLogger = new ChannelActivityLogger(channel, Logging.none(), getClass()); - String reformatted = activityLogger.reformat("Hello!"); + var reformatted = activityLogger.reformat("Hello!"); assertEquals("[0x" + channel.id() + "][][bolt-12345] Hello!", reformatted); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/ConsoleLoggingTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/ConsoleLoggingTest.java index 4010e93607..c3e8b37f56 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/ConsoleLoggingTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/ConsoleLoggingTest.java @@ -31,7 +31,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Logger; import org.neo4j.driver.internal.logging.ConsoleLogging.ConsoleLogger; class ConsoleLoggingTest { @@ -57,14 +56,14 @@ void setup() { @Test void shouldOnlyRecordMessageOnce() { // Given - ConsoleLogging logging = new ConsoleLogging(Level.ALL); - Logger catLogger = logging.getLog("Cat"); - Logger dogLogger = logging.getLog("Dog"); + var logging = new ConsoleLogging(Level.ALL); + var catLogger = logging.getLog("Cat"); + var dogLogger = logging.getLog("Dog"); catLogger.debug("Meow"); dogLogger.debug("Wow"); - Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray())); + var scanner = new Scanner(new ByteArrayInputStream(out.toByteArray())); assertTrue(scanner.hasNextLine()); assertTrue(scanner.nextLine().contains("Meow")); assertTrue(scanner.hasNextLine()); @@ -75,8 +74,8 @@ void shouldOnlyRecordMessageOnce() { @Test void shouldResetLoggerLevel() { // Given - String logName = ConsoleLogging.class.getName(); - java.util.logging.Logger logger = java.util.logging.Logger.getLogger(logName); + var logName = ConsoleLogging.class.getName(); + var logger = java.util.logging.Logger.getLogger(logName); // Then & When new ConsoleLogger(logName, Level.ALL).debug("Meow"); @@ -85,7 +84,7 @@ void shouldResetLoggerLevel() { new ConsoleLogger(logName, Level.SEVERE).debug("Wow"); assertEquals(Level.SEVERE, logger.getLevel()); - Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray())); + var scanner = new Scanner(new ByteArrayInputStream(out.toByteArray())); assertTrue(scanner.hasNextLine()); assertTrue(scanner.nextLine().contains("Meow")); assertFalse(scanner.hasNextLine()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java index 9a2dad123a..226ea13a2c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/PrefixedLoggerTest.java @@ -48,9 +48,9 @@ void shouldAllowNullPrefix() { @Test void shouldDelegateIsDebugEnabled() { - Logger delegate = newLoggerMock(true, false); + var delegate = newLoggerMock(true, false); - PrefixedLogger logger = new PrefixedLogger(delegate); + var logger = new PrefixedLogger(delegate); assertTrue(logger.isDebugEnabled()); verify(delegate).isDebugEnabled(); @@ -58,9 +58,9 @@ void shouldDelegateIsDebugEnabled() { @Test void shouldDelegateIsTraceEnabled() { - Logger delegate = newLoggerMock(false, true); + var delegate = newLoggerMock(false, true); - PrefixedLogger logger = new PrefixedLogger(delegate); + var logger = new PrefixedLogger(delegate); assertTrue(logger.isTraceEnabled()); verify(delegate).isTraceEnabled(); @@ -68,9 +68,9 @@ void shouldDelegateIsTraceEnabled() { @Test void shouldNotDelegateDebugLogWhenDebugDisabled() { - Logger delegate = newLoggerMock(); + var delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var logger = new PrefixedLogger(delegate); logger.debug(MESSAGE); verify(delegate, never()).debug(anyString(), any(Object[].class)); @@ -78,9 +78,9 @@ void shouldNotDelegateDebugLogWhenDebugDisabled() { @Test void shouldNotDelegateDebugLogWithThrowableWhenDebugDisabled() { - Logger delegate = newLoggerMock(); + var delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var logger = new PrefixedLogger(delegate); logger.debug(MESSAGE, mock(Throwable.class)); verify(delegate, never()).debug(anyString(), any(Throwable.class)); @@ -88,9 +88,9 @@ void shouldNotDelegateDebugLogWithThrowableWhenDebugDisabled() { @Test void shouldNotDelegateTraceLogWhenTraceDisabled() { - Logger delegate = newLoggerMock(); + var delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var logger = new PrefixedLogger(delegate); logger.trace(MESSAGE); verify(delegate, never()).trace(anyString(), any()); @@ -98,8 +98,8 @@ void shouldNotDelegateTraceLogWhenTraceDisabled() { @Test void shouldDelegateErrorMessageWhenNoPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(delegate); logger.error(MESSAGE, ERROR); @@ -108,8 +108,8 @@ void shouldDelegateErrorMessageWhenNoPrefix() { @Test void shouldDelegateInfoMessageWhenNoPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(delegate); logger.info(MESSAGE); @@ -118,8 +118,8 @@ void shouldDelegateInfoMessageWhenNoPrefix() { @Test void shouldDelegateWarnMessageWhenNoPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(delegate); logger.warn(MESSAGE); @@ -128,10 +128,10 @@ void shouldDelegateWarnMessageWhenNoPrefix() { @Test void shouldDelegateWarnMessageWithoutErrorWhenNoPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(delegate); - Exception cause = new Exception(); + var cause = new Exception(); logger.warn(MESSAGE, cause); verify(delegate).warn(MESSAGE, cause); @@ -139,8 +139,8 @@ void shouldDelegateWarnMessageWithoutErrorWhenNoPrefix() { @Test void shouldDelegateDebugMessageWhenNoPrefix() { - Logger delegate = newLoggerMock(true, false); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(true, false); + var logger = new PrefixedLogger(delegate); logger.debug(MESSAGE); @@ -149,8 +149,8 @@ void shouldDelegateDebugMessageWhenNoPrefix() { @Test void shouldDelegateTraceMessageWhenNoPrefix() { - Logger delegate = newLoggerMock(false, true); - PrefixedLogger logger = new PrefixedLogger(delegate); + var delegate = newLoggerMock(false, true); + var logger = new PrefixedLogger(delegate); logger.trace(MESSAGE); @@ -159,8 +159,8 @@ void shouldDelegateTraceMessageWhenNoPrefix() { @Test void shouldDelegateErrorMessageWithPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(PREFIX, delegate); logger.error(MESSAGE, ERROR); @@ -169,8 +169,8 @@ void shouldDelegateErrorMessageWithPrefix() { @Test void shouldDelegateInfoMessageWithPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(PREFIX, delegate); logger.info(MESSAGE); @@ -179,8 +179,8 @@ void shouldDelegateInfoMessageWithPrefix() { @Test void shouldDelegateWarnMessageWithPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(PREFIX, delegate); logger.warn(MESSAGE); @@ -189,10 +189,10 @@ void shouldDelegateWarnMessageWithPrefix() { @Test void shouldDelegateWarnMessageWithErrorWithPrefix() { - Logger delegate = newLoggerMock(); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(); + var logger = new PrefixedLogger(PREFIX, delegate); - Exception cause = new Exception(); + var cause = new Exception(); logger.warn(MESSAGE, cause); verify(delegate).warn("Output Hello World!", cause); @@ -200,8 +200,8 @@ void shouldDelegateWarnMessageWithErrorWithPrefix() { @Test void shouldDelegateDebugMessageWithPrefix() { - Logger delegate = newLoggerMock(true, false); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(true, false); + var logger = new PrefixedLogger(PREFIX, delegate); logger.debug(MESSAGE); @@ -210,8 +210,8 @@ void shouldDelegateDebugMessageWithPrefix() { @Test void shouldDelegateTraceMessageWithPrefix() { - Logger delegate = newLoggerMock(false, true); - PrefixedLogger logger = new PrefixedLogger(PREFIX, delegate); + var delegate = newLoggerMock(false, true); + var logger = new PrefixedLogger(PREFIX, delegate); logger.trace(MESSAGE); @@ -223,7 +223,7 @@ private static Logger newLoggerMock() { } private static Logger newLoggerMock(boolean debugEnabled, boolean traceEnabled) { - Logger logger = mock(Logger.class); + var logger = mock(Logger.class); when(logger.isDebugEnabled()).thenReturn(debugEnabled); when(logger.isTraceEnabled()).thenReturn(traceEnabled); return logger; diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggerTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggerTest.java index d64637c9a0..307fd0e57d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggerTest.java @@ -34,8 +34,8 @@ class Slf4jLoggerTest { @Test void shouldLogErrorWithMessageAndThrowable() { when(logger.isErrorEnabled()).thenReturn(true); - String message = "Hello"; - IllegalArgumentException error = new IllegalArgumentException("World"); + var message = "Hello"; + var error = new IllegalArgumentException("World"); slf4jLogger.error(message, error); @@ -45,7 +45,7 @@ void shouldLogErrorWithMessageAndThrowable() { @Test void shouldLogInfoWithMessageAndParams() { when(logger.isInfoEnabled()).thenReturn(true); - String message = "One %s, two %s, three %s"; + var message = "One %s, two %s, three %s"; Object[] params = {"111", "222", "333"}; slf4jLogger.info(message, params); @@ -56,7 +56,7 @@ void shouldLogInfoWithMessageAndParams() { @Test void shouldLogWarnWithMessageAndParams() { when(logger.isWarnEnabled()).thenReturn(true); - String message = "C for %s, d for %s"; + var message = "C for %s, d for %s"; Object[] params = {"cat", "dog"}; slf4jLogger.warn(message, params); @@ -67,8 +67,8 @@ void shouldLogWarnWithMessageAndParams() { @Test void shouldLogWarnWithMessageAndThrowable() { when(logger.isWarnEnabled()).thenReturn(true); - String message = "Hello"; - RuntimeException error = new RuntimeException("World"); + var message = "Hello"; + var error = new RuntimeException("World"); slf4jLogger.warn(message, error); @@ -78,7 +78,7 @@ void shouldLogWarnWithMessageAndThrowable() { @Test void shouldLogDebugWithMessageAndParams() { when(logger.isDebugEnabled()).thenReturn(true); - String message = "Hello%s%s!"; + var message = "Hello%s%s!"; Object[] params = {" ", "World"}; slf4jLogger.debug(message, params); @@ -89,7 +89,7 @@ void shouldLogDebugWithMessageAndParams() { @Test void shouldLogTraceWithMessageAndParams() { when(logger.isTraceEnabled()).thenReturn(true); - String message = "I'll be %s!"; + var message = "I'll be %s!"; Object[] params = {"back"}; slf4jLogger.trace(message, params); diff --git a/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggingTest.java b/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggingTest.java index e8cca1ca14..64a8252044 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggingTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/logging/Slf4jLoggingTest.java @@ -23,14 +23,13 @@ import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Logger; class Slf4jLoggingTest { @Test void shouldCreateLoggers() { - Slf4jLogging logging = new Slf4jLogging(); + var logging = new Slf4jLogging(); - Logger logger = logging.getLog("My Log"); + var logger = logging.getLog("My Log"); assertThat(logger, instanceOf(Slf4jLogger.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolTest.java index 453f85c494..6a15d7e3ef 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolTest.java @@ -57,7 +57,7 @@ void shouldThrowForUnknownVersion() { @Test void shouldThrowForChannelWithUnknownProtocolVersion() { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); setProtocolVersion(channel, new BoltProtocolVersion(42, 0)); assertThrows(ClientException.class, () -> BoltProtocol.forChannel(channel)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolVersionTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolVersionTest.java index aa374e699a..a67f81796e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolVersionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/BoltProtocolVersionTest.java @@ -30,9 +30,9 @@ class BoltProtocolVersionTest { @ParameterizedTest(name = "V{0}.{1}") @CsvSource({"3, 0", "4, 0", "4, 1", "4, 2", "100, 100", "255, 255", "0, 0"}) void shouldParseVersion(int major, int minor) { - BoltProtocolVersion protocolVersion = new BoltProtocolVersion(major, minor); + var protocolVersion = new BoltProtocolVersion(major, minor); - BoltProtocolVersion testVersion = BoltProtocolVersion.fromRawBytes(protocolVersion.toInt()); + var testVersion = BoltProtocolVersion.fromRawBytes(protocolVersion.toInt()); assertEquals(major, testVersion.getMajorVersion()); assertEquals(minor, testVersion.getMinorVersion()); @@ -41,8 +41,8 @@ void shouldParseVersion(int major, int minor) { @ParameterizedTest(name = "V{0}.{1} comparedTo V{2}.{3}") @CsvSource({"1, 3, 25, 21, -1", "4, 0, 4, 0, 0", "4, 1, 4, 0, 1", "0, 1, 0, 2, -1"}) void shouldCompareTo(int majorA, int minorA, int majorB, int minorB, int expectedResult) { - BoltProtocolVersion versionA = new BoltProtocolVersion(majorA, minorA); - BoltProtocolVersion versionB = new BoltProtocolVersion(majorB, minorB); + var versionA = new BoltProtocolVersion(majorA, minorA); + var versionB = new BoltProtocolVersion(majorB, minorB); assertEquals(expectedResult, versionA.compareTo(versionB)); } @@ -57,8 +57,8 @@ void shouldCompareTo(int majorA, int minorA, int majorB, int minorB, int expecte "255, 255, 255, 0, 0xFFFFFF" }) void shouldOutputCorrectIntRange(int majorA, int minorA, int majorB, int minorB, int expectedResult) { - BoltProtocolVersion versionA = new BoltProtocolVersion(majorA, minorA); - BoltProtocolVersion versionB = new BoltProtocolVersion(majorB, minorB); + var versionA = new BoltProtocolVersion(majorA, minorA); + var versionB = new BoltProtocolVersion(majorB, minorB); assertEquals(expectedResult, versionA.toIntRange(versionB)); } @@ -66,27 +66,27 @@ void shouldOutputCorrectIntRange(int majorA, int minorA, int majorB, int minorB, @ParameterizedTest(name = "V{0}.{1} toIntRange V{2}.{3}") @CsvSource({"1, 0, 2, 0", "2, 0, 1, 0", "4, 3, 4, 5", "4, 6, 3, 7", "3, 7, 4, 6", "255, 255, 100, 0"}) void shouldThrowsIllegalArgumentExceptionForIncorrectIntRange(int majorA, int minorA, int majorB, int minorB) { - BoltProtocolVersion versionA = new BoltProtocolVersion(majorA, minorA); - BoltProtocolVersion versionB = new BoltProtocolVersion(majorB, minorB); + var versionA = new BoltProtocolVersion(majorA, minorA); + var versionB = new BoltProtocolVersion(majorB, minorB); assertThrows(IllegalArgumentException.class, () -> versionA.toIntRange(versionB)); } @Test void shouldOutputCorrectLongFormatForMajorVersionOnly() { - BoltProtocolVersion version = new BoltProtocolVersion(4, 0); + var version = new BoltProtocolVersion(4, 0); assertEquals(4L, version.toInt()); } @Test void shouldOutputCorrectLongFormatForMajorAndMinorVersion() { - BoltProtocolVersion version = new BoltProtocolVersion(4, 1); + var version = new BoltProtocolVersion(4, 1); assertEquals(260L, version.toInt()); } @Test void shouldOutputFormattedString() { - BoltProtocolVersion version = new BoltProtocolVersion(4, 1); + var version = new BoltProtocolVersion(4, 1); assertEquals("4.1", version.toString()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/MessageFormatTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/MessageFormatTest.java index 82538679c8..38aa75ee48 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/MessageFormatTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/MessageFormatTest.java @@ -40,13 +40,11 @@ import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; import java.util.HashMap; -import java.util.List; import org.junit.jupiter.api.Test; import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.async.connection.BoltProtocolUtil; import org.neo4j.driver.internal.async.connection.ChannelPipelineBuilderImpl; -import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher; import org.neo4j.driver.internal.async.outbound.ChunkAwareByteBufOutput; import org.neo4j.driver.internal.messaging.common.CommonValueUnpacker; import org.neo4j.driver.internal.messaging.response.FailureMessage; @@ -90,10 +88,10 @@ void shouldUnpackNodeRelationshipAndPath() throws Throwable { @Test void shouldGiveHelpfulErrorOnMalformedNodeStruct() throws Throwable { // Given - ChunkAwareByteBufOutput output = new ChunkAwareByteBufOutput(); - ByteBuf buf = Unpooled.buffer(); + var output = new ChunkAwareByteBufOutput(); + var buf = Unpooled.buffer(); output.start(buf); - PackStream.Packer packer = new PackStream.Packer(output); + var packer = new PackStream.Packer(output); packer.packStructHeader(1, RecordMessage.SIGNATURE); packer.packListHeader(1); @@ -103,7 +101,7 @@ void shouldGiveHelpfulErrorOnMalformedNodeStruct() throws Throwable { BoltProtocolUtil.writeMessageBoundary(buf); // Expect - ClientException error = assertThrows(ClientException.class, () -> unpack(buf, newEmbeddedChannel())); + var error = assertThrows(ClientException.class, () -> unpack(buf, newEmbeddedChannel())); assertThat( error.getMessage(), startsWith("Invalid message received, serialized NODE structures should have 3 fields, " @@ -115,10 +113,10 @@ private void assertSerializesValue(Value value) throws Throwable { } private void assertSerializes(Message message) throws Throwable { - EmbeddedChannel channel = newEmbeddedChannel(new KnowledgeableMessageFormat(false)); + var channel = newEmbeddedChannel(new KnowledgeableMessageFormat(false)); - ByteBuf packed = pack(message, channel); - Message unpackedMessage = unpack(packed, channel); + var packed = pack(message, channel); + var unpackedMessage = unpack(packed, channel); assertEquals(message, unpackedMessage); } @@ -128,7 +126,7 @@ private EmbeddedChannel newEmbeddedChannel() { } private EmbeddedChannel newEmbeddedChannel(MessageFormat format) { - EmbeddedChannel channel = new EmbeddedChannel(); + var channel = new EmbeddedChannel(); setMessageDispatcher(channel, new MemorizingInboundMessageDispatcher(channel, DEV_NULL_LOGGING)); new ChannelPipelineBuilderImpl().build(format, channel.pipeline(), DEV_NULL_LOGGING); return channel; @@ -137,7 +135,7 @@ private EmbeddedChannel newEmbeddedChannel(MessageFormat format) { private ByteBuf pack(Message message, EmbeddedChannel channel) { assertTrue(channel.writeOutbound(message)); - ByteBuf[] packedMessages = + var packedMessages = channel.outboundMessages().stream().map(msg -> (ByteBuf) msg).toArray(ByteBuf[]::new); return Unpooled.wrappedBuffer(packedMessages); @@ -146,35 +144,35 @@ private ByteBuf pack(Message message, EmbeddedChannel channel) { private Message unpack(ByteBuf packed, EmbeddedChannel channel) throws Throwable { channel.writeInbound(packed); - InboundMessageDispatcher dispatcher = messageDispatcher(channel); - MemorizingInboundMessageDispatcher memorizingDispatcher = ((MemorizingInboundMessageDispatcher) dispatcher); + var dispatcher = messageDispatcher(channel); + var memorizingDispatcher = ((MemorizingInboundMessageDispatcher) dispatcher); - Throwable error = memorizingDispatcher.currentError(); + var error = memorizingDispatcher.currentError(); if (error != null) { throw error; } - List unpackedMessages = memorizingDispatcher.messages(); + var unpackedMessages = memorizingDispatcher.messages(); assertEquals(1, unpackedMessages.size()); return unpackedMessages.get(0); } private void assertOnlyDeserializesValue(Value value) throws Throwable { - RecordMessage message = new RecordMessage(new Value[] {value}); - ByteBuf packed = knowledgeablePack(message); + var message = new RecordMessage(new Value[] {value}); + var packed = knowledgeablePack(message); - EmbeddedChannel channel = newEmbeddedChannel(); - Message unpackedMessage = unpack(packed, channel); + var channel = newEmbeddedChannel(); + var unpackedMessage = unpack(packed, channel); assertEquals(message, unpackedMessage); } private ByteBuf knowledgeablePack(Message message) { - EmbeddedChannel channel = newEmbeddedChannel(new KnowledgeableMessageFormat(false)); + var channel = newEmbeddedChannel(new KnowledgeableMessageFormat(false)); assertTrue(channel.writeOutbound(message)); - ByteBuf[] packedMessages = + var packedMessages = channel.outboundMessages().stream().map(msg -> (ByteBuf) msg).toArray(ByteBuf[]::new); return Unpooled.wrappedBuffer(packedMessages); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java index e216918610..d6afc0aa0d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java @@ -31,14 +31,12 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; import org.neo4j.driver.Value; @@ -53,20 +51,20 @@ class BeginMessageEncoderTest { @ParameterizedTest @MethodSource("arguments") void shouldEncodeBeginMessage(AccessMode mode, String impersonatedUser, String txType) throws Exception { - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx42")); Map txMetadata = new HashMap<>(); txMetadata.put("hello", value("world")); txMetadata.put("answer", value(42)); - Duration txTimeout = Duration.ofSeconds(1); + var txTimeout = Duration.ofSeconds(1); encoder.encode( new BeginMessage( bookmarks, txTimeout, txMetadata, mode, defaultDatabase(), impersonatedUser, txType, null), packer); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, BeginMessage.SIGNATURE); Map expectedMetadata = new HashMap<>(); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/DiscardMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/DiscardMessageEncoderTest.java index 4162d81945..888f128ac2 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/DiscardMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/DiscardMessageEncoderTest.java @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import org.mockito.InOrder; import org.neo4j.driver.Value; import org.neo4j.driver.internal.messaging.ValuePacker; import org.neo4j.driver.internal.messaging.request.DiscardAllMessage; @@ -44,7 +43,7 @@ void shouldDiscardAllCorrectly() throws Throwable { Map meta = new HashMap<>(); meta.put("n", value(-1)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, DiscardMessage.SIGNATURE); order.verify(packer).pack(meta); } @@ -57,7 +56,7 @@ void shouldEncodeDiscardMessage() throws Exception { meta.put("n", value(100)); meta.put("qid", value(200)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, DiscardMessage.SIGNATURE); order.verify(packer).pack(meta); } @@ -69,7 +68,7 @@ void shouldAvoidQueryId() throws Throwable { Map meta = new HashMap<>(); meta.put("n", value(100)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, DiscardMessage.SIGNATURE); order.verify(packer).pack(meta); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/HelloMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/HelloMessageEncoderTest.java index 9198ab674e..0f93e61806 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/HelloMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/HelloMessageEncoderTest.java @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import org.mockito.InOrder; import org.neo4j.driver.Value; import org.neo4j.driver.internal.BoltAgentUtil; import org.neo4j.driver.internal.messaging.ValuePacker; @@ -45,7 +44,7 @@ void shouldEncodeHelloMessage() throws Exception { encoder.encode(new HelloMessage("MyDriver", BoltAgentUtil.VALUE, authToken, null, false, null), packer); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, HelloMessage.SIGNATURE); Map expectedMetadata = new HashMap<>(authToken); @@ -66,7 +65,7 @@ void shouldEncodeHelloMessageWithRoutingContext() throws Exception { encoder.encode( new HelloMessage("MyDriver", BoltAgentUtil.VALUE, authToken, routingContext, false, null), packer); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, HelloMessage.SIGNATURE); Map expectedMetadata = new HashMap<>(authToken); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/PullMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/PullMessageEncoderTest.java index c5355795a7..52ecf958af 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/PullMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/PullMessageEncoderTest.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import org.mockito.InOrder; import org.neo4j.driver.Value; import org.neo4j.driver.internal.messaging.ValuePacker; import org.neo4j.driver.internal.messaging.request.PullAllMessage; @@ -43,7 +42,7 @@ void shouldSendPullAllCorrectly() throws Throwable { Map meta = new HashMap<>(); meta.put("n", value(-1)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, PullMessage.SIGNATURE); order.verify(packer).pack(meta); } @@ -56,7 +55,7 @@ void shouldEncodePullMessage() throws Exception { meta.put("n", value(100)); meta.put("qid", value(200)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, PullMessage.SIGNATURE); order.verify(packer).pack(meta); } @@ -68,7 +67,7 @@ void shouldAvoidQueryId() throws Exception { Map meta = new HashMap<>(); meta.put("n", value(100)); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(1, PullMessage.SIGNATURE); order.verify(packer).pack(meta); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoderTest.java index 159e66b4ee..9c89423a17 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoderTest.java @@ -32,8 +32,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.NullSource; import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InOrder; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Value; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.Message; @@ -48,11 +46,11 @@ class RouteMessageEncoderTest { @ValueSource(strings = {"neo4j"}) @NullSource void shouldEncodeRouteMessage(String databaseName) throws IOException { - Map routingContext = getRoutingContext(); + var routingContext = getRoutingContext(); encoder.encode(new RouteMessage(getRoutingContext(), Collections.emptySet(), databaseName, null), packer); - InOrder inOrder = inOrder(packer); + var inOrder = inOrder(packer); inOrder.verify(packer).packStructHeader(3, (byte) 0x66); inOrder.verify(packer).pack(routingContext); @@ -64,13 +62,13 @@ void shouldEncodeRouteMessage(String databaseName) throws IOException { @ValueSource(strings = {"neo4j"}) @NullSource void shouldEncodeRouteMessageWithBookmark(String databaseName) throws IOException { - Map routingContext = getRoutingContext(); - Bookmark bookmark = InternalBookmark.parse("somebookmark"); + var routingContext = getRoutingContext(); + var bookmark = InternalBookmark.parse("somebookmark"); encoder.encode( new RouteMessage(getRoutingContext(), Collections.singleton(bookmark), databaseName, null), packer); - InOrder inOrder = inOrder(packer); + var inOrder = inOrder(packer); inOrder.verify(packer).packStructHeader(3, (byte) 0x66); inOrder.verify(packer).pack(routingContext); @@ -80,7 +78,7 @@ void shouldEncodeRouteMessageWithBookmark(String databaseName) throws IOExceptio @Test void shouldThrowIllegalArgumentIfMessageIsNotRouteMessage() { - Message message = mock(Message.class); + var message = mock(Message.class); assertThrows(IllegalArgumentException.class, () -> encoder.encode(message, packer)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java index f200e4cfbc..33ea1b7e2d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java @@ -32,12 +32,10 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; import org.neo4j.driver.Query; @@ -53,23 +51,23 @@ class RunWithMetadataMessageEncoderTest { @ParameterizedTest @EnumSource(AccessMode.class) void shouldEncodeRunWithMetadataMessage(AccessMode mode) throws Exception { - Map params = singletonMap("answer", value(42)); + var params = singletonMap("answer", value(42)); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx999")); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx999")); Map txMetadata = new HashMap<>(); txMetadata.put("key1", value("value1")); txMetadata.put("key2", value(1, 2, 3, 4, 5)); txMetadata.put("key3", value(true)); - Duration txTimeout = Duration.ofMillis(42); + var txTimeout = Duration.ofMillis(42); - Query query = new Query("RETURN $answer", value(params)); + var query = new Query("RETURN $answer", value(params)); encoder.encode( autoCommitTxRunMessage(query, txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null), packer); - InOrder order = inOrder(packer); + var order = inOrder(packer); order.verify(packer).packStructHeader(3, RunWithMetadataMessage.SIGNATURE); order.verify(packer).pack("RETURN $answer"); order.verify(packer).pack(params); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/HelloMessageTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/HelloMessageTest.java index 845e7b3d3b..aba4d134f2 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/HelloMessageTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/HelloMessageTest.java @@ -41,7 +41,7 @@ void shouldHaveCorrectMetadata() { authToken.put("user", value("Alice")); authToken.put("credentials", value("SecretPassword")); - HelloMessage message = + var message = new HelloMessage("MyDriver/1.0.2", BoltAgentUtil.VALUE, authToken, Collections.emptyMap(), false, null); Map expectedMetadata = new HashMap<>(authToken); @@ -61,8 +61,7 @@ void shouldHaveCorrectRoutingContext() { routingContext.put("region", "China"); routingContext.put("speed", "Slow"); - HelloMessage message = - new HelloMessage("MyDriver/1.0.2", BoltAgentUtil.VALUE, authToken, routingContext, false, null); + var message = new HelloMessage("MyDriver/1.0.2", BoltAgentUtil.VALUE, authToken, routingContext, false, null); Map expectedMetadata = new HashMap<>(authToken); expectedMetadata.put("user_agent", value("MyDriver/1.0.2")); @@ -77,7 +76,7 @@ void shouldNotExposeCredentialsInToString() { authToken.put(PRINCIPAL_KEY, value("Alice")); authToken.put(CREDENTIALS_KEY, value("SecretPassword")); - HelloMessage message = + var message = new HelloMessage("MyDriver/1.0.2", BoltAgentUtil.VALUE, authToken, Collections.emptyMap(), false, null); assertThat(message.toString(), not(containsString("SecretPassword"))); @@ -89,7 +88,7 @@ void shouldAcceptNullBoltAgent() { authToken.put("user", value("Alice")); authToken.put("credentials", value("SecretPassword")); - HelloMessage message = new HelloMessage("MyDriver/1.0.2", null, authToken, Collections.emptyMap(), false, null); + var message = new HelloMessage("MyDriver/1.0.2", null, authToken, Collections.emptyMap(), false, null); var expectedMetadata = new HashMap<>(authToken); expectedMetadata.put("user_agent", value("MyDriver/1.0.2")); @@ -104,8 +103,7 @@ void shouldAcceptDetailedBoltAgent() { authToken.put("credentials", value("SecretPassword")); var boltAgent = new BoltAgent("1", "2", "3", "4"); - HelloMessage message = - new HelloMessage("MyDriver/1.0.2", boltAgent, authToken, Collections.emptyMap(), false, null); + var message = new HelloMessage("MyDriver/1.0.2", boltAgent, authToken, Collections.emptyMap(), false, null); var expectedMetadata = new HashMap<>(authToken); expectedMetadata.put("user_agent", value("MyDriver/1.0.2")); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java index f72eb1fe5e..505189ef09 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java @@ -52,7 +52,7 @@ public class TransactionMetadataBuilderTest { @ParameterizedTest @EnumSource(AccessMode.class) void shouldHaveCorrectMetadata(AccessMode mode) { - Set bookmarks = Collections.singleton( + var bookmarks = Collections.singleton( InternalBookmark.parse(new HashSet<>(asList("neo4j:bookmark:v1:tx11", "neo4j:bookmark:v1:tx52")))); Map txMetadata = new HashMap<>(); @@ -60,10 +60,9 @@ void shouldHaveCorrectMetadata(AccessMode mode) { txMetadata.put("baz", value(111)); txMetadata.put("time", value(LocalDateTime.now())); - Duration txTimeout = Duration.ofSeconds(7); + var txTimeout = Duration.ofSeconds(7); - Map metadata = - buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null, null); + var metadata = buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null, null); Map expectedMetadata = new HashMap<>(); expectedMetadata.put( @@ -80,7 +79,7 @@ void shouldHaveCorrectMetadata(AccessMode mode) { @ParameterizedTest @ValueSource(strings = {"", "foo", "data"}) void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { - Set bookmarks = Collections.singleton( + var bookmarks = Collections.singleton( InternalBookmark.parse(new HashSet<>(asList("neo4j:bookmark:v1:tx11", "neo4j:bookmark:v1:tx52")))); Map txMetadata = new HashMap<>(); @@ -88,10 +87,9 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { txMetadata.put("baz", value(111)); txMetadata.put("time", value(LocalDateTime.now())); - Duration txTimeout = Duration.ofSeconds(7); + var txTimeout = Duration.ofSeconds(7); - Map metadata = - buildMetadata(txTimeout, txMetadata, database(databaseName), WRITE, bookmarks, null, null, null); + var metadata = buildMetadata(txTimeout, txMetadata, database(databaseName), WRITE, bookmarks, null, null, null); Map expectedMetadata = new HashMap<>(); expectedMetadata.put( @@ -105,8 +103,7 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { @Test void shouldNotHaveMetadataForDatabaseNameWhenIsNull() { - Map metadata = - buildMetadata(null, null, defaultDatabase(), WRITE, Collections.emptySet(), null, null, null); + var metadata = buildMetadata(null, null, defaultDatabase(), WRITE, Collections.emptySet(), null, null, null); assertTrue(metadata.isEmpty()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java index 928480465e..ce0433fd04 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java @@ -47,14 +47,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -136,7 +134,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -175,7 +173,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -193,9 +191,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -214,11 +212,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -230,10 +227,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -245,10 +241,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -259,9 +255,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -271,7 +267,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -279,9 +275,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -357,16 +353,16 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldNotSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); - ClientException e = assertThrows(ClientException.class, () -> await(txStage)); + var e = assertThrows(ClientException.class, () -> await(txStage)); assertThat(e.getMessage(), startsWith("Database name parameter for selecting database is not supported")); } @Test void shouldNotSupportDatabaseNameForAutoCommitTransactions() { - ClientException e = assertThrows( + var e = assertThrows( ClientException.class, () -> protocol.runInAutoCommitTransaction( connectionMock("foo", protocol), @@ -393,7 +389,7 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { UNLIMITED_FETCH_SIZE, null)); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); e = assertThrows(ClientException.class, () -> await(txStage)); } @@ -404,14 +400,14 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { protected void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runResponseHandler = + var runResponseHandler = verifyRunInvoked(connection, false, Collections.emptySet(), TransactionConfig.empty(), mode).runHandler; assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -428,7 +424,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -436,8 +432,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -450,13 +446,12 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult(); } - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); Set bookmarks = autoCommitTx ? initialBookmarks : Collections.emptySet(); - ResponseHandler runResponseHandler = - verifyRunInvoked(connection, autoCommitTx, bookmarks, config, mode).runHandler; + var runResponseHandler = verifyRunInvoked(connection, autoCommitTx, bookmarks, config, mode).runHandler; runResponseHandler.onSuccess(emptyMap()); assertTrue(cursorFuture.isDone()); @@ -465,19 +460,19 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandlers handlers = verifyRunInvoked(connection, true, bookmarks, config, mode); + var handlers = verifyRunInvoked(connection, true, bookmarks, config, mode); - String newBookmarkValue = "neo4j:bookmark:v1:tx98765"; + var newBookmarkValue = "neo4j:bookmark:v1:tx98765"; handlers.runHandler.onSuccess(emptyMap()); handlers.pullAllHandler.onSuccess(singletonMap("bookmark", value(newBookmarkValue))); then(bookmarkConsumer).should().accept(new DatabaseBookmark(null, InternalBookmark.parse(newBookmarkValue))); @@ -488,23 +483,23 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = verifyRunInvoked(connection, true, bookmarks, config, mode).runHandler; + var runResponseHandler = verifyRunInvoked(connection, true, bookmarks, config, mode).runHandler; Throwable error = new RuntimeException(); runResponseHandler.onFailure(error); then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -519,8 +514,8 @@ private static ResponseHandlers verifyRunInvoked( Set bookmarks, TransactionConfig config, AccessMode mode) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullAllHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullAllHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); RunWithMetadataMessage expectedMessage; if (session) { diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageFormatV3Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageFormatV3Test.java index 2a423c3b30..f7265c39d6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageFormatV3Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageFormatV3Test.java @@ -38,14 +38,14 @@ class MessageFormatV3Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = messageFormat.newWriter(mock(PackOutput.class)); + var writer = messageFormat.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV3.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = messageFormat.newReader(mock(PackInput.class)); + var reader = messageFormat.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java index 4205c6cb04..bcfb699dea 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -131,7 +128,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -170,7 +167,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -188,9 +185,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -209,11 +206,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -225,10 +221,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -240,10 +235,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -254,9 +249,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -266,7 +261,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -274,9 +269,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -352,7 +347,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -385,16 +380,16 @@ private static InternalAuthToken dummyAuthToken() { protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -404,7 +399,7 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -412,16 +407,16 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -436,14 +431,14 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( protected void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -459,7 +454,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -468,8 +463,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -483,10 +478,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -496,9 +491,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } protected void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -506,13 +501,13 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -530,14 +525,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -554,8 +549,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageFormatV4Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageFormatV4Test.java index 701b0808df..ab3eb008ea 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageFormatV4Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageFormatV4Test.java @@ -38,14 +38,14 @@ class MessageFormatV4Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV4.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java index 671907e49a..c08d189fec 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -135,7 +132,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -174,7 +171,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -192,9 +189,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -213,11 +210,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -229,10 +225,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -244,10 +239,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -258,9 +253,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -270,7 +265,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -278,9 +273,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -356,7 +351,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -381,16 +376,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -400,7 +395,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -408,16 +403,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -431,14 +426,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -454,7 +449,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -463,8 +458,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -478,9 +473,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -489,9 +484,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -499,15 +494,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -525,14 +520,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -549,8 +544,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageFormatV41Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageFormatV41Test.java index f9022534b4..61b708d412 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageFormatV41Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageFormatV41Test.java @@ -40,14 +40,14 @@ class MessageFormatV41Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV4.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java index a50d49724f..d341e5688f 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -135,7 +132,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -174,7 +171,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -192,9 +189,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -213,11 +210,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -229,10 +225,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -244,10 +239,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -258,9 +253,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -270,7 +265,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -278,9 +273,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -356,7 +351,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -381,16 +376,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -399,7 +394,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -407,16 +402,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -430,14 +425,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -453,7 +448,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -462,8 +457,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -477,10 +472,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -490,9 +485,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -500,15 +495,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -526,14 +521,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -550,8 +545,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageFormatV42Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageFormatV42Test.java index 0338001377..474dc13622 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageFormatV42Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageFormatV42Test.java @@ -39,14 +39,14 @@ class MessageFormatV42Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV4.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java index f18e4565c5..893a00993e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -134,7 +131,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -173,7 +170,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -191,9 +188,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -212,11 +209,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -228,10 +224,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -243,10 +238,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -257,9 +252,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -269,7 +264,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -277,9 +272,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -355,7 +350,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -380,16 +375,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -399,7 +394,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -407,16 +402,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -430,14 +425,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -453,7 +448,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -462,8 +457,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -479,10 +474,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -492,9 +487,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -502,15 +497,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -528,14 +523,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -552,8 +547,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageFormatV43Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageFormatV43Test.java index fcdf616666..5ca5adcdc2 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageFormatV43Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageFormatV43Test.java @@ -38,14 +38,14 @@ class MessageFormatV43Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV43.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java index f98f4f2269..b3046cdf2c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -134,7 +131,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -173,7 +170,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -191,9 +188,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -212,11 +209,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -228,10 +224,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -243,10 +238,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -257,9 +252,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -269,7 +264,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -277,9 +272,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -355,7 +350,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -380,16 +375,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -399,7 +394,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -407,16 +402,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -430,14 +425,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -453,7 +448,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -462,8 +457,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -477,10 +472,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -490,9 +485,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -500,15 +495,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -526,14 +521,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -550,8 +545,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageFormatV44Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageFormatV44Test.java index 2eef395703..724ddd6cc0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageFormatV44Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageFormatV44Test.java @@ -33,14 +33,14 @@ public class MessageFormatV44Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV44.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(CommonMessageReader.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java index 9777c7ef49..4142767e90 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -134,7 +131,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); var clock = mock(Clock.class); var time = 1L; when(clock.millis()).thenReturn(time); @@ -173,7 +170,7 @@ void shouldPrepareToCloseChannel() { @Test void shouldFailToInitializeChannelWhenErrorIsReceived() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/2.2.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -191,9 +188,9 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -212,11 +209,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -228,10 +224,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -243,10 +238,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -257,9 +252,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -269,7 +264,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -277,9 +272,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -355,7 +350,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -380,16 +375,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -399,7 +394,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -407,16 +402,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -430,14 +425,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -453,7 +448,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -462,8 +457,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -477,10 +472,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -490,9 +485,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -500,15 +495,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -526,14 +521,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -550,8 +545,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageFormatV5Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageFormatV5Test.java index 0d30fc1a38..624cd8f0e1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageFormatV5Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageFormatV5Test.java @@ -32,14 +32,14 @@ public class MessageFormatV5Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV5.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(MessageReaderV5.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java index c5ddea1ba1..27058fe0f6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -79,7 +77,6 @@ import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -132,7 +129,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/0.0.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -163,9 +160,9 @@ void shouldPrepareToCloseChannel() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -184,11 +181,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -200,10 +196,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -215,10 +210,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -229,9 +224,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -241,7 +236,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -249,9 +244,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -327,7 +322,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -352,16 +347,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -371,7 +366,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -379,16 +374,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -402,14 +397,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -425,7 +420,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -434,8 +429,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -449,10 +444,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -462,9 +457,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -472,15 +467,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -498,14 +493,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -522,8 +517,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageFormatV51Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageFormatV51Test.java index fc2078a11a..4cf02e7ed0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageFormatV51Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageFormatV51Test.java @@ -33,14 +33,14 @@ public class MessageFormatV51Test { @Test void shouldCreateCorrectWriter() { - MessageFormat.Writer writer = format.newWriter(mock(PackOutput.class)); + var writer = format.newWriter(mock(PackOutput.class)); assertThat(writer, instanceOf(MessageWriterV51.class)); } @Test void shouldCreateCorrectReader() { - MessageFormat.Reader reader = format.newReader(mock(PackInput.class)); + var reader = format.newReader(mock(PackInput.class)); assertThat(reader, instanceOf(MessageReaderV5.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java index 67bdc894e6..833f241caf 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -79,7 +77,6 @@ import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -133,7 +130,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/0.0.1", null, dummyAuthToken(), RoutingContext.EMPTY, promise, null, mock(Clock.class)); @@ -164,9 +161,9 @@ void shouldPrepareToCloseChannel() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -185,11 +182,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -201,10 +197,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -216,10 +211,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -230,9 +225,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -242,7 +237,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -250,9 +245,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -328,7 +323,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -353,16 +348,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -372,7 +367,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -380,16 +375,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -403,14 +398,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -426,7 +421,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -435,8 +430,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -450,10 +445,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -463,9 +458,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -473,15 +468,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -499,14 +494,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -523,8 +518,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java index 4a373f12a0..c13f7b996d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java @@ -48,14 +48,12 @@ import static org.neo4j.driver.testutil.TestUtil.await; import static org.neo4j.driver.testutil.TestUtil.connectionMock; -import io.netty.channel.ChannelPromise; import io.netty.channel.embedded.EmbeddedChannel; import java.time.Clock; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; @@ -80,7 +78,6 @@ import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.cursor.AsyncResultCursor; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; import org.neo4j.driver.internal.handlers.BeginTxResponseHandler; import org.neo4j.driver.internal.handlers.CommitTxResponseHandler; import org.neo4j.driver.internal.handlers.PullAllResponseHandler; @@ -134,7 +131,7 @@ void shouldCreateMessageFormat() { @Test void shouldInitializeChannel() { - ChannelPromise promise = channel.newPromise(); + var promise = channel.newPromise(); protocol.initializeChannel( "MyDriver/0.0.1", @@ -171,9 +168,9 @@ void shouldPrepareToCloseChannel() { @Test void shouldBeginTransactionWithoutBookmark() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = + var stage = protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); verify(connection) @@ -192,11 +189,10 @@ void shouldBeginTransactionWithoutBookmark() { @Test void shouldBeginTransactionWithBookmarks() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - CompletionStage stage = - protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); verify(connection) .writeAndFlush( @@ -208,10 +204,9 @@ void shouldBeginTransactionWithBookmarks() { @Test void shouldBeginTransactionWithConfig() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); verify(connection) .writeAndFlush( @@ -223,10 +218,10 @@ void shouldBeginTransactionWithConfig() { @Test void shouldBeginTransactionWithBookmarksAndConfig() { - Connection connection = connectionMock(protocol); - Set bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); + var connection = connectionMock(protocol); + var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - CompletionStage stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); verify(connection) .writeAndFlush( @@ -237,9 +232,9 @@ void shouldBeginTransactionWithBookmarksAndConfig() { @Test void shouldCommitTransaction() { - String bookmarkString = "neo4j:bookmark:v1:tx4242"; + var bookmarkString = "neo4j:bookmark:v1:tx4242"; - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); when(connection.protocol()).thenReturn(protocol); doAnswer(invocation -> { ResponseHandler commitHandler = invocation.getArgument(1); @@ -249,7 +244,7 @@ void shouldCommitTransaction() { .when(connection) .writeAndFlush(eq(CommitMessage.COMMIT), any()); - CompletionStage stage = protocol.commitTransaction(connection); + var stage = protocol.commitTransaction(connection); verify(connection).writeAndFlush(eq(CommitMessage.COMMIT), any(CommitTxResponseHandler.class)); assertEquals(InternalBookmark.parse(bookmarkString), await(stage).bookmark()); @@ -257,9 +252,9 @@ void shouldCommitTransaction() { @Test void shouldRollbackTransaction() { - Connection connection = connectionMock(protocol); + var connection = connectionMock(protocol); - CompletionStage stage = protocol.rollbackTransaction(connection); + var stage = protocol.rollbackTransaction(connection); verify(connection).writeAndFlush(eq(RollbackMessage.ROLLBACK), any(RollbackTxResponseHandler.class)); assertNull(await(stage)); @@ -335,7 +330,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); assertDoesNotThrow(() -> await(txStage)); @@ -360,16 +355,16 @@ private Class expectedMessageFormatType() { private void testFailedRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to Run message with a failure @@ -379,7 +374,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( // Then then(bookmarkConsumer).should(times(0)).accept(any()); assertTrue(cursorFuture.isDone()); - Throwable actual = + var actual = assertThrows(error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -387,16 +382,16 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); - CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( + var cursorFuture = protocol.runInAutoCommitTransaction( connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); + var runHandler = verifySessionRunInvoked(connection, bookmarks, config, mode, defaultDatabase()); assertFalse(cursorFuture.isDone()); // When I response to the run message @@ -410,14 +405,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( private void testRunInUnmanagedTransactionAndWaitForRunResponse(boolean success, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); + var connection = connectionMock(mode, protocol); - CompletableFuture cursorFuture = protocol.runInUnmanagedTransaction( + var cursorFuture = protocol.runInUnmanagedTransaction( connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) .asyncResult() .toCompletableFuture(); - ResponseHandler runHandler = verifyTxRunInvoked(connection); + var runHandler = verifyTxRunInvoked(connection); assertFalse(cursorFuture.isDone()); Throwable error = new RuntimeException(); @@ -433,7 +428,7 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) if (success) { assertNotNull(await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); } else { - Throwable actual = assertThrows( + var actual = assertThrows( error.getClass(), () -> await(cursorFuture.get().mapSuccessfulRunCompletionAsync())); assertSame(error, actual); } @@ -442,8 +437,8 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfig config, AccessMode mode) throws Exception { // Given - Connection connection = connectionMock(mode, protocol); - Set initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); + var connection = connectionMock(mode, protocol); + var initialBookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx987")); CompletionStage cursorStage; if (autoCommitTx) { @@ -457,10 +452,10 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } // When & Then - CompletableFuture cursorFuture = cursorStage.toCompletableFuture(); + var cursorFuture = cursorStage.toCompletableFuture(); assertFalse(cursorFuture.isDone()); - ResponseHandler runResponseHandler = autoCommitTx + var runResponseHandler = autoCommitTx ? verifySessionRunInvoked(connection, initialBookmarks, config, mode, defaultDatabase()) : verifyTxRunInvoked(connection); runResponseHandler.onSuccess(emptyMap()); @@ -470,9 +465,9 @@ connection, QUERY, mock(UnmanagedTransaction.class), UNLIMITED_FETCH_SIZE) } private void testDatabaseNameSupport(boolean autoCommitTx) { - Connection connection = connectionMock("foo", protocol); + var connection = connectionMock("foo", protocol); if (autoCommitTx) { - ResultCursorFactory factory = protocol.runInAutoCommitTransaction( + var factory = protocol.runInAutoCommitTransaction( connection, QUERY, Collections.emptySet(), @@ -480,15 +475,15 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, null); - CompletionStage resultStage = factory.asyncResult(); - ResponseHandler runHandler = verifySessionRunInvoked( + var resultStage = factory.asyncResult(); + var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = protocol.beginTransaction( + var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null); await(txStage); verifyBeginInvoked( @@ -506,14 +501,14 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); return verifyRunInvoked(connection, runMessage); } private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataMessage runMessage) { - ArgumentCaptor runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - ArgumentCaptor pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var runHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var pullHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); verify(connection).write(eq(runMessage), runHandlerCaptor.capture()); verify(connection).writeAndFlush(any(PullMessage.class), pullHandlerCaptor.capture()); @@ -530,8 +525,8 @@ private void verifyBeginInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerConnectionPoolMetricsTest.java b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerConnectionPoolMetricsTest.java index b49774ea49..6b64f56156 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerConnectionPoolMetricsTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerConnectionPoolMetricsTest.java @@ -24,7 +24,6 @@ import static org.mockito.Mockito.mock; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -58,7 +57,7 @@ void beforeEach() { @Test void shouldIncrementCreatingAndStartTimerOnBeforeCreating() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.creating()).willReturn(1); ListenerEvent event = mock(ListenerEvent.class); @@ -73,7 +72,7 @@ void shouldIncrementCreatingAndStartTimerOnBeforeCreating() { @Test void shouldIncrementFailedToCreateAndDecrementCreatingOnAfterFailedToCreate() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.failedToCreate()).willReturn(1L); given(expectedMetrics.creating()).willReturn(-1); @@ -87,12 +86,12 @@ void shouldIncrementFailedToCreateAndDecrementCreatingOnAfterFailedToCreate() { @Test void shouldDecrementCreatingAndIncrementCreatedAndStopTimerOnAfterCreated() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.creating()).willReturn(-1); given(expectedMetrics.created()).willReturn(1L); - Timer timer = registry.get(MicrometerConnectionPoolMetrics.CREATION).timer(); - long timerCount = timer.count(); - MicrometerTimerListenerEvent event = new MicrometerTimerListenerEvent(registry); + var timer = registry.get(MicrometerConnectionPoolMetrics.CREATION).timer(); + var timerCount = timer.count(); + var event = new MicrometerTimerListenerEvent(registry); event.start(); // WHEN @@ -106,7 +105,7 @@ void shouldDecrementCreatingAndIncrementCreatedAndStopTimerOnAfterCreated() { @Test void shouldIncrementClosedOnAfterClosed() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.closed()).willReturn(1L); // WHEN @@ -120,7 +119,7 @@ void shouldIncrementClosedOnAfterClosed() { void shouldStartTimerAndIncrementAcquiringOnBeforeAcquiringOrCreating() { // GIVEN ListenerEvent event = mock(ListenerEvent.class); - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.acquiring()).willReturn(1); // WHEN @@ -134,7 +133,7 @@ void shouldStartTimerAndIncrementAcquiringOnBeforeAcquiringOrCreating() { @Test void shouldDecrementAcquiringOnAfterAcquiringOrCreating() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.acquiring()).willReturn(-1); // WHEN @@ -147,11 +146,11 @@ void shouldDecrementAcquiringOnAfterAcquiringOrCreating() { @Test void shouldIncrementAcquiredAndStopTimerOnAfterAcquiredOrCreated() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.acquired()).willReturn(1L); - Timer timer = registry.get(MicrometerConnectionPoolMetrics.ACQUISITION).timer(); - long timerCount = timer.count(); - MicrometerTimerListenerEvent event = new MicrometerTimerListenerEvent(registry); + var timer = registry.get(MicrometerConnectionPoolMetrics.ACQUISITION).timer(); + var timerCount = timer.count(); + var event = new MicrometerTimerListenerEvent(registry); event.start(); // WHEN @@ -165,7 +164,7 @@ void shouldIncrementAcquiredAndStopTimerOnAfterAcquiredOrCreated() { @Test void shouldIncrementTimedOutToAcquireOnAfterTimedOutToAcquireOrCreate() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.timedOutToAcquire()).willReturn(1L); // WHEN @@ -190,11 +189,11 @@ void shouldStartTimerOnAcquired() { @Test void shouldIncrementReleasedAndStopTimerOnReleased() { // GIVEN - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.totalInUseCount()).willReturn(1L); - Timer timer = registry.get(MicrometerConnectionPoolMetrics.USAGE).timer(); - long timerCount = timer.count(); - MicrometerTimerListenerEvent event = new MicrometerTimerListenerEvent(registry); + var timer = registry.get(MicrometerConnectionPoolMetrics.USAGE).timer(); + var timerCount = timer.count(); + var event = new MicrometerTimerListenerEvent(registry); event.start(); // WHEN @@ -209,13 +208,13 @@ void shouldIncrementReleasedAndStopTimerOnReleased() { void shouldUseInUseSupplier() { try { // GIVEN - int expected = 5; + var expected = 5; inUse.compareAndSet(0, expected); - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.inUse()).willReturn(expected); // WHEN - int actual = metrics.inUse(); + var actual = metrics.inUse(); // THEN assertEquals(expected, actual); @@ -229,13 +228,13 @@ void shouldUseInUseSupplier() { void shouldUseIdleSupplier() { try { // GIVEN - int expected = 5; + var expected = 5; idle.compareAndSet(0, expected); - ConnectionPoolMetrics expectedMetrics = mock(ConnectionPoolMetrics.class); + var expectedMetrics = mock(ConnectionPoolMetrics.class); given(expectedMetrics.idle()).willReturn(expected); // WHEN - int actual = metrics.idle(); + var actual = metrics.idle(); // THEN assertEquals(expected, actual); diff --git a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsProviderTest.java index 5f4e55d7f8..a37217cfc9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsProviderTest.java @@ -22,7 +22,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Metrics; class MicrometerMetricsProviderTest { MetricsProvider provider; @@ -35,7 +34,7 @@ void beforeEach() { @Test void shouldReturnMicrometerMetricsOnMetrics() { // GIVEN & WHEN - Metrics metrics = provider.metrics(); + var metrics = provider.metrics(); // THEN assertTrue(metrics instanceof MicrometerMetrics); @@ -44,7 +43,7 @@ void shouldReturnMicrometerMetricsOnMetrics() { @Test void shouldReturnMicrometerMetricsOnMetricsListener() { // GIVEN & WHEN - MetricsListener listener = provider.metricsListener(); + var listener = provider.metricsListener(); // THEN assertTrue(listener instanceof MicrometerMetrics); diff --git a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsTest.java b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsTest.java index 50055d396d..4c8775c490 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerMetricsTest.java @@ -25,7 +25,6 @@ import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; -import java.util.Collection; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -53,7 +52,7 @@ void beforeEach() { @Test void shouldReturnEmptyConnectionPoolMetrics() { // GIVEN & WHEN - Collection collection = metrics.connectionPoolMetrics(); + var collection = metrics.connectionPoolMetrics(); // THEN assertTrue(collection.isEmpty()); @@ -198,7 +197,7 @@ void shouldDelegateAfterConnectionReleased() { @Test void shouldCreateListenerEvent() { // GIVEN & WHEN - ListenerEvent event = metrics.createListenerEvent(); + var event = metrics.createListenerEvent(); // THEN assertTrue(event instanceof MicrometerTimerListenerEvent); @@ -207,7 +206,7 @@ void shouldCreateListenerEvent() { @Test void shouldPutPoolMetrics() { // GIVEN - int size = metrics.connectionPoolMetrics().size(); + var size = metrics.connectionPoolMetrics().size(); // WHEN metrics.registerPoolMetrics(ID, BoltServerAddress.LOCAL_DEFAULT, () -> 23, () -> 42); @@ -220,7 +219,7 @@ void shouldPutPoolMetrics() { void shouldRemovePoolMetrics() { // GIVEN metrics.putPoolMetrics(ID, poolMetrics); - int size = metrics.connectionPoolMetrics().size(); + var size = metrics.connectionPoolMetrics().size(); // WHEN metrics.removePoolMetrics(ID); diff --git a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerTimerListenerEventTest.java b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerTimerListenerEventTest.java index fbe348a3ce..1a13534382 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerTimerListenerEventTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/metrics/MicrometerTimerListenerEventTest.java @@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; -import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -37,13 +36,13 @@ void beforeEach() { @Test void shouldCreateTimerSampleOnStartAndReturnOnGetSample() { // GIVEN - Timer.Sample initialSample = event.getSample(); + var initialSample = event.getSample(); // WHEN event.start(); // THEN - Timer.Sample sample = event.getSample(); + var sample = event.getSample(); assertNull(initialSample); assertNotNull(sample); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressParsingTest.java b/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressParsingTest.java index 3895f94f9d..9b849c215b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressParsingTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressParsingTest.java @@ -100,7 +100,7 @@ private static Stream addressesToParse() { @ParameterizedTest @MethodSource("addressesToParse") void shouldParseAddress(String address, String expectedHost, int expectedPort) { - BoltServerAddress parsed = new BoltServerAddress(address); + var parsed = new BoltServerAddress(address); assertEquals(expectedHost, parsed.host()); assertEquals(expectedPort, parsed.port()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressTest.java b/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressTest.java index 2831b9bb11..70bda78794 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/net/BoltServerAddressTest.java @@ -64,13 +64,13 @@ void shouldVerifyPort() { @Test void shouldCreateBoltServerAddressFromServerAddress() { - BoltServerAddress address1 = new BoltServerAddress("my.server.com", 8899); + var address1 = new BoltServerAddress("my.server.com", 8899); assertSame(address1, BoltServerAddress.from(address1)); - BoltServerAddress address2 = new BoltServerAddress("db.neo4j.com"); + var address2 = new BoltServerAddress("db.neo4j.com"); assertSame(address2, BoltServerAddress.from(address2)); - ServerAddress address3 = mock(ServerAddress.class); + var address3 = mock(ServerAddress.class); when(address3.host()).thenReturn("graph.database.com"); when(address3.port()).thenReturn(20600); assertEquals(new BoltServerAddress("graph.database.com", 20600), BoltServerAddress.from(address3)); @@ -78,17 +78,17 @@ void shouldCreateBoltServerAddressFromServerAddress() { @Test void shouldFailToCreateBoltServerAddressFromInvalidServerAddress() { - ServerAddress address1 = mock(ServerAddress.class); + var address1 = mock(ServerAddress.class); when(address1.host()).thenReturn(null); when(address1.port()).thenReturn(8888); assertThrows(NullPointerException.class, () -> BoltServerAddress.from(address1)); - ServerAddress address2 = mock(ServerAddress.class); + var address2 = mock(ServerAddress.class); when(address2.host()).thenReturn("neo4j.host.com"); when(address2.port()).thenReturn(-1); assertThrows(IllegalArgumentException.class, () -> BoltServerAddress.from(address2)); - ServerAddress address3 = mock(ServerAddress.class); + var address3 = mock(ServerAddress.class); when(address3.host()).thenReturn("my.database.org"); when(address3.port()).thenReturn(99_000); assertThrows(IllegalArgumentException.class, () -> BoltServerAddress.from(address3)); @@ -96,8 +96,8 @@ void shouldFailToCreateBoltServerAddressFromInvalidServerAddress() { @Test void shouldUseUriWithHostButWithoutPort() { - URI uri = URI.create("bolt://neo4j.com"); - BoltServerAddress address = new BoltServerAddress(uri); + var uri = URI.create("bolt://neo4j.com"); + var address = new BoltServerAddress(uri); assertEquals("neo4j.com", address.host()); assertEquals(DEFAULT_PORT, address.port()); @@ -105,8 +105,8 @@ void shouldUseUriWithHostButWithoutPort() { @Test void shouldUseUriWithHostAndPort() { - URI uri = URI.create("bolt://neo4j.com:12345"); - BoltServerAddress address = new BoltServerAddress(uri); + var uri = URI.create("bolt://neo4j.com:12345"); + var address = new BoltServerAddress(uri); assertEquals("neo4j.com", address.host()); assertEquals(12345, address.port()); @@ -114,7 +114,7 @@ void shouldUseUriWithHostAndPort() { @Test void shouldIncludeHostAndPortInToString() { - BoltServerAddress address = new BoltServerAddress("localhost", 8081); + var address = new BoltServerAddress("localhost", 8081); assertThat(address.toString(), equalTo("localhost:8081")); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java index 226c84a677..c4d9380ec9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java @@ -31,7 +31,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.channels.Channels; -import java.nio.channels.ReadableByteChannel; import java.nio.channels.WritableByteChannel; import java.util.ArrayList; import java.util.HashMap; @@ -45,7 +44,7 @@ public class PackStreamTest { public static Map asMap(Object... keysAndValues) { Map map = Iterables.newLinkedHashMapWithSize(keysAndValues.length / 2); String key = null; - for (Object keyOrValue : keysAndValues) { + for (var keyOrValue : keysAndValues) { if (key == null) { key = keyOrValue.toString(); } else { @@ -82,25 +81,25 @@ PackStream.Packer packer() { } private PackStream.Unpacker newUnpacker(byte[] bytes) { - ByteArrayInputStream input = new ByteArrayInputStream(bytes); + var input = new ByteArrayInputStream(bytes); return new PackStream.Unpacker(new BufferedChannelInput(Channels.newChannel(input))); } @Test void testCanPackAndUnpackNull() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When machine.packer().packNull(); // Then - byte[] bytes = machine.output(); + var bytes = machine.output(); assertThat(bytes, equalTo(new byte[] {(byte) 0xC0})); // When - PackStream.Unpacker unpacker = newUnpacker(bytes); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(bytes); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.NULL)); @@ -109,18 +108,18 @@ void testCanPackAndUnpackNull() throws Throwable { @Test void testCanPackAndUnpackTrue() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When machine.packer().pack(true); // Then - byte[] bytes = machine.output(); + var bytes = machine.output(); assertThat(bytes, equalTo(new byte[] {(byte) 0xC3})); // When - PackStream.Unpacker unpacker = newUnpacker(bytes); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(bytes); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.BOOLEAN)); @@ -130,18 +129,18 @@ void testCanPackAndUnpackTrue() throws Throwable { @Test void testCanPackAndUnpackFalse() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When machine.packer().pack(false); // Then - byte[] bytes = machine.output(); + var bytes = machine.output(); assertThat(bytes, equalTo(new byte[] {(byte) 0xC2})); // When - PackStream.Unpacker unpacker = newUnpacker(bytes); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(bytes); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.BOOLEAN)); @@ -151,7 +150,7 @@ void testCanPackAndUnpackFalse() throws Throwable { @Test void testCanPackAndUnpackTinyIntegers() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); for (long i = -16; i < 128; i++) { // When @@ -159,12 +158,12 @@ void testCanPackAndUnpackTinyIntegers() throws Throwable { machine.packer().pack(i); // Then - byte[] bytes = machine.output(); + var bytes = machine.output(); assertThat(bytes.length, equalTo(1)); // When - PackStream.Unpacker unpacker = newUnpacker(bytes); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(bytes); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.INTEGER)); @@ -175,7 +174,7 @@ void testCanPackAndUnpackTinyIntegers() throws Throwable { @Test void testCanPackAndUnpackShortIntegers() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); for (long i = -32768; i < 32768; i++) { // When @@ -183,12 +182,12 @@ void testCanPackAndUnpackShortIntegers() throws Throwable { machine.packer().pack(i); // Then - byte[] bytes = machine.output(); + var bytes = machine.output(); assertThat(bytes.length, lessThanOrEqualTo(3)); // When - PackStream.Unpacker unpacker = newUnpacker(bytes); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(bytes); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.INTEGER)); @@ -199,18 +198,18 @@ void testCanPackAndUnpackShortIntegers() throws Throwable { @Test void testCanPackAndUnpackPowersOfTwoAsIntegers() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); - for (int i = 0; i < 32; i++) { - long n = (long) Math.pow(2, i); + for (var i = 0; i < 32; i++) { + var n = (long) Math.pow(2, i); // When machine.reset(); machine.packer().pack(n); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.INTEGER)); @@ -221,18 +220,18 @@ void testCanPackAndUnpackPowersOfTwoAsIntegers() throws Throwable { @Test void testCanPackAndUnpackPowersOfTwoPlusABitAsDoubles() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); - for (int i = 0; i < 32; i++) { - double n = Math.pow(2, i) + 0.5; + for (var i = 0; i < 32; i++) { + var n = Math.pow(2, i) + 0.5; // When machine.reset(); machine.packer().pack(n); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.FLOAT)); @@ -243,18 +242,18 @@ void testCanPackAndUnpackPowersOfTwoPlusABitAsDoubles() throws Throwable { @Test void testCanPackAndUnpackPowersOfTwoMinusABitAsDoubles() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); - for (int i = 0; i < 32; i++) { - double n = Math.pow(2, i) - 0.5; + for (var i = 0; i < 32; i++) { + var n = Math.pow(2, i) - 0.5; // When machine.reset(); machine.packer().pack(n); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.FLOAT)); @@ -265,22 +264,22 @@ void testCanPackAndUnpackPowersOfTwoMinusABitAsDoubles() throws Throwable { @Test void testCanPackAndUnpackByteArrays() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); testByteArrayPackingAndUnpacking(machine, 0); - for (int i = 0; i < 24; i++) { + for (var i = 0; i < 24; i++) { testByteArrayPackingAndUnpacking(machine, (int) Math.pow(2, i)); } } private void testByteArrayPackingAndUnpacking(Machine machine, int length) throws Throwable { - byte[] array = new byte[length]; + var array = new byte[length]; machine.reset(); machine.packer().pack(array); - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.BYTES)); assertArrayEquals(array, unpacker.unpackBytes()); @@ -289,18 +288,18 @@ private void testByteArrayPackingAndUnpacking(Machine machine, int length) throw @Test void testCanPackAndUnpackStrings() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); - for (int i = 0; i < 24; i++) { - String string = new String(new byte[(int) Math.pow(2, i)]); + for (var i = 0; i < 24; i++) { + var string = new String(new byte[(int) Math.pow(2, i)]); // When machine.reset(); machine.packer().pack(string); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.STRING)); @@ -311,15 +310,15 @@ void testCanPackAndUnpackStrings() throws Throwable { @Test void testCanPackAndUnpackBytes() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.pack("ABCDEFGHIJ".getBytes()); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.BYTES)); @@ -329,15 +328,15 @@ void testCanPackAndUnpackBytes() throws Throwable { @Test void testCanPackAndUnpackString() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.pack("ABCDEFGHIJ"); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.STRING)); @@ -347,16 +346,16 @@ void testCanPackAndUnpackString() throws Throwable { @Test void testCanPackAndUnpackSpecialString() throws Throwable { // Given - Machine machine = new Machine(); - String code = "Mjölnir"; + var machine = new Machine(); + var code = "Mjölnir"; // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.pack(code); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); // Then assertThat(packType, equalTo(PackType.STRING)); @@ -366,18 +365,18 @@ void testCanPackAndUnpackSpecialString() throws Throwable { @Test void testCanPackAndUnpackListOneItemAtATime() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.packListHeader(3); packer.pack(12); packer.pack(13); packer.pack(14); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.LIST)); assertThat(unpacker.unpackListHeader(), equalTo(3L)); @@ -389,15 +388,15 @@ void testCanPackAndUnpackListOneItemAtATime() throws Throwable { @Test void testCanPackAndUnpackListOfString() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.pack(asList("eins", "zwei", "drei")); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.LIST)); assertThat(unpacker.unpackListHeader(), equalTo(3L)); @@ -417,18 +416,18 @@ void testCanPackAndUnpackListOfSpecialStrings() throws Throwable { @Test void testCanPackAndUnpackListOfStringOneByOne() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.packListHeader(3); packer.pack("eins"); packer.pack("zwei"); packer.pack("drei"); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.LIST)); assertThat(unpacker.unpackListHeader(), equalTo(3L)); @@ -440,18 +439,18 @@ void testCanPackAndUnpackListOfStringOneByOne() throws Throwable { @Test void testCanPackAndUnpackListOfSpecialStringOneByOne() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.packListHeader(3); packer.pack("Mjölnir"); packer.pack("Mjölnir"); packer.pack("Mjölnir"); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.LIST)); assertThat(unpacker.unpackListHeader(), equalTo(3L)); @@ -471,18 +470,18 @@ void testCanPackAndUnpackMap() throws Throwable { @Test void testCanPackAndUnpackStruct() throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.packStructHeader(3, (byte) 'N'); packer.pack(12); packer.pack(asList("Person", "Employee")); packer.pack(asMap("name", "Alice", "age", 33)); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.STRUCT)); assertThat(unpacker.unpackStructHeader(), equalTo(3L)); @@ -514,22 +513,22 @@ void testCanPackAndUnpackStructsOfDifferentSizes() throws Throwable { @Test void testCanDoStreamingListUnpacking() throws Throwable { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); packer.pack(asList(1, 2, 3, asList(4, 5))); // When I unpack this value - PackStream.Unpacker unpacker = newUnpacker(machine.output()); + var unpacker = newUnpacker(machine.output()); // Then I can do streaming unpacking - long size = unpacker.unpackListHeader(); - long a = unpacker.unpackLong(); - long b = unpacker.unpackLong(); - long c = unpacker.unpackLong(); + var size = unpacker.unpackListHeader(); + var a = unpacker.unpackLong(); + var b = unpacker.unpackLong(); + var c = unpacker.unpackLong(); - long innerSize = unpacker.unpackListHeader(); - long d = unpacker.unpackLong(); - long e = unpacker.unpackLong(); + var innerSize = unpacker.unpackListHeader(); + var d = unpacker.unpackLong(); + var e = unpacker.unpackLong(); // And all the values should be sane assertEquals(4, size); @@ -544,8 +543,8 @@ void testCanDoStreamingListUnpacking() throws Throwable { @Test void testCanDoStreamingStructUnpacking() throws Throwable { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); packer.packStructHeader(4, (byte) '~'); packer.pack(1); packer.pack(2); @@ -553,18 +552,18 @@ void testCanDoStreamingStructUnpacking() throws Throwable { packer.pack(asList(4, 5)); // When I unpack this value - PackStream.Unpacker unpacker = newUnpacker(machine.output()); + var unpacker = newUnpacker(machine.output()); // Then I can do streaming unpacking - long size = unpacker.unpackStructHeader(); - byte signature = unpacker.unpackStructSignature(); - long a = unpacker.unpackLong(); - long b = unpacker.unpackLong(); - long c = unpacker.unpackLong(); + var size = unpacker.unpackStructHeader(); + var signature = unpacker.unpackStructSignature(); + var a = unpacker.unpackLong(); + var b = unpacker.unpackLong(); + var c = unpacker.unpackLong(); - long innerSize = unpacker.unpackListHeader(); - long d = unpacker.unpackLong(); - long e = unpacker.unpackLong(); + var innerSize = unpacker.unpackListHeader(); + var d = unpacker.unpackLong(); + var e = unpacker.unpackLong(); // And all the values should be sane assertEquals(4, size); @@ -580,8 +579,8 @@ void testCanDoStreamingStructUnpacking() throws Throwable { @Test void testCanDoStreamingMapUnpacking() throws Throwable { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); packer.packMapHeader(2); packer.pack("name"); packer.pack("Bob"); @@ -589,17 +588,17 @@ void testCanDoStreamingMapUnpacking() throws Throwable { packer.pack(asList(4.3, true)); // When I unpack this value - PackStream.Unpacker unpacker = newUnpacker(machine.output()); + var unpacker = newUnpacker(machine.output()); // Then I can do streaming unpacking - long size = unpacker.unpackMapHeader(); - String k1 = unpacker.unpackString(); - String v1 = unpacker.unpackString(); - String k2 = unpacker.unpackString(); + var size = unpacker.unpackMapHeader(); + var k1 = unpacker.unpackString(); + var v1 = unpacker.unpackString(); + var k2 = unpacker.unpackString(); - long innerSize = unpacker.unpackListHeader(); - double d = unpacker.unpackDouble(); - boolean e = unpacker.unpackBoolean(); + var innerSize = unpacker.unpackListHeader(); + var d = unpacker.unpackDouble(); + var e = unpacker.unpackBoolean(); // And all the values should be sane assertEquals(2, size); @@ -614,13 +613,13 @@ void testCanDoStreamingMapUnpacking() throws Throwable { @Test void handlesDataCrossingBufferBoundaries() throws Throwable { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); packer.pack(Long.MAX_VALUE); packer.pack(Long.MAX_VALUE); - ReadableByteChannel ch = Channels.newChannel(new ByteArrayInputStream(machine.output())); - PackStream.Unpacker unpacker = new PackStream.Unpacker(new BufferedChannelInput(11, ch)); + var ch = Channels.newChannel(new ByteArrayInputStream(machine.output())); + var unpacker = new PackStream.Unpacker(new BufferedChannelInput(11, ch)); // Serialized ch will look like, and misalign with the 11-byte unpack buffer: @@ -629,8 +628,8 @@ void handlesDataCrossingBufferBoundaries() throws Throwable { // \____________unpack buffer_________________/ // When - long first = unpacker.unpackLong(); - long second = unpacker.unpackLong(); + var first = unpacker.unpackLong(); + var second = unpacker.unpackLong(); // Then assertEquals(Long.MAX_VALUE, first); @@ -651,8 +650,8 @@ void testCanPeekOnNextType() throws Throwable { @Test void shouldFailForUnknownValue() throws IOException { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); // Expect assertThrows(PackStream.UnPackable.class, () -> packer.pack(new MyRandomClass())); @@ -662,11 +661,11 @@ private static class MyRandomClass {} private void assertPeekType(PackType type, Object value) throws IOException { // Given - Machine machine = new Machine(); - PackStream.Packer packer = machine.packer(); + var machine = new Machine(); + var packer = machine.packer(); packer.pack(value); - PackStream.Unpacker unpacker = newUnpacker(machine.output()); + var unpacker = newUnpacker(machine.output()); // When & Then assertEquals(type, unpacker.peekNextType()); @@ -674,72 +673,72 @@ private void assertPeekType(PackType type, Object value) throws IOException { private void assertPackStringLists(int size, String value) throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); - ArrayList strings = new ArrayList<>(size); - for (int i = 0; i < size; i++) { + var packer = machine.packer(); + var strings = new ArrayList(size); + for (var i = 0; i < size; i++) { strings.add(i, value); } packer.pack(strings); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.LIST)); assertThat(unpacker.unpackListHeader(), equalTo((long) size)); - for (int i = 0; i < size; i++) { + for (var i = 0; i < size; i++) { assertThat(unpacker.unpackString(), equalTo("Mjölnir")); } } private void assertMap(int size) throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); - HashMap map = new HashMap<>(); - for (int i = 0; i < size; i++) { + var packer = machine.packer(); + var map = new HashMap(); + for (var i = 0; i < size; i++) { map.put(Integer.toString(i), i); } packer.pack(map); // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.MAP)); assertThat(unpacker.unpackMapHeader(), equalTo((long) size)); - for (int i = 0; i < size; i++) { + for (var i = 0; i < size; i++) { assertThat(unpacker.unpackString(), equalTo(Long.toString(unpacker.unpackLong()))); } } private void assertStruct(int size) throws Throwable { // Given - Machine machine = new Machine(); + var machine = new Machine(); // When - PackStream.Packer packer = machine.packer(); + var packer = machine.packer(); packer.packStructHeader(size, (byte) 'N'); - for (int i = 0; i < size; i++) { + for (var i = 0; i < size; i++) { packer.pack(i); } // Then - PackStream.Unpacker unpacker = newUnpacker(machine.output()); - PackType packType = unpacker.peekNextType(); + var unpacker = newUnpacker(machine.output()); + var packType = unpacker.peekNextType(); assertThat(packType, equalTo(PackType.STRUCT)); assertThat(unpacker.unpackStructHeader(), equalTo((long) size)); assertThat(unpacker.unpackStructSignature(), equalTo((byte) 'N')); - for (int i = 0; i < size; i++) { + for (var i = 0; i < size; i++) { assertThat(unpacker.unpackLong(), equalTo((long) i)); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/DelegatingReactiveTransactionContextTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/DelegatingReactiveTransactionContextTest.java index 9fbc1d3ecd..f7c76d15ee 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/DelegatingReactiveTransactionContextTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/DelegatingReactiveTransactionContextTest.java @@ -49,13 +49,13 @@ void beforeEach() { @Test void shouldDelegateRunWithValueParams() { // GIVEN - String query = "something"; - Value params = mock(Value.class); + var query = "something"; + var params = mock(Value.class); Publisher expected = publisherToFlowPublisher(Mono.empty()); given(transaction.run(query, params)).willReturn(expected); // WHEN - Publisher actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -65,13 +65,13 @@ void shouldDelegateRunWithValueParams() { @Test void shouldDelegateRunWithMapParams() { // GIVEN - String query = "something"; + var query = "something"; Map params = Collections.emptyMap(); Publisher expected = publisherToFlowPublisher(Mono.empty()); given(transaction.run(query, params)).willReturn(expected); // WHEN - Publisher actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -81,13 +81,13 @@ void shouldDelegateRunWithMapParams() { @Test void shouldDelegateRunWithRecordParams() { // GIVEN - String query = "something"; - Record params = mock(Record.class); + var query = "something"; + var params = mock(Record.class); Publisher expected = publisherToFlowPublisher(Mono.empty()); given(transaction.run(query, params)).willReturn(expected); // WHEN - Publisher actual = context.run(query, params); + var actual = context.run(query, params); // THEN assertEquals(expected, actual); @@ -97,12 +97,12 @@ void shouldDelegateRunWithRecordParams() { @Test void shouldDelegateRun() { // GIVEN - String query = "something"; + var query = "something"; Publisher expected = publisherToFlowPublisher(Mono.empty()); given(transaction.run(query)).willReturn(expected); // WHEN - Publisher actual = context.run(query); + var actual = context.run(query); // THEN assertEquals(expected, actual); @@ -112,12 +112,12 @@ void shouldDelegateRun() { @Test void shouldDelegateRunWithQueryType() { // GIVEN - Query query = mock(Query.class); + var query = mock(Query.class); Publisher expected = publisherToFlowPublisher(Mono.empty()); given(transaction.run(query)).willReturn(expected); // WHEN - Publisher actual = context.run(query); + var actual = context.run(query); // THEN assertEquals(expected, actual); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java index 15cfb54593..36f39ce6b2 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java @@ -41,7 +41,6 @@ import java.util.Arrays; import java.util.List; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.Flow.Publisher; import java.util.concurrent.atomic.AtomicInteger; @@ -95,12 +94,12 @@ private static Stream>> @MethodSource("allSessionRunMethods") void shouldDelegateRun(Function> runReturnOne) { // Given - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); RxResultCursor cursor = mock(RxResultCursorImpl.class); // Run succeeded with a cursor when(session.runRx(any(Query.class), any(TransactionConfig.class))).thenReturn(completedFuture(cursor)); - InternalReactiveSession rxSession = new InternalReactiveSession(session); + var rxSession = new InternalReactiveSession(session); // When var result = flowPublisherToFlux(runReturnOne.apply(rxSession)); @@ -115,13 +114,13 @@ void shouldDelegateRun(Function> runR void shouldReleaseConnectionIfFailedToRun(Function> runReturnOne) { // Given Throwable error = new RuntimeException("Hi there"); - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); // Run failed with error when(session.runRx(any(Query.class), any(TransactionConfig.class))).thenReturn(Futures.failedFuture(error)); when(session.releaseConnectionAsync()).thenReturn(Futures.completedWithNull()); - InternalReactiveSession rxSession = new InternalReactiveSession(session); + var rxSession = new InternalReactiveSession(session); // When var result = flowPublisherToFlux(runReturnOne.apply(rxSession)); @@ -136,12 +135,12 @@ void shouldReleaseConnectionIfFailedToRun(Function> beginTx) { // Given - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(session.beginTransactionAsync(any(TransactionConfig.class), isNull())) .thenReturn(completedFuture(tx)); - InternalReactiveSession rxSession = new InternalReactiveSession(session); + var rxSession = new InternalReactiveSession(session); // When var rxTx = flowPublisherToFlux(beginTx.apply(rxSession)); @@ -156,18 +155,18 @@ void shouldDelegateBeginTx(Function> beginTx) { // Given Throwable error = new RuntimeException("Hi there"); - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); // Run failed with error when(session.beginTransactionAsync(any(TransactionConfig.class), isNull())) .thenReturn(Futures.failedFuture(error)); when(session.releaseConnectionAsync()).thenReturn(Futures.completedWithNull()); - InternalReactiveSession rxSession = new InternalReactiveSession(session); + var rxSession = new InternalReactiveSession(session); // When var rxTx = flowPublisherToFlux(beginTx.apply(rxSession)); - CompletableFuture txFuture = Mono.from(rxTx).toFuture(); + var txFuture = Mono.from(rxTx).toFuture(); // Then verify(session).beginTransactionAsync(any(TransactionConfig.class), isNull()); @@ -180,15 +179,15 @@ void shouldReleaseConnectionIfFailedToBeginTx(FunctionreadTransaction( @@ -208,19 +207,19 @@ void shouldRetryOnError() { @SuppressWarnings("deprecation") void shouldObtainResultIfRetrySucceed() { // Given - int retryCount = 2; - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var retryCount = 2; + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(false)).thenReturn(completedWithNull()); when(tx.closeAsync(true)).thenReturn(completedWithNull()); when(session.beginTransactionAsync(any(AccessMode.class), any(TransactionConfig.class))) .thenReturn(completedFuture(tx)); when(session.retryLogic()).thenReturn(new FixedRetryLogic(retryCount)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - AtomicInteger count = new AtomicInteger(); + var count = new AtomicInteger(); var strings = rxSession.readTransaction(t -> { // we fail for the first few retries, and then success on the last run. if (count.getAndIncrement() == retryCount) { @@ -242,8 +241,8 @@ void shouldObtainResultIfRetrySucceed() { @SuppressWarnings("deprecation") void shouldDelegateBookmark() { // Given - NetworkSession session = mock(NetworkSession.class); - InternalRxSession rxSession = new InternalRxSession(session); + var session = mock(NetworkSession.class); + var rxSession = new InternalRxSession(session); // When rxSession.lastBookmark(); @@ -257,8 +256,8 @@ void shouldDelegateBookmark() { @SuppressWarnings("deprecation") void shouldDelegateBookmarks() { // Given - NetworkSession session = mock(NetworkSession.class); - InternalRxSession rxSession = new InternalRxSession(session); + var session = mock(NetworkSession.class); + var rxSession = new InternalRxSession(session); // When rxSession.lastBookmarks(); @@ -272,9 +271,9 @@ void shouldDelegateBookmarks() { @SuppressWarnings("deprecation") void shouldDelegateClose() { // Given - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); when(session.closeAsync()).thenReturn(completedWithNull()); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When var mono = rxSession.close(); @@ -289,18 +288,18 @@ void shouldDelegateClose() { @MethodSource("executeVariations") void shouldDelegateExecuteReadToRetryLogic(ExecuteVariation executeVariation) { // GIVEN - NetworkSession networkSession = mock(NetworkSession.class); + var networkSession = mock(NetworkSession.class); ReactiveSession session = new InternalReactiveSession(networkSession); - RetryLogic logic = mock(RetryLogic.class); - String expected = ""; + var logic = mock(RetryLogic.class); + var expected = ""; given(networkSession.retryLogic()).willReturn(logic); ReactiveTransactionCallback> tc = (ignored) -> publisherToFlowPublisher(Mono.justOrEmpty(expected)); given(logic.retryRx(any())).willReturn(flowPublisherToFlux(tc.execute(null))); - TransactionConfig config = TransactionConfig.builder().build(); + var config = TransactionConfig.builder().build(); // WHEN - Publisher actual = executeVariation.readOnly + var actual = executeVariation.readOnly ? (executeVariation.explicitTxConfig ? session.executeRead(tc, config) : session.executeRead(tc)) : (executeVariation.explicitTxConfig ? session.executeWrite(tc, config) : session.executeWrite(tc)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxResultTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxResultTest.java index 8fb32aa9f9..4303ca6631 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxResultTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxResultTest.java @@ -35,7 +35,6 @@ import static org.neo4j.driver.internal.util.Futures.failedFuture; import java.util.Arrays; -import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import org.junit.jupiter.api.Test; @@ -61,11 +60,10 @@ class InternalRxResultTest { void shouldInitCursorFuture() { // Given RxResultCursor cursor = mock(RxResultCursorImpl.class); - InternalRxResult rxResult = newRxResult(cursor); + var rxResult = newRxResult(cursor); // When - CompletableFuture cursorFuture = - rxResult.initCursorFuture().toCompletableFuture(); + var cursorFuture = rxResult.initCursorFuture().toCompletableFuture(); // Then assertTrue(cursorFuture.isDone()); @@ -75,16 +73,15 @@ void shouldInitCursorFuture() { @Test void shouldInitCursorFutureWithFailedCursor() { // Given - RuntimeException error = new RuntimeException("Failed to obtain cursor probably due to connection problem"); - InternalRxResult rxResult = newRxResult(error); + var error = new RuntimeException("Failed to obtain cursor probably due to connection problem"); + var rxResult = newRxResult(error); // When - CompletableFuture cursorFuture = - rxResult.initCursorFuture().toCompletableFuture(); + var cursorFuture = rxResult.initCursorFuture().toCompletableFuture(); // Then assertTrue(cursorFuture.isDone()); - RuntimeException actualError = assertThrows(RuntimeException.class, () -> Futures.getNow(cursorFuture)); + var actualError = assertThrows(RuntimeException.class, () -> Futures.getNow(cursorFuture)); assertThat(actualError.getCause(), equalTo(error)); } @@ -94,7 +91,7 @@ void shouldObtainKeys() { RxResultCursor cursor = mock(RxResultCursorImpl.class); RxResult rxResult = newRxResult(cursor); - List keys = Arrays.asList("one", "two", "three"); + var keys = Arrays.asList("one", "two", "three"); when(cursor.keys()).thenReturn(keys); // When & Then @@ -106,8 +103,8 @@ void shouldObtainKeys() { @Test void shouldErrorWhenFailedObtainKeys() { // Given - RuntimeException error = new RuntimeException("Failed to obtain cursor"); - InternalRxResult rxResult = newRxResult(error); + var error = new RuntimeException("Failed to obtain cursor"); + var rxResult = newRxResult(error); // When & Then StepVerifier.create(Flux.from(rxResult.keys())) @@ -121,7 +118,7 @@ void shouldCancelKeys() { RxResultCursor cursor = mock(RxResultCursorImpl.class); RxResult rxResult = newRxResult(cursor); - List keys = Arrays.asList("one", "two", "three"); + var keys = Arrays.asList("one", "two", "three"); when(cursor.keys()).thenReturn(keys); // When & Then @@ -200,12 +197,12 @@ void shouldErrorIfFailedToStream() { @ValueSource(booleans = {true, false}) void shouldDelegateIsOpen(boolean expectedState) { // Given - RxResultCursor cursor = mock(RxResultCursor.class); + var cursor = mock(RxResultCursor.class); given(cursor.isDone()).willReturn(!expectedState); RxResult result = new InternalRxResult(() -> CompletableFuture.completedFuture(cursor)); // When - Boolean actualState = Mono.from(result.isOpen()).block(); + var actualState = Mono.from(result.isOpen()).block(); // Then assertEquals(expectedState, actualState); @@ -213,7 +210,7 @@ void shouldDelegateIsOpen(boolean expectedState) { } private InternalRxResult newRxResult(PullResponseHandler pullHandler) { - RunResponseHandler runHandler = mock(RunResponseHandler.class); + var runHandler = mock(RunResponseHandler.class); RxResultCursor cursor = new RxResultCursorImpl(runHandler, pullHandler); return newRxResult(cursor); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxSessionTest.java index e43b91bdf9..d7597a062c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxSessionTest.java @@ -35,9 +35,7 @@ import static org.neo4j.driver.Values.parameters; import static org.neo4j.driver.internal.util.Futures.completedWithNull; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; -import java.util.concurrent.CompletionStage; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Stream; @@ -97,18 +95,17 @@ private static Stream>> allRunTxMethods() @MethodSource("allSessionRunMethods") void shouldDelegateRun(Function runReturnOne) { // Given - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); RxResultCursor cursor = mock(RxResultCursorImpl.class); // Run succeeded with a cursor when(session.runRx(any(Query.class), any(TransactionConfig.class))).thenReturn(completedFuture(cursor)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - RxResult result = runReturnOne.apply(rxSession); + var result = runReturnOne.apply(rxSession); // Execute the run - CompletionStage cursorFuture = - ((InternalRxResult) result).cursorFutureSupplier().get(); + var cursorFuture = ((InternalRxResult) result).cursorFutureSupplier().get(); // Then verify(session).runRx(any(Query.class), any(TransactionConfig.class)); @@ -120,19 +117,18 @@ void shouldDelegateRun(Function runReturnOne) { void shouldReleaseConnectionIfFailedToRun(Function runReturnOne) { // Given Throwable error = new RuntimeException("Hi there"); - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); // Run failed with error when(session.runRx(any(Query.class), any(TransactionConfig.class))).thenReturn(Futures.failedFuture(error)); when(session.releaseConnectionAsync()).thenReturn(Futures.completedWithNull()); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - RxResult result = runReturnOne.apply(rxSession); + var result = runReturnOne.apply(rxSession); // Execute the run - CompletionStage cursorFuture = - ((InternalRxResult) result).cursorFutureSupplier().get(); + var cursorFuture = ((InternalRxResult) result).cursorFutureSupplier().get(); // Then verify(session).runRx(any(Query.class), any(TransactionConfig.class)); @@ -145,15 +141,15 @@ void shouldReleaseConnectionIfFailedToRun(Function runRetur @MethodSource("allBeginTxMethods") void shouldDelegateBeginTx(Function> beginTx) { // Given - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(session.beginTransactionAsync(any(TransactionConfig.class), isNull())) .thenReturn(completedFuture(tx)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - Publisher rxTx = beginTx.apply(rxSession); + var rxTx = beginTx.apply(rxSession); StepVerifier.create(Mono.from(rxTx)).expectNextCount(1).verifyComplete(); // Then @@ -165,18 +161,18 @@ void shouldDelegateBeginTx(Function> beginTx void shouldReleaseConnectionIfFailedToBeginTx(Function> beginTx) { // Given Throwable error = new RuntimeException("Hi there"); - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); // Run failed with error when(session.beginTransactionAsync(any(TransactionConfig.class), isNull())) .thenReturn(Futures.failedFuture(error)); when(session.releaseConnectionAsync()).thenReturn(Futures.completedWithNull()); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - Publisher rxTx = beginTx.apply(rxSession); - CompletableFuture txFuture = Mono.from(rxTx).toFuture(); + var rxTx = beginTx.apply(rxSession); + var txFuture = Mono.from(rxTx).toFuture(); // Then verify(session).beginTransactionAsync(any(TransactionConfig.class), isNull()); @@ -189,17 +185,17 @@ void shouldReleaseConnectionIfFailedToBeginTx(Function> runTx) { // Given - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(true)).thenReturn(completedWithNull()); when(session.beginTransactionAsync(any(AccessMode.class), any(TransactionConfig.class))) .thenReturn(completedFuture(tx)); when(session.retryLogic()).thenReturn(new FixedRetryLogic(1)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - Publisher strings = runTx.apply(rxSession); + var strings = runTx.apply(rxSession); StepVerifier.create(Flux.from(strings)).expectNext("a").verifyComplete(); // Then @@ -210,15 +206,15 @@ void shouldDelegateRunTx(Function> runTx) { @Test void shouldRetryOnError() { // Given - int retryCount = 2; - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var retryCount = 2; + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(false)).thenReturn(completedWithNull()); when(session.beginTransactionAsync(any(AccessMode.class), any(TransactionConfig.class))) .thenReturn(completedFuture(tx)); when(session.retryLogic()).thenReturn(new FixedRetryLogic(retryCount)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When Publisher strings = @@ -237,20 +233,20 @@ void shouldRetryOnError() { @Test void shouldObtainResultIfRetrySucceed() { // Given - int retryCount = 2; - NetworkSession session = mock(NetworkSession.class); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var retryCount = 2; + var session = mock(NetworkSession.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(false)).thenReturn(completedWithNull()); when(tx.closeAsync(true)).thenReturn(completedWithNull()); when(session.beginTransactionAsync(any(AccessMode.class), any(TransactionConfig.class))) .thenReturn(completedFuture(tx)); when(session.retryLogic()).thenReturn(new FixedRetryLogic(retryCount)); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When - AtomicInteger count = new AtomicInteger(); - Publisher strings = rxSession.readTransaction(t -> { + var count = new AtomicInteger(); + var strings = rxSession.readTransaction(t -> { // we fail for the first few retries, and then success on the last run. if (count.getAndIncrement() == retryCount) { return Flux.just("a"); @@ -270,8 +266,8 @@ void shouldObtainResultIfRetrySucceed() { @Test void shouldDelegateBookmark() { // Given - NetworkSession session = mock(NetworkSession.class); - InternalRxSession rxSession = new InternalRxSession(session); + var session = mock(NetworkSession.class); + var rxSession = new InternalRxSession(session); // When rxSession.lastBookmark(); @@ -284,8 +280,8 @@ void shouldDelegateBookmark() { @Test void shouldDelegateBookmarks() { // Given - NetworkSession session = mock(NetworkSession.class); - InternalRxSession rxSession = new InternalRxSession(session); + var session = mock(NetworkSession.class); + var rxSession = new InternalRxSession(session); // When rxSession.lastBookmarks(); @@ -298,9 +294,9 @@ void shouldDelegateBookmarks() { @Test void shouldDelegateClose() { // Given - NetworkSession session = mock(NetworkSession.class); + var session = mock(NetworkSession.class); when(session.closeAsync()).thenReturn(completedWithNull()); - InternalRxSession rxSession = new InternalRxSession(session); + var rxSession = new InternalRxSession(session); // When Publisher mono = rxSession.close(); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java index a2c12aa5fd..2fd42bf4ff 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java @@ -33,7 +33,6 @@ import static org.neo4j.driver.Values.parameters; import java.util.concurrent.CompletionException; -import java.util.concurrent.CompletionStage; import java.util.function.Function; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -56,10 +55,10 @@ class InternalRxTransactionTest { @Test void commitShouldDelegate() { - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.commitAsync()).thenReturn(Futures.completedWithNull()); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); + var rxTx = new InternalRxTransaction(tx); Publisher publisher = rxTx.commit(); StepVerifier.create(publisher).verifyComplete(); @@ -68,10 +67,10 @@ void commitShouldDelegate() { @Test void rollbackShouldDelegate() { - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.rollbackAsync()).thenReturn(Futures.completedWithNull()); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); + var rxTx = new InternalRxTransaction(tx); Publisher publisher = rxTx.rollback(); StepVerifier.create(publisher).verifyComplete(); @@ -92,18 +91,17 @@ private static Stream> allTxRunMethods() { @MethodSource("allTxRunMethods") void shouldDelegateRun(Function runReturnOne) throws Throwable { // Given - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); RxResultCursor cursor = mock(RxResultCursorImpl.class); // Run succeeded with a cursor when(tx.runRx(any(Query.class))).thenReturn(completedFuture(cursor)); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); + var rxTx = new InternalRxTransaction(tx); // When - RxResult result = runReturnOne.apply(rxTx); + var result = runReturnOne.apply(rxTx); // Execute the run - CompletionStage cursorFuture = - ((InternalRxResult) result).cursorFutureSupplier().get(); + var cursorFuture = ((InternalRxResult) result).cursorFutureSupplier().get(); // Then verify(tx).runRx(any(Query.class)); @@ -115,17 +113,16 @@ void shouldDelegateRun(Function runReturnOne) throws Th void shouldMarkTxIfFailedToRun(Function runReturnOne) throws Throwable { // Given Throwable error = new RuntimeException("Hi there"); - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); // Run failed with error when(tx.runRx(any(Query.class))).thenReturn(Futures.failedFuture(error)); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); + var rxTx = new InternalRxTransaction(tx); // When - RxResult result = runReturnOne.apply(rxTx); + var result = runReturnOne.apply(rxTx); // Execute the run - CompletionStage cursorFuture = - ((InternalRxResult) result).cursorFutureSupplier().get(); + var cursorFuture = ((InternalRxResult) result).cursorFutureSupplier().get(); // Then verify(tx).runRx(any(Query.class)); @@ -136,11 +133,11 @@ void shouldMarkTxIfFailedToRun(Function runReturnOne) t @Test void shouldDelegateConditionalClose() { - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(true)).thenReturn(Futures.completedWithNull()); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); - Publisher publisher = rxTx.close(true); + var rxTx = new InternalRxTransaction(tx); + var publisher = rxTx.close(true); StepVerifier.create(publisher).verifyComplete(); verify(tx).closeAsync(true); @@ -148,11 +145,11 @@ void shouldDelegateConditionalClose() { @Test void shouldDelegateClose() { - UnmanagedTransaction tx = mock(UnmanagedTransaction.class); + var tx = mock(UnmanagedTransaction.class); when(tx.closeAsync(false)).thenReturn(Futures.completedWithNull()); - InternalRxTransaction rxTx = new InternalRxTransaction(tx); - Publisher publisher = rxTx.close(); + var rxTx = new InternalRxTransaction(tx); + var publisher = rxTx.close(); StepVerifier.create(publisher).verifyComplete(); verify(tx).closeAsync(false); @@ -161,8 +158,8 @@ void shouldDelegateClose() { @Test void shouldDelegateIsOpenAsync() { // GIVEN - UnmanagedTransaction utx = mock(UnmanagedTransaction.class); - boolean expected = false; + var utx = mock(UnmanagedTransaction.class); + var expected = false; given(utx.isOpen()).willReturn(expected); RxTransaction tx = new InternalRxTransaction(utx); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/RxUtilsTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/RxUtilsTest.java index e2f4fe8a6a..8f45ceb460 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/RxUtilsTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/RxUtilsTest.java @@ -45,7 +45,7 @@ void emptyPublisherShouldComplete() { @Test void emptyPublisherShouldErrorWhenSupplierErrors() { - RuntimeException error = new RuntimeException("Error"); + var error = new RuntimeException("Error"); Publisher emptyPublisher = createEmptyPublisher(() -> failedFuture(error)); StepVerifier.create(emptyPublisher).verifyErrorMatches(Predicate.isEqual(error)); @@ -53,14 +53,14 @@ void emptyPublisherShouldErrorWhenSupplierErrors() { @Test void singleItemPublisherShouldCompleteWithValue() { - Publisher publisher = createSingleItemPublisher( + var publisher = createSingleItemPublisher( () -> CompletableFuture.completedFuture("One"), () -> mock(Throwable.class), (ignored) -> {}); StepVerifier.create(publisher).expectNext("One").verifyComplete(); } @Test void singleItemPublisherShouldErrorWhenFutureCompletesWithNull() { - Throwable error = mock(Throwable.class); + var error = mock(Throwable.class); Publisher publisher = createSingleItemPublisher(Futures::completedWithNull, () -> error, (ignored) -> {}); @@ -69,7 +69,7 @@ void singleItemPublisherShouldErrorWhenFutureCompletesWithNull() { @Test void singleItemPublisherShouldErrorWhenSupplierErrors() { - RuntimeException error = mock(RuntimeException.class); + var error = mock(RuntimeException.class); Publisher publisher = createSingleItemPublisher(() -> failedFuture(error), () -> mock(Throwable.class), (ignored) -> {}); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/util/ListBasedPullHandler.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/util/ListBasedPullHandler.java index e36ddc9fbd..076c9ad0a7 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/util/ListBasedPullHandler.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/util/ListBasedPullHandler.java @@ -68,7 +68,7 @@ private ListBasedPullHandler(List list, Throwable error) { when(super.metadataExtractor.extractSummary(any(Query.class), any(Connection.class), anyLong(), any())) .thenReturn(mock(ResultSummary.class)); if (list.size() > 1) { - Record record = list.get(0); + var record = list.get(0); when(super.runResponseHandler.queryKeys()).thenReturn(new QueryKeys(record.keys())); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogicTest.java b/driver/src/test/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogicTest.java index 7ddfae9114..a0a1f7a109 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogicTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogicTest.java @@ -50,7 +50,6 @@ import java.time.Clock; import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; @@ -84,54 +83,53 @@ class ExponentialBackoffRetryLogicTest { @Test void throwsForIllegalMaxRetryTime() { - IllegalArgumentException error = assertThrows( + var error = assertThrows( IllegalArgumentException.class, () -> newRetryLogic(-100, 1, 1, 1, Clock.systemUTC(), (ignored) -> {})); assertThat(error.getMessage(), containsString("Max retry time")); } @Test void throwsForIllegalInitialRetryDelay() { - IllegalArgumentException error = assertThrows( + var error = assertThrows( IllegalArgumentException.class, () -> newRetryLogic(1, -100, 1, 1, Clock.systemUTC(), (ignored) -> {})); assertThat(error.getMessage(), containsString("Initial retry delay")); } @Test void throwsForIllegalMultiplier() { - IllegalArgumentException error = assertThrows( + var error = assertThrows( IllegalArgumentException.class, () -> newRetryLogic(1, 1, 0.42, 1, Clock.systemUTC(), (ignored) -> {})); assertThat(error.getMessage(), containsString("Multiplier")); } @Test void throwsForIllegalJitterFactor() { - IllegalArgumentException error1 = assertThrows( + var error1 = assertThrows( IllegalArgumentException.class, () -> newRetryLogic(1, 1, 1, -0.42, Clock.systemUTC(), (ignored) -> {})); assertThat(error1.getMessage(), containsString("Jitter")); - IllegalArgumentException error2 = assertThrows( + var error2 = assertThrows( IllegalArgumentException.class, () -> newRetryLogic(1, 1, 1, 1.42, Clock.systemUTC(), (ignored) -> {})); assertThat(error2.getMessage(), containsString("Jitter")); } @Test void throwsForIllegalClock() { - IllegalArgumentException error = + var error = assertThrows(IllegalArgumentException.class, () -> newRetryLogic(1, 1, 1, 1, null, (ignored) -> {})); assertThat(error.getMessage(), containsString("Clock")); } @Test void nextDelayCalculatedAccordingToMultiplier() throws Exception { - int retries = 27; - int initialDelay = 1; - int multiplier = 3; - int noJitter = 0; - Clock clock = mock(Clock.class); + var retries = 27; + var initialDelay = 1; + var multiplier = 3; + var noJitter = 0; + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = - newRetryLogic(MAX_VALUE, initialDelay, multiplier, noJitter, clock, sleepTask); + var logic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, noJitter, clock, sleepTask); retry(logic, retries); @@ -140,16 +138,16 @@ void nextDelayCalculatedAccordingToMultiplier() throws Exception { @Test void nextDelayCalculatedAccordingToMultiplierAsync() { - String result = "The Result"; - int retries = 14; - int initialDelay = 1; - int multiplier = 2; - int noJitter = 0; + var result = "The Result"; + var retries = 14; + var initialDelay = 1; + var multiplier = 2; + var noJitter = 0; - ExponentialBackoffRetryLogic retryLogic = + var retryLogic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, noJitter, Clock.systemUTC(), (ignored) -> {}); - CompletionStage future = retryAsync(retryLogic, retries, result); + var future = retryAsync(retryLogic, retries, result); assertEquals(result, await(future)); assertEquals(delaysWithoutJitter(initialDelay, multiplier, retries), eventExecutor.scheduleDelays()); @@ -157,16 +155,16 @@ void nextDelayCalculatedAccordingToMultiplierAsync() { @Test void nextDelayCalculatedAccordingToMultiplierRx() { - String result = "The Result"; - int retries = 14; - int initialDelay = 1; - int multiplier = 2; - int noJitter = 0; + var result = "The Result"; + var retries = 14; + var initialDelay = 1; + var multiplier = 2; + var noJitter = 0; - ExponentialBackoffRetryLogic retryLogic = + var retryLogic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, noJitter, Clock.systemUTC(), (ignored) -> {}); - Mono single = Flux.from(retryRx(retryLogic, retries, result)).single(); + var single = Flux.from(retryRx(retryLogic, retries, result)).single(); assertEquals(result, await(single)); assertEquals(delaysWithoutJitter(initialDelay, multiplier, retries), eventExecutor.scheduleDelays()); @@ -174,84 +172,82 @@ void nextDelayCalculatedAccordingToMultiplierRx() { @Test void nextDelayCalculatedAccordingToJitter() throws Exception { - int retries = 32; - double jitterFactor = 0.2; - int initialDelay = 1; - int multiplier = 2; - Clock clock = mock(Clock.class); + var retries = 32; + var jitterFactor = 0.2; + var initialDelay = 1; + var multiplier = 2; + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = - newRetryLogic(MAX_VALUE, initialDelay, multiplier, jitterFactor, clock, sleepTask); + var logic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, jitterFactor, clock, sleepTask); retry(logic, retries); - List sleepValues = sleepValues(sleepTask, retries); - List delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); + var sleepValues = sleepValues(sleepTask, retries); + var delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); assertDelaysApproximatelyEqual(delaysWithoutJitter, sleepValues, jitterFactor); } @Test void nextDelayCalculatedAccordingToJitterAsync() { - String result = "The Result"; - int retries = 24; - double jitterFactor = 0.2; - int initialDelay = 1; - int multiplier = 2; + var result = "The Result"; + var retries = 24; + var jitterFactor = 0.2; + var initialDelay = 1; + var multiplier = 2; - ExponentialBackoffRetryLogic retryLogic = + var retryLogic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, jitterFactor, mock(Clock.class), (ignored) -> {}); - CompletionStage future = retryAsync(retryLogic, retries, result); + var future = retryAsync(retryLogic, retries, result); assertEquals(result, await(future)); - List scheduleDelays = eventExecutor.scheduleDelays(); - List delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); + var scheduleDelays = eventExecutor.scheduleDelays(); + var delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); assertDelaysApproximatelyEqual(delaysWithoutJitter, scheduleDelays, jitterFactor); } @Test void nextDelayCalculatedAccordingToJitterRx() { - String result = "The Result"; - int retries = 24; - double jitterFactor = 0.2; - int initialDelay = 1; - int multiplier = 2; + var result = "The Result"; + var retries = 24; + var jitterFactor = 0.2; + var initialDelay = 1; + var multiplier = 2; - ExponentialBackoffRetryLogic retryLogic = + var retryLogic = newRetryLogic(MAX_VALUE, initialDelay, multiplier, jitterFactor, mock(Clock.class), (ignored) -> {}); - Mono single = Flux.from(retryRx(retryLogic, retries, result)).single(); + var single = Flux.from(retryRx(retryLogic, retries, result)).single(); assertEquals(result, await(single)); - List scheduleDelays = eventExecutor.scheduleDelays(); - List delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); + var scheduleDelays = eventExecutor.scheduleDelays(); + var delaysWithoutJitter = delaysWithoutJitter(initialDelay, multiplier, retries); assertDelaysApproximatelyEqual(delaysWithoutJitter, scheduleDelays, jitterFactor); } @Test void doesNotRetryWhenMaxRetryTimeExceeded() throws Exception { - long retryStart = Clock.systemUTC().millis(); - int initialDelay = 100; - int multiplier = 2; + var retryStart = Clock.systemUTC().millis(); + var initialDelay = 100; + var multiplier = 2; long maxRetryTimeMs = 45; - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); when(clock.millis()) .thenReturn(retryStart) .thenReturn(retryStart + maxRetryTimeMs - 5) .thenReturn(retryStart + maxRetryTimeMs + 7); - ExponentialBackoffRetryLogic logic = - newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, sleepTask); + var logic = newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenThrow(error); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error, e); verify(sleepTask).sleep(initialDelay); @@ -261,29 +257,28 @@ void doesNotRetryWhenMaxRetryTimeExceeded() throws Exception { @Test void doesNotRetryWhenMaxRetryTimeExceededAsync() { - long retryStart = Clock.systemUTC().millis(); - int initialDelay = 100; - int multiplier = 2; + var retryStart = Clock.systemUTC().millis(); + var initialDelay = 100; + var multiplier = 2; long maxRetryTimeMs = 45; - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); when(clock.millis()) .thenReturn(retryStart) .thenReturn(retryStart + maxRetryTimeMs - 5) .thenReturn(retryStart + maxRetryTimeMs + 7); - ExponentialBackoffRetryLogic retryLogic = - newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenReturn(failedFuture(error)); - CompletionStage future = retryLogic.retryAsync(workMock); + var future = retryLogic.retryAsync(workMock); - Exception e = assertThrows(Exception.class, () -> await(future)); + var e = assertThrows(Exception.class, () -> await(future)); assertEquals(error, e); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(2, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -293,28 +288,26 @@ void doesNotRetryWhenMaxRetryTimeExceededAsync() { @Test void doesNotRetryWhenMaxRetryTimeExceededRx() { - long retryStart = Clock.systemUTC().millis(); - int initialDelay = 100; - int multiplier = 2; + var retryStart = Clock.systemUTC().millis(); + var initialDelay = 100; + var multiplier = 2; long maxRetryTimeMs = 45; - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); when(clock.millis()) .thenReturn(retryStart) .thenReturn(retryStart + maxRetryTimeMs - 5) .thenReturn(retryStart + maxRetryTimeMs + 7); - ExponentialBackoffRetryLogic retryLogic = - newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(maxRetryTimeMs, initialDelay, multiplier, 0, clock, (ignored) -> {}); - SessionExpiredException error = sessionExpired(); - AtomicInteger executionCount = new AtomicInteger(); - Publisher publisher = - retryLogic.retryRx(Mono.error(error).doOnTerminate(executionCount::getAndIncrement)); + var error = sessionExpired(); + var executionCount = new AtomicInteger(); + var publisher = retryLogic.retryRx(Mono.error(error).doOnTerminate(executionCount::getAndIncrement)); - Exception e = assertThrows(Exception.class, () -> await(publisher)); + var e = assertThrows(Exception.class, () -> await(publisher)); assertEquals(error, e); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(2, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -324,12 +317,12 @@ void doesNotRetryWhenMaxRetryTimeExceededRx() { @Test void sleepsOnServiceUnavailableException() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 42, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 42, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - ServiceUnavailableException error = serviceUnavailable(); + var error = serviceUnavailable(); when(workMock.get()).thenThrow(error).thenReturn(null); assertNull(logic.retry(workMock)); @@ -340,31 +333,31 @@ void sleepsOnServiceUnavailableException() throws Exception { @Test void schedulesRetryOnServiceUnavailableExceptionAsync() { - String result = "The Result"; - Clock clock = mock(Clock.class); + var result = "The Result"; + var clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 42, 1, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(1, 42, 1, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - ServiceUnavailableException error = serviceUnavailable(); + var error = serviceUnavailable(); when(workMock.get()).thenReturn(failedFuture(error)).thenReturn(completedFuture(result)); assertEquals(result, await(retryLogic.retryAsync(workMock))); verify(workMock, times(2)).get(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(1, scheduleDelays.size()); assertEquals(42, scheduleDelays.get(0).intValue()); } @Test void sleepsOnSessionExpiredException() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 4242, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 4242, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenThrow(error).thenReturn(null); assertNull(logic.retry(workMock)); @@ -375,31 +368,31 @@ void sleepsOnSessionExpiredException() throws Exception { @Test void schedulesRetryOnSessionExpiredExceptionAsync() { - String result = "The Result"; - Clock clock = mock(Clock.class); + var result = "The Result"; + var clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 4242, 1, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(1, 4242, 1, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenReturn(failedFuture(error)).thenReturn(completedFuture(result)); assertEquals(result, await(retryLogic.retryAsync(workMock))); verify(workMock, times(2)).get(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(1, scheduleDelays.size()); assertEquals(4242, scheduleDelays.get(0).intValue()); } @Test void sleepsOnTransientException() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 23, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 23, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - TransientException error = transientException(); + var error = transientException(); when(workMock.get()).thenThrow(error).thenReturn(null); assertNull(logic.retry(workMock)); @@ -410,34 +403,34 @@ void sleepsOnTransientException() throws Exception { @Test void schedulesRetryOnTransientExceptionAsync() { - String result = "The Result"; - Clock clock = mock(Clock.class); + var result = "The Result"; + var clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 23, 1, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(1, 23, 1, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - TransientException error = transientException(); + var error = transientException(); when(workMock.get()).thenReturn(failedFuture(error)).thenReturn(completedFuture(result)); assertEquals(result, await(retryLogic.retryAsync(workMock))); verify(workMock, times(2)).get(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(1, scheduleDelays.size()); assertEquals(23, scheduleDelays.get(0).intValue()); } @Test void throwsWhenUnknownError() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 1, 1, 1, clock, sleepTask); + var logic = newRetryLogic(1, 1, 1, 1, clock, sleepTask); Supplier workMock = newWorkMock(); - IllegalStateException error = new IllegalStateException(); + var error = new IllegalStateException(); when(workMock.get()).thenThrow(error); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error, e); verify(workMock).get(); @@ -446,14 +439,14 @@ void throwsWhenUnknownError() throws Exception { @Test void doesNotRetryOnUnknownErrorAsync() { - Clock clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 1, 1, 1, clock, (ignored) -> {}); + var clock = mock(Clock.class); + var retryLogic = newRetryLogic(1, 1, 1, 1, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - IllegalStateException error = new IllegalStateException(); + var error = new IllegalStateException(); when(workMock.get()).thenReturn(failedFuture(error)); - Exception e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); + var e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); assertEquals(error, e); verify(workMock).get(); @@ -462,15 +455,15 @@ void doesNotRetryOnUnknownErrorAsync() { @Test void throwsWhenTransactionTerminatedError() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 13, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 13, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - ClientException error = new ClientException("Neo.ClientError.Transaction.Terminated", ""); + var error = new ClientException("Neo.ClientError.Transaction.Terminated", ""); when(workMock.get()).thenThrow(error).thenReturn(null); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error, e); verify(workMock).get(); @@ -479,14 +472,14 @@ void throwsWhenTransactionTerminatedError() throws Exception { @Test void doesNotRetryOnTransactionTerminatedErrorAsync() { - Clock clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 13, 1, 0, clock, (ignored) -> {}); + var clock = mock(Clock.class); + var retryLogic = newRetryLogic(1, 13, 1, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - ClientException error = new ClientException("Neo.ClientError.Transaction.Terminated", ""); + var error = new ClientException("Neo.ClientError.Transaction.Terminated", ""); when(workMock.get()).thenReturn(failedFuture(error)); - Exception e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); + var e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); assertEquals(error, e); verify(workMock).get(); @@ -495,15 +488,15 @@ void doesNotRetryOnTransactionTerminatedErrorAsync() { @Test void throwsWhenTransactionLockClientStoppedError() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 13, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 13, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - ClientException error = new ClientException("Neo.ClientError.Transaction.LockClientStopped", ""); + var error = new ClientException("Neo.ClientError.Transaction.LockClientStopped", ""); when(workMock.get()).thenThrow(error).thenReturn(null); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error, e); verify(workMock).get(); @@ -512,14 +505,14 @@ void throwsWhenTransactionLockClientStoppedError() throws Exception { @Test void doesNotRetryOnTransactionLockClientStoppedErrorAsync() { - Clock clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 15, 1, 0, clock, (ignored) -> {}); + var clock = mock(Clock.class); + var retryLogic = newRetryLogic(1, 15, 1, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - ClientException error = new ClientException("Neo.ClientError.Transaction.LockClientStopped", ""); + var error = new ClientException("Neo.ClientError.Transaction.LockClientStopped", ""); when(workMock.get()).thenReturn(failedFuture(error)); - Exception e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); + var e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); assertEquals(error, e); verify(workMock).get(); @@ -529,16 +522,16 @@ void doesNotRetryOnTransactionLockClientStoppedErrorAsync() { @ParameterizedTest @MethodSource("canBeRetriedErrors") void schedulesRetryOnErrorRx(Exception error) { - String result = "The Result"; - Clock clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 4242, 1, 0, clock, (ignored) -> {}); + var result = "The Result"; + var clock = mock(Clock.class); + var retryLogic = newRetryLogic(1, 4242, 1, 0, clock, (ignored) -> {}); Publisher publisher = createMono(result, error); - Mono single = Flux.from(retryLogic.retryRx(publisher)).single(); + var single = Flux.from(retryLogic.retryRx(publisher)).single(); assertEquals(result, await(single)); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(1, scheduleDelays.size()); assertEquals(4242, scheduleDelays.get(0).intValue()); } @@ -546,12 +539,12 @@ void schedulesRetryOnErrorRx(Exception error) { @ParameterizedTest @MethodSource("cannotBeRetriedErrors") void scheduleNoRetryOnErrorRx(Exception error) { - Clock clock = mock(Clock.class); - ExponentialBackoffRetryLogic retryLogic = newRetryLogic(1, 10, 1, 1, clock, (ignored) -> {}); + var clock = mock(Clock.class); + var retryLogic = newRetryLogic(1, 10, 1, 1, clock, (ignored) -> {}); - Mono single = Flux.from(retryLogic.retryRx(Mono.error(error))).single(); + var single = Flux.from(retryLogic.retryRx(Mono.error(error))).single(); - Exception e = assertThrows(Exception.class, () -> await(single)); + var e = assertThrows(Exception.class, () -> await(single)); assertEquals(error, e); assertEquals(0, eventExecutor.scheduleDelays().size()); @@ -559,16 +552,16 @@ void scheduleNoRetryOnErrorRx(Exception error) { @Test void throwsWhenSleepInterrupted() throws Exception { - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); doThrow(new InterruptedException()).when(sleepTask).sleep(1); - ExponentialBackoffRetryLogic logic = newRetryLogic(1, 1, 1, 0, clock, sleepTask); + var logic = newRetryLogic(1, 1, 1, 0, clock, sleepTask); Supplier workMock = newWorkMock(); when(workMock.get()).thenThrow(serviceUnavailable()); try { - IllegalStateException e = assertThrows(IllegalStateException.class, () -> logic.retry(workMock)); + var e = assertThrows(IllegalStateException.class, () -> logic.retry(workMock)); assertThat(e.getCause(), instanceOf(InterruptedException.class)); } finally { // Clear the interruption flag so all subsequent tests do not see this thread as interrupted @@ -579,23 +572,23 @@ void throwsWhenSleepInterrupted() throws Exception { @Test void collectsSuppressedErrors() throws Exception { long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(15L).thenReturn(25L); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, sleepTask); + var logic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - SessionExpiredException error1 = sessionExpired(); - SessionExpiredException error2 = sessionExpired(); - ServiceUnavailableException error3 = serviceUnavailable(); - TransientException error4 = transientException(); + var error1 = sessionExpired(); + var error2 = sessionExpired(); + var error3 = serviceUnavailable(); + var error4 = transientException(); when(workMock.get()).thenThrow(error1, error2, error3, error4).thenReturn(null); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error4, e); - Throwable[] suppressed = e.getSuppressed(); + var suppressed = e.getSuppressed(); assertEquals(3, suppressed.length); assertEquals(error1, suppressed[0]); assertEquals(error2, suppressed[1]); @@ -611,21 +604,20 @@ void collectsSuppressedErrors() throws Exception { @Test void collectsSuppressedErrorsAsync() { - String result = "The Result"; + var result = "The Result"; long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(15L).thenReturn(25L); - ExponentialBackoffRetryLogic retryLogic = - newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - SessionExpiredException error1 = sessionExpired(); - SessionExpiredException error2 = sessionExpired(); - ServiceUnavailableException error3 = serviceUnavailable(); - TransientException error4 = transientException(); + var error1 = sessionExpired(); + var error2 = sessionExpired(); + var error3 = serviceUnavailable(); + var error4 = transientException(); when(workMock.get()) .thenReturn(failedFuture(error1)) @@ -634,9 +626,9 @@ void collectsSuppressedErrorsAsync() { .thenReturn(failedFuture(error4)) .thenReturn(completedFuture(result)); - Exception e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); + var e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); assertEquals(error4, e); - Throwable[] suppressed = e.getSuppressed(); + var suppressed = e.getSuppressed(); assertEquals(3, suppressed.length); assertEquals(error1, suppressed[0]); assertEquals(error2, suppressed[1]); @@ -644,7 +636,7 @@ void collectsSuppressedErrorsAsync() { verify(workMock, times(4)).get(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(3, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -655,23 +647,22 @@ void collectsSuppressedErrorsAsync() { @Test void collectsSuppressedErrorsRx() { long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(15L).thenReturn(25L); - ExponentialBackoffRetryLogic logic = - newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var logic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); - SessionExpiredException error1 = sessionExpired(); - SessionExpiredException error2 = sessionExpired(); - ServiceUnavailableException error3 = serviceUnavailable(); - TransientException error4 = transientException(); - Mono mono = createMono("A result", error1, error2, error3, error4); + var error1 = sessionExpired(); + var error2 = sessionExpired(); + var error3 = serviceUnavailable(); + var error4 = transientException(); + var mono = createMono("A result", error1, error2, error3, error4); StepVerifier.create(logic.retryRx(mono)) .expectErrorSatisfies(e -> { assertEquals(error4, e); - Throwable[] suppressed = e.getSuppressed(); + var suppressed = e.getSuppressed(); assertEquals(3, suppressed.length); assertEquals(error1, suppressed[0]); assertEquals(error2, suppressed[1]); @@ -679,7 +670,7 @@ void collectsSuppressedErrorsRx() { }) .verify(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(3, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -690,18 +681,18 @@ void collectsSuppressedErrorsRx() { @Test void doesNotCollectSuppressedErrorsWhenSameErrorIsThrown() throws Exception { long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(25L); var sleepTask = mock(ExponentialBackoffRetryLogic.SleepTask.class); - ExponentialBackoffRetryLogic logic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, sleepTask); + var logic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, sleepTask); Supplier workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenThrow(error); - Exception e = assertThrows(Exception.class, () -> logic.retry(workMock)); + var e = assertThrows(Exception.class, () -> logic.retry(workMock)); assertEquals(error, e); assertEquals(0, e.getSuppressed().length); @@ -715,25 +706,24 @@ void doesNotCollectSuppressedErrorsWhenSameErrorIsThrown() throws Exception { @Test void doesNotCollectSuppressedErrorsWhenSameErrorIsThrownAsync() { long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(25L); - ExponentialBackoffRetryLogic retryLogic = - newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); Supplier> workMock = newWorkMock(); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); when(workMock.get()).thenReturn(failedFuture(error)); - Exception e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); + var e = assertThrows(Exception.class, () -> await(retryLogic.retryAsync(workMock))); assertEquals(error, e); assertEquals(0, e.getSuppressed().length); verify(workMock, times(3)).get(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(2, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -742,20 +732,19 @@ void doesNotCollectSuppressedErrorsWhenSameErrorIsThrownAsync() { @Test void doesNotCollectSuppressedErrorsWhenSameErrorIsThrownRx() { long maxRetryTime = 20; - int initialDelay = 15; - int multiplier = 2; - Clock clock = mock(Clock.class); + var initialDelay = 15; + var multiplier = 2; + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L).thenReturn(10L).thenReturn(25L); - ExponentialBackoffRetryLogic retryLogic = - newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); + var retryLogic = newRetryLogic(maxRetryTime, initialDelay, multiplier, 0, clock, (ignored) -> {}); - SessionExpiredException error = sessionExpired(); + var error = sessionExpired(); StepVerifier.create(retryLogic.retryRx(Mono.error(error))) .expectErrorSatisfies(e -> assertEquals(error, e)) .verify(); - List scheduleDelays = eventExecutor.scheduleDelays(); + var scheduleDelays = eventExecutor.scheduleDelays(); assertEquals(2, scheduleDelays.size()); assertEquals(initialDelay, scheduleDelays.get(0).intValue()); assertEquals(initialDelay * multiplier, scheduleDelays.get(1).intValue()); @@ -763,15 +752,15 @@ void doesNotCollectSuppressedErrorsWhenSameErrorIsThrownRx() { @Test void doesRetryOnClientExceptionWithRetryableCause() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = logic.retry(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = logic.retry(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw clientExceptionWithValidTerminationCause(); } @@ -783,15 +772,15 @@ void doesRetryOnClientExceptionWithRetryableCause() { @Test void doesRetryOnAuthorizationExpiredException() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = logic.retry(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = logic.retry(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw authorizationExpiredException(); } @@ -803,15 +792,15 @@ void doesRetryOnAuthorizationExpiredException() { @Test void doesRetryOnConnectionReadTimeoutException() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = logic.retry(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = logic.retry(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw ConnectionReadTimeoutException.INSTANCE; } @@ -823,15 +812,15 @@ void doesRetryOnConnectionReadTimeoutException() { @Test void doesNotRetryOnRandomClientException() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - ClientException exception = Assertions.assertThrows( + var exceptionThrown = new AtomicBoolean(false); + var exception = Assertions.assertThrows( ClientException.class, () -> logic.retry(() -> { if (exceptionThrown.compareAndSet(false, true)) { @@ -845,12 +834,12 @@ void doesNotRetryOnRandomClientException() { @Test void eachRetryIsLogged() { - int retries = 9; - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var retries = 9; + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = new ExponentialBackoffRetryLogic( + var logic = new ExponentialBackoffRetryLogic( RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging, (ignored) -> {}); retry(logic, retries); @@ -861,16 +850,16 @@ void eachRetryIsLogged() { @Test void doesRetryOnClientExceptionWithRetryableCauseAsync() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = await(logic.retryAsync(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = await(logic.retryAsync(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw clientExceptionWithValidTerminationCause(); } @@ -882,15 +871,15 @@ void doesRetryOnClientExceptionWithRetryableCauseAsync() { @Test void doesRetryOnAuthorizationExpiredExceptionAsync() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = await(logic.retryAsync(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = await(logic.retryAsync(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw authorizationExpiredException(); } @@ -902,16 +891,16 @@ void doesRetryOnAuthorizationExpiredExceptionAsync() { @Test void doesNotRetryOnRandomClientExceptionAsync() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - ClientException exception = Assertions.assertThrows( + var exceptionThrown = new AtomicBoolean(false); + var exception = Assertions.assertThrows( ClientException.class, () -> await(logic.retryAsync(() -> { if (exceptionThrown.compareAndSet(false, true)) { @@ -925,14 +914,14 @@ void doesNotRetryOnRandomClientExceptionAsync() { @Test void eachRetryIsLoggedAsync() { - String result = "The Result"; - int retries = 9; - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var result = "The Result"; + var retries = 9; + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); assertEquals(result, await(retryAsync(logic, retries, result))); @@ -945,16 +934,16 @@ void eachRetryIsLoggedAsync() { @Test void doesRetryOnClientExceptionWithRetryableCauseRx() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw clientExceptionWithValidTerminationCause(); } @@ -966,15 +955,15 @@ void doesRetryOnClientExceptionWithRetryableCauseRx() { @Test void doesRetryOnAuthorizationExpiredExceptionRx() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw authorizationExpiredException(); } @@ -986,15 +975,15 @@ void doesRetryOnAuthorizationExpiredExceptionRx() { @Test void doesRetryOnAsyncResourceCleanupRuntimeExceptionRx() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - String result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { + var exceptionThrown = new AtomicBoolean(false); + var result = await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { if (exceptionThrown.compareAndSet(false, true)) { throw new RuntimeException("Async resource cleanup failed after", authorizationExpiredException()); } @@ -1006,16 +995,16 @@ void doesRetryOnAsyncResourceCleanupRuntimeExceptionRx() { @Test void doesNotRetryOnRandomClientExceptionRx() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean exceptionThrown = new AtomicBoolean(false); - ClientException exception = Assertions.assertThrows( + var exceptionThrown = new AtomicBoolean(false); + var exception = Assertions.assertThrows( ClientException.class, () -> await(Mono.from(logic.retryRx(Mono.fromSupplier(() -> { if (exceptionThrown.compareAndSet(false, true)) { @@ -1029,14 +1018,14 @@ void doesNotRetryOnRandomClientExceptionRx() { @Test void eachRetryIsLoggedRx() { - String result = "The Result"; - int retries = 9; - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var result = "The Result"; + var retries = 9; + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - ExponentialBackoffRetryLogic logic = + var logic = new ExponentialBackoffRetryLogic(RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, clock, logging); assertEquals(result, await(Flux.from(retryRx(logic, retries, result)).single())); @@ -1049,13 +1038,13 @@ void eachRetryIsLoggedRx() { @Test void nothingIsLoggedOnFatalFailure() { - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = new ExponentialBackoffRetryLogic( + var logic = new ExponentialBackoffRetryLogic( RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, mock(Clock.class), logging); - RuntimeException error = assertThrows( + var error = assertThrows( RuntimeException.class, () -> logic.retry(() -> { throw new RuntimeException("Fatal blocking"); @@ -1066,13 +1055,13 @@ void nothingIsLoggedOnFatalFailure() { @Test void nothingIsLoggedOnFatalFailureAsync() { - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = new ExponentialBackoffRetryLogic( + var logic = new ExponentialBackoffRetryLogic( RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, mock(Clock.class), logging); - RuntimeException error = assertThrows( + var error = assertThrows( RuntimeException.class, () -> await(logic.retryAsync(() -> failedFuture(new RuntimeException("Fatal async"))))); @@ -1082,14 +1071,14 @@ void nothingIsLoggedOnFatalFailureAsync() { @Test void nothingIsLoggedOnFatalFailureRx() { - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(anyString())).thenReturn(logger); - ExponentialBackoffRetryLogic logic = new ExponentialBackoffRetryLogic( + var logic = new ExponentialBackoffRetryLogic( RetrySettings.DEFAULT.maxRetryTimeMs(), eventExecutor, mock(Clock.class), logging); - Publisher retryRx = logic.retryRx(Mono.error(new RuntimeException("Fatal rx"))); - RuntimeException error = assertThrows(RuntimeException.class, () -> await(retryRx)); + var retryRx = logic.retryRx(Mono.error(new RuntimeException("Fatal rx"))); + var error = assertThrows(RuntimeException.class, () -> await(retryRx)); assertEquals("Fatal rx", error.getMessage()); verifyNoInteractions(logger); @@ -1097,14 +1086,14 @@ void nothingIsLoggedOnFatalFailureRx() { @Test void correctNumberOfRetiesAreLoggedOnFailure() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - RetrySettings settings = RetrySettings.DEFAULT; + var settings = RetrySettings.DEFAULT; RetryLogic logic = new ExponentialBackoffRetryLogic(settings.maxRetryTimeMs(), eventExecutor, clock, logging); - ServiceUnavailableException error = assertThrows( + var error = assertThrows( ServiceUnavailableException.class, () -> logic.retry(new Supplier() { boolean invoked; @@ -1128,14 +1117,14 @@ public Long get() { @Test void correctNumberOfRetiesAreLoggedOnFailureAsync() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - RetrySettings settings = RetrySettings.DEFAULT; + var settings = RetrySettings.DEFAULT; RetryLogic logic = new ExponentialBackoffRetryLogic(settings.maxRetryTimeMs(), eventExecutor, clock, logging); - SessionExpiredException error = assertThrows( + var error = assertThrows( SessionExpiredException.class, () -> await(logic.retryAsync(new Supplier>() { volatile boolean invoked; @@ -1161,15 +1150,15 @@ public CompletionStage get() { @Test void correctNumberOfRetiesAreLoggedOnFailureRx() { - Clock clock = mock(Clock.class); - Logging logging = mock(Logging.class); - Logger logger = mock(Logger.class); + var clock = mock(Clock.class); + var logging = mock(Logging.class); + var logger = mock(Logger.class); when(logging.getLog(any(Class.class))).thenReturn(logger); - RetrySettings settings = RetrySettings.DEFAULT; + var settings = RetrySettings.DEFAULT; RetryLogic logic = new ExponentialBackoffRetryLogic(settings.maxRetryTimeMs(), eventExecutor, clock, logging); - AtomicBoolean invoked = new AtomicBoolean(false); - SessionExpiredException error = assertThrows( + var invoked = new AtomicBoolean(false); + var error = assertThrows( SessionExpiredException.class, () -> await(logic.retryRx(Mono.create(e -> { if (invoked.get()) { @@ -1190,19 +1179,19 @@ void correctNumberOfRetiesAreLoggedOnFailureRx() { @Test void shouldRetryWithBackOffRx() { Exception exception = new TransientException("Unknown", "Retry this error."); - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L, 100L, 200L, 400L, 800L); - ExponentialBackoffRetryLogic retryLogic = new ExponentialBackoffRetryLogic( + var retryLogic = new ExponentialBackoffRetryLogic( 500, 100, 2, 0, eventExecutor, clock, DEV_NULL_LOGGING, (ignored) -> {}); - Flux source = Flux.concat(Flux.range(0, 2), Flux.error(exception)); - Flux retriedSource = Flux.from(retryLogic.retryRx(source)); + var source = Flux.concat(Flux.range(0, 2), Flux.error(exception)); + var retriedSource = Flux.from(retryLogic.retryRx(source)); StepVerifier.create(retriedSource) .expectNext(0, 1) // first run .expectNext(0, 1, 0, 1, 0, 1, 0, 1) // 4 retry attempts .verifyErrorSatisfies(e -> assertThat(e, equalTo(exception))); - List delays = eventExecutor.scheduleDelays(); + var delays = eventExecutor.scheduleDelays(); assertThat(delays.size(), equalTo(4)); assertThat(delays, contains(100L, 200L, 400L, 800L)); } @@ -1210,19 +1199,19 @@ void shouldRetryWithBackOffRx() { @Test void shouldRetryWithRandomBackOffRx() { Exception exception = new TransientException("Unknown", "Retry this error."); - Clock clock = mock(Clock.class); + var clock = mock(Clock.class); when(clock.millis()).thenReturn(0L, 100L, 200L, 400L, 800L); - ExponentialBackoffRetryLogic retryLogic = new ExponentialBackoffRetryLogic( + var retryLogic = new ExponentialBackoffRetryLogic( 500, 100, 2, 0.1, eventExecutor, clock, DEV_NULL_LOGGING, (ignored) -> {}); - Flux source = Flux.concat(Flux.range(0, 2), Flux.error(exception)); - Flux retriedSource = Flux.from(retryLogic.retryRx(source)); + var source = Flux.concat(Flux.range(0, 2), Flux.error(exception)); + var retriedSource = Flux.from(retryLogic.retryRx(source)); StepVerifier.create(retriedSource) .expectNext(0, 1) // first run .expectNext(0, 1, 0, 1, 0, 1, 0, 1) // 4 retry attempts .verifyErrorSatisfies(e -> assertThat(e, equalTo(exception))); - List delays = eventExecutor.scheduleDelays(); + var delays = eventExecutor.scheduleDelays(); assertThat(delays.size(), equalTo(4)); assertThat(delays.get(0), allOf(greaterThanOrEqualTo(90L), lessThanOrEqualTo(110L))); assertThat(delays.get(1), allOf(greaterThanOrEqualTo(180L), lessThanOrEqualTo(220L))); @@ -1261,7 +1250,7 @@ public CompletionStage get() { } private Publisher retryRx(ExponentialBackoffRetryLogic retryLogic, int times, Object result) { - AtomicInteger invoked = new AtomicInteger(); + var invoked = new AtomicInteger(); return retryLogic.retryRx(Mono.create(e -> { if (invoked.get() < times) { invoked.getAndIncrement(); @@ -1274,7 +1263,7 @@ private Publisher retryRx(ExponentialBackoffRetryLogic retryLogic, int t private static List delaysWithoutJitter(long initialDelay, double multiplier, int count) { List values = new ArrayList<>(); - long delay = initialDelay; + var delay = initialDelay; do { values.add(delay); delay *= multiplier; @@ -1284,7 +1273,7 @@ private static List delaysWithoutJitter(long initialDelay, double multipli private static List sleepValues(ExponentialBackoffRetryLogic.SleepTask sleepTask, int expectedCount) throws InterruptedException { - ArgumentCaptor captor = ArgumentCaptor.forClass(long.class); + var captor = ArgumentCaptor.forClass(long.class); verify(sleepTask, times(expectedCount)).sleep(captor.capture()); return captor.getAllValues(); } @@ -1340,8 +1329,8 @@ private static void assertDelaysApproximatelyEqual( List expectedDelays, List actualDelays, double delta) { assertEquals(expectedDelays.size(), actualDelays.size()); - for (int i = 0; i < actualDelays.size(); i++) { - double actualValue = actualDelays.get(i).doubleValue(); + for (var i = 0; i < actualDelays.size(); i++) { + var actualValue = actualDelays.get(i).doubleValue(); long expectedValue = expectedDelays.get(i); assertThat(actualValue, closeTo(expectedValue, expectedValue * delta)); @@ -1349,8 +1338,8 @@ private static void assertDelaysApproximatelyEqual( } private Mono createMono(T result, Exception... errors) { - AtomicInteger executionCount = new AtomicInteger(); - Iterator iterator = Arrays.asList(errors).iterator(); + var executionCount = new AtomicInteger(); + var iterator = Arrays.asList(errors).iterator(); return Mono.create((Consumer>) e -> { if (iterator.hasNext()) { e.error(iterator.next()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java b/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java index 5419c18f34..c8f0dfdea8 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java +++ b/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java @@ -53,9 +53,9 @@ private static Stream allSecureSchemes() { @ParameterizedTest @MethodSource("allSecureSchemes") void testEncryptionSchemeEnablesEncryption(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertTrue(securityPlan.requiresEncryption()); } @@ -63,9 +63,9 @@ void testEncryptionSchemeEnablesEncryption(String scheme) { @ParameterizedTest @MethodSource("systemCertSchemes") void testSystemCertCompatibleConfiguration(String scheme) throws Exception { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertTrue(securityPlan.requiresEncryption()); assertTrue(securityPlan.requiresHostnameVerification()); @@ -75,9 +75,9 @@ void testSystemCertCompatibleConfiguration(String scheme) throws Exception { @ParameterizedTest @MethodSource("selfSignedSchemes") void testSelfSignedCertConfigDisablesHostnameVerification(String scheme) throws Exception { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertTrue(securityPlan.requiresEncryption()); assertFalse(securityPlan.requiresHostnameVerification()); @@ -86,11 +86,10 @@ void testSelfSignedCertConfigDisablesHostnameVerification(String scheme) throws @ParameterizedTest @MethodSource("allSecureSchemes") void testThrowsOnUserCustomizedEncryption(String scheme) { - SecuritySettings securitySettings = + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().withEncryption().build(); - ClientException ex = - assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); + var ex = assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); assertTrue(ex.getMessage() .contains(String.format( @@ -100,12 +99,11 @@ void testThrowsOnUserCustomizedEncryption(String scheme) { @ParameterizedTest @MethodSource("allSecureSchemes") void testThrowsOnUserCustomizedTrustConfiguration(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withTrustStrategy(Config.TrustStrategy.trustAllCertificates()) .build(); - ClientException ex = - assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); + var ex = assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); assertTrue(ex.getMessage() .contains(String.format( @@ -115,13 +113,12 @@ void testThrowsOnUserCustomizedTrustConfiguration(String scheme) { @ParameterizedTest @MethodSource("allSecureSchemes") void testThrowsOnUserCustomizedTrustConfigurationAndEncryption(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withTrustStrategy(Config.TrustStrategy.trustSystemCertificates()) .withEncryption() .build(); - ClientException ex = - assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); + var ex = assertThrows(ClientException.class, () -> SecurityPlans.createSecurityPlan(securitySettings, scheme)); assertTrue(ex.getMessage() .contains(String.format( @@ -131,9 +128,9 @@ void testThrowsOnUserCustomizedTrustConfigurationAndEncryption(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testNoEncryption(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertFalse(securityPlan.requiresEncryption()); } @@ -141,10 +138,10 @@ void testNoEncryption(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testConfiguredEncryption(String scheme) { - SecuritySettings securitySettings = + var securitySettings = new SecuritySettings.SecuritySettingsBuilder().withEncryption().build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertTrue(securityPlan.requiresEncryption()); } @@ -152,12 +149,12 @@ void testConfiguredEncryption(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testConfiguredAllCertificates(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withEncryption() .withTrustStrategy(Config.TrustStrategy.trustAllCertificates()) .build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertTrue(securityPlan.requiresEncryption()); } @@ -165,13 +162,13 @@ void testConfiguredAllCertificates(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testConfigureStrictRevocationChecking(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withTrustStrategy( Config.TrustStrategy.trustSystemCertificates().withStrictRevocationChecks()) .withEncryption() .build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertEquals(STRICT, securityPlan.revocationCheckingStrategy()); } @@ -179,13 +176,13 @@ void testConfigureStrictRevocationChecking(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testConfigureVerifyIfPresentRevocationChecking(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withTrustStrategy( Config.TrustStrategy.trustSystemCertificates().withVerifyIfPresentRevocationChecks()) .withEncryption() .build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertEquals(VERIFY_IF_PRESENT, securityPlan.revocationCheckingStrategy()); } @@ -193,12 +190,12 @@ void testConfigureVerifyIfPresentRevocationChecking(String scheme) { @ParameterizedTest @MethodSource("unencryptedSchemes") void testRevocationCheckingDisabledByDefault(String scheme) { - SecuritySettings securitySettings = new SecuritySettings.SecuritySettingsBuilder() + var securitySettings = new SecuritySettings.SecuritySettingsBuilder() .withTrustStrategy(Config.TrustStrategy.trustSystemCertificates()) .withEncryption() .build(); - SecurityPlan securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); + var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); assertEquals(NO_CHECKS, securityPlan.revocationCheckingStrategy()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalInputPositionTest.java b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalInputPositionTest.java index d9838f9e9e..503b716112 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalInputPositionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalInputPositionTest.java @@ -27,7 +27,7 @@ class InternalInputPositionTest { @Test void shouldBehaveAsExpected() { // GIVEN, WHEN - InternalInputPosition position = new InternalInputPosition(0, 2, 1); + var position = new InternalInputPosition(0, 2, 1); // THEN assertThat(position.offset(), equalTo(0)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java index 0e6be509f8..2b90011b5a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java @@ -32,8 +32,6 @@ import org.neo4j.driver.internal.value.IntegerValue; import org.neo4j.driver.internal.value.MapValue; import org.neo4j.driver.internal.value.StringValue; -import org.neo4j.driver.summary.InputPosition; -import org.neo4j.driver.summary.Notification; class InternalNotificationTest { @Test @@ -54,7 +52,7 @@ void shouldHandleNotificationWithPosition() { Value value = new MapValue(map); // WHEN - Notification notification = InternalNotification.VALUE_TO_NOTIFICATION.apply(value); + var notification = InternalNotification.VALUE_TO_NOTIFICATION.apply(value); // THEN assertThat(notification.description(), equalTo("A description")); @@ -65,7 +63,7 @@ void shouldHandleNotificationWithPosition() { MatcherAssert.assertThat(notification.rawSeverityLevel().get(), equalTo("WARNING")); MatcherAssert.assertThat(notification.category().get(), equalTo(NotificationCategory.DEPRECATION)); MatcherAssert.assertThat(notification.rawCategory().get(), equalTo("DEPRECATION")); - InputPosition pos = notification.position(); + var pos = notification.position(); assertThat(pos.offset(), equalTo(0)); assertThat(pos.column(), equalTo(1)); assertThat(pos.line(), equalTo(2)); @@ -81,7 +79,7 @@ void shouldHandleNotificationWithoutPosition() { Value value = new MapValue(map); // WHEN - Notification notification = InternalNotification.VALUE_TO_NOTIFICATION.apply(value); + var notification = InternalNotification.VALUE_TO_NOTIFICATION.apply(value); // THEN assertThat(notification.description(), equalTo("A description")); diff --git a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalPlanTest.java b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalPlanTest.java index 56d25ae94f..bcb1f79bc6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalPlanTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalPlanTest.java @@ -26,19 +26,16 @@ import static org.neo4j.driver.Values.values; import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Value; -import org.neo4j.driver.summary.Plan; class InternalPlanTest { @Test void shouldConvertFromEmptyMapValue() { // Given - Value value = value(parameters("operatorType", "X")); + var value = value(parameters("operatorType", "X")); // When - Plan plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); + var plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); // Then assertThat(plan.operatorType(), equalTo("X")); @@ -50,14 +47,14 @@ void shouldConvertFromEmptyMapValue() { @Test void shouldConvertFromSimpleMapValue() { // Given - Value value = value(parameters( + var value = value(parameters( "operatorType", "X", "args", parameters("a", 1), "identifiers", values(), "children", values())); // When - Plan plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); + var plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); // Then assertThat(plan.operatorType(), equalTo("X")); @@ -69,20 +66,20 @@ void shouldConvertFromSimpleMapValue() { @Test void shouldConvertFromNestedMapValue() { // Given - Value value = value(parameters( + var value = value(parameters( "operatorType", "X", "args", parameters("a", 1), "identifiers", values(), "children", values(parameters("operatorType", "Y")))); // When - Plan plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); + var plan = InternalPlan.EXPLAIN_PLAN_FROM_VALUE.apply(value); // Then assertThat(plan.operatorType(), equalTo("X")); assertThat(plan.arguments(), equalTo(parameters("a", 1).asMap(ofValue()))); assertThat(plan.identifiers(), equalTo(Collections.emptyList())); - List children = plan.children(); + var children = plan.children(); assertThat(children.size(), equalTo(1)); assertThat(children.get(0).operatorType(), equalTo("Y")); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalProfiledPlanTest.java b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalProfiledPlanTest.java index 2d2b57d3f5..c49c615992 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalProfiledPlanTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalProfiledPlanTest.java @@ -44,7 +44,7 @@ void shouldHandlePlanWithNoChildren() { Value value = new MapValue(createPlanMap()); // WHEN - ProfiledPlan plan = InternalProfiledPlan.PROFILED_PLAN_FROM_VALUE.apply(value); + var plan = InternalProfiledPlan.PROFILED_PLAN_FROM_VALUE.apply(value); // THEN verifyPlan(plan); @@ -53,15 +53,15 @@ void shouldHandlePlanWithNoChildren() { @Test void shouldHandlePlanWithChildren() { // GIVEN - Map planMap = createPlanMap(); + var planMap = createPlanMap(); planMap.put("children", new ListValue(new MapValue(createPlanMap()), new MapValue(createPlanMap()))); Value value = new MapValue(planMap); // WHEN - ProfiledPlan plan = InternalProfiledPlan.PROFILED_PLAN_FROM_VALUE.apply(value); + var plan = InternalProfiledPlan.PROFILED_PLAN_FROM_VALUE.apply(value); // THEN - for (ProfiledPlan child : plan.children()) { + for (var child : plan.children()) { verifyPlan(child); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java b/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java index ebe7a8f16b..91231e84ca 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java @@ -29,7 +29,6 @@ import static org.neo4j.driver.internal.util.Iterables.asList; import java.util.HashSet; -import java.util.List; import org.hamcrest.Matcher; import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.InternalBookmark; @@ -70,7 +69,7 @@ public static void assertBookmarkContainsSingleValue(Bookmark bookmark, Matcher< assertNotNull(bookmark); assertThat(bookmark, instanceOf(InternalBookmark.class)); - List values = asList(((InternalBookmark) bookmark).values()); + var values = asList(((InternalBookmark) bookmark).values()); assertThat(values.size(), equalTo(1)); assertThat(values.get(0), matcher); } @@ -83,7 +82,7 @@ public static void assertBookmarkContainsValues(Bookmark bookmark, Matcher values = asList(((InternalBookmark) bookmark).values()); + var values = asList(((InternalBookmark) bookmark).values()); assertThat(values, matcher); } @@ -92,12 +91,12 @@ public static void assertBookmarkContainsValues(Bookmark bookmark, Matcher bookmarkStrings = new HashSet<>(); + var count = bookmarks.length; + var bookmarkStrings = new HashSet(); - for (Bookmark bookmark : bookmarks) { + for (var bookmark : bookmarks) { assertBookmarkContainsSingleValue(bookmark); - List values = asList(((InternalBookmark) bookmark).values()); + var values = asList(((InternalBookmark) bookmark).values()); bookmarkStrings.addAll(values); } assertEquals(count, bookmarkStrings.size()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/ErrorUtilTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/ErrorUtilTest.java index 21d0e21419..73413dfe55 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/ErrorUtilTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/ErrorUtilTest.java @@ -42,17 +42,16 @@ import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.DatabaseException; import org.neo4j.driver.exceptions.Neo4jException; -import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.exceptions.TokenExpiredException; import org.neo4j.driver.exceptions.TransientException; class ErrorUtilTest { @Test void shouldCreateAuthenticationException() { - String code = "Neo.ClientError.Security.Unauthorized"; - String message = "Wrong credentials"; + var code = "Neo.ClientError.Security.Unauthorized"; + var message = "Wrong credentials"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(AuthenticationException.class)); assertEquals(code, error.code()); @@ -61,10 +60,10 @@ void shouldCreateAuthenticationException() { @Test void shouldCreateClientException() { - String code = "Neo.ClientError.Transaction.InvalidBookmark"; - String message = "Wrong bookmark"; + var code = "Neo.ClientError.Transaction.InvalidBookmark"; + var message = "Wrong bookmark"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(ClientException.class)); assertEquals(code, error.code()); @@ -73,10 +72,10 @@ void shouldCreateClientException() { @Test void shouldCreateTransientException() { - String code = "Neo.TransientError.Transaction.DeadlockDetected"; - String message = "Deadlock occurred"; + var code = "Neo.TransientError.Transaction.DeadlockDetected"; + var message = "Deadlock occurred"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(TransientException.class)); assertEquals(code, error.code()); @@ -85,10 +84,10 @@ void shouldCreateTransientException() { @Test void shouldCreateDatabaseException() { - String code = "Neo.DatabaseError.Transaction.TransactionLogError"; - String message = "Failed to write the transaction log"; + var code = "Neo.DatabaseError.Transaction.TransactionLogError"; + var message = "Failed to write the transaction log"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(DatabaseException.class)); assertEquals(code, error.code()); @@ -97,10 +96,10 @@ void shouldCreateDatabaseException() { @Test void shouldCreateDatabaseExceptionWhenErrorCodeIsWrong() { - String code = "WrongErrorCode"; - String message = "Some really strange error"; + var code = "WrongErrorCode"; + var message = "Some really strange error"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(DatabaseException.class)); assertEquals(code, error.code()); @@ -136,30 +135,30 @@ void shouldTreatDatabaseExceptionAsFatal() { @Test void shouldCreateConnectionTerminatedError() { - ServiceUnavailableException error = newConnectionTerminatedError(); + var error = newConnectionTerminatedError(); assertThat(error.getMessage(), startsWith("Connection to the database terminated")); } @Test void shouldCreateConnectionTerminatedErrorWithNullReason() { - ServiceUnavailableException error = newConnectionTerminatedError(null); + var error = newConnectionTerminatedError(null); assertThat(error.getMessage(), startsWith("Connection to the database terminated")); } @Test void shouldCreateConnectionTerminatedErrorWithReason() { - String reason = "Thread interrupted"; - ServiceUnavailableException error = newConnectionTerminatedError(reason); + var reason = "Thread interrupted"; + var error = newConnectionTerminatedError(reason); assertThat(error.getMessage(), startsWith("Connection to the database terminated")); assertThat(error.getMessage(), containsString(reason)); } @Test void shouldCreateAuthorizationExpiredException() { - String code = "Neo.ClientError.Security.AuthorizationExpired"; - String message = "Expired authorization info"; + var code = "Neo.ClientError.Security.AuthorizationExpired"; + var message = "Expired authorization info"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(AuthorizationExpiredException.class)); assertEquals(code, error.code()); @@ -168,10 +167,10 @@ void shouldCreateAuthorizationExpiredException() { @Test void shouldCreateTokenExpiredException() { - String code = "Neo.ClientError.Security.TokenExpired"; - String message = "message"; + var code = "Neo.ClientError.Security.TokenExpired"; + var message = "message"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(TokenExpiredException.class)); assertEquals(code, error.code()); @@ -180,10 +179,10 @@ void shouldCreateTokenExpiredException() { @Test void shouldMapTransientTransactionTerminatedToClientException() { - String code = "Neo.TransientError.Transaction.Terminated"; - String message = "message"; + var code = "Neo.TransientError.Transaction.Terminated"; + var message = "message"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(ClientException.class)); assertEquals("Neo.ClientError.Transaction.Terminated", error.code()); @@ -192,10 +191,10 @@ void shouldMapTransientTransactionTerminatedToClientException() { @Test void shouldMapTransientTransactionLockClientStoppedToClientException() { - String code = "Neo.TransientError.Transaction.LockClientStopped"; - String message = "message"; + var code = "Neo.TransientError.Transaction.LockClientStopped"; + var message = "message"; - Neo4jException error = newNeo4jError(code, message); + var error = newNeo4jError(code, message); assertThat(error, instanceOf(ClientException.class)); assertEquals("Neo.ClientError.Transaction.LockClientStopped", error.code()); @@ -204,12 +203,12 @@ void shouldMapTransientTransactionLockClientStoppedToClientException() { @Test void shouldWrapCheckedExceptionsInNeo4jExceptionWhenRethrowingAsyncException() { - ExecutionException ee = mock(ExecutionException.class); - UnknownHostException uhe = mock(UnknownHostException.class); + var ee = mock(ExecutionException.class); + var uhe = mock(UnknownHostException.class); given(ee.getCause()).willReturn(uhe); given(uhe.getStackTrace()).willReturn(new StackTraceElement[0]); - Neo4jException actual = assertThrows(Neo4jException.class, () -> rethrowAsyncException(ee)); + var actual = assertThrows(Neo4jException.class, () -> rethrowAsyncException(ee)); assertEquals(actual.getCause(), uhe); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java b/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java index 94f8fa7f1d..0ae5be7820 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java @@ -51,7 +51,7 @@ protected ConnectionPool createConnectionPool( Config config, boolean ownsEventLoopGroup, RoutingContext routingContext) { - ConnectionPool pool = super.createConnectionPool( + var pool = super.createConnectionPool( authTokenManager, securityPlan, bootstrap, metricsProvider, config, ownsEventLoopGroup, routingContext); return new ConnectionPoolWithFailingConnections(pool, nextRunFailure); } @@ -178,9 +178,9 @@ public void bindTerminationAwareStateLockingExecutor(TerminationAwareStateLockin } private boolean tryFail(ResponseHandler handler1, ResponseHandler handler2) { - Throwable failure = nextRunFailure.getAndSet(null); + var failure = nextRunFailure.getAndSet(null); if (failure != null) { - int reportCount = count.get(); + var reportCount = count.get(); if (handler1 != null) { handler1.onFailure(failure); reportCount = count.decrementAndGet(); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java b/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java index a4fbcec3b8..7004e84e36 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java @@ -71,7 +71,7 @@ private static class ThrowingWriter implements MessageFormat.Writer { @Override public void write(Message msg) throws IOException { - Throwable error = throwableRef.getAndSet(null); + var error = throwableRef.getAndSet(null); if (error != null) { PlatformDependent.throwException(error); } else { @@ -94,13 +94,13 @@ private static class ThrowingReader implements MessageFormat.Reader { @Override public void read(ResponseMessageHandler handler) throws IOException { - Throwable error = throwableRef.getAndSet(null); + var error = throwableRef.getAndSet(null); if (error != null) { PlatformDependent.throwException(error); return; } - FailureMessage failureMsg = failureRef.getAndSet(null); + var failureMsg = failureRef.getAndSet(null); if (failureMsg != null) { handler.handleFailureMessage(failureMsg.code(), failureMsg.message()); return; diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java index b611e3584a..f740e13ea9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java @@ -30,10 +30,8 @@ import static org.neo4j.driver.testutil.DaemonThreadFactory.daemon; import static org.neo4j.driver.testutil.TestUtil.sleep; -import io.netty.channel.EventLoopGroup; import io.netty.util.concurrent.DefaultPromise; import io.netty.util.concurrent.FailedFuture; -import io.netty.util.concurrent.Future; import io.netty.util.concurrent.ImmediateEventExecutor; import io.netty.util.concurrent.SucceededFuture; import java.io.IOException; @@ -41,7 +39,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.junit.jupiter.api.Test; import org.neo4j.driver.exceptions.Neo4jException; @@ -50,10 +47,10 @@ class FuturesTest { @Test void shouldConvertCanceledNettyFutureToCompletionStage() throws Exception { - DefaultPromise promise = new DefaultPromise<>(ImmediateEventExecutor.INSTANCE); + var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); promise.cancel(true); - CompletableFuture future = Futures.asCompletionStage(promise).toCompletableFuture(); + var future = Futures.asCompletionStage(promise).toCompletableFuture(); assertTrue(future.isCancelled()); assertTrue(future.isCompletedExceptionally()); @@ -62,10 +59,9 @@ void shouldConvertCanceledNettyFutureToCompletionStage() throws Exception { @Test void shouldConvertSucceededNettyFutureToCompletionStage() throws Exception { - SucceededFuture nettyFuture = new SucceededFuture<>(ImmediateEventExecutor.INSTANCE, "Hello"); + var nettyFuture = new SucceededFuture(ImmediateEventExecutor.INSTANCE, "Hello"); - CompletableFuture future = - Futures.asCompletionStage(nettyFuture).toCompletableFuture(); + var future = Futures.asCompletionStage(nettyFuture).toCompletableFuture(); assertTrue(future.isDone()); assertFalse(future.isCompletedExceptionally()); @@ -74,22 +70,21 @@ void shouldConvertSucceededNettyFutureToCompletionStage() throws Exception { @Test void shouldConvertFailedNettyFutureToCompletionStage() throws Exception { - RuntimeException error = new RuntimeException("Hello"); - FailedFuture nettyFuture = new FailedFuture<>(ImmediateEventExecutor.INSTANCE, error); + var error = new RuntimeException("Hello"); + var nettyFuture = new FailedFuture(ImmediateEventExecutor.INSTANCE, error); - CompletableFuture future = - Futures.asCompletionStage(nettyFuture).toCompletableFuture(); + var future = Futures.asCompletionStage(nettyFuture).toCompletableFuture(); assertTrue(future.isCompletedExceptionally()); - ExecutionException e = assertThrows(ExecutionException.class, future::get); + var e = assertThrows(ExecutionException.class, future::get); assertEquals(error, e.getCause()); } @Test void shouldConvertRunningNettyFutureToCompletionStageWhenFutureCanceled() throws Exception { - DefaultPromise promise = new DefaultPromise<>(ImmediateEventExecutor.INSTANCE); + var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); - CompletableFuture future = Futures.asCompletionStage(promise).toCompletableFuture(); + var future = Futures.asCompletionStage(promise).toCompletableFuture(); assertFalse(future.isDone()); promise.cancel(true); @@ -101,9 +96,9 @@ void shouldConvertRunningNettyFutureToCompletionStageWhenFutureCanceled() throws @Test void shouldConvertRunningNettyFutureToCompletionStageWhenFutureSucceeded() throws Exception { - DefaultPromise promise = new DefaultPromise<>(ImmediateEventExecutor.INSTANCE); + var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); - CompletableFuture future = Futures.asCompletionStage(promise).toCompletableFuture(); + var future = Futures.asCompletionStage(promise).toCompletableFuture(); assertFalse(future.isDone()); promise.setSuccess("Hello"); @@ -115,45 +110,45 @@ void shouldConvertRunningNettyFutureToCompletionStageWhenFutureSucceeded() throw @Test void shouldConvertRunningNettyFutureToCompletionStageWhenFutureFailed() throws Exception { - RuntimeException error = new RuntimeException("Hello"); - DefaultPromise promise = new DefaultPromise<>(ImmediateEventExecutor.INSTANCE); + var error = new RuntimeException("Hello"); + var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); - CompletableFuture future = Futures.asCompletionStage(promise).toCompletableFuture(); + var future = Futures.asCompletionStage(promise).toCompletableFuture(); assertFalse(future.isDone()); promise.setFailure(error); assertTrue(future.isCompletedExceptionally()); - ExecutionException e = assertThrows(ExecutionException.class, future::get); + var e = assertThrows(ExecutionException.class, future::get); assertEquals(error, e.getCause()); } @Test void shouldCreateFailedFutureWithUncheckedException() throws Exception { - RuntimeException error = new RuntimeException("Hello"); - CompletableFuture future = Futures.failedFuture(error).toCompletableFuture(); + var error = new RuntimeException("Hello"); + var future = Futures.failedFuture(error).toCompletableFuture(); assertTrue(future.isCompletedExceptionally()); - ExecutionException e = assertThrows(ExecutionException.class, future::get); + var e = assertThrows(ExecutionException.class, future::get); assertEquals(error, e.getCause()); } @Test void shouldCreateFailedFutureWithCheckedException() throws Exception { - IOException error = new IOException("Hello"); - CompletableFuture future = Futures.failedFuture(error).toCompletableFuture(); + var error = new IOException("Hello"); + var future = Futures.failedFuture(error).toCompletableFuture(); assertTrue(future.isCompletedExceptionally()); - ExecutionException e = assertThrows(ExecutionException.class, future::get); + var e = assertThrows(ExecutionException.class, future::get); assertEquals(error, e.getCause()); } @Test void shouldFailBlockingGetInEventLoopThread() throws Exception { - EventLoopGroup eventExecutor = EventLoopGroupFactory.newEventLoopGroup(1); + var eventExecutor = EventLoopGroupFactory.newEventLoopGroup(1); try { - CompletableFuture future = new CompletableFuture<>(); - Future result = eventExecutor.submit(() -> Futures.blockingGet(future)); + var future = new CompletableFuture(); + var result = eventExecutor.submit(() -> Futures.blockingGet(future)); - ExecutionException e = assertThrows(ExecutionException.class, result::get); + var e = assertThrows(ExecutionException.class, result::get); assertThat(e.getCause(), is(blockingOperationInEventLoopError())); } finally { eventExecutor.shutdownGracefully(); @@ -162,29 +157,29 @@ void shouldFailBlockingGetInEventLoopThread() throws Exception { @Test void shouldThrowInBlockingGetWhenFutureThrowsUncheckedException() { - RuntimeException error = new RuntimeException("Hello"); + var error = new RuntimeException("Hello"); - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); future.completeExceptionally(error); - Exception e = assertThrows(Exception.class, () -> Futures.blockingGet(future)); + var e = assertThrows(Exception.class, () -> Futures.blockingGet(future)); assertEquals(error, e); } @Test void shouldThrowInBlockingGetWhenFutureThrowsCheckedException() { - IOException error = new IOException("Hello"); + var error = new IOException("Hello"); - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); future.completeExceptionally(error); - Neo4jException e = assertThrows(Neo4jException.class, () -> Futures.blockingGet(future)); + var e = assertThrows(Neo4jException.class, () -> Futures.blockingGet(future)); assertEquals(error, e.getCause()); } @Test void shouldReturnFromBlockingGetWhenFutureCompletes() { - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); future.complete("Hello"); assertEquals("Hello", Futures.blockingGet(future)); @@ -192,9 +187,9 @@ void shouldReturnFromBlockingGetWhenFutureCompletes() { @Test void shouldWaitForFutureInBlockingGetEvenWhenInterrupted() { - ExecutorService executor = Executors.newSingleThreadExecutor(daemon("InterruptThread")); + var executor = Executors.newSingleThreadExecutor(daemon("InterruptThread")); try { - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); Thread.currentThread().interrupt(); executor.submit(() -> { @@ -213,7 +208,7 @@ void shouldWaitForFutureInBlockingGetEvenWhenInterrupted() { @Test void shouldHandleInterruptsInBlockingGet() { try { - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); Thread.currentThread().interrupt(); Runnable interruptHandler = () -> future.complete("Hello"); @@ -226,7 +221,7 @@ void shouldHandleInterruptsInBlockingGet() { @Test void shouldGetNowWhenFutureDone() { - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); future.complete("Hello"); assertEquals("Hello", Futures.getNow(future)); @@ -234,46 +229,46 @@ void shouldGetNowWhenFutureDone() { @Test void shouldGetNowWhenFutureNotDone() { - CompletableFuture future = new CompletableFuture<>(); + var future = new CompletableFuture(); assertNull(Futures.getNow(future)); } @Test void shouldGetCauseFromCompletionException() { - RuntimeException error = new RuntimeException("Hello"); - CompletionException completionException = new CompletionException(error); + var error = new RuntimeException("Hello"); + var completionException = new CompletionException(error); assertEquals(error, Futures.completionExceptionCause(completionException)); } @Test void shouldReturnSameExceptionWhenItIsNotCompletionException() { - RuntimeException error = new RuntimeException("Hello"); + var error = new RuntimeException("Hello"); assertEquals(error, Futures.completionExceptionCause(error)); } @Test void shouldWrapWithCompletionException() { - RuntimeException error = new RuntimeException("Hello"); - CompletionException completionException = Futures.asCompletionException(error); + var error = new RuntimeException("Hello"); + var completionException = Futures.asCompletionException(error); assertEquals(error, completionException.getCause()); } @Test void shouldKeepCompletionExceptionAsIs() { - CompletionException error = new CompletionException(new RuntimeException("Hello")); + var error = new CompletionException(new RuntimeException("Hello")); assertEquals(error, Futures.asCompletionException(error)); } @Test void shouldCombineTwoErrors() { - RuntimeException error1 = new RuntimeException("Error1"); - RuntimeException error2Cause = new RuntimeException("Error2"); - CompletionException error2 = new CompletionException(error2Cause); + var error1 = new RuntimeException("Error1"); + var error2Cause = new RuntimeException("Error2"); + var error2 = new CompletionException(error2Cause); - CompletionException combined = Futures.combineErrors(error1, error2); + var combined = Futures.combineErrors(error1, error2); assertEquals(error1, combined.getCause()); assertArrayEquals(new Throwable[] {error2Cause}, combined.getCause().getSuppressed()); @@ -281,18 +276,18 @@ void shouldCombineTwoErrors() { @Test void shouldCombineErrorAndNull() { - RuntimeException error1 = new RuntimeException("Error1"); + var error1 = new RuntimeException("Error1"); - CompletionException combined = Futures.combineErrors(error1, null); + var combined = Futures.combineErrors(error1, null); assertEquals(error1, combined.getCause()); } @Test void shouldCombineNullAndError() { - RuntimeException error2 = new RuntimeException("Error2"); + var error2 = new RuntimeException("Error2"); - CompletionException combined = Futures.combineErrors(null, error2); + var combined = Futures.combineErrors(null, error2); assertEquals(error2, combined.getCause()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/IterablesTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/IterablesTest.java index 2a73fd0ae3..6868d2e4fd 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/IterablesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/IterablesTest.java @@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.util.Queue; import org.junit.jupiter.api.Test; class IterablesTest { @@ -51,7 +50,7 @@ void shouldThrowWhenNegativeLinkedHashMapSizeGiven() { @Test void shouldReturnEmptyQueue() { - Queue queue = Iterables.emptyQueue(); + var queue = Iterables.emptyQueue(); assertEquals(0, queue.size()); assertTrue(queue.isEmpty()); assertNull(queue.peek()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java b/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java index 2021e33c0c..b1272cb7d0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java @@ -28,7 +28,6 @@ import org.neo4j.driver.internal.BoltServerAddress; import org.neo4j.driver.internal.DirectConnectionProvider; import org.neo4j.driver.internal.InternalDriver; -import org.neo4j.driver.internal.SessionFactory; import org.neo4j.driver.internal.SessionFactoryImpl; import org.neo4j.driver.internal.cluster.loadbalancing.LoadBalancer; import org.neo4j.driver.internal.spi.ConnectionProvider; @@ -55,7 +54,7 @@ public static Matcher directDriverWithAddress(final BoltServerAddress ad return new TypeSafeMatcher() { @Override protected boolean matchesSafely(Driver driver) { - DirectConnectionProvider provider = extractConnectionProvider(driver, DirectConnectionProvider.class); + var provider = extractConnectionProvider(driver, DirectConnectionProvider.class); return provider != null && Objects.equals(provider.getAddress(), address); } @@ -119,7 +118,7 @@ public static Matcher syntaxError(String messagePrefix) { @Override protected boolean matchesSafely(Throwable error) { if (error instanceof ClientException) { - ClientException clientError = (ClientException) error; + var clientError = (ClientException) error; return clientError.code().contains("SyntaxError") && (messagePrefix == null || clientError.getMessage().startsWith(messagePrefix)); @@ -139,7 +138,7 @@ public static Matcher connectionAcquisitionTimeoutError(int timeoutMi @Override protected boolean matchesSafely(Throwable error) { if (error instanceof ClientException) { - String expectedMessage = "Unable to acquire connection from the pool within " + var expectedMessage = "Unable to acquire connection from the pool within " + "configured maximum time of " + timeoutMillis + "ms"; return expectedMessage.equals(error.getMessage()); } @@ -175,9 +174,9 @@ private static boolean hasConnectionProvider(Driver driver, Class T extractConnectionProvider(Driver driver, Class providerClass) { if (driver instanceof InternalDriver) { - SessionFactory sessionFactory = ((InternalDriver) driver).getSessionFactory(); + var sessionFactory = ((InternalDriver) driver).getSessionFactory(); if (sessionFactory instanceof SessionFactoryImpl) { - ConnectionProvider provider = ((SessionFactoryImpl) sessionFactory).getConnectionProvider(); + var provider = ((SessionFactoryImpl) sessionFactory).getConnectionProvider(); if (providerClass.isInstance(provider)) { return providerClass.cast(provider); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/MessageRecordingDriverFactory.java b/driver/src/test/java/org/neo4j/driver/internal/util/MessageRecordingDriverFactory.java index c327a63889..9d022ff3eb 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/MessageRecordingDriverFactory.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/MessageRecordingDriverFactory.java @@ -86,8 +86,7 @@ public void build(MessageFormat messageFormat, ChannelPipeline pipeline, Logging private class MessageRecordingHandler extends MessageToMessageEncoder { @Override protected void encode(ChannelHandlerContext ctx, Message msg, List out) { - List messages = - messagesByChannel.computeIfAbsent(ctx.channel(), ignore -> new CopyOnWriteArrayList<>()); + var messages = messagesByChannel.computeIfAbsent(ctx.channel(), ignore -> new CopyOnWriteArrayList<>()); messages.add(msg); out.add(msg); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java index 819f728b27..8b6542190e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java @@ -43,11 +43,9 @@ import static org.neo4j.driver.summary.QueryType.WRITE_ONLY; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.NotificationCategory; import org.neo4j.driver.NotificationSeverity; import org.neo4j.driver.Query; @@ -60,10 +58,6 @@ import org.neo4j.driver.internal.messaging.v43.BoltProtocolV43; import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.summary.InternalInputPosition; -import org.neo4j.driver.summary.DatabaseInfo; -import org.neo4j.driver.summary.Notification; -import org.neo4j.driver.summary.Plan; -import org.neo4j.driver.summary.ProfiledPlan; import org.neo4j.driver.summary.ResultSummary; class MetadataExtractorTest { @@ -75,53 +69,53 @@ class MetadataExtractorTest { @Test void shouldExtractQueryKeys() { - List keys = asList("hello", " ", "world", "!"); + var keys = asList("hello", " ", "world", "!"); Map keyIndex = new HashMap<>(); keyIndex.put("hello", 0); keyIndex.put(" ", 1); keyIndex.put("world", 2); keyIndex.put("!", 3); - QueryKeys extracted = extractor.extractQueryKeys(singletonMap("fields", value(keys))); + var extracted = extractor.extractQueryKeys(singletonMap("fields", value(keys))); assertEquals(keys, extracted.keys()); assertEquals(keyIndex, extracted.keyIndex()); } @Test void shouldExtractEmptyQueryKeysWhenNoneInMetadata() { - QueryKeys extracted = extractor.extractQueryKeys(emptyMap()); + var extracted = extractor.extractQueryKeys(emptyMap()); assertEquals(emptyList(), extracted.keys()); assertEquals(emptyMap(), extracted.keyIndex()); } @Test void shouldExtractResultAvailableAfter() { - Map metadata = singletonMap(RESULT_AVAILABLE_AFTER_KEY, value(424242)); - long extractedResultAvailableAfter = extractor.extractResultAvailableAfter(metadata); + var metadata = singletonMap(RESULT_AVAILABLE_AFTER_KEY, value(424242)); + var extractedResultAvailableAfter = extractor.extractResultAvailableAfter(metadata); assertEquals(424242L, extractedResultAvailableAfter); } @Test void shouldExtractNoResultAvailableAfterWhenNoneInMetadata() { - long extractedResultAvailableAfter = extractor.extractResultAvailableAfter(emptyMap()); + var extractedResultAvailableAfter = extractor.extractResultAvailableAfter(emptyMap()); assertEquals(-1, extractedResultAvailableAfter); } @Test void shouldBuildResultSummaryWithQuery() { - Query query = + var query = new Query("UNWIND range(10, 100) AS x CREATE (:Node {name: $name, x: x})", singletonMap("name", "Apa")); - ResultSummary summary = extractor.extractSummary(query, connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query, connectionMock(), 42, emptyMap()); assertEquals(query, summary.query()); } @Test void shouldBuildResultSummaryWithServerAddress() { - Connection connection = connectionMock(new BoltServerAddress("server:42")); + var connection = connectionMock(new BoltServerAddress("server:42")); - ResultSummary summary = extractor.extractSummary(query(), connection, 42, emptyMap()); + var summary = extractor.extractSummary(query(), connection, 42, emptyMap()); assertEquals("server:42", summary.server().address()); } @@ -138,7 +132,7 @@ void shouldBuildResultSummaryWithQueryType() { @Test void shouldBuildResultSummaryWithCounters() { - Value stats = parameters( + var stats = parameters( "nodes-created", value(42), "nodes-deleted", value(4242), "relationships-created", value(24), @@ -151,9 +145,9 @@ void shouldBuildResultSummaryWithCounters() { "constraints-added", null, "constraints-removed", value(2)); - Map metadata = singletonMap("stats", stats); + var metadata = singletonMap("stats", stats); - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); + var summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); assertEquals(42, summary.counters().nodesCreated()); assertEquals(4242, summary.counters().nodesDeleted()); @@ -170,13 +164,13 @@ void shouldBuildResultSummaryWithCounters() { @Test void shouldBuildResultSummaryWithoutCounters() { - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); assertEquals(EMPTY_STATS, summary.counters()); } @Test void shouldBuildResultSummaryWithPlan() { - Value plan = value(parameters( + var plan = value(parameters( "operatorType", "Projection", "args", parameters("n", 42), "identifiers", values("a", "b"), @@ -185,18 +179,18 @@ void shouldBuildResultSummaryWithPlan() { "operatorType", "AllNodeScan", "args", parameters("x", 4242), "identifiers", values("n", "t", "f"))))); - Map metadata = singletonMap("plan", plan); + var metadata = singletonMap("plan", plan); - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); + var summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); assertTrue(summary.hasPlan()); assertEquals("Projection", summary.plan().operatorType()); assertEquals(singletonMap("n", value(42)), summary.plan().arguments()); assertEquals(asList("a", "b"), summary.plan().identifiers()); - List children = summary.plan().children(); + var children = summary.plan().children(); assertEquals(1, children.size()); - Plan child = children.get(0); + var child = children.get(0); assertEquals("AllNodeScan", child.operatorType()); assertEquals(singletonMap("x", value(4242)), child.arguments()); @@ -206,14 +200,14 @@ void shouldBuildResultSummaryWithPlan() { @Test void shouldBuildResultSummaryWithoutPlan() { - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); assertFalse(summary.hasPlan()); assertNull(summary.plan()); } @Test void shouldBuildResultSummaryWithProfiledPlan() { - Value profile = value(parameters( + var profile = value(parameters( "operatorType", "ProduceResult", "args", parameters("a", 42), "identifiers", values("a", "b"), @@ -227,9 +221,9 @@ void shouldBuildResultSummaryWithProfiledPlan() { "identifiers", values("y", "z"), "rows", value(2), "dbHits", value(4))))); - Map metadata = singletonMap("profile", profile); + var metadata = singletonMap("profile", profile); - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); + var summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); assertTrue(summary.hasPlan()); assertTrue(summary.hasProfile()); @@ -244,9 +238,9 @@ void shouldBuildResultSummaryWithProfiledPlan() { assertEquals(0, summary.profile().pageCacheMisses()); assertEquals(0, summary.profile().pageCacheHits()); - List children = summary.profile().children(); + var children = summary.profile().children(); assertEquals(1, children.size()); - ProfiledPlan child = children.get(0); + var child = children.get(0); assertEquals("LabelScan", child.operatorType()); assertEquals(singletonMap("x", value(1)), child.arguments()); @@ -257,7 +251,7 @@ void shouldBuildResultSummaryWithProfiledPlan() { @Test void shouldBuildResultSummaryWithoutProfiledPlan() { - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); assertFalse(summary.hasProfile()); assertNull(summary.profile()); } @@ -265,7 +259,7 @@ void shouldBuildResultSummaryWithoutProfiledPlan() { @Test @SuppressWarnings("deprecation") void shouldBuildResultSummaryWithNotifications() { - Value notification1 = parameters( + var notification1 = parameters( "description", "Almost bad thing", "code", "Neo.DummyNotification", "title", "A title", @@ -276,7 +270,7 @@ void shouldBuildResultSummaryWithNotifications() { "offset", 42, "line", 4242, "column", 424242)); - Value notification2 = parameters( + var notification2 = parameters( "description", "Almost good thing", "code", "Neo.GoodNotification", "title", "Good", @@ -286,14 +280,14 @@ void shouldBuildResultSummaryWithNotifications() { "offset", 1, "line", 2, "column", 3)); - Value notifications = value(notification1, notification2); - Map metadata = singletonMap("notifications", notifications); + var notifications = value(notification1, notification2); + var metadata = singletonMap("notifications", notifications); - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); + var summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); assertEquals(2, summary.notifications().size()); - Notification firstNotification = summary.notifications().get(0); - Notification secondNotification = summary.notifications().get(1); + var firstNotification = summary.notifications().get(0); + var secondNotification = summary.notifications().get(1); assertEquals("Almost bad thing", firstNotification.description()); assertEquals("Neo.DummyNotification", firstNotification.code()); @@ -316,15 +310,15 @@ void shouldBuildResultSummaryWithNotifications() { @Test void shouldBuildResultSummaryWithoutNotifications() { - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); assertEquals(0, summary.notifications().size()); } @Test void shouldBuildResultSummaryWithResultAvailableAfter() { - int value = 42_000; + var value = 42_000; - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), value, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), value, emptyMap()); assertEquals(42, summary.resultAvailableAfter(TimeUnit.SECONDS)); assertEquals(value, summary.resultAvailableAfter(TimeUnit.MILLISECONDS)); @@ -332,10 +326,10 @@ void shouldBuildResultSummaryWithResultAvailableAfter() { @Test void shouldBuildResultSummaryWithResultConsumedAfter() { - int value = 42_000; - Map metadata = singletonMap(RESULT_CONSUMED_AFTER_KEY, value(value)); + var value = 42_000; + var metadata = singletonMap(RESULT_CONSUMED_AFTER_KEY, value(value)); - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); + var summary = extractor.extractSummary(query(), connectionMock(), 42, metadata); assertEquals(42, summary.resultConsumedAfter(TimeUnit.SECONDS)); assertEquals(value, summary.resultConsumedAfter(TimeUnit.MILLISECONDS)); @@ -343,47 +337,47 @@ void shouldBuildResultSummaryWithResultConsumedAfter() { @Test void shouldBuildResultSummaryWithoutResultConsumedAfter() { - ResultSummary summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); + var summary = extractor.extractSummary(query(), connectionMock(), 42, emptyMap()); assertEquals(-1, summary.resultConsumedAfter(TimeUnit.SECONDS)); assertEquals(-1, summary.resultConsumedAfter(TimeUnit.MILLISECONDS)); } @Test void shouldExtractBookmark() { - String bookmarkValue = "neo4j:bookmark:v1:tx123456"; + var bookmarkValue = "neo4j:bookmark:v1:tx123456"; - Bookmark bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", value(bookmarkValue))); + var bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", value(bookmarkValue))); assertEquals(InternalBookmark.parse(bookmarkValue), bookmark); } @Test void shouldExtractNoBookmarkWhenMetadataContainsNull() { - Bookmark bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", null)); + var bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", null)); assertNull(bookmark); } @Test void shouldExtractNoBookmarkWhenMetadataContainsNullValue() { - Bookmark bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", Values.NULL)); + var bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", Values.NULL)); assertNull(bookmark); } @Test void shouldExtractNoBookmarkWhenMetadataContainsValueOfIncorrectType() { - Bookmark bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", value(42))); + var bookmark = MetadataExtractor.extractBookmark(singletonMap("bookmark", value(42))); assertNull(bookmark); } @Test void shouldExtractServer() { - String agent = "Neo4j/3.5.0"; - Map metadata = singletonMap("server", value(agent)); + var agent = "Neo4j/3.5.0"; + var metadata = singletonMap("server", value(agent)); - Value serverValue = extractServer(metadata); + var serverValue = extractServer(metadata); assertEquals(agent, serverValue.asString()); } @@ -391,10 +385,10 @@ void shouldExtractServer() { @Test void shouldExtractDatabase() { // Given - Map metadata = singletonMap("db", value("MyAwesomeDatabase")); + var metadata = singletonMap("db", value("MyAwesomeDatabase")); // When - DatabaseInfo db = extractDatabaseInfo(metadata); + var db = extractDatabaseInfo(metadata); // Then assertEquals("MyAwesomeDatabase", db.name()); @@ -403,10 +397,10 @@ void shouldExtractDatabase() { @Test void shouldDefaultToNullDatabaseName() { // Given - Map metadata = singletonMap("no_db", value("no_db")); + var metadata = singletonMap("no_db", value("no_db")); // When - DatabaseInfo db = extractDatabaseInfo(metadata); + var db = extractDatabaseInfo(metadata); // Then assertNull(db.name()); @@ -415,10 +409,10 @@ void shouldDefaultToNullDatabaseName() { @Test void shouldErrorWhenTypeIsWrong() { // Given - Map metadata = singletonMap("db", value(10L)); + var metadata = singletonMap("db", value(10L)); // When - Uncoercible error = assertThrows(Uncoercible.class, () -> extractDatabaseInfo(metadata)); + var error = assertThrows(Uncoercible.class, () -> extractDatabaseInfo(metadata)); // Then assertThat(error.getMessage(), startsWith("Cannot coerce INTEGER to Java String")); @@ -437,7 +431,7 @@ void shouldFailToExtractServerVersionFromNonNeo4jProduct() { } private ResultSummary createWithQueryType(Value typeValue) { - Map metadata = singletonMap("type", typeValue); + var metadata = singletonMap("type", typeValue); return extractor.extractSummary(query(), connectionMock(), 42, metadata); } @@ -450,7 +444,7 @@ private static Connection connectionMock() { } private static Connection connectionMock(BoltServerAddress address) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(address); when(connection.protocol()).thenReturn(BoltProtocolV43.INSTANCE); when(connection.serverAgent()).thenReturn("Neo4j/4.2.5"); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jFeature.java b/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jFeature.java index 8763ca1ef9..b1ad8a2255 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jFeature.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jFeature.java @@ -56,7 +56,7 @@ public boolean greaterThanOrEqual(Version other) { } private int compareTo(Version o) { - int c = compare(major, o.major); + var c = compare(major, o.major); if (c == 0) { c = compare(minor, o.minor); if (c == 0) { diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jWithFeatureCondition.java b/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jWithFeatureCondition.java index c63e1d6dd4..ef433f4316 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jWithFeatureCondition.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/Neo4jWithFeatureCondition.java @@ -21,15 +21,10 @@ import static org.junit.jupiter.api.extension.ConditionEvaluationResult.disabled; import static org.junit.jupiter.api.extension.ConditionEvaluationResult.enabled; -import java.lang.reflect.AnnotatedElement; -import java.util.Optional; -import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.jupiter.api.extension.ConditionEvaluationResult; import org.junit.jupiter.api.extension.ExecutionCondition; import org.junit.jupiter.api.extension.ExtensionContext; -import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; import org.neo4j.driver.testutil.DatabaseExtension; public class Neo4jWithFeatureCondition implements ExecutionCondition { @@ -40,20 +35,20 @@ public class Neo4jWithFeatureCondition implements ExecutionCondition { @Override public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) { - Optional elementOptional = context.getElement(); + var elementOptional = context.getElement(); if (elementOptional.isPresent()) { - AnnotatedElement element = elementOptional.get(); + var element = elementOptional.get(); - EnabledOnNeo4jWith enabledAnnotation = element.getAnnotation(EnabledOnNeo4jWith.class); + var enabledAnnotation = element.getAnnotation(EnabledOnNeo4jWith.class); if (enabledAnnotation != null) { - ConditionEvaluationResult result = checkFeatureAvailability(enabledAnnotation.value(), false); + var result = checkFeatureAvailability(enabledAnnotation.value(), false); if (enabledAnnotation.edition() != Neo4jEdition.UNDEFINED) { result = checkEditionAvailability(result, enabledAnnotation.edition()); } return result; } - DisabledOnNeo4jWith disabledAnnotation = element.getAnnotation(DisabledOnNeo4jWith.class); + var disabledAnnotation = element.getAnnotation(DisabledOnNeo4jWith.class); if (disabledAnnotation != null) { return checkFeatureAvailability(disabledAnnotation.value(), true); } @@ -62,17 +57,17 @@ public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext con } private static ConditionEvaluationResult checkFeatureAvailability(Neo4jFeature feature, boolean negated) { - Driver driver = DatabaseExtension.getInstance().driver(); + var driver = DatabaseExtension.getInstance().driver(); if (driver != null) { - try (Session session = driver.session()) { - String agent = session.executeRead( + try (var session = driver.session()) { + var agent = session.executeRead( tx -> tx.run("RETURN 1").consume().server().agent()); - Pattern pattern = Pattern.compile("^Neo4j/(\\d+)\\.(\\d+)\\.(\\d+)(-dev)?$"); - Matcher matcher = pattern.matcher(agent); + var pattern = Pattern.compile("^Neo4j/(\\d+)\\.(\\d+)\\.(\\d+)(-dev)?$"); + var matcher = pattern.matcher(agent); if (!matcher.matches()) { throw new IllegalStateException(String.format("Unexpected server agent value %s", agent)); } - Neo4jFeature.Version version = new Neo4jFeature.Version( + var version = new Neo4jFeature.Version( Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3))); @@ -87,14 +82,14 @@ private static ConditionEvaluationResult checkEditionAvailability( if (previousResult.isDisabled()) { return previousResult; } - Driver driver = DatabaseExtension.getInstance().driver(); + var driver = DatabaseExtension.getInstance().driver(); if (driver != null) { - try (Session session = driver.session()) { - String value = session.run("CALL dbms.components() YIELD edition") + try (var session = driver.session()) { + var value = session.run("CALL dbms.components() YIELD edition") .single() .get("edition") .asString(); - boolean editionMatches = edition.matches(value); + var editionMatches = edition.matches(value); return editionMatches ? enabled(previousResult .getReason() diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/io/BufferedChannelInput.java b/driver/src/test/java/org/neo4j/driver/internal/util/io/BufferedChannelInput.java index f4df895f6f..8a86d1b665 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/io/BufferedChannelInput.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/io/BufferedChannelInput.java @@ -75,7 +75,7 @@ public double readDouble() throws IOException { @Override public void readBytes(byte[] into, int index, int toRead) throws IOException { - int endIndex = index + toRead; + var endIndex = index + toRead; while (index < endIndex) { toRead = Math.min(buffer.remaining(), endIndex - index); buffer.get(into, index, toRead); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelOutput.java b/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelOutput.java index c6e4bdadf7..73e70dad0d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelOutput.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelOutput.java @@ -44,7 +44,7 @@ public PackOutput writeByte(byte value) throws IOException { @Override public PackOutput writeShort(short value) throws IOException { - ByteBuffer buffer = ByteBuffer.allocate(Short.BYTES); + var buffer = ByteBuffer.allocate(Short.BYTES); buffer.putShort(value); buffer.flip(); channel.write(buffer); @@ -53,7 +53,7 @@ public PackOutput writeShort(short value) throws IOException { @Override public PackOutput writeInt(int value) throws IOException { - ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES); + var buffer = ByteBuffer.allocate(Integer.BYTES); buffer.putInt(value); buffer.flip(); channel.write(buffer); @@ -62,7 +62,7 @@ public PackOutput writeInt(int value) throws IOException { @Override public PackOutput writeLong(long value) throws IOException { - ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); + var buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(value); buffer.flip(); channel.write(buffer); @@ -71,7 +71,7 @@ public PackOutput writeLong(long value) throws IOException { @Override public PackOutput writeDouble(double value) throws IOException { - ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES); + var buffer = ByteBuffer.allocate(Double.BYTES); buffer.putDouble(value); buffer.flip(); channel.write(buffer); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelTrackingConnector.java b/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelTrackingConnector.java index e100c41318..b2e4edc2f7 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelTrackingConnector.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/io/ChannelTrackingConnector.java @@ -36,7 +36,7 @@ public ChannelTrackingConnector(ChannelConnector realConnector, List ch @Override public ChannelFuture connect(BoltServerAddress address, Bootstrap bootstrap) { - ChannelFuture channelFuture = realConnector.connect(address, bootstrap); + var channelFuture = realConnector.connect(address, bootstrap); channels.add(channelFuture.channel()); return channelFuture; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/io/MessageToByteBufWriter.java b/driver/src/test/java/org/neo4j/driver/internal/util/io/MessageToByteBufWriter.java index db7a518019..7a339c13bc 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/io/MessageToByteBufWriter.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/io/MessageToByteBufWriter.java @@ -33,8 +33,8 @@ public MessageToByteBufWriter(MessageFormat messageFormat) { public ByteBuf asByteBuf(Message message) { try { - ByteBuf buf = Unpooled.buffer(); - ByteBufOutput output = new ByteBufOutput(buf); + var buf = Unpooled.buffer(); + var output = new ByteBufOutput(buf); messageFormat.newWriter(output).write(message); return buf; } catch (IOException e) { diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java index b80ebd95a8..b38dab6649 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java @@ -24,7 +24,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.IOException; import java.util.stream.Stream; @@ -49,18 +48,18 @@ Stream shouldReadSupportedMessages() { } private void testSupportedMessageReading(Message message) throws IOException { - ResponseMessageHandler handler = testMessageReading(message); + var handler = testMessageReading(message); if (message instanceof SuccessMessage) { - SuccessMessage successMessage = (SuccessMessage) message; + var successMessage = (SuccessMessage) message; verify(handler).handleSuccessMessage(successMessage.metadata()); } else if (message instanceof FailureMessage) { - FailureMessage failureMessage = (FailureMessage) message; + var failureMessage = (FailureMessage) message; verify(handler).handleFailureMessage(failureMessage.code(), failureMessage.message()); } else if (message instanceof IgnoredMessage) { verify(handler).handleIgnoredMessage(); } else if (message instanceof RecordMessage) { - RecordMessage recordMessage = (RecordMessage) message; + var recordMessage = (RecordMessage) message; verify(handler).handleRecordMessage(recordMessage.fields()); } else { fail("Unsupported message type " + message.getClass().getSimpleName()); @@ -84,26 +83,26 @@ private void testUnsupportedMessageReading(Message message) { protected abstract MessageFormat.Reader newReader(PackInput input); protected ResponseMessageHandler testMessageReading(Message message) throws IOException { - PackInput input = newInputWith(message); - MessageFormat.Reader reader = newReader(input); + var input = newInputWith(message); + var reader = newReader(input); - ResponseMessageHandler handler = mock(ResponseMessageHandler.class); + var handler = mock(ResponseMessageHandler.class); reader.read(handler); return handler; } private PackInput newInputWith(Message message) throws IOException { - ByteBuf buffer = Unpooled.buffer(); + var buffer = Unpooled.buffer(); MessageFormat messageFormat = new KnowledgeableMessageFormat(isElementIdEnabled()); if (isDateTimeUtcEnabled()) { messageFormat.enableDateTimeUtc(); } - MessageFormat.Writer writer = messageFormat.newWriter(new ByteBufOutput(buffer)); + var writer = messageFormat.newWriter(new ByteBufOutput(buffer)); writer.write(message); - ByteBufInput input = new ByteBufInput(); + var input = new ByteBufInput(); input.start(buffer); return input; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageWriterTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageWriterTestBase.java index 7f3365573c..a507638d67 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageWriterTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageWriterTestBase.java @@ -25,7 +25,6 @@ import static org.junit.jupiter.api.DynamicTest.dynamicTest; import static org.mockito.Mockito.mock; -import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.IOException; import java.util.stream.Stream; @@ -58,25 +57,25 @@ Stream shouldFailToWriteUnsupportedMessages() { protected abstract Stream unsupportedMessages(); private void testSupportedMessageWriting(Message message) throws IOException { - ByteBuf buffer = Unpooled.buffer(); + var buffer = Unpooled.buffer(); PackOutput output = new ByteBufOutput(buffer); - MessageFormat.Writer writer = newWriter(output); + var writer = newWriter(output); writer.write(message); - ByteBufInput input = new ByteBufInput(); + var input = new ByteBufInput(); input.start(buffer); - PackStream.Unpacker unpacker = new PackStream.Unpacker(input); + var unpacker = new PackStream.Unpacker(input); - long structHeader = unpacker.unpackStructHeader(); + var structHeader = unpacker.unpackStructHeader(); assertThat(structHeader, greaterThanOrEqualTo(0L)); - byte structSignature = unpacker.unpackStructSignature(); + var structSignature = unpacker.unpackStructSignature(); assertEquals(message.signature(), structSignature); } private void testUnsupportedMessageWriting(Message message) { - MessageFormat.Writer writer = newWriter(mock(PackOutput.class)); + var writer = newWriter(mock(PackOutput.class)); assertThrows(Exception.class, () -> writer.write(message)); } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/FailureMessageEncoder.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/FailureMessageEncoder.java index ef137ac35f..8e7fe82002 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/FailureMessageEncoder.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/FailureMessageEncoder.java @@ -31,7 +31,7 @@ public class FailureMessageEncoder implements MessageEncoder { @Override public void encode(Message message, ValuePacker packer) throws IOException { - FailureMessage failureMessage = (FailureMessage) message; + var failureMessage = (FailureMessage) message; packer.packStructHeader(1, failureMessage.signature()); Map body = new HashMap<>(); body.put("code", Values.value(failureMessage.code())); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java index c34fb2dd84..3bf981a611 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java @@ -36,7 +36,6 @@ import org.neo4j.driver.internal.messaging.response.SuccessMessage; import org.neo4j.driver.internal.messaging.v3.MessageFormatV3; import org.neo4j.driver.internal.packstream.PackOutput; -import org.neo4j.driver.internal.types.TypeConstructor; import org.neo4j.driver.internal.util.Iterables; import org.neo4j.driver.internal.value.InternalValue; import org.neo4j.driver.types.Entity; @@ -96,20 +95,20 @@ private static class KnowledgeableValuePacker extends CommonValuePacker { @Override protected void packInternalValue(InternalValue value) throws IOException { - TypeConstructor typeConstructor = value.typeConstructor(); + var typeConstructor = value.typeConstructor(); switch (typeConstructor) { case NODE: - Node node = value.asNode(); + var node = value.asNode(); packNode(node); break; case RELATIONSHIP: - Relationship rel = value.asRelationship(); + var rel = value.asRelationship(); packRelationship(rel); break; case PATH: - Path path = value.asPath(); + var path = value.asPath(); packPath(path); break; default: @@ -123,25 +122,25 @@ private void packPath(Path path) throws IOException { // Unique nodes Map nodeIdx = Iterables.newLinkedHashMapWithSize(path.length() + 1); - for (Node node : path.nodes()) { + for (var node : path.nodes()) { if (!nodeIdx.containsKey(node)) { nodeIdx.put(node, nodeIdx.size()); } } packer.packListHeader(nodeIdx.size()); - for (Node node : nodeIdx.keySet()) { + for (var node : nodeIdx.keySet()) { packNode(node); } // Unique rels Map relIdx = Iterables.newLinkedHashMapWithSize(path.length()); - for (Relationship rel : path.relationships()) { + for (var rel : path.relationships()) { if (!relIdx.containsKey(rel)) { relIdx.put(rel, relIdx.size() + 1); } } packer.packListHeader(relIdx.size()); - for (Relationship rel : relIdx.keySet()) { + for (var rel : relIdx.keySet()) { packer.packStructHeader(elementIdEnabled ? 4 : 3, CommonValueUnpacker.UNBOUND_RELATIONSHIP); packer.pack(rel.id()); packer.pack(rel.type()); @@ -153,11 +152,11 @@ private void packPath(Path path) throws IOException { // Sequence packer.packListHeader(path.length() * 2); - for (Path.Segment seg : path) { - Relationship rel = seg.relationship(); - long relEndId = rel.endNodeId(); - long segEndId = seg.end().id(); - int size = relEndId == segEndId ? relIdx.get(rel) : -relIdx.get(rel); + for (var seg : path) { + var rel = seg.relationship(); + var relEndId = rel.endNodeId(); + var segEndId = seg.end().id(); + var size = relEndId == segEndId ? relIdx.get(rel) : -relIdx.get(rel); packer.pack(size); packer.pack(nodeIdx.get(seg.end())); } @@ -186,9 +185,9 @@ private void packNode(Node node) throws IOException { packer.packStructHeader(elementIdEnabled ? 4 : 3, CommonValueUnpacker.NODE); packer.pack(node.id()); - Iterable labels = node.labels(); + var labels = node.labels(); packer.packListHeader(Iterables.count(labels)); - for (String label : labels) { + for (var label : labels) { packer.pack(label); } @@ -200,9 +199,9 @@ private void packNode(Node node) throws IOException { } private void packProperties(Entity entity) throws IOException { - Iterable keys = entity.keys(); + var keys = entity.keys(); packer.packMapHeader(entity.size()); - for (String propKey : keys) { + for (var propKey : keys) { packer.pack(propKey); packInternalValue((InternalValue) entity.get(propKey)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/RecordMessageEncoder.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/RecordMessageEncoder.java index 2e97849500..6c79cf2bea 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/RecordMessageEncoder.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/RecordMessageEncoder.java @@ -21,7 +21,6 @@ import static org.neo4j.driver.Values.value; import java.io.IOException; -import org.neo4j.driver.Value; import org.neo4j.driver.internal.messaging.Message; import org.neo4j.driver.internal.messaging.MessageEncoder; import org.neo4j.driver.internal.messaging.ValuePacker; @@ -30,8 +29,8 @@ public class RecordMessageEncoder implements MessageEncoder { @Override public void encode(Message message, ValuePacker packer) throws IOException { - RecordMessage recordMessage = (RecordMessage) message; - Value[] fields = recordMessage.fields(); + var recordMessage = (RecordMessage) message; + var fields = recordMessage.fields(); packer.packStructHeader(1, recordMessage.signature()); packer.pack(value(fields)); // pack list of fields } diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/SuccessMessageEncoder.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/SuccessMessageEncoder.java index 82ebe6ed68..fcca93862a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/SuccessMessageEncoder.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/SuccessMessageEncoder.java @@ -27,7 +27,7 @@ public class SuccessMessageEncoder implements MessageEncoder { @Override public void encode(Message message, ValuePacker packer) throws IOException { - SuccessMessage successMessage = (SuccessMessage) message; + var successMessage = (SuccessMessage) message; packer.packStructHeader(1, successMessage.signature()); packer.pack(successMessage.metadata()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/BooleanValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/BooleanValueTest.java index bbaf68b40e..5589fb5ba5 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/BooleanValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/BooleanValueTest.java @@ -37,7 +37,7 @@ class BooleanValueTest { @Test void testBooleanTrue() { // Given - BooleanValue value = TRUE; + var value = TRUE; // Then assertThat(value.asBoolean(), equalTo(true)); @@ -48,7 +48,7 @@ void testBooleanTrue() { @Test void testBooleanFalse() { // Given - BooleanValue value = FALSE; + var value = FALSE; // Then assertThat(value.asBoolean(), equalTo(false)); @@ -59,7 +59,7 @@ void testBooleanFalse() { @Test void testIsBoolean() { // Given - BooleanValue value = TRUE; + var value = TRUE; // Then assertThat(typeSystem.BOOLEAN().isTypeOf(value), equalTo(true)); @@ -68,8 +68,8 @@ void testIsBoolean() { @Test void testEquals() { // Given - BooleanValue firstValue = TRUE; - BooleanValue secondValue = TRUE; + var firstValue = TRUE; + var secondValue = TRUE; // Then assertThat(firstValue, equalTo(secondValue)); @@ -78,7 +78,7 @@ void testEquals() { @Test void testHashCode() { // Given - BooleanValue value = TRUE; + var value = TRUE; // Then assertThat(value.hashCode(), notNullValue()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/BytesValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/BytesValueTest.java index d2ae3cf83b..7a8454869c 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/BytesValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/BytesValueTest.java @@ -37,7 +37,7 @@ class BytesValueTest { @Test void testBytesValue() { // Given - BytesValue value = new BytesValue(TEST_BYTES); + var value = new BytesValue(TEST_BYTES); // Then assertThat(value.asObject(), equalTo(TEST_BYTES)); @@ -46,7 +46,7 @@ void testBytesValue() { @Test void testIsBytes() { // Given - BytesValue value = new BytesValue(TEST_BYTES); + var value = new BytesValue(TEST_BYTES); // Then assertThat(typeSystem.BYTES().isTypeOf(value), equalTo(true)); @@ -55,8 +55,8 @@ void testIsBytes() { @Test void testEquals() { // Given - BytesValue firstValue = new BytesValue(TEST_BYTES); - BytesValue secondValue = new BytesValue(TEST_BYTES); + var firstValue = new BytesValue(TEST_BYTES); + var secondValue = new BytesValue(TEST_BYTES); // Then assertThat(firstValue, equalTo(secondValue)); @@ -65,7 +65,7 @@ void testEquals() { @Test void testHashCode() { // Given - BytesValue value = new BytesValue(TEST_BYTES); + var value = new BytesValue(TEST_BYTES); // Then assertThat(value.hashCode(), notNullValue()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/DateTimeValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/DateTimeValueTest.java index 361c097254..6ce72e9668 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/DateTimeValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/DateTimeValueTest.java @@ -31,40 +31,40 @@ class DateTimeValueTest { @Test void shouldHaveCorrectType() { - ZonedDateTime dateTime = ZonedDateTime.of(1991, 2, 24, 12, 0, 0, 999_000, ZoneOffset.ofHours(-5)); - DateTimeValue dateTimeValue = new DateTimeValue(dateTime); + var dateTime = ZonedDateTime.of(1991, 2, 24, 12, 0, 0, 999_000, ZoneOffset.ofHours(-5)); + var dateTimeValue = new DateTimeValue(dateTime); assertEquals(InternalTypeSystem.TYPE_SYSTEM.DATE_TIME(), dateTimeValue.type()); } @Test void shouldSupportAsObject() { - ZonedDateTime dateTime = ZonedDateTime.of(2015, 8, 2, 23, 59, 59, 999_999, ZoneId.of("Europe/Stockholm")); - DateTimeValue dateTimeValue = new DateTimeValue(dateTime); + var dateTime = ZonedDateTime.of(2015, 8, 2, 23, 59, 59, 999_999, ZoneId.of("Europe/Stockholm")); + var dateTimeValue = new DateTimeValue(dateTime); assertEquals(dateTime, dateTimeValue.asObject()); } @Test void shouldSupportAsZonedDateTime() { - ZonedDateTime dateTime = ZonedDateTime.of(1822, 9, 24, 9, 23, 57, 123, ZoneOffset.ofHoursMinutes(12, 15)); - DateTimeValue dateTimeValue = new DateTimeValue(dateTime); + var dateTime = ZonedDateTime.of(1822, 9, 24, 9, 23, 57, 123, ZoneOffset.ofHoursMinutes(12, 15)); + var dateTimeValue = new DateTimeValue(dateTime); assertEquals(dateTime, dateTimeValue.asZonedDateTime()); } @Test void shouldSupportAsOffsetDateTime() { - ZonedDateTime dateTimeWithOffset = ZonedDateTime.of(2019, 1, 2, 3, 14, 22, 100, ZoneOffset.ofHours(-5)); - DateTimeValue dateTimeValue1 = new DateTimeValue(dateTimeWithOffset); + var dateTimeWithOffset = ZonedDateTime.of(2019, 1, 2, 3, 14, 22, 100, ZoneOffset.ofHours(-5)); + var dateTimeValue1 = new DateTimeValue(dateTimeWithOffset); assertEquals(dateTimeWithOffset.toOffsetDateTime(), dateTimeValue1.asOffsetDateTime()); - ZonedDateTime dateTimeWithZoneId = ZonedDateTime.of(2000, 11, 8, 5, 57, 59, 1, ZoneId.of("Europe/Stockholm")); - DateTimeValue dateTimeValue2 = new DateTimeValue(dateTimeWithZoneId); + var dateTimeWithZoneId = ZonedDateTime.of(2000, 11, 8, 5, 57, 59, 1, ZoneId.of("Europe/Stockholm")); + var dateTimeValue2 = new DateTimeValue(dateTimeWithZoneId); assertEquals(dateTimeWithZoneId.toOffsetDateTime(), dateTimeValue2.asOffsetDateTime()); } @Test void shouldNotSupportAsLong() { - ZonedDateTime dateTime = ZonedDateTime.now(); - DateTimeValue dateTimeValue = new DateTimeValue(dateTime); + var dateTime = ZonedDateTime.now(); + var dateTimeValue = new DateTimeValue(dateTime); assertThrows(Uncoercible.class, dateTimeValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/DateValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/DateValueTest.java index fb0d793c74..275e334c96 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/DateValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/DateValueTest.java @@ -29,29 +29,29 @@ class DateValueTest { @Test void shouldHaveCorrectType() { - LocalDate localDate = LocalDate.now(); - DateValue dateValue = new DateValue(localDate); + var localDate = LocalDate.now(); + var dateValue = new DateValue(localDate); assertEquals(InternalTypeSystem.TYPE_SYSTEM.DATE(), dateValue.type()); } @Test void shouldSupportAsObject() { - LocalDate localDate = LocalDate.now(); - DateValue dateValue = new DateValue(localDate); + var localDate = LocalDate.now(); + var dateValue = new DateValue(localDate); assertEquals(localDate, dateValue.asObject()); } @Test void shouldSupportAsLocalDate() { - LocalDate localDate = LocalDate.now(); - DateValue dateValue = new DateValue(localDate); + var localDate = LocalDate.now(); + var dateValue = new DateValue(localDate); assertEquals(localDate, dateValue.asLocalDate()); } @Test void shouldNotSupportAsLong() { - LocalDate localDate = LocalDate.now(); - DateValue dateValue = new DateValue(localDate); + var localDate = LocalDate.now(); + var dateValue = new DateValue(localDate); assertThrows(Uncoercible.class, dateValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/DurationValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/DurationValueTest.java index 89f47d43a1..b2b7e623e6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/DurationValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/DurationValueTest.java @@ -30,29 +30,29 @@ class DurationValueTest { @Test void shouldHaveCorrectType() { - IsoDuration duration = newDuration(1, 2, 3, 4); - DurationValue durationValue = new DurationValue(duration); + var duration = newDuration(1, 2, 3, 4); + var durationValue = new DurationValue(duration); assertEquals(InternalTypeSystem.TYPE_SYSTEM.DURATION(), durationValue.type()); } @Test void shouldSupportAsObject() { - IsoDuration duration = newDuration(11, 22, 33, 44); - DurationValue durationValue = new DurationValue(duration); + var duration = newDuration(11, 22, 33, 44); + var durationValue = new DurationValue(duration); assertEquals(duration, durationValue.asObject()); } @Test void shouldSupportAsOffsetTime() { - IsoDuration duration = newDuration(111, 222, 333, 444); - DurationValue durationValue = new DurationValue(duration); + var duration = newDuration(111, 222, 333, 444); + var durationValue = new DurationValue(duration); assertEquals(duration, durationValue.asIsoDuration()); } @Test void shouldNotSupportAsLong() { - IsoDuration duration = newDuration(1111, 2222, 3333, 4444); - DurationValue durationValue = new DurationValue(duration); + var duration = newDuration(1111, 2222, 3333, 4444); + var durationValue = new DurationValue(duration); assertThrows(Uncoercible.class, durationValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/FloatValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/FloatValueTest.java index 174393de3e..3f249a5d82 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/FloatValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/FloatValueTest.java @@ -37,7 +37,7 @@ class FloatValueTest { @Test void testZeroFloatValue() { // Given - FloatValue value = new FloatValue(0); + var value = new FloatValue(0); // Then assertThat(value.asInt(), equalTo(0)); @@ -49,7 +49,7 @@ void testZeroFloatValue() { @Test void testNonZeroFloatValue() { // Given - FloatValue value = new FloatValue(6.28); + var value = new FloatValue(6.28); // Then assertThat(value.asDouble(), equalTo(6.28)); @@ -58,7 +58,7 @@ void testNonZeroFloatValue() { @Test void testIsFloat() { // Given - FloatValue value = new FloatValue(6.28); + var value = new FloatValue(6.28); // Then assertThat(typeSystem.FLOAT().isTypeOf(value), equalTo(true)); @@ -67,8 +67,8 @@ void testIsFloat() { @Test void testEquals() { // Given - FloatValue firstValue = new FloatValue(6.28); - FloatValue secondValue = new FloatValue(6.28); + var firstValue = new FloatValue(6.28); + var secondValue = new FloatValue(6.28); // Then assertThat(firstValue, equalTo(secondValue)); @@ -77,7 +77,7 @@ void testEquals() { @Test void testHashCode() { // Given - FloatValue value = new FloatValue(6.28); + var value = new FloatValue(6.28); // Then assertThat(value.hashCode(), notNullValue()); @@ -97,15 +97,15 @@ void shouldTypeAsFloat() { @Test void shouldThrowIfFloatContainsDecimalWhenConverting() { - FloatValue value = new FloatValue(1.1); + var value = new FloatValue(1.1); assertThrows(LossyCoercion.class, value::asInt); } @Test void shouldThrowIfLargerThanIntegerMax() { - FloatValue value1 = new FloatValue(Integer.MAX_VALUE); - FloatValue value2 = new FloatValue(Integer.MAX_VALUE + 1L); + var value1 = new FloatValue(Integer.MAX_VALUE); + var value2 = new FloatValue(Integer.MAX_VALUE + 1L); assertThat(value1.asInt(), equalTo(Integer.MAX_VALUE)); assertThrows(LossyCoercion.class, value2::asInt); @@ -113,8 +113,8 @@ void shouldThrowIfLargerThanIntegerMax() { @Test void shouldThrowIfSmallerThanIntegerMin() { - FloatValue value1 = new FloatValue(Integer.MIN_VALUE); - FloatValue value2 = new FloatValue(Integer.MIN_VALUE - 1L); + var value1 = new FloatValue(Integer.MIN_VALUE); + var value2 = new FloatValue(Integer.MIN_VALUE - 1L); assertThat(value1.asInt(), equalTo(Integer.MIN_VALUE)); assertThrows(LossyCoercion.class, value2::asInt); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/IntegerValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/IntegerValueTest.java index 813bde4ebd..4a8bffabf9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/IntegerValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/IntegerValueTest.java @@ -37,7 +37,7 @@ class IntegerValueTest { @Test void testZeroIntegerValue() { // Given - IntegerValue value = new IntegerValue(0); + var value = new IntegerValue(0); // Then assertThat(value.asLong(), equalTo(0L)); @@ -50,7 +50,7 @@ void testZeroIntegerValue() { @Test void testNonZeroIntegerValue() { // Given - IntegerValue value = new IntegerValue(1); + var value = new IntegerValue(1); // Then assertThat(value.asLong(), equalTo(1L)); @@ -63,7 +63,7 @@ void testNonZeroIntegerValue() { @Test void testIsInteger() { // Given - IntegerValue value = new IntegerValue(1L); + var value = new IntegerValue(1L); // Then assertThat(typeSystem.INTEGER().isTypeOf(value), equalTo(true)); @@ -72,8 +72,8 @@ void testIsInteger() { @Test void testEquals() { // Given - IntegerValue firstValue = new IntegerValue(1); - IntegerValue secondValue = new IntegerValue(1); + var firstValue = new IntegerValue(1); + var secondValue = new IntegerValue(1); // Then assertThat(firstValue, equalTo(secondValue)); @@ -82,7 +82,7 @@ void testEquals() { @Test void testHashCode() { // Given - IntegerValue value = new IntegerValue(1L); + var value = new IntegerValue(1L); // Then assertThat(value.hashCode(), notNullValue()); @@ -102,8 +102,8 @@ void shouldTypeAsInteger() { @Test void shouldThrowIfLargerThanIntegerMax() { - IntegerValue value1 = new IntegerValue(Integer.MAX_VALUE); - IntegerValue value2 = new IntegerValue(Integer.MAX_VALUE + 1L); + var value1 = new IntegerValue(Integer.MAX_VALUE); + var value2 = new IntegerValue(Integer.MAX_VALUE + 1L); assertThat(value1.asInt(), equalTo(Integer.MAX_VALUE)); assertThrows(LossyCoercion.class, value2::asInt); @@ -111,8 +111,8 @@ void shouldThrowIfLargerThanIntegerMax() { @Test void shouldThrowIfSmallerThanIntegerMin() { - IntegerValue value1 = new IntegerValue(Integer.MIN_VALUE); - IntegerValue value2 = new IntegerValue(Integer.MIN_VALUE - 1L); + var value1 = new IntegerValue(Integer.MIN_VALUE); + var value2 = new IntegerValue(Integer.MIN_VALUE - 1L); assertThat(value1.asInt(), equalTo(Integer.MIN_VALUE)); assertThrows(LossyCoercion.class, value2::asInt); @@ -120,8 +120,8 @@ void shouldThrowIfSmallerThanIntegerMin() { @Test void shouldThrowIfLargerThan() { - IntegerValue value1 = new IntegerValue(9007199254740992L); - IntegerValue value2 = new IntegerValue(9007199254740993L); + var value1 = new IntegerValue(9007199254740992L); + var value2 = new IntegerValue(9007199254740993L); assertThat(value1.asDouble(), equalTo(9007199254740992D)); assertThrows(LossyCoercion.class, value2::asDouble); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/ListValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/ListValueTest.java index 93105b58f6..d35b494865 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/ListValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/ListValueTest.java @@ -29,14 +29,14 @@ class ListValueTest { @Test void shouldHaveSensibleToString() { - ListValue listValue = listValue(value(1), value(2), value(3)); + var listValue = listValue(value(1), value(2), value(3)); assertThat(listValue.toString(), equalTo("[1, 2, 3]")); } @Test void shouldHaveCorrectType() { - ListValue listValue = listValue(); + var listValue = listValue(); assertThat(listValue.type(), equalTo(InternalTypeSystem.TYPE_SYSTEM.LIST())); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/LocalDateTimeValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/LocalDateTimeValueTest.java index 55d0f20822..6b743c6d20 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/LocalDateTimeValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/LocalDateTimeValueTest.java @@ -32,29 +32,29 @@ class LocalDateTimeValueTest { @Test void shouldHaveCorrectType() { - LocalDateTime dateTime = LocalDateTime.of(1991, AUGUST, 24, 12, 0, 0); - LocalDateTimeValue dateTimeValue = new LocalDateTimeValue(dateTime); + var dateTime = LocalDateTime.of(1991, AUGUST, 24, 12, 0, 0); + var dateTimeValue = new LocalDateTimeValue(dateTime); assertEquals(InternalTypeSystem.TYPE_SYSTEM.LOCAL_DATE_TIME(), dateTimeValue.type()); } @Test void shouldSupportAsObject() { - LocalDateTime dateTime = LocalDateTime.of(2015, FEBRUARY, 2, 23, 59, 59, 999_999); - LocalDateTimeValue dateTimeValue = new LocalDateTimeValue(dateTime); + var dateTime = LocalDateTime.of(2015, FEBRUARY, 2, 23, 59, 59, 999_999); + var dateTimeValue = new LocalDateTimeValue(dateTime); assertEquals(dateTime, dateTimeValue.asObject()); } @Test void shouldSupportAsLocalDateTime() { - LocalDateTime dateTime = LocalDateTime.of(1822, JANUARY, 24, 9, 23, 57, 123); - LocalDateTimeValue dateTimeValue = new LocalDateTimeValue(dateTime); + var dateTime = LocalDateTime.of(1822, JANUARY, 24, 9, 23, 57, 123); + var dateTimeValue = new LocalDateTimeValue(dateTime); assertEquals(dateTime, dateTimeValue.asLocalDateTime()); } @Test void shouldNotSupportAsLong() { - LocalDateTime dateTime = LocalDateTime.now(); - LocalDateTimeValue dateTimeValue = new LocalDateTimeValue(dateTime); + var dateTime = LocalDateTime.now(); + var dateTimeValue = new LocalDateTimeValue(dateTime); assertThrows(Uncoercible.class, dateTimeValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/LocalTimeValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/LocalTimeValueTest.java index b927f2a5f7..c39bebbc82 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/LocalTimeValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/LocalTimeValueTest.java @@ -29,29 +29,29 @@ class LocalTimeValueTest { @Test void shouldHaveCorrectType() { - LocalTime time = LocalTime.of(23, 59, 59); - LocalTimeValue timeValue = new LocalTimeValue(time); + var time = LocalTime.of(23, 59, 59); + var timeValue = new LocalTimeValue(time); assertEquals(InternalTypeSystem.TYPE_SYSTEM.LOCAL_TIME(), timeValue.type()); } @Test void shouldSupportAsObject() { - LocalTime time = LocalTime.of(1, 17, 59, 999); - LocalTimeValue timeValue = new LocalTimeValue(time); + var time = LocalTime.of(1, 17, 59, 999); + var timeValue = new LocalTimeValue(time); assertEquals(time, timeValue.asObject()); } @Test void shouldSupportAsLocalTime() { - LocalTime time = LocalTime.of(12, 59, 12, 999_999_999); - LocalTimeValue timeValue = new LocalTimeValue(time); + var time = LocalTime.of(12, 59, 12, 999_999_999); + var timeValue = new LocalTimeValue(time); assertEquals(time, timeValue.asLocalTime()); } @Test void shouldNotSupportAsLong() { - LocalTime time = LocalTime.now(); - LocalTimeValue timeValue = new LocalTimeValue(time); + var time = LocalTime.now(); + var timeValue = new LocalTimeValue(time); assertThrows(Uncoercible.class, timeValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/MapValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/MapValueTest.java index 527d8cde8a..105d566d8d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/MapValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/MapValueTest.java @@ -31,33 +31,33 @@ class MapValueTest { @Test void shouldHaveSensibleToString() { - MapValue mapValue = mapValue(); + var mapValue = mapValue(); assertThat(mapValue.toString(), equalTo("{k1: \"v1\", k2: 42}")); } @Test void shouldHaveCorrectPropertyCount() { - MapValue mapValue = mapValue(); + var mapValue = mapValue(); assertThat(mapValue.size(), equalTo(2)); } @Test void shouldHaveCorrectType() { - MapValue map = mapValue(); + var map = mapValue(); assertThat(map.type(), equalTo(InternalTypeSystem.TYPE_SYSTEM.MAP())); } @Test void shouldNotBeNull() { - MapValue map = mapValue(); + var map = mapValue(); assertFalse(map.isNull()); } private MapValue mapValue() { - HashMap map = new HashMap<>(); + var map = new HashMap(); map.put("k1", value("v1")); map.put("k2", value(42)); return new MapValue(map); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/NullValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/NullValueTest.java index bcc3431cc0..5419a5bf07 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/NullValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/NullValueTest.java @@ -56,7 +56,7 @@ void shouldTypeAsNull() { @Test void shouldReturnNativeTypesAsDefaultValue() { - Value value = NullValue.NULL; + var value = NullValue.NULL; // string assertThat(value.asString("string value"), equalTo("string value")); @@ -123,7 +123,7 @@ void shouldReturnAsDefaultValue() { } private static void assertComputeOrDefaultReturnDefault(Function f, T defaultAndExpectedValue) { - Value value = NullValue.NULL; + var value = NullValue.NULL; assertThat(value.computeOrDefault(f, defaultAndExpectedValue), equalTo(defaultAndExpectedValue)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/StringValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/StringValueTest.java index 1cc503635f..b0abcac2d3 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/StringValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/StringValueTest.java @@ -35,7 +35,7 @@ class StringValueTest { @Test void testStringValue() { // Given - StringValue value = new StringValue("Spongebob"); + var value = new StringValue("Spongebob"); // Then assertThat(value.asString(), equalTo("Spongebob")); @@ -44,7 +44,7 @@ void testStringValue() { @Test void testIsString() { // Given - StringValue value = new StringValue("Spongebob"); + var value = new StringValue("Spongebob"); // Then assertThat(typeSystem.STRING().isTypeOf(value), equalTo(true)); @@ -53,8 +53,8 @@ void testIsString() { @Test void testEquals() { // Given - StringValue firstValue = new StringValue("Spongebob"); - StringValue secondValue = new StringValue("Spongebob"); + var firstValue = new StringValue("Spongebob"); + var secondValue = new StringValue("Spongebob"); // Then assertThat(firstValue, equalTo(secondValue)); @@ -63,7 +63,7 @@ void testEquals() { @Test void testHashCode() { // Given - StringValue value = new StringValue("Spongebob"); + var value = new StringValue("Spongebob"); // Then assertThat(value.hashCode(), notNullValue()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/value/TimeValueTest.java b/driver/src/test/java/org/neo4j/driver/internal/value/TimeValueTest.java index 7a07bf674b..b8bfe25025 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/value/TimeValueTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/value/TimeValueTest.java @@ -30,29 +30,29 @@ class TimeValueTest { @Test void shouldHaveCorrectType() { - OffsetTime time = OffsetTime.now().withOffsetSameInstant(ZoneOffset.ofHoursMinutes(5, 30)); - TimeValue timeValue = new TimeValue(time); + var time = OffsetTime.now().withOffsetSameInstant(ZoneOffset.ofHoursMinutes(5, 30)); + var timeValue = new TimeValue(time); assertEquals(InternalTypeSystem.TYPE_SYSTEM.TIME(), timeValue.type()); } @Test void shouldSupportAsObject() { - OffsetTime time = OffsetTime.of(19, 0, 10, 1, ZoneOffset.ofHours(-3)); - TimeValue timeValue = new TimeValue(time); + var time = OffsetTime.of(19, 0, 10, 1, ZoneOffset.ofHours(-3)); + var timeValue = new TimeValue(time); assertEquals(time, timeValue.asObject()); } @Test void shouldSupportAsOffsetTime() { - OffsetTime time = OffsetTime.of(23, 59, 59, 999_999_999, ZoneOffset.ofHoursMinutes(2, 15)); - TimeValue timeValue = new TimeValue(time); + var time = OffsetTime.of(23, 59, 59, 999_999_999, ZoneOffset.ofHoursMinutes(2, 15)); + var timeValue = new TimeValue(time); assertEquals(time, timeValue.asOffsetTime()); } @Test void shouldNotSupportAsLong() { - OffsetTime time = OffsetTime.now().withOffsetSameInstant(ZoneOffset.ofHours(-5)); - TimeValue timeValue = new TimeValue(time); + var time = OffsetTime.now().withOffsetSameInstant(ZoneOffset.ofHours(-5)); + var timeValue = new TimeValue(time); assertThrows(Uncoercible.class, timeValue::asLong); } diff --git a/driver/src/test/java/org/neo4j/driver/net/ServerAddressTest.java b/driver/src/test/java/org/neo4j/driver/net/ServerAddressTest.java index 2ea9515735..cc2306b6b7 100644 --- a/driver/src/test/java/org/neo4j/driver/net/ServerAddressTest.java +++ b/driver/src/test/java/org/neo4j/driver/net/ServerAddressTest.java @@ -26,7 +26,7 @@ class ServerAddressTest { @Test void shouldCreateAddress() { - ServerAddress address = ServerAddress.of("my.database.com", 8897); + var address = ServerAddress.of("my.database.com", 8897); assertEquals("my.database.com", address.host()); assertEquals(8897, address.port()); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java index df96811605..14a40bca95 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java @@ -35,9 +35,7 @@ import static org.neo4j.driver.Values.point; import java.lang.management.ManagementFactory; -import java.lang.management.OperatingSystemMXBean; import java.lang.reflect.Array; -import java.lang.reflect.Method; import java.net.URI; import java.time.Duration; import java.time.LocalDate; @@ -74,9 +72,6 @@ import org.neo4j.driver.Logger; import org.neo4j.driver.Logging; import org.neo4j.driver.Query; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; @@ -86,7 +81,6 @@ import org.neo4j.driver.internal.logging.DevNullLogger; import org.neo4j.driver.internal.util.Futures; import org.neo4j.driver.internal.util.Iterables; -import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.testutil.DaemonThreadFactory; import org.neo4j.driver.types.Node; @@ -152,20 +146,20 @@ void rxApiStressTest() throws Throwable { @Test void blockingApiBigDataTest() { - Bookmark bookmark = createNodesBlocking(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); + var bookmark = createNodesBlocking(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); readNodesBlocking(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); } @Test void asyncApiBigDataTest() throws Throwable { - Bookmark bookmark = createNodesAsync(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); + var bookmark = createNodesAsync(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); readNodesAsync(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); } @Test void rxApiBigDataTest() { assertRxIsAvailable(); - Bookmark bookmark = createNodesRx(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); + var bookmark = createNodesRx(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); readNodesRx(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); } @@ -174,14 +168,14 @@ private void assertRxIsAvailable() { } private void runStressTest(Function>> threadLauncher) throws Throwable { - C context = createContext(); - List> resultFutures = threadLauncher.apply(context); + var context = createContext(); + var resultFutures = threadLauncher.apply(context); - ResourcesInfo resourcesInfo = sleepAndGetResourcesInfo(); + var resourcesInfo = sleepAndGetResourcesInfo(); context.stop(); Throwable firstError = null; - for (Future future : resultFutures) { + for (var future : resultFutures) { try { assertNull(future.get(10, SECONDS)); } catch (Throwable error) { @@ -205,7 +199,7 @@ private void runStressTest(Function>> threadLauncher) throws T abstract Config.ConfigBuilder config(Config.ConfigBuilder builder); Config config() { - Config.ConfigBuilder builder = Config.builder() + var builder = Config.builder() .withLogging(logging) .withMaxConnectionPoolSize(100) .withConnectionAcquisitionTimeout(1, MINUTES); @@ -231,11 +225,11 @@ List> createTestSpecificRxCommands() { abstract void printStats(A context); private List> launchBlockingWorkerThreads(C context) { - List> commands = createBlockingCommands(); + var commands = createBlockingCommands(); List> futures = new ArrayList<>(); - for (int i = 0; i < THREAD_COUNT; i++) { - Future future = launchBlockingWorkerThread(executor, commands, context); + for (var i = 0; i < THREAD_COUNT; i++) { + var future = launchBlockingWorkerThread(executor, commands, context); futures.add(future); } @@ -266,7 +260,7 @@ private Future launchBlockingWorkerThread( ExecutorService executor, List> commands, C context) { return executor.submit(() -> { while (!context.isStopped()) { - BlockingCommand command = randomOf(commands); + var command = randomOf(commands); command.execute(context); } return null; @@ -274,11 +268,11 @@ private Future launchBlockingWorkerThread( } private List> launchRxWorkerThreads(C context) { - List> commands = createRxCommands(); + var commands = createRxCommands(); List> futures = new ArrayList<>(); - for (int i = 0; i < THREAD_COUNT; i++) { - Future future = launchRxWorkerThread(executor, commands, context); + for (var i = 0; i < THREAD_COUNT; i++) { + var future = launchRxWorkerThread(executor, commands, context); futures.add(future); } return futures; @@ -303,7 +297,7 @@ private List> createRxCommands() { private Future launchRxWorkerThread(ExecutorService executor, List> commands, C context) { return executor.submit(() -> { while (!context.isStopped()) { - CompletableFuture allCommands = executeRxCommands(context, commands, ASYNC_BATCH_SIZE); + var allCommands = executeRxCommands(context, commands, ASYNC_BATCH_SIZE); assertNull(allCommands.get()); } return null; @@ -312,22 +306,21 @@ private Future launchRxWorkerThread(ExecutorService executor, List executeRxCommands(C context, List> commands, int count) { @SuppressWarnings("unchecked") - CompletableFuture[] executions = - (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); - for (int i = 0; i < count; i++) { - RxCommand command = randomOf(commands); - CompletionStage execution = command.execute(context); + var executions = (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); + for (var i = 0; i < count; i++) { + var command = randomOf(commands); + var execution = command.execute(context); executions[i] = execution.toCompletableFuture(); } return CompletableFuture.allOf(executions); } private List> launchAsyncWorkerThreads(C context) { - List> commands = createAsyncCommands(); + var commands = createAsyncCommands(); List> futures = new ArrayList<>(); - for (int i = 0; i < THREAD_COUNT; i++) { - Future future = launchAsyncWorkerThread(executor, commands, context); + for (var i = 0; i < THREAD_COUNT; i++) { + var future = launchAsyncWorkerThread(executor, commands, context); futures.add(future); } @@ -353,7 +346,7 @@ private List> createAsyncCommands() { private Future launchAsyncWorkerThread(ExecutorService executor, List> commands, C context) { return executor.submit(() -> { while (!context.isStopped()) { - CompletableFuture allCommands = executeAsyncCommands(context, commands, ASYNC_BATCH_SIZE); + var allCommands = executeAsyncCommands(context, commands, ASYNC_BATCH_SIZE); assertNull(allCommands.get()); } return null; @@ -362,27 +355,26 @@ private Future launchAsyncWorkerThread(ExecutorService executor, List executeAsyncCommands(C context, List> commands, int count) { @SuppressWarnings("unchecked") - CompletableFuture[] executions = - (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); - for (int i = 0; i < count; i++) { - AsyncCommand command = randomOf(commands); - CompletionStage execution = command.execute(context); + var executions = (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); + for (var i = 0; i < count; i++) { + var command = randomOf(commands); + var execution = command.execute(context); executions[i] = execution.toCompletableFuture(); } return CompletableFuture.allOf(executions); } private ResourcesInfo sleepAndGetResourcesInfo() throws InterruptedException { - int halfSleepSeconds = Math.max(1, EXECUTION_TIME_SECONDS / 2); + var halfSleepSeconds = Math.max(1, EXECUTION_TIME_SECONDS / 2); SECONDS.sleep(halfSleepSeconds); - ResourcesInfo resourcesInfo = getResourcesInfo(); + var resourcesInfo = getResourcesInfo(); SECONDS.sleep(halfSleepSeconds); return resourcesInfo; } private ResourcesInfo getResourcesInfo() { - long openFileDescriptorCount = getOpenFileDescriptorCount(); - Set acquiredLoggerNames = logging.getAcquiredLoggerNames(); + var openFileDescriptorCount = getOpenFileDescriptorCount(); + var acquiredLoggerNames = logging.getAcquiredLoggerNames(); return new ResourcesInfo(openFileDescriptorCount, acquiredLoggerNames); } @@ -396,8 +388,8 @@ private void assertNoFileDescriptorLeak(long previousOpenFileDescriptors) { System.out.println("Initially open file descriptors: " + previousOpenFileDescriptors); // number of open file descriptors should not go up for more than 50% - long maxOpenFileDescriptors = (long) (previousOpenFileDescriptors * 1.5); - long currentOpenFileDescriptorCount = getOpenFileDescriptorCount(); + var maxOpenFileDescriptors = (long) (previousOpenFileDescriptors * 1.5); + var currentOpenFileDescriptorCount = getOpenFileDescriptorCount(); System.out.println("Currently open file descriptors: " + currentOpenFileDescriptorCount); assertThat( @@ -407,7 +399,7 @@ private void assertNoFileDescriptorLeak(long previousOpenFileDescriptors) { } private void assertNoLoggersLeak(Set previousAcquiredLoggerNames) { - Set currentAcquiredLoggerNames = logging.getAcquiredLoggerNames(); + var currentAcquiredLoggerNames = logging.getAcquiredLoggerNames(); assertThat( "Unexpected amount of logger instances", currentAcquiredLoggerNames, @@ -415,20 +407,19 @@ private void assertNoLoggersLeak(Set previousAcquiredLoggerNames) { } private void assertExpectedNumberOfNodesCreated(long expectedCount) { - try (Session session = driver.session()) { - List records = - session.run("MATCH (n) RETURN count(n) AS nodesCount").list(); + try (var session = driver.session()) { + var records = session.run("MATCH (n) RETURN count(n) AS nodesCount").list(); assertEquals(1, records.size()); - Record record = records.get(0); - long actualCount = record.get("nodesCount").asLong(); + var record = records.get(0); + var actualCount = record.get("nodesCount").asLong(); assertEquals(expectedCount, actualCount, "Unexpected number of nodes in the database"); } } private static long getOpenFileDescriptorCount() { try { - OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); - Method method = osBean.getClass().getDeclaredMethod("getOpenFileDescriptorCount"); + var osBean = ManagementFactory.getOperatingSystemMXBean(); + var method = osBean.getClass().getDeclaredMethod("getOpenFileDescriptorCount"); method.setAccessible(true); return (long) method.invoke(osBean); } catch (Throwable t) { @@ -445,7 +436,7 @@ private static Throwable withSuppressed(Throwable firstError, Throwable newError } private static T randomOf(List elements) { - int index = ThreadLocalRandom.current().nextInt(elements.size()); + var index = ThreadLocalRandom.current().nextInt(elements.size()); return elements.get(index); } @@ -460,15 +451,15 @@ private static int bigDataTestBatchCount() { private static Bookmark createNodesBlocking(int batchCount, int batchSize, Driver driver) { Bookmark bookmark; - long start = System.nanoTime(); - try (Session session = driver.session()) { - for (int i = 0; i < batchCount; i++) { - int batchIndex = i; + var start = System.nanoTime(); + try (var session = driver.session()) { + for (var i = 0; i < batchCount; i++) { + var batchIndex = i; session.writeTransaction(tx -> createNodesInTx(tx, batchIndex, batchSize)); } bookmark = session.lastBookmark(); } - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Node creation with blocking API took: " + NANOSECONDS.toMillis(end - start) + "ms"); return bookmark; @@ -476,17 +467,17 @@ private static Bookmark createNodesBlocking(int batchCount, int batchSize, Drive @SuppressWarnings("deprecation") private static void readNodesBlocking(Driver driver, Bookmark bookmark, int expectedNodeCount) { - long start = System.nanoTime(); - try (Session session = driver.session(builder().withBookmarks(bookmark).build())) { + var start = System.nanoTime(); + try (var session = driver.session(builder().withBookmarks(bookmark).build())) { int nodesProcessed = session.readTransaction(tx -> { - Result result = tx.run("MATCH (n:Node) RETURN n"); + var result = tx.run("MATCH (n:Node) RETURN n"); - int nodesSeen = 0; + var nodesSeen = 0; while (result.hasNext()) { - Node node = result.next().get(0).asNode(); + var node = result.next().get(0).asNode(); nodesSeen++; - List labels = Iterables.asList(node.labels()); + var labels = Iterables.asList(node.labels()); assertEquals(2, labels.size()); assertTrue(labels.contains("Test")); assertTrue(labels.contains("Node")); @@ -498,31 +489,31 @@ private static void readNodesBlocking(Driver driver, Bookmark bookmark, int expe assertEquals(expectedNodeCount, nodesProcessed); } - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Reading nodes with blocking API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } @SuppressWarnings("deprecation") private static Bookmark createNodesAsync(int batchCount, int batchSize, Driver driver) throws Throwable { - long start = System.nanoTime(); + var start = System.nanoTime(); - AsyncSession session = driver.session(AsyncSession.class); + var session = driver.session(AsyncSession.class); CompletableFuture writeTransactions = completedFuture(null); - for (int i = 0; i < batchCount; i++) { - int batchIndex = i; + for (var i = 0; i < batchCount; i++) { + var batchIndex = i; writeTransactions = writeTransactions.thenCompose( ignore -> session.writeTransactionAsync(tx -> createNodesInTxAsync(tx, batchIndex, batchSize))); } writeTransactions = writeTransactions.exceptionally(error -> error).thenCompose(error -> safeCloseSession(session, error)); - Throwable error = Futures.blockingGet(writeTransactions); + var error = Futures.blockingGet(writeTransactions); if (error != null) { throw error; } - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Node creation with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); return session.lastBookmark(); @@ -530,18 +521,18 @@ private static Bookmark createNodesAsync(int batchCount, int batchSize, Driver d @SuppressWarnings("deprecation") private static void readNodesAsync(Driver driver, Bookmark bookmark, int expectedNodeCount) throws Throwable { - long start = System.nanoTime(); + var start = System.nanoTime(); - AsyncSession session = driver.session( + var session = driver.session( AsyncSession.class, builder().withBookmarks(bookmark).build()); - AtomicInteger nodesSeen = new AtomicInteger(); + var nodesSeen = new AtomicInteger(); - CompletionStage readQuery = session.readTransactionAsync(tx -> tx.runAsync("MATCH (n:Node) RETURN n") + var readQuery = session.readTransactionAsync(tx -> tx.runAsync("MATCH (n:Node) RETURN n") .thenCompose(cursor -> cursor.forEachAsync(record -> { - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); nodesSeen.incrementAndGet(); - List labels = Iterables.asList(node.labels()); + var labels = Iterables.asList(node.labels()); assertEquals(2, labels.size()); assertTrue(labels.contains("Test")); assertTrue(labels.contains("Node")); @@ -552,29 +543,29 @@ private static void readNodesAsync(Driver driver, Bookmark bookmark, int expecte .exceptionally(error -> error) .thenCompose(error -> safeCloseSession(session, error)); - Throwable error = Futures.blockingGet(readQuery); + var error = Futures.blockingGet(readQuery); if (error != null) { throw error; } assertEquals(expectedNodeCount, nodesSeen.get()); - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Reading nodes with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } @SuppressWarnings("deprecation") private Bookmark createNodesRx(int batchCount, int batchSize, InternalDriver driver) { - long start = System.nanoTime(); + var start = System.nanoTime(); - RxSession session = driver.rxSession(); + var session = driver.rxSession(); Flux.concat(Flux.range(0, batchCount) .map(batchIndex -> session.writeTransaction(tx -> createNodesInTxRx(tx, batchIndex, batchSize)))) .blockLast(); // throw any error if happened - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Node creation with reactive API took: " + NANOSECONDS.toMillis(end - start) + "ms"); return session.lastBookmark(); @@ -585,25 +576,25 @@ private Publisher createNodesInTxRx(RxTransaction tx, int batchIndex, int return Flux.concat(Flux.range(0, batchSize) .map(index -> batchIndex * batchSize + index) .map(nodeIndex -> { - Query query = createNodeInTxQuery(nodeIndex); + var query = createNodeInTxQuery(nodeIndex); return Flux.from(tx.run(query).consume()).then(); // As long as there is no error })); } @SuppressWarnings("deprecation") private void readNodesRx(InternalDriver driver, Bookmark bookmark, int expectedNodeCount) { - long start = System.nanoTime(); + var start = System.nanoTime(); - RxSession session = driver.rxSession(builder().withBookmarks(bookmark).build()); - AtomicInteger nodesSeen = new AtomicInteger(); + var session = driver.rxSession(builder().withBookmarks(bookmark).build()); + var nodesSeen = new AtomicInteger(); - Publisher readQuery = session.readTransaction( + var readQuery = session.readTransaction( tx -> Flux.from(tx.run("MATCH (n:Node) RETURN n").records()) .doOnNext(record -> { - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); nodesSeen.incrementAndGet(); - List labels = Iterables.asList(node.labels()); + var labels = Iterables.asList(node.labels()); assertEquals(2, labels.size()); assertTrue(labels.contains("Test")); assertTrue(labels.contains("Node")); @@ -616,20 +607,20 @@ private void readNodesRx(InternalDriver driver, Bookmark bookmark, int expectedN assertEquals(expectedNodeCount, nodesSeen.get()); - long end = System.nanoTime(); + var end = System.nanoTime(); System.out.println("Reading nodes with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } private static Void createNodesInTx(Transaction tx, int batchIndex, int batchSize) { - for (int index = 0; index < batchSize; index++) { - int nodeIndex = batchIndex * batchSize + index; + for (var index = 0; index < batchSize; index++) { + var nodeIndex = batchIndex * batchSize + index; createNodeInTx(tx, nodeIndex); } return null; } private static void createNodeInTx(Transaction tx, int nodeIndex) { - Query query = createNodeInTxQuery(nodeIndex); + var query = createNodeInTxQuery(nodeIndex); tx.run(query).consume(); } @@ -646,7 +637,7 @@ private static CompletionStage createNodesInTxAsync(AsyncTransaction } private static CompletableFuture createNodeInTxAsync(AsyncTransaction tx, int nodeIndex) { - Query query = createNodeInTxQuery(nodeIndex); + var query = createNodeInTxQuery(nodeIndex); return tx.runAsync(query) .thenCompose(ResultCursor::consumeAsync) .thenApply(ignore -> (Void) null) @@ -654,7 +645,7 @@ private static CompletableFuture createNodeInTxAsync(AsyncTransaction tx, } private static Query createNodeInTxQuery(int nodeIndex) { - String query = "CREATE (n:Test:Node) SET n = $props"; + var query = "CREATE (n:Test:Node) SET n = $props"; Map params = singletonMap("props", createNodeProperties(nodeIndex)); return new Query(query, params); } @@ -681,7 +672,7 @@ private static Map createNodeProperties(int nodeIndex) { } private static void verifyNodeProperties(Node node) { - int nodeIndex = node.get("index").asInt(); + var nodeIndex = node.get("index").asInt(); assertEquals("name-" + nodeIndex, node.get("name").asString()); assertEquals("surname-" + nodeIndex, node.get("surname").asString()); assertEquals(nCopies(10, (long) nodeIndex), node.get("long-indices").asList()); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQuery.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQuery.java index 17095a8de0..b465060c5b 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQuery.java @@ -26,7 +26,6 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.internal.util.Futures; @@ -37,7 +36,7 @@ public AsyncFailingQuery(Driver driver) { @Override public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); return session.runAsync("UNWIND [10, 5, 0] AS x RETURN 10 / x") .thenCompose(ResultCursor::listAsync) @@ -45,7 +44,7 @@ public CompletionStage execute(C context) { session.closeAsync(); assertNull(records); - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); return null; diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryInTx.java index 5ed4118bef..80d3b49dc6 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryInTx.java @@ -26,7 +26,6 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.internal.util.Futures; @@ -38,14 +37,14 @@ public AsyncFailingQueryInTx(Driver driver) { @Override public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); return session.beginTransactionAsync() .thenCompose(tx -> tx.runAsync("UNWIND [10, 5, 0] AS x RETURN 10 / x") .thenCompose(ResultCursor::listAsync) .handle((records, error) -> { assertNull(records); - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); return tx; diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryWithRetries.java index 3e6830b30d..197a3e5e7c 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncFailingQueryWithRetries.java @@ -23,12 +23,9 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.neo4j.driver.internal.util.Matchers.arithmeticError; -import java.util.List; import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Record; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.internal.util.Futures; @@ -40,14 +37,14 @@ public AsyncFailingQueryWithRetries(Driver driver) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); - CompletionStage> txStage = session.readTransactionAsync( + var txStage = session.readTransactionAsync( tx -> tx.runAsync("UNWIND [10, 5, 0] AS x RETURN 10 / x").thenCompose(ResultCursor::listAsync)); CompletionStage resultsProcessingStage = txStage.handle((records, error) -> { assertNull(records); - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); return null; diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQuery.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQuery.java index b0771e62f5..b91b882d0f 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQuery.java @@ -24,10 +24,8 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; public class AsyncReadQuery extends AbstractAsyncQuery { public AsyncReadQuery(Driver driver, boolean useBookmark) { @@ -36,9 +34,9 @@ public AsyncReadQuery(Driver driver, boolean useBookmark) { @Override public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); - CompletionStage queryFinished = session.runAsync("MATCH (n) RETURN n LIMIT 1") + var queryFinished = session.runAsync("MATCH (n) RETURN n LIMIT 1") .thenCompose(cursor -> cursor.nextAsync().thenCompose(record -> processAndGetSummary(record, cursor))); queryFinished.whenComplete((summary, error) -> { @@ -53,7 +51,7 @@ public CompletionStage execute(C context) { private CompletionStage processAndGetSummary(Record record, ResultCursor cursor) { if (record != null) { - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertNotNull(node); } return cursor.consumeAsync(); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryInTx.java index 8d03569791..df46e963b4 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryInTx.java @@ -24,11 +24,9 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; public class AsyncReadQueryInTx extends AbstractAsyncQuery { public AsyncReadQueryInTx(Driver driver, boolean useBookmark) { @@ -37,9 +35,9 @@ public AsyncReadQueryInTx(Driver driver, boolean useBookmark) { @Override public CompletionStage execute(C ctx) { - AsyncSession session = newSession(AccessMode.READ, ctx); + var session = newSession(AccessMode.READ, ctx); - CompletionStage txCommitted = session.beginTransactionAsync() + var txCommitted = session.beginTransactionAsync() .thenCompose(tx -> tx.runAsync("MATCH (n) RETURN n LIMIT 1").thenCompose(cursor -> cursor.nextAsync() .thenCompose(record -> processRecordAndGetSummary(record, cursor) .thenCompose(summary -> processSummaryAndCommit(summary, tx, ctx))))); @@ -51,7 +49,7 @@ public CompletionStage execute(C ctx) { private CompletionStage processRecordAndGetSummary(Record record, ResultCursor cursor) { if (record != null) { - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertNotNull(node); } return cursor.consumeAsync(); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryWithRetries.java index cf17f4aade..91bbace3a9 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncReadQueryWithRetries.java @@ -24,10 +24,8 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; public class AsyncReadQueryWithRetries extends AbstractAsyncQuery { public AsyncReadQueryWithRetries(Driver driver, boolean useBookmark) { @@ -37,21 +35,20 @@ public AsyncReadQueryWithRetries(Driver driver, boolean useBookmark) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); - CompletionStage txStage = session.readTransactionAsync( + var txStage = session.readTransactionAsync( tx -> tx.runAsync("MATCH (n) RETURN n LIMIT 1").thenCompose(cursor -> cursor.nextAsync() .thenCompose(record -> processRecordAndGetSummary(record, cursor)))); - CompletionStage resultsProcessingStage = - txStage.thenApply(resultSummary -> processResultSummary(resultSummary, context)); + var resultsProcessingStage = txStage.thenApply(resultSummary -> processResultSummary(resultSummary, context)); return resultsProcessingStage.whenComplete((nothing, throwable) -> session.closeAsync()); } private CompletionStage processRecordAndGetSummary(Record record, ResultCursor cursor) { if (record != null) { - Node node = record.get(0).asNode(); + var node = record.get(0).asNode(); assertNotNull(node); } return cursor.consumeAsync(); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQuery.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQuery.java index 0ae34acfc2..26a84d8c7c 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQuery.java @@ -23,7 +23,6 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.internal.util.Futures; @@ -38,7 +37,7 @@ public AsyncWriteQuery(AbstractStressTestBase stressTest, Driver driver, bool @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.WRITE, context); + var session = newSession(AccessMode.WRITE, context); return session.runAsync("CREATE ()") .thenCompose(ResultCursor::consumeAsync) diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryInTx.java index 37c6d96acc..27bf80b584 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryInTx.java @@ -23,9 +23,7 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.internal.util.Futures; -import org.neo4j.driver.summary.ResultSummary; public class AsyncWriteQueryInTx extends AbstractAsyncQuery { private AbstractStressTestBase stressTest; @@ -38,9 +36,9 @@ public AsyncWriteQueryInTx(AbstractStressTestBase stressTest, Driver driver, @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.WRITE, context); + var session = newSession(AccessMode.WRITE, context); - CompletionStage txCommitted = session.beginTransactionAsync() + var txCommitted = session.beginTransactionAsync() .thenCompose(tx -> tx.runAsync("CREATE ()").thenCompose(cursor -> cursor.consumeAsync() .thenCompose(summary -> tx.commitAsync().thenApply(ignore -> { context.setBookmark(session.lastBookmark()); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryWithRetries.java index 74ab5ff85d..cb50194e4a 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWriteQueryWithRetries.java @@ -38,9 +38,9 @@ public AsyncWriteQueryWithRetries(AbstractStressTestBase stressTest, Driver d @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.WRITE, context); + var session = newSession(AccessMode.WRITE, context); - CompletionStage txStage = + var txStage = session.writeTransactionAsync(tx -> tx.runAsync("CREATE ()").thenCompose(ResultCursor::consumeAsync)); return txStage.thenApply(resultSummary -> processResultSummary(resultSummary, context)) diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQuery.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQuery.java index 3e3a968699..992d74b693 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQuery.java @@ -27,7 +27,6 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.Neo4jException; @@ -40,7 +39,7 @@ public AsyncWrongQuery(Driver driver) { @Override public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); return session.runAsync("RETURN Wrong") .thenCompose(ResultCursor::nextAsync) @@ -48,7 +47,7 @@ public CompletionStage execute(C context) { session.closeAsync(); assertNull(record); - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertNotNull(cause); assertThat(cause, instanceOf(ClientException.class)); assertThat(((Neo4jException) cause).code(), containsString("SyntaxError")); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryInTx.java index c36a386b5a..bb57b1ad1b 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryInTx.java @@ -27,7 +27,6 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; @@ -41,7 +40,7 @@ public AsyncWrongQueryInTx(Driver driver) { @Override public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); return session.beginTransactionAsync() .thenCompose(tx -> tx.runAsync("RETURN Wrong") @@ -49,7 +48,7 @@ public CompletionStage execute(C context) { .handle((record, error) -> { assertNull(record); - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertNotNull(cause); assertThat(cause, instanceOf(ClientException.class)); assertThat(((Neo4jException) cause).code(), containsString("SyntaxError")); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryWithRetries.java index b038445ca8..4ed8ec41d8 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AsyncWrongQueryWithRetries.java @@ -29,11 +29,9 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.Neo4jException; import org.neo4j.driver.internal.util.Futures; -import org.neo4j.driver.summary.ResultSummary; public class AsyncWrongQueryWithRetries extends AbstractAsyncQuery { public AsyncWrongQueryWithRetries(Driver driver) { @@ -43,12 +41,12 @@ public AsyncWrongQueryWithRetries(Driver driver) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - AsyncSession session = newSession(AccessMode.READ, context); + var session = newSession(AccessMode.READ, context); - AtomicReference recordRef = new AtomicReference<>(); - AtomicReference throwableRef = new AtomicReference<>(); + var recordRef = new AtomicReference(); + var throwableRef = new AtomicReference(); - CompletionStage txStage = session.readTransactionAsync(tx -> tx.runAsync("RETURN Wrong") + var txStage = session.readTransactionAsync(tx -> tx.runAsync("RETURN Wrong") .thenCompose(cursor -> cursor.nextAsync().thenCompose(record -> { recordRef.set(record); return cursor.consumeAsync(); @@ -61,7 +59,7 @@ public CompletionStage execute(C context) { .thenApply(nothing -> { assertNull(recordRef.get()); - Throwable cause = Futures.completionExceptionCause(throwableRef.get()); + var cause = Futures.completionExceptionCause(throwableRef.get()); assertNotNull(cause); assertThat(cause, instanceOf(ClientException.class)); assertThat(((Neo4jException) cause).code(), containsString("SyntaxError")); diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQuery.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQuery.java index 318818f24c..c9a356283f 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQuery.java @@ -25,8 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; public class BlockingFailingQuery extends AbstractBlockingQuery { public BlockingFailingQuery(Driver driver) { @@ -35,9 +33,9 @@ public BlockingFailingQuery(Driver driver) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - Result result = session.run("UNWIND [10, 5, 0] AS x RETURN 10 / x"); - Exception e = assertThrows(Exception.class, result::consume); + try (var session = newSession(AccessMode.READ, context)) { + var result = session.run("UNWIND [10, 5, 0] AS x RETURN 10 / x"); + var e = assertThrows(Exception.class, result::consume); assertThat(e, is(arithmeticError())); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryInTx.java index 82b2f08875..fada3b25f4 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryInTx.java @@ -25,9 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; public class BlockingFailingQueryInTx extends AbstractBlockingQuery { public BlockingFailingQueryInTx(Driver driver) { @@ -36,11 +33,11 @@ public BlockingFailingQueryInTx(Driver driver) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - try (Transaction tx = beginTransaction(session, context)) { - Result result = tx.run("UNWIND [10, 5, 0] AS x RETURN 10 / x"); + try (var session = newSession(AccessMode.READ, context)) { + try (var tx = beginTransaction(session, context)) { + var result = tx.run("UNWIND [10, 5, 0] AS x RETURN 10 / x"); - Exception e = assertThrows(Exception.class, result::consume); + var e = assertThrows(Exception.class, result::consume); assertThat(e, is(arithmeticError())); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryWithRetries.java index f5646094e7..239410c73c 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingFailingQueryWithRetries.java @@ -25,7 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; public class BlockingFailingQueryWithRetries extends AbstractBlockingQuery { public BlockingFailingQueryWithRetries(Driver driver) { @@ -35,8 +34,8 @@ public BlockingFailingQueryWithRetries(Driver driver) { @Override @SuppressWarnings("deprecation") public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - Exception e = assertThrows( + try (var session = newSession(AccessMode.READ, context)) { + var e = assertThrows( Exception.class, () -> session.readTransaction( tx -> tx.run("UNWIND [10, 5, 0] AS x RETURN 10 / x").consume())); diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQuery.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQuery.java index 8473458ee3..26f1605051 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQuery.java @@ -21,13 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.neo4j.driver.internal.util.Iterables.single; -import java.util.List; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.types.Node; public class BlockingReadQuery extends AbstractBlockingQuery { public BlockingReadQuery(Driver driver, boolean useBookmark) { @@ -36,12 +31,12 @@ public BlockingReadQuery(Driver driver, boolean useBookmark) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - Result result = session.run("MATCH (n) RETURN n LIMIT 1"); - List records = result.list(); + try (var session = newSession(AccessMode.READ, context)) { + var result = session.run("MATCH (n) RETURN n LIMIT 1"); + var records = result.list(); if (!records.isEmpty()) { - Record record = single(records); - Node node = record.get(0).asNode(); + var record = single(records); + var node = record.get(0).asNode(); assertNotNull(node); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryInTx.java index 4bfbe40158..9293fada6b 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryInTx.java @@ -21,14 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.neo4j.driver.internal.util.Iterables.single; -import java.util.List; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; -import org.neo4j.driver.types.Node; public class BlockingReadQueryInTx extends AbstractBlockingQuery { public BlockingReadQueryInTx(Driver driver, boolean useBookmark) { @@ -37,13 +31,13 @@ public BlockingReadQueryInTx(Driver driver, boolean useBookmark) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context); - Transaction tx = beginTransaction(session, context)) { - Result result = tx.run("MATCH (n) RETURN n LIMIT 1"); - List records = result.list(); + try (var session = newSession(AccessMode.READ, context); + var tx = beginTransaction(session, context)) { + var result = tx.run("MATCH (n) RETURN n LIMIT 1"); + var records = result.list(); if (!records.isEmpty()) { - Record record = single(records); - Node node = record.get(0).asNode(); + var record = single(records); + var node = record.get(0).asNode(); assertNotNull(node); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryWithRetries.java index 9afa42b5eb..52851d9bde 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingReadQueryWithRetries.java @@ -21,14 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.neo4j.driver.internal.util.Iterables.single; -import java.util.List; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Record; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; public class BlockingReadQueryWithRetries extends AbstractBlockingQuery { public BlockingReadQueryWithRetries(Driver driver, boolean useBookmark) { @@ -38,13 +32,13 @@ public BlockingReadQueryWithRetries(Driver driver, boolean useBookmark) { @Override @SuppressWarnings("deprecation") public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - ResultSummary resultSummary = session.readTransaction(tx -> { - Result result = tx.run("MATCH (n) RETURN n LIMIT 1"); - List records = result.list(); + try (var session = newSession(AccessMode.READ, context)) { + var resultSummary = session.readTransaction(tx -> { + var result = tx.run("MATCH (n) RETURN n LIMIT 1"); + var records = result.list(); if (!records.isEmpty()) { - Record record = single(records); - Node node = record.get(0).asNode(); + var record = single(records); + var node = record.get(0).asNode(); assertNotNull(node); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQuery.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQuery.java index d2626383f3..71ef0bd54d 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQuery.java @@ -22,7 +22,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; import org.neo4j.driver.summary.ResultSummary; public class BlockingWriteQuery extends AbstractBlockingQuery { @@ -39,7 +38,7 @@ public void execute(C context) { ResultSummary summary = null; Throwable queryError = null; - try (Session session = newSession(AccessMode.WRITE, context)) { + try (var session = newSession(AccessMode.WRITE, context)) { summary = session.run("CREATE ()").consume(); context.setBookmark(session.lastBookmark()); } catch (Throwable error) { diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryInTx.java index 2710eb8b80..7014ec30e0 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryInTx.java @@ -23,8 +23,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Result; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; public class BlockingWriteQueryInTx extends AbstractBlockingQuery { private AbstractStressTestBase stressTest; @@ -40,8 +38,8 @@ public void execute(C context) { Result result = null; Throwable txError = null; - try (Session session = newSession(AccessMode.WRITE, context)) { - try (Transaction tx = beginTransaction(session, context)) { + try (var session = newSession(AccessMode.WRITE, context)) { + try (var tx = beginTransaction(session, context)) { result = tx.run("CREATE ()"); tx.commit(); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryUsingReadSessionWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryUsingReadSessionWithRetries.java index 5cbe9edb03..59aecc71fa 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryUsingReadSessionWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryUsingReadSessionWithRetries.java @@ -22,7 +22,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.ClientException; public class BlockingWriteQueryUsingReadSessionWithRetries extends AbstractBlockingQuery { @@ -33,7 +32,7 @@ public BlockingWriteQueryUsingReadSessionWithRetries(Driver driver, boolean useB @Override @SuppressWarnings("deprecation") public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { + try (var session = newSession(AccessMode.READ, context)) { assertThrows(ClientException.class, () -> session.readTransaction(tx -> tx.run("CREATE ()"))); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryWithRetries.java index a9bba17bfe..4629774cad 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWriteQueryWithRetries.java @@ -22,8 +22,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; -import org.neo4j.driver.summary.ResultSummary; public class BlockingWriteQueryWithRetries extends AbstractBlockingQuery { private final AbstractStressTestBase stressTest; @@ -36,8 +34,8 @@ public BlockingWriteQueryWithRetries(AbstractStressTestBase stressTest, Drive @Override @SuppressWarnings("deprecation") public void execute(C context) { - try (Session session = newSession(AccessMode.WRITE, context)) { - ResultSummary resultSummary = + try (var session = newSession(AccessMode.WRITE, context)) { + var resultSummary = session.writeTransaction(tx -> tx.run("CREATE ()").consume()); assertEquals(1, resultSummary.counters().nodesCreated()); context.nodeCreated(); diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQuery.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQuery.java index 21f2cb88d7..f34eaa2748 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQuery.java @@ -25,7 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; public class BlockingWrongQuery extends AbstractBlockingQuery { public BlockingWrongQuery(Driver driver) { @@ -34,9 +33,8 @@ public BlockingWrongQuery(Driver driver) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - Exception e = - assertThrows(Exception.class, () -> session.run("RETURN").consume()); + try (var session = newSession(AccessMode.READ, context)) { + var e = assertThrows(Exception.class, () -> session.run("RETURN").consume()); assertThat(e, is(syntaxError())); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryInTx.java index 043306aa30..a9730f8919 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryInTx.java @@ -25,8 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; public class BlockingWrongQueryInTx extends AbstractBlockingQuery { public BlockingWrongQueryInTx(Driver driver) { @@ -35,9 +33,9 @@ public BlockingWrongQueryInTx(Driver driver) { @Override public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - try (Transaction tx = beginTransaction(session, context)) { - Exception e = assertThrows(Exception.class, () -> tx.run("RETURN")); + try (var session = newSession(AccessMode.READ, context)) { + try (var tx = beginTransaction(session, context)) { + var e = assertThrows(Exception.class, () -> tx.run("RETURN")); assertThat(e, is(syntaxError())); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryWithRetries.java index 5b41a98e68..52a1dbcda4 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/BlockingWrongQueryWithRetries.java @@ -25,7 +25,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.Session; public class BlockingWrongQueryWithRetries extends AbstractBlockingQuery { public BlockingWrongQueryWithRetries(Driver driver) { @@ -35,8 +34,8 @@ public BlockingWrongQueryWithRetries(Driver driver) { @Override @SuppressWarnings("deprecation") public void execute(C context) { - try (Session session = newSession(AccessMode.READ, context)) { - Exception e = assertThrows( + try (var session = newSession(AccessMode.READ, context)) { + var e = assertThrows( Exception.class, () -> session.readTransaction(tx -> tx.run("RETURN").consume())); assertThat(e, is(syntaxError())); diff --git a/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringStressIT.java b/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringStressIT.java index 9272e8648e..04f6ee2865 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringStressIT.java +++ b/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringStressIT.java @@ -57,7 +57,7 @@ Context createContext() { @Override boolean handleWriteFailure(Throwable error, Context context) { if (error instanceof SessionExpiredException) { - boolean isLeaderSwitch = error.getMessage().endsWith("no longer accepts writes"); + var isLeaderSwitch = error.getMessage().endsWith("no longer accepts writes"); if (isLeaderSwitch) { context.leaderSwitch(); return true; diff --git a/driver/src/test/java/org/neo4j/driver/stress/FailedAuth.java b/driver/src/test/java/org/neo4j/driver/stress/FailedAuth.java index 94fce2cfb0..942c389554 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/FailedAuth.java +++ b/driver/src/test/java/org/neo4j/driver/stress/FailedAuth.java @@ -25,7 +25,6 @@ import java.net.URI; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.exceptions.SecurityException; @@ -40,8 +39,8 @@ public FailedAuth(URI clusterUri, Config config) { @Override public void execute(C context) { - final Driver driver = GraphDatabase.driver(clusterUri, basic("wrongUsername", "wrongPassword"), config); - SecurityException e = assertThrows(SecurityException.class, driver::verifyConnectivity); + final var driver = GraphDatabase.driver(clusterUri, basic("wrongUsername", "wrongPassword"), config); + var e = assertThrows(SecurityException.class, driver::verifyConnectivity); assertThat(e.getMessage(), containsString("authentication failure")); driver.close(); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQuery.java b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQuery.java index 32079a6c27..f2a568e1e5 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQuery.java @@ -41,7 +41,7 @@ public RxFailingQuery(Driver driver) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Flux.usingWhen( Mono.fromSupplier(() -> newSession(AccessMode.READ, context)), session -> session.run("UNWIND [10, 5, 0] AS x RETURN 10 / x") @@ -52,7 +52,7 @@ record -> { assertThat(record.get(0).asInt(), either(equalTo(1)).or(equalTo(2))); }, error -> { - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); queryFinished.complete(null); }); diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryInTx.java index f009683d67..71cc5a3eeb 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryInTx.java @@ -29,7 +29,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.internal.util.Futures; -import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import reactor.core.publisher.Flux; @@ -41,8 +40,8 @@ public RxFailingQueryInTx(Driver driver) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); - RxSession session = newSession(AccessMode.READ, context); + var queryFinished = new CompletableFuture(); + var session = newSession(AccessMode.READ, context); Flux.usingWhen( session.beginTransaction(), tx -> tx.run("UNWIND [10, 5, 0] AS x RETURN 10 / x").records(), @@ -54,7 +53,7 @@ record -> { assertThat(record.get(0).asInt(), either(equalTo(1)).or(equalTo(2))); }, error -> { - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); queryFinished.complete(null); }); diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryWithRetries.java index 3c49d0a83b..3f4b866b7d 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxFailingQueryWithRetries.java @@ -41,7 +41,7 @@ public RxFailingQueryWithRetries(Driver driver) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Flux.usingWhen( Mono.fromSupplier(() -> newSession(AccessMode.READ, context)), session -> session.readTransaction(tx -> @@ -52,7 +52,7 @@ record -> { assertThat(record.get(0).asInt(), either(equalTo(1)).or(equalTo(2))); }, error -> { - Throwable cause = Futures.completionExceptionCause(error); + var cause = Futures.completionExceptionCause(error); assertThat(cause, is(arithmeticError())); queryFinished.complete(null); }); diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxReadQuery.java b/driver/src/test/java/org/neo4j/driver/stress/RxReadQuery.java index ffb282571e..a2d2f0518f 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxReadQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxReadQuery.java @@ -22,10 +22,8 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -38,7 +36,7 @@ public RxReadQuery(Driver driver, boolean useBookmark) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Flux.usingWhen( Mono.fromSupplier(() -> newSession(AccessMode.READ, context)), this::processAndGetSummary, @@ -57,10 +55,10 @@ public CompletionStage execute(C context) { @SuppressWarnings("deprecation") private Publisher processAndGetSummary(RxSession session) { - RxResult result = session.run("MATCH (n) RETURN n LIMIT 1"); - Mono records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) + var result = session.run("MATCH (n) RETURN n LIMIT 1"); + var records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) .asNode()); - Mono summaryMono = Mono.from(result.consume()).single(); + var summaryMono = Mono.from(result.consume()).single(); return records.then(summaryMono); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryInTx.java index d236a58a51..1aacf83b09 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryInTx.java @@ -22,11 +22,8 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.reactive.RxResult; -import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -39,8 +36,8 @@ public RxReadQueryInTx(Driver driver, boolean useBookmark) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); - RxSession session = newSession(AccessMode.READ, context); + var queryFinished = new CompletableFuture(); + var session = newSession(AccessMode.READ, context); Flux.usingWhen( session.beginTransaction(), this::processAndGetSummary, @@ -61,10 +58,10 @@ public CompletionStage execute(C context) { @SuppressWarnings("deprecation") private Publisher processAndGetSummary(RxTransaction tx) { - RxResult result = tx.run("MATCH (n) RETURN n LIMIT 1"); - Mono records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) + var result = tx.run("MATCH (n) RETURN n LIMIT 1"); + var records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) .asNode()); - Mono summaryMono = Mono.from(result.consume()).single(); + var summaryMono = Mono.from(result.consume()).single(); return records.then(summaryMono); } } diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryWithRetries.java index ace4fe663b..0f10ae10d0 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxReadQueryWithRetries.java @@ -22,10 +22,8 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.Node; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -38,7 +36,7 @@ public RxReadQueryWithRetries(Driver driver, boolean useBookmark) { @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Flux.usingWhen( Mono.fromSupplier(() -> newSession(AccessMode.READ, context)), this::processAndGetSummary, @@ -58,10 +56,10 @@ public CompletionStage execute(C context) { @SuppressWarnings("deprecation") private Publisher processAndGetSummary(RxSession session) { return session.readTransaction(tx -> { - RxResult result = tx.run("MATCH (n) RETURN n LIMIT 1"); - Mono records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) + var result = tx.run("MATCH (n) RETURN n LIMIT 1"); + var records = Flux.from(result.records()).singleOrEmpty().map(record -> record.get(0) .asNode()); - Mono summaryMono = Mono.from(result.consume()).single(); + var summaryMono = Mono.from(result.consume()).single(); return records.then(summaryMono); }); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQuery.java b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQuery.java index ff4c9c45b3..f460965805 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQuery.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQuery.java @@ -40,7 +40,7 @@ public RxWriteQuery(AbstractStressTestBase stressTest, Driver driver, boolean @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Flux.usingWhen( Mono.fromSupplier(() -> newSession(AccessMode.WRITE, context)), session -> Flux.from(session.run("CREATE ()").consume()) diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryInTx.java b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryInTx.java index 82ccc7355b..e50adb904e 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryInTx.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryInTx.java @@ -44,7 +44,7 @@ public RxWriteQueryInTx(AbstractStressTestBase stressTest, Driver driver, boo @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); Function> sessionToResultSummaryPublisher = (RxSession session) -> Flux.usingWhen( @@ -54,7 +54,7 @@ public CompletionStage execute(C context) { (tx, error) -> tx.rollback(), RxTransaction::rollback); - AtomicInteger createdNodesNum = new AtomicInteger(); + var createdNodesNum = new AtomicInteger(); Flux.usingWhen( Mono.fromSupplier(driver::rxSession), sessionToResultSummaryPublisher, diff --git a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryWithRetries.java b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryWithRetries.java index 254112a31b..b35d9748a4 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryWithRetries.java +++ b/driver/src/test/java/org/neo4j/driver/stress/RxWriteQueryWithRetries.java @@ -40,9 +40,9 @@ public RxWriteQueryWithRetries(AbstractStressTestBase stressTest, Driver driv @Override @SuppressWarnings("deprecation") public CompletionStage execute(C context) { - CompletableFuture queryFinished = new CompletableFuture<>(); + var queryFinished = new CompletableFuture(); - AtomicInteger createdNodesNum = new AtomicInteger(); + var createdNodesNum = new AtomicInteger(); Flux.usingWhen( Mono.fromSupplier(driver::rxSession), session -> session.writeTransaction( diff --git a/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java b/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java index 2aa3401f62..75f9e7d385 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java +++ b/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java @@ -37,8 +37,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.neo4j.driver.Config; import org.neo4j.driver.Driver; -import org.neo4j.driver.Result; -import org.neo4j.driver.Session; import org.neo4j.driver.testutil.DatabaseExtension; import org.neo4j.driver.testutil.ParallelizableIT; @@ -74,12 +72,12 @@ void tearDown() { @Test void shouldWorkFine() throws Throwable { - Config config = Config.builder().withoutEncryption().build(); + var config = Config.builder().withoutEncryption().build(); driver = driver(neo4j.uri(), neo4j.authTokenManager(), config); - AtomicBoolean stop = new AtomicBoolean(); - AtomicReference failureReference = new AtomicReference<>(); + var stop = new AtomicBoolean(); + var failureReference = new AtomicReference(); doWork(stop, failureReference); @@ -89,14 +87,14 @@ void shouldWorkFine() throws Throwable { executor.shutdown(); assertTrue(executor.awaitTermination(90, TimeUnit.SECONDS)); - Throwable failure = failureReference.get(); + var failure = failureReference.get(); if (failure != null) { throw new AssertionError("Some workers have failed", failure); } } private void doWork(AtomicBoolean stop, AtomicReference failure) { - for (int i = 0; i < N_THREADS; i++) { + for (var i = 0; i < N_THREADS; i++) { executor.execute(new Worker(driver, stop, failure)); } } @@ -117,13 +115,13 @@ private class Worker implements Runnable { public void run() { try { while (!stop.get()) { - for (String query : QUERIES) { + for (var query : QUERIES) { runQuery(query); } } } catch (Throwable failure) { if (!failureReference.compareAndSet(null, failure)) { - Throwable firstFailure = failureReference.get(); + var firstFailure = failureReference.get(); synchronized (firstFailure) { firstFailure.addSuppressed(failure); } @@ -132,8 +130,8 @@ public void run() { } private void runQuery(String query) throws InterruptedException { - try (Session session = driver.session()) { - Result run = session.run(query); + try (var session = driver.session()) { + var run = session.run(query); Thread.sleep(random.nextInt(100)); run.consume(); Thread.sleep(random.nextInt(100)); diff --git a/driver/src/test/java/org/neo4j/driver/tck/reactive/ReactiveResultRecordPublisherVerificationIT.java b/driver/src/test/java/org/neo4j/driver/tck/reactive/ReactiveResultRecordPublisherVerificationIT.java index f93db4a4ca..dc9c85ab11 100644 --- a/driver/src/test/java/org/neo4j/driver/tck/reactive/ReactiveResultRecordPublisherVerificationIT.java +++ b/driver/src/test/java/org/neo4j/driver/tck/reactive/ReactiveResultRecordPublisherVerificationIT.java @@ -70,14 +70,14 @@ public long maxElementsFromPublisher() { @Override public Publisher createPublisher(long elements) { - ReactiveSession session = driver.session(ReactiveSession.class); + var session = driver.session(ReactiveSession.class); return Mono.fromDirect(flowPublisherToFlux(session.run(QUERY, parameters("numberOfRecords", elements)))) .flatMapMany(r -> Flux.from(flowPublisherToFlux(r.records()))); } @Override public Publisher createFailedPublisher() { - ReactiveSession session = driver.session(ReactiveSession.class); + var session = driver.session(ReactiveSession.class); // Please note that this publisher fails on run stage. return Mono.fromDirect(flowPublisherToFlux(session.run("RETURN 5/0"))) .flatMapMany(r -> Flux.from(flowPublisherToFlux(r.records()))); diff --git a/driver/src/test/java/org/neo4j/driver/tck/reactive/RxResultRecordPublisherVerificationIT.java b/driver/src/test/java/org/neo4j/driver/tck/reactive/RxResultRecordPublisherVerificationIT.java index cf20f0d02e..633257fa7d 100644 --- a/driver/src/test/java/org/neo4j/driver/tck/reactive/RxResultRecordPublisherVerificationIT.java +++ b/driver/src/test/java/org/neo4j/driver/tck/reactive/RxResultRecordPublisherVerificationIT.java @@ -23,8 +23,6 @@ import java.time.Duration; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.reactive.RxResult; -import org.neo4j.driver.reactive.RxSession; import org.reactivestreams.Publisher; import org.reactivestreams.tck.PublisherVerification; import org.reactivestreams.tck.TestEnvironment; @@ -69,15 +67,15 @@ public long maxElementsFromPublisher() { @Override public Publisher createPublisher(long elements) { - RxSession session = driver.rxSession(); - RxResult result = session.run(QUERY, parameters("numberOfRecords", elements)); + var session = driver.rxSession(); + var result = session.run(QUERY, parameters("numberOfRecords", elements)); return result.records(); } @Override public Publisher createFailedPublisher() { - RxSession session = driver.rxSession(); - RxResult result = session.run("INVALID"); + var session = driver.rxSession(); + var result = session.run("INVALID"); return result.records(); } } diff --git a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java index b12974a66e..e068548a02 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java @@ -49,12 +49,10 @@ import org.bouncycastle.asn1.x509.GeneralName; import org.bouncycastle.asn1.x509.GeneralNames; import org.bouncycastle.cert.CertIOException; -import org.bouncycastle.cert.X509CertificateHolder; import org.bouncycastle.cert.X509v3CertificateBuilder; import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter; import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder; import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.operator.ContentSigner; import org.bouncycastle.operator.OperatorCreationException; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.pkcs.PKCS10CertificationRequest; @@ -76,9 +74,9 @@ public class CertificateUtil { } private static KeyPair generateKeyPair() throws NoSuchProviderException, NoSuchAlgorithmException { - KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION); + var keyPairGenerator = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION); keyPairGenerator.initialize(2048, new SecureRandom()); - KeyPair keyPair = keyPairGenerator.generateKeyPair(); + var keyPair = keyPairGenerator.generateKeyPair(); return keyPair; } @@ -86,9 +84,9 @@ private static X509Certificate generateCert( X500Name issuer, X500Name subject, KeyPair issuerKeys, PublicKey publicKey, GeneralName... generalNames) throws GeneralSecurityException, OperatorCreationException, CertIOException { // Create x509 certificate - Date startDate = new Date(System.currentTimeMillis()); - Date endDate = new Date(System.currentTimeMillis() + 365L * 24L * 60L * 60L * 1000L); - BigInteger serialNum = BigInteger.valueOf(System.currentTimeMillis()); + var startDate = new Date(System.currentTimeMillis()); + var endDate = new Date(System.currentTimeMillis() + 365L * 24L * 60L * 60L * 1000L); + var serialNum = BigInteger.valueOf(System.currentTimeMillis()); X509v3CertificateBuilder certBuilder = new JcaX509v3CertificateBuilder(issuer, serialNum, startDate, endDate, subject, publicKey); @@ -96,15 +94,14 @@ private static X509Certificate generateCert( Set names = new HashSet<>(); names.add(new GeneralName(GeneralName.dNSName, DEFAULT_HOST_NAME)); names.addAll(Arrays.asList(generalNames)); - GeneralNames subjectAlternativeName = new GeneralNames(names.toArray(new GeneralName[0])); + var subjectAlternativeName = new GeneralNames(names.toArray(new GeneralName[0])); certBuilder.addExtension(Extension.subjectAlternativeName, false, subjectAlternativeName); certBuilder.addExtension(Extension.basicConstraints, false, new BasicConstraints(true)); // Get the certificate back - ContentSigner signer = new JcaContentSignerBuilder("SHA512WithRSAEncryption").build(issuerKeys.getPrivate()); - X509CertificateHolder certHolder = certBuilder.build(signer); - X509Certificate certificate = - new JcaX509CertificateConverter().setProvider("BC").getCertificate(certHolder); + var signer = new JcaContentSignerBuilder("SHA512WithRSAEncryption").build(issuerKeys.getPrivate()); + var certHolder = certBuilder.build(signer); + var certificate = new JcaX509CertificateConverter().setProvider("BC").getCertificate(certHolder); certificate.verify(issuerKeys.getPublic()); return certificate; @@ -154,12 +151,12 @@ public static class CertificateSigningRequestGenerator { private final PKCS10CertificationRequest csr; public CertificateSigningRequestGenerator() throws NoSuchAlgorithmException, OperatorCreationException { - KeyPairGenerator gen = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION); + var gen = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION); gen.initialize(2048, new SecureRandom()); keyPair = gen.generateKeyPair(); - X500Principal subject = new X500Principal("CN=" + DEFAULT_HOST_NAME); - ContentSigner signGen = new JcaContentSignerBuilder("SHA512WithRSAEncryption").build(keyPair.getPrivate()); + var subject = new X500Principal("CN=" + DEFAULT_HOST_NAME); + var signGen = new JcaContentSignerBuilder("SHA512WithRSAEncryption").build(keyPair.getPrivate()); PKCS10CertificationRequestBuilder builder = new JcaPKCS10CertificationRequestBuilder(subject, keyPair.getPublic()); @@ -198,7 +195,7 @@ private static void writePem(String type, byte[] encodedContent, File path) thro if (path.getParentFile() != null && path.getParentFile().exists()) { path.getParentFile().mkdirs(); } - try (PemWriter writer = new PemWriter(new FileWriter(path))) { + try (var writer = new PemWriter(new FileWriter(path))) { writer.writeObject(new PemObject(type, encodedContent)); writer.flush(); } @@ -207,11 +204,10 @@ private static void writePem(String type, byte[] encodedContent, File path) thro public static CertificateKeyPair createNewCertificateAndKeySignedBy( CertificateKeyPair root, GeneralName... generalNames) throws Throwable { Objects.requireNonNull(root.certGenerator); - File cert = tempFile("driver", ".cert"); - File key = tempFile("driver", ".key"); - CertificateUtil.CertificateSigningRequestGenerator csrGenerator = - new CertificateUtil.CertificateSigningRequestGenerator(); - X509Certificate signedCert = root.certGenerator.sign( + var cert = tempFile("driver", ".cert"); + var key = tempFile("driver", ".key"); + var csrGenerator = new CertificateUtil.CertificateSigningRequestGenerator(); + var signedCert = root.certGenerator.sign( csrGenerator.certificateSigningRequest(), csrGenerator.publicKey(), generalNames); csrGenerator.savePrivateKey(key); saveX509Cert(signedCert, cert); @@ -221,10 +217,9 @@ public static CertificateKeyPair createNewCertificateAndKeySignedBy( public static CertificateKeyPair createNewCertificateAndKey(GeneralName... ipAddresses) throws Throwable { - File cert = tempFile("driver", ".cert"); - File key = tempFile("driver", ".key"); - CertificateUtil.SelfSignedCertificateGenerator certGenerator = - new CertificateUtil.SelfSignedCertificateGenerator(ipAddresses); + var cert = tempFile("driver", ".cert"); + var key = tempFile("driver", ".key"); + var certGenerator = new CertificateUtil.SelfSignedCertificateGenerator(ipAddresses); certGenerator.saveSelfSignedCertificate(cert); certGenerator.savePrivateKey(key); @@ -270,7 +265,7 @@ public boolean equals(Object o) { return false; } - CertificateKeyPair that = (CertificateKeyPair) o; + var that = (CertificateKeyPair) o; return pair.equals(that.pair); } diff --git a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtilTest.java b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtilTest.java index 75f3efbc29..addffc57ce 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtilTest.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtilTest.java @@ -25,9 +25,7 @@ import java.io.File; import java.security.KeyStore; import java.security.cert.Certificate; -import java.security.cert.X509Certificate; import java.util.Collections; -import java.util.Enumeration; import org.junit.jupiter.api.Test; import org.neo4j.driver.internal.util.CertificateTool; @@ -35,23 +33,23 @@ public class CertificateUtilTest { @Test void shouldLoadMultipleCertsIntoKeyStore() throws Throwable { // Given - File certFile = File.createTempFile("3random", ".cer"); + var certFile = File.createTempFile("3random", ".cer"); certFile.deleteOnExit(); - X509Certificate cert1 = CertificateUtil.generateSelfSignedCertificate(); - X509Certificate cert2 = CertificateUtil.generateSelfSignedCertificate(); - X509Certificate cert3 = CertificateUtil.generateSelfSignedCertificate(); + var cert1 = CertificateUtil.generateSelfSignedCertificate(); + var cert2 = CertificateUtil.generateSelfSignedCertificate(); + var cert3 = CertificateUtil.generateSelfSignedCertificate(); saveX509Cert(new Certificate[] {cert1, cert2, cert3}, certFile); - KeyStore keyStore = KeyStore.getInstance("JKS"); + var keyStore = KeyStore.getInstance("JKS"); keyStore.load(null, null); // When CertificateTool.loadX509Cert(Collections.singletonList(certFile), keyStore); // Then - Enumeration aliases = keyStore.aliases(); + var aliases = keyStore.aliases(); assertTrue(aliases.hasMoreElements()); assertTrue(aliases.nextElement().startsWith("neo4j.javadriver.trustedcert")); assertTrue(aliases.hasMoreElements()); diff --git a/driver/src/test/java/org/neo4j/driver/testutil/DaemonThreadFactory.java b/driver/src/test/java/org/neo4j/driver/testutil/DaemonThreadFactory.java index 6804c6e6ed..e2203b30c8 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/DaemonThreadFactory.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/DaemonThreadFactory.java @@ -38,7 +38,7 @@ public static ThreadFactory daemon(String namePrefix) { @Override public Thread newThread(Runnable runnable) { - Thread thread = new Thread(runnable); + var thread = new Thread(runnable); thread.setName(namePrefix + threadId.incrementAndGet()); thread.setDaemon(true); return thread; diff --git a/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java b/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java index 8da957790f..a622062ba0 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.net.URI; -import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; import java.util.HashMap; @@ -48,7 +47,6 @@ import org.neo4j.driver.Config; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; -import org.neo4j.driver.Session; import org.neo4j.driver.internal.BoltServerAddress; import org.neo4j.driver.internal.security.StaticAuthTokenManager; import org.neo4j.driver.testutil.CertificateUtil.CertificateKeyPair; @@ -88,7 +86,7 @@ public class DatabaseExtension implements ExecutionCondition, BeforeEachCallback defaultConfig.put(BOLT_TLS_LEVEL, OPTIONAL.toString()); if (dockerAvailable) { - CertificateKeyPair pair = generateCertificateAndKey(); + var pair = generateCertificateAndKey(); cert = pair.cert(); key = pair.key(); @@ -99,8 +97,8 @@ public class DatabaseExtension implements ExecutionCondition, BeforeEachCallback nginx.start(); nginxRunning = true; - URI neo4jBoltUri = URI.create(neo4jContainer.getBoltUrl()); - URI neo4jHttpUri = URI.create(neo4jContainer.getHttpUrl()); + var neo4jBoltUri = URI.create(neo4jContainer.getBoltUrl()); + var neo4jHttpUri = URI.create(neo4jContainer.getHttpUrl()); boltUri = URI.create(String.format( "%s://%s:%d", neo4jBoltUri.getScheme(), neo4jBoltUri.getHost(), nginx.getMappedPort(BOLT_PORT))); @@ -172,13 +170,13 @@ public void deleteAndStartNeo4j(Map config) { } public String addImportFile(String prefix, String suffix, String contents) throws IOException { - File tmpFile = File.createTempFile(prefix, suffix, null); + var tmpFile = File.createTempFile(prefix, suffix, null); tmpFile.deleteOnExit(); - try (PrintWriter out = new PrintWriter(tmpFile)) { + try (var out = new PrintWriter(tmpFile)) { out.println(contents); } - Path tmpFilePath = tmpFile.toPath(); - Path targetPath = + var tmpFilePath = tmpFile.toPath(); + var targetPath = Paths.get("/var/lib/neo4j/import", tmpFilePath.getFileName().toString()); neo4jContainer.copyFileToContainer(MountableFile.forHostPath(tmpFilePath), targetPath.toString()); return String.format("file:///%s", tmpFile.getName()); @@ -248,13 +246,13 @@ public boolean isNeo4j43OrEarlier() { } private boolean isNeo4jVersionOrEarlier(int major, int minor) { - try (Session session = driver.session()) { - String neo4jVersion = session.executeRead( + try (var session = driver.session()) { + var neo4jVersion = session.executeRead( tx -> tx.run("CALL dbms.components() YIELD versions " + "RETURN versions[0] AS version") .single() .get("version") .asString()); - String[] versions = neo4jVersion.split("\\."); + var versions = neo4jVersion.split("\\."); return parseInt(versions[0]) <= major && parseInt(versions[1]) <= minor; } } @@ -264,7 +262,7 @@ public static DatabaseExtension getInstance() { } public static GeneralName getDockerHostGeneralName() { - String host = DockerClientFactory.instance().dockerHostIpAddress(); + var host = DockerClientFactory.instance().dockerHostIpAddress(); GeneralName generalName; try { generalName = new GeneralName(GeneralName.iPAddress, host); @@ -283,10 +281,9 @@ private static CertificateKeyPair generateCertificateAndKey() { } private static Neo4jContainer setupNeo4jContainer(File cert, File key, Map config) { - String neo4JVersion = - Optional.ofNullable(System.getenv("NEO4J_VERSION")).orElse("4.4"); + var neo4JVersion = Optional.ofNullable(System.getenv("NEO4J_VERSION")).orElse("4.4"); - ImageFromDockerfile extendedNeo4jImage = new ImageFromDockerfile() + var extendedNeo4jImage = new ImageFromDockerfile() .withDockerfileFromBuilder(builder -> builder.from(String.format("neo4j:%s-enterprise", neo4JVersion)) .run("mkdir /var/lib/neo4j/certificates/bolt") .copy("public.crt", "/var/lib/neo4j/certificates/bolt/") @@ -295,14 +292,14 @@ private static Neo4jContainer setupNeo4jContainer(File cert, File key, Map(extendedNeo4jImageAsSubstitute) .withEnv("NEO4J_ACCEPT_LICENSE_AGREEMENT", "yes") .withNetwork(network) .withNetworkAliases("neo4j"); - for (Map.Entry entry : config.entrySet()) { + for (var entry : config.entrySet()) { neo4jContainer.withNeo4jConfig(entry.getKey(), entry.getValue()); } @@ -311,7 +308,7 @@ private static Neo4jContainer setupNeo4jContainer(File cert, File key, Map setupNginxContainer() { - ImageFromDockerfile extendedNginxImage = new ImageFromDockerfile() + var extendedNginxImage = new ImageFromDockerfile() .withDockerfileFromBuilder(builder -> builder.from("nginx:1.23.0-alpine") .copy("nginx.conf", "/etc/nginx/") .build()) @@ -324,8 +321,8 @@ private static GenericContainer setupNginxContainer() { } private static void waitForBoltAvailability() { - int maxAttempts = 600; - for (int attempt = 0; attempt < maxAttempts; attempt++) { + var maxAttempts = 600; + for (var attempt = 0; attempt < maxAttempts; attempt++) { try { driver.verifyConnectivity(); return; diff --git a/driver/src/test/java/org/neo4j/driver/testutil/FileTools.java b/driver/src/test/java/org/neo4j/driver/testutil/FileTools.java index 334d3b3fa6..b296f0c2d8 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/FileTools.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/FileTools.java @@ -40,9 +40,9 @@ public class FileTools { public static void deleteRecursively(File file) { if (file.isDirectory()) { - File[] files = file.listFiles(); + var files = file.listFiles(); if (files != null) { - for (File sub : files) { + for (var sub : files) { deleteRecursively(sub); } } @@ -53,7 +53,7 @@ public static void deleteRecursively(File file) { } public static File tempFile(String prefix, String suffix) throws Throwable { - File file = createTempFile(prefix, suffix); + var file = createTempFile(prefix, suffix); file.deleteOnExit(); return file; } @@ -66,7 +66,7 @@ public static boolean deleteFile(File file) { if (!file.exists()) { return true; } - int count = 0; + var count = 0; boolean deleted; do { deleted = file.delete(); @@ -101,8 +101,8 @@ public static void moveFile(File toMove, File target) throws IOException { } public static void copyRecursively(File fromDirectory, File toDirectory, FileFilter filter) throws IOException { - for (File fromFile : fromDirectory.listFiles(filter)) { - File toFile = new File(toDirectory, fromFile.getName()); + for (var fromFile : fromDirectory.listFiles(filter)) { + var toFile = new File(toDirectory, fromFile.getName()); if (fromFile.isDirectory()) { Files.createDirectories(toFile.toPath()); copyRecursively(fromFile, toFile, filter); @@ -114,7 +114,7 @@ public static void copyRecursively(File fromDirectory, File toDirectory, FileFil public static void copyFile(File srcFile, File dstFile) throws IOException { //noinspection ResultOfMethodCallIgnored - File parentFile = dstFile.getParentFile(); + var parentFile = dstFile.getParentFile(); if (parentFile != null) { parentFile.mkdirs(); } @@ -123,8 +123,8 @@ public static void copyFile(File srcFile, File dstFile) throws IOException { try { input = new FileInputStream(srcFile); output = new FileOutputStream(dstFile); - int bufferSize = 1024; - byte[] buffer = new byte[bufferSize]; + var bufferSize = 1024; + var buffer = new byte[bufferSize]; int bytesRead; while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); @@ -163,21 +163,21 @@ public static void updateProperty(File propFile, String key, String value) throw public static void updateProperties(File propFile, Map propertiesMap, Set excludes) throws IOException { - Scanner in = new Scanner(propFile); + var in = new Scanner(propFile); Set updatedProperties = new HashSet<>(propertiesMap.size()); - File newPropFile = File.createTempFile(propFile.getName(), null); + var newPropFile = File.createTempFile(propFile.getName(), null); try { - FileOutputStream outStream = new FileOutputStream(newPropFile); - PrintWriter out = new PrintWriter(outStream); + var outStream = new FileOutputStream(newPropFile); + var out = new PrintWriter(outStream); while (in.hasNextLine()) { - String line = in.nextLine(); + var line = in.nextLine(); if (!line.trim().startsWith("#")) { - String[] tokens = line.split("="); + var tokens = line.split("="); if (tokens.length == 2) { - String name = tokens[0].trim(); + var name = tokens[0].trim(); if (excludes.contains(name)) { continue; } @@ -201,8 +201,8 @@ public static void updateProperties(File propFile, Map propertie } } - for (Map.Entry entry : propertiesMap.entrySet()) { - String name = entry.getKey(); + for (var entry : propertiesMap.entrySet()) { + var name = entry.getKey(); Object value = entry.getValue(); if (value != null && !updatedProperties.contains(name)) { // add this as a new prop diff --git a/driver/src/test/java/org/neo4j/driver/testutil/FileToolsTest.java b/driver/src/test/java/org/neo4j/driver/testutil/FileToolsTest.java index 954adc9faf..5bb81e8154 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/FileToolsTest.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/FileToolsTest.java @@ -34,7 +34,7 @@ class FileToolsTest { @Test void shouldBeAbleToCreateTemporaryFile() throws Throwable { // Given - File file = FileTools.tempFile("test"); + var file = FileTools.tempFile("test"); // Then try { @@ -47,13 +47,13 @@ void shouldBeAbleToCreateTemporaryFile() throws Throwable { @Test void shouldAddPropertyAtBottom() throws IOException { // Given - File propertyFile = createPropertyFile(); + var propertyFile = createPropertyFile(); // When FileTools.updateProperty(propertyFile, "cat.name", "mimi"); // Then - try (Scanner in = new Scanner(propertyFile)) { + try (var in = new Scanner(propertyFile)) { assertEquals("#Wow wow", in.nextLine()); assertEquals("Meow meow", in.nextLine()); assertEquals("color=black", in.nextLine()); @@ -69,13 +69,13 @@ void shouldAddPropertyAtBottom() throws IOException { @Test void shouldResetPropertyAtTheSameLine() throws IOException { // Given - File propertyFile = createPropertyFile(); + var propertyFile = createPropertyFile(); // When FileTools.updateProperty(propertyFile, "color", "white"); // Then - try (Scanner in = new Scanner(propertyFile)) { + try (var in = new Scanner(propertyFile)) { assertEquals("#Wow wow", in.nextLine()); assertEquals("Meow meow", in.nextLine()); assertEquals("color=white", in.nextLine()); @@ -88,8 +88,8 @@ void shouldResetPropertyAtTheSameLine() throws IOException { } private File createPropertyFile() throws FileNotFoundException { - File propFile = new File("Cat"); - PrintWriter out = new PrintWriter(propFile); + var propFile = new File("Cat"); + var out = new PrintWriter(propFile); out.println("#Wow wow"); out.println("Meow meow"); diff --git a/driver/src/test/java/org/neo4j/driver/testutil/Neo4jSettings.java b/driver/src/test/java/org/neo4j/driver/testutil/Neo4jSettings.java index 40db95865a..373fad1e4c 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/Neo4jSettings.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/Neo4jSettings.java @@ -116,7 +116,7 @@ public Neo4jSettings without(String key) { newExcludes.add(key); Map newMap = new HashMap<>(this.settings); newMap.remove(key); - Neo4jSettings newSettings = new Neo4jSettings(newMap, newExcludes); + var newSettings = new Neo4jSettings(newMap, newExcludes); return newSettings; } @@ -129,7 +129,7 @@ public boolean equals(Object o) { return false; } - Neo4jSettings that = (Neo4jSettings) o; + var that = (Neo4jSettings) o; if (!settings.equals(that.settings)) { return false; diff --git a/driver/src/test/java/org/neo4j/driver/testutil/SessionExtension.java b/driver/src/test/java/org/neo4j/driver/testutil/SessionExtension.java index be9322073c..9435ce6010 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/SessionExtension.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/SessionExtension.java @@ -120,7 +120,7 @@ public Bookmark lastBookmark() { @Override @SuppressWarnings("deprecation") public Set lastBookmarks() { - Bookmark bookmark = lastBookmark(); + var bookmark = lastBookmark(); if (bookmark == null || bookmark.isEmpty()) { return Collections.emptySet(); } else if (bookmark.values().size() == 1) { diff --git a/driver/src/test/java/org/neo4j/driver/testutil/TemporalUtil.java b/driver/src/test/java/org/neo4j/driver/testutil/TemporalUtil.java index 704c483e8f..8c63e56ed8 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/TemporalUtil.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/TemporalUtil.java @@ -36,10 +36,8 @@ import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.temporal.ChronoField; -import java.time.temporal.ValueRange; import java.util.Arrays; import java.util.List; -import java.util.Set; import java.util.concurrent.ThreadLocalRandom; import org.neo4j.driver.internal.InternalIsoDuration; import org.neo4j.driver.types.IsoDuration; @@ -78,7 +76,7 @@ public static LocalDate randomLocalDate() { } public static OffsetTime randomOffsetTime() { - ZoneOffset offset = randomZoneOffset(); + var offset = randomZoneOffset(); return OffsetTime.of( random(HOUR_OF_DAY), random(MINUTE_OF_HOUR), random(SECOND_OF_MINUTE), random(NANO_OF_SECOND), offset); } @@ -112,7 +110,7 @@ public static ZonedDateTime randomZonedDateTimeWithZoneId() { } public static IsoDuration randomDuration() { - int sign = random().nextBoolean() ? 1 : -1; // duration can be negative + var sign = random().nextBoolean() ? 1 : -1; // duration can be negative return new InternalIsoDuration( sign * randomInt(), sign * randomInt(), sign * randomInt(), Math.abs(random(NANO_OF_SECOND))); } @@ -130,19 +128,19 @@ private static ZonedDateTime randomZonedDateTime(ZoneId zoneId) { } private static ZoneOffset randomZoneOffset() { - int min = ZoneOffset.MIN.getTotalSeconds(); - int max = ZoneOffset.MAX.getTotalSeconds(); + var min = ZoneOffset.MIN.getTotalSeconds(); + var max = ZoneOffset.MAX.getTotalSeconds(); return ZoneOffset.ofTotalSeconds(random().nextInt(min, max)); } private static ZoneId randomZoneId() { - Set availableZoneIds = ZoneId.getAvailableZoneIds().stream() + var availableZoneIds = ZoneId.getAvailableZoneIds().stream() .filter(id -> !EXCLUDED_ZONE_IDS.contains(id)) .collect(toSet()); - int randomIndex = random().nextInt(availableZoneIds.size()); - int index = 0; - for (String id : availableZoneIds) { + var randomIndex = random().nextInt(availableZoneIds.size()); + var index = 0; + for (var id : availableZoneIds) { if (index == randomIndex) { return ZoneId.of(id); } else { @@ -153,10 +151,10 @@ private static ZoneId randomZoneId() { } private static int random(ChronoField field) { - ValueRange range = field.range(); - long min = range.getMinimum(); - long max = range.getSmallestMaximum(); - long value = random().nextLong(min, max); + var range = field.range(); + var min = range.getMinimum(); + var max = range.getSmallestMaximum(); + var value = random().nextLong(min, max); return Math.toIntExact(value); } diff --git a/driver/src/test/java/org/neo4j/driver/testutil/TestUtil.java b/driver/src/test/java/org/neo4j/driver/testutil/TestUtil.java index d98a42259d..6f66a8b162 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/TestUtil.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/TestUtil.java @@ -70,7 +70,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; import org.neo4j.driver.Driver; -import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.SessionConfig; import org.neo4j.driver.exceptions.ServiceUnavailableException; @@ -165,14 +164,14 @@ public static > T await(U future) { public static void assertByteBufContains(ByteBuf buf, Number... values) { try { assertNotNull(buf); - int expectedReadableBytes = 0; - for (Number value : values) { + var expectedReadableBytes = 0; + for (var value : values) { expectedReadableBytes += bytesCount(value); } assertEquals(expectedReadableBytes, buf.readableBytes(), "Unexpected number of bytes"); - for (Number expectedValue : values) { - Number actualValue = read(buf, expectedValue.getClass()); - String valueType = actualValue.getClass().getSimpleName(); + for (var expectedValue : values) { + var actualValue = read(buf, expectedValue.getClass()); + var valueType = actualValue.getClass().getSimpleName(); assertEquals(expectedValue, actualValue, valueType + " values not equal"); } } finally { @@ -202,35 +201,35 @@ public static Set asSet(T... elements) { } public static void cleanDb(Driver driver) { - try (Session session = driver.session()) { + try (var session = driver.session()) { cleanDb(session); } } public static void dropDatabase(Driver driver, String database) { - boolean databaseExists = databaseExists(driver, database); + var databaseExists = databaseExists(driver, database); if (!databaseExists) { return; } - try (Session session = driver.session(forDatabase("system"))) { + try (var session = driver.session(forDatabase("system"))) { session.run("DROP DATABASE " + database).consume(); } } public static void createDatabase(Driver driver, String database) { - boolean databaseExists = databaseExists(driver, database); + var databaseExists = databaseExists(driver, database); if (databaseExists) { return; } - try (Session session = driver.session(SessionConfig.forDatabase("system"))) { + try (var session = driver.session(SessionConfig.forDatabase("system"))) { session.run("CREATE DATABASE " + database).consume(); } } public static boolean databaseExists(Driver driver, String database) { - try (Session session = driver.session(forDatabase("system"))) { + try (var session = driver.session(forDatabase("system"))) { // No procedure equivalent and `call dbms.database.state("db")` also throws an exception when db doesn't // exist return session.run("SHOW DATABASES").stream() @@ -446,12 +445,12 @@ public static Connection connectionMock(String databaseName, BoltProtocol protoc } public static Connection connectionMock(String databaseName, AccessMode mode, BoltProtocol protocol) { - Connection connection = mock(Connection.class); + var connection = mock(Connection.class); when(connection.serverAddress()).thenReturn(BoltServerAddress.LOCAL_DEFAULT); when(connection.protocol()).thenReturn(protocol); when(connection.mode()).thenReturn(mode); when(connection.databaseName()).thenReturn(database(databaseName)); - BoltProtocolVersion version = protocol.version(); + var version = protocol.version(); if (version.equals(BoltProtocolV3.VERSION) || version.equals(BoltProtocolV4.VERSION) || version.equals(BoltProtocolV41.VERSION) @@ -494,9 +493,9 @@ public static void interruptWhenInWaitingState(Thread thread) { } public static String randomString(int size) { - StringBuilder sb = new StringBuilder(size); - ThreadLocalRandom random = ThreadLocalRandom.current(); - for (int i = 0; i < size; i++) { + var sb = new StringBuilder(size); + var random = ThreadLocalRandom.current(); + for (var i = 0; i < size; i++) { sb.append(ALPHANUMERICS.charAt(random.nextInt(ALPHANUMERICS.length()))); } return sb.toString(); @@ -527,7 +526,7 @@ private static void assertNoCircularReferences(Throwable ex, List lis } assertNoCircularReferences(ex.getCause(), list); } - for (Throwable suppressed : ex.getSuppressed()) { + for (var suppressed : ex.getSuppressed()) { if (list.contains(suppressed)) { throw new AssertionError("Circular reference detected", suppressed); } @@ -554,7 +553,7 @@ private static void cleanDb(Session session) { private static int deleteBatchOfNodes(Session session) { return session.executeWrite(tx -> { - Result result = tx.run("MATCH (n) WITH n LIMIT 1000 DETACH DELETE n RETURN count(n)"); + var result = tx.run("MATCH (n) WITH n LIMIT 1000 DETACH DELETE n RETURN count(n)"); return result.single().get(0).asInt(); }); } @@ -604,13 +603,13 @@ private static void releaseIfPossible(ByteBuf buf) { public static T serializeAndReadBack(T instance, Class targetClass) throws IOException, ClassNotFoundException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try (ObjectOutputStream oos = new ObjectOutputStream(bos)) { + var bos = new ByteArrayOutputStream(); + try (var oos = new ObjectOutputStream(bos)) { oos.writeObject(instance); } bos.close(); - try (ObjectInputStream oos = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) { + try (var oos = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) { return targetClass.cast(oos.readObject()); } } diff --git a/driver/src/test/java/org/neo4j/driver/testutil/cc/LocalOrRemoteClusterExtension.java b/driver/src/test/java/org/neo4j/driver/testutil/cc/LocalOrRemoteClusterExtension.java index aa95a3e822..15cea63c57 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/cc/LocalOrRemoteClusterExtension.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/cc/LocalOrRemoteClusterExtension.java @@ -27,7 +27,6 @@ import org.neo4j.driver.AuthTokenManager; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Config; -import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.internal.security.StaticAuthTokenManager; import org.neo4j.driver.testutil.TestUtil; @@ -61,7 +60,7 @@ public void beforeAll(ExtensionContext context) { clusterUri = remoteClusterUriFromSystemProperty(); cleanDb(); } else { - String neo4JVersion = + var neo4JVersion = Optional.ofNullable(System.getenv("NEO4J_VERSION")).orElse("4.4"); neo4jContainer = new Neo4jContainer<>(String.format("neo4j:%s-enterprise", neo4JVersion)) .withEnv("NEO4J_ACCEPT_LICENSE_AGREEMENT", "yes"); @@ -84,17 +83,17 @@ public void afterAll(ExtensionContext context) { } private void cleanDb() { - Config.ConfigBuilder builder = Config.builder(); + var builder = Config.builder(); builder.withEventLoopThreads(1); - try (Driver driver = GraphDatabase.driver(getClusterUri(), getAuthToken(), builder.build())) { + try (var driver = GraphDatabase.driver(getClusterUri(), getAuthToken(), builder.build())) { TestUtil.cleanDb(driver); } } private static void assertValidSystemPropertiesDefined() { - URI uri = remoteClusterUriFromSystemProperty(); - String password = neo4jUserPasswordFromSystemProperty(); + var uri = remoteClusterUriFromSystemProperty(); + var password = neo4jUserPasswordFromSystemProperty(); if ((uri != null && password == null) || (uri == null && password != null)) { throw new IllegalStateException( "Both cluster uri and 'neo4j' user password system properties should be set. " + "Uri: '" + uri @@ -107,7 +106,7 @@ private static boolean remoteClusterExists() { } private static URI remoteClusterUriFromSystemProperty() { - String uri = System.getProperty(CLUSTER_URI_SYSTEM_PROPERTY_NAME); + var uri = System.getProperty(CLUSTER_URI_SYSTEM_PROPERTY_NAME); return uri == null ? null : URI.create(uri); } diff --git a/driver/src/test/java/org/neo4j/driver/types/TypeSystemTest.java b/driver/src/test/java/org/neo4j/driver/types/TypeSystemTest.java index fc7b449779..9b373a6789 100644 --- a/driver/src/test/java/org/neo4j/driver/types/TypeSystemTest.java +++ b/driver/src/test/java/org/neo4j/driver/types/TypeSystemTest.java @@ -62,7 +62,7 @@ class TypeSystemTest { private InternalTypeSystem typeSystem = TYPE_SYSTEM; private TypeVerifier newTypeVerifierFor(Type type) { - HashSet allValues = new HashSet<>(); + var allValues = new HashSet(); allValues.add(integerValue); allValues.add(stringValue); allValues.add(floatValue); @@ -99,7 +99,7 @@ void shouldNameTypeCorrectly() { @Test void shouldInferAnyTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.ANY())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.ANY())) { verifier.assertIncludes(booleanValue); verifier.assertIncludes(stringValue); verifier.assertIncludes(integerValue); @@ -114,7 +114,7 @@ void shouldInferAnyTypeCorrectly() { @Test void shouldInferNumberTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.NUMBER())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.NUMBER())) { verifier.assertIncludes(integerValue); verifier.assertIncludes(floatValue); } @@ -122,28 +122,28 @@ void shouldInferNumberTypeCorrectly() { @Test void shouldInferNodesTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.NODE())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.NODE())) { verifier.assertIncludes(nodeValue); } } @Test void shouldInferRelTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.RELATIONSHIP())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.RELATIONSHIP())) { verifier.assertIncludes(relationshipValue); } } @Test void shouldInferStringTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.STRING())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.STRING())) { verifier.assertIncludes(stringValue); } } @Test void shouldInferMapTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.MAP())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.MAP())) { verifier.assertIncludes(nodeValue); verifier.assertIncludes(relationshipValue); verifier.assertIncludes(mapValue); @@ -152,42 +152,42 @@ void shouldInferMapTypeCorrectly() { @Test void shouldInferPathTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.PATH())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.PATH())) { verifier.assertIncludes(pathValue); } } @Test void shouldInferNullCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.NULL())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.NULL())) { verifier.assertIncludes(nullValue); } } @Test void shouldInferBooleanTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.BOOLEAN())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.BOOLEAN())) { verifier.assertIncludes(booleanValue); } } @Test void shouldIntegerTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.INTEGER())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.INTEGER())) { verifier.assertIncludes(integerValue); } } @Test void shouldInferFloatTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(TYPE_SYSTEM.FLOAT())) { + try (var verifier = newTypeVerifierFor(TYPE_SYSTEM.FLOAT())) { verifier.assertIncludes(floatValue); } } @Test void shouldInferListTypeCorrectly() { - try (TypeVerifier verifier = newTypeVerifierFor(typeSystem.LIST())) { + try (var verifier = newTypeVerifierFor(typeSystem.LIST())) { verifier.assertIncludes(listValue); } } @@ -222,7 +222,7 @@ void assertIncludes(Value value) { @Override public void close() { - for (Value value : values) { + for (var value : values) { assertThat(value, not(hasType(type))); } }