From 95664169cb2bfccbc1a3ffd20a419fe4f34a82c5 Mon Sep 17 00:00:00 2001 From: Gregory Woods Date: Wed, 26 May 2021 12:56:48 +0100 Subject: [PATCH 1/6] Transaction Rollback --- .../messages/requests/TestkitRequest.java | 3 +- .../requests/TransactionRollback.java | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TransactionRollback.java diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java index 9445e8283e..c4d45f4770 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java @@ -34,7 +34,8 @@ @JsonSubTypes.Type( SessionBeginTransaction.class ), @JsonSubTypes.Type( TransactionCommit.class ), @JsonSubTypes.Type( SessionLastBookmarks.class ), @JsonSubTypes.Type( SessionWriteTransaction.class ), @JsonSubTypes.Type( ResolverResolutionCompleted.class ), @JsonSubTypes.Type( CheckMultiDBSupport.class ), - @JsonSubTypes.Type( DomainNameResolutionCompleted.class ), @JsonSubTypes.Type( StartTest.class ) + @JsonSubTypes.Type( DomainNameResolutionCompleted.class ), @JsonSubTypes.Type( StartTest.class ), + @JsonSubTypes.Type( TransactionRollback.class ) } ) public interface TestkitRequest { diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TransactionRollback.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TransactionRollback.java new file mode 100644 index 0000000000..439cfac062 --- /dev/null +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TransactionRollback.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) "Neo4j" + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package neo4j.org.testkit.backend.messages.requests; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import neo4j.org.testkit.backend.TestkitState; +import neo4j.org.testkit.backend.messages.responses.TestkitResponse; +import neo4j.org.testkit.backend.messages.responses.Transaction; + +import java.util.Optional; + +@Getter +@NoArgsConstructor +@Setter +public class TransactionRollback implements TestkitRequest +{ + private TransactionRollbackBody data; + + @Override + public TestkitResponse process( TestkitState testkitState ) + { + return Optional.ofNullable( testkitState.getTransactions().get( data.txId ) ) + .map( tx -> + { + tx.rollback(); + return transaction( data.txId ); + } ) + .orElseThrow( () -> new RuntimeException( "Could not find transaction" ) ); + } + + private Transaction transaction( String txId ) + { + return Transaction.builder().data( Transaction.TransactionBody.builder().id( txId ).build() ).build(); + } + + @Getter + @NoArgsConstructor + @Setter + public static class TransactionRollbackBody + { + private String txId; + } +} \ No newline at end of file From d519fb5b6d5fddcaf7321edf2e8516db8aa23437 Mon Sep 17 00:00:00 2001 From: Dmitriy Tverdiakov <11927660+injectives@users.noreply.github.com> Date: Tue, 11 May 2021 15:28:28 +0100 Subject: [PATCH 2/6] Implement backend driver feature list (#889) --- .../messages/requests/GetFeatures.java | 44 +++++++++++++++++ .../messages/requests/TestkitRequest.java | 2 +- .../messages/responses/FeatureList.java | 47 +++++++++++++++++++ 3 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java create mode 100644 testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/FeatureList.java diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java new file mode 100644 index 0000000000..8a3428efe4 --- /dev/null +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) "Neo4j" + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package neo4j.org.testkit.backend.messages.requests; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import neo4j.org.testkit.backend.TestkitState; +import neo4j.org.testkit.backend.messages.responses.FeatureList; +import neo4j.org.testkit.backend.messages.responses.TestkitResponse; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +@Setter +@Getter +@NoArgsConstructor +public class GetFeatures implements TestkitRequest +{ + private static final Set FEATURES = new HashSet<>( Collections.singletonList( "AuthorizationExpiredTreatment" ) ); + + @Override + public TestkitResponse process( TestkitState testkitState ) + { + return FeatureList.builder().data( FeatureList.FeatureListBody.builder().features( FEATURES ).build() ).build(); + } +} diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java index c4d45f4770..3b63a2157c 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/TestkitRequest.java @@ -35,7 +35,7 @@ @JsonSubTypes.Type( SessionLastBookmarks.class ), @JsonSubTypes.Type( SessionWriteTransaction.class ), @JsonSubTypes.Type( ResolverResolutionCompleted.class ), @JsonSubTypes.Type( CheckMultiDBSupport.class ), @JsonSubTypes.Type( DomainNameResolutionCompleted.class ), @JsonSubTypes.Type( StartTest.class ), - @JsonSubTypes.Type( TransactionRollback.class ) + @JsonSubTypes.Type( TransactionRollback.class ), @JsonSubTypes.Type( GetFeatures.class ) } ) public interface TestkitRequest { diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/FeatureList.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/FeatureList.java new file mode 100644 index 0000000000..31520d88a2 --- /dev/null +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/FeatureList.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) "Neo4j" + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package neo4j.org.testkit.backend.messages.responses; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@Setter +@Getter +@Builder +public class FeatureList implements TestkitResponse +{ + private final FeatureListBody data; + + @Override + public String testkitName() + { + return "FeatureList"; + } + + @Setter + @Getter + @Builder + public static class FeatureListBody + { + private final Set features; + } +} From 04ed91bfd3f8d4f09e688e24321f4810f577bfe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Barc=C3=A9los?= Date: Tue, 18 May 2021 15:05:46 +0200 Subject: [PATCH 3/6] testkit-backend: fix TestkitListDeserializer (#893) Enabling `list of maps` deserialization by adding a special case for treating this data type. The extras `nextToken` calls were removed because this was making the deserializer leaves the parent object, this way breaking the `map of lists` deserialization. --- .../deserializer/TestkitListDeserializer.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/deserializer/TestkitListDeserializer.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/deserializer/TestkitListDeserializer.java index 3478c74475..42a11ca066 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/deserializer/TestkitListDeserializer.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/deserializer/TestkitListDeserializer.java @@ -32,10 +32,12 @@ public class TestkitListDeserializer extends StdDeserializer> { + private final TestkitCypherParamDeserializer mapDeserializer; public TestkitListDeserializer() { super( List.class ); + mapDeserializer = new TestkitCypherParamDeserializer(); } @Override @@ -88,14 +90,17 @@ public List deserialize( JsonParser p, DeserializationContext ctxt ) throws I } else { - result.add( p.readValueAs( mapValueType ) ); + if ( paramType.equals( "CypherMap" ) ) // special recursive case for maps + { + result.add( mapDeserializer.deserialize( p, ctxt ) ); + } else { + result.add( p.readValueAs( mapValueType ) ); + } } } } nextToken = p.nextToken(); } - p.nextToken(); - p.nextToken(); return result; } } \ No newline at end of file From d144cae2ba424e6cbd434cc6a9935d4175e62b32 Mon Sep 17 00:00:00 2001 From: Gregory Woods Date: Wed, 26 May 2021 14:37:11 +0100 Subject: [PATCH 4/6] Remove Authorization Feature --- .../org/testkit/backend/messages/requests/GetFeatures.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java index 8a3428efe4..6d8413f889 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetFeatures.java @@ -25,7 +25,6 @@ import neo4j.org.testkit.backend.messages.responses.FeatureList; import neo4j.org.testkit.backend.messages.responses.TestkitResponse; -import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -34,7 +33,7 @@ @NoArgsConstructor public class GetFeatures implements TestkitRequest { - private static final Set FEATURES = new HashSet<>( Collections.singletonList( "AuthorizationExpiredTreatment" ) ); + private static final Set FEATURES = new HashSet<>(); @Override public TestkitResponse process( TestkitState testkitState ) From 0bf99250809c31dbb6db48e2c52468d72abc6d44 Mon Sep 17 00:00:00 2001 From: Gregory Woods Date: Thu, 27 May 2021 10:38:27 +0100 Subject: [PATCH 5/6] Add skip for AuthorizationTests --- .../neo4j/org/testkit/backend/messages/requests/StartTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java index 7ac1429111..f651e58c65 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java @@ -48,6 +48,7 @@ public class StartTest implements TestkitRequest SKIP_PATTERN_TO_REASON .put( "^.+routing.Routing.*\\.test_should_successfully_get_server_protocol_version$", "The test is not applicable to 4.2 driver" ); SKIP_PATTERN_TO_REASON.put( "^.+routing.Routing.*\\.test_should_successfully_get_server_agent$", "The test is not applicable to 4.2 driver" ); + SKIP_PATTERN_TO_REASON.put( "^.*authorization.AuthorizationTests.*", "These tests is not applicable to 4.2 driver" ); } private StartTestBody data; From 457607b28e2690067d84708f44dfc1ce84635b35 Mon Sep 17 00:00:00 2001 From: Gregory Woods Date: Thu, 27 May 2021 12:54:47 +0100 Subject: [PATCH 6/6] Remove skip --- .../neo4j/org/testkit/backend/messages/requests/StartTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java index f651e58c65..7ac1429111 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartTest.java @@ -48,7 +48,6 @@ public class StartTest implements TestkitRequest SKIP_PATTERN_TO_REASON .put( "^.+routing.Routing.*\\.test_should_successfully_get_server_protocol_version$", "The test is not applicable to 4.2 driver" ); SKIP_PATTERN_TO_REASON.put( "^.+routing.Routing.*\\.test_should_successfully_get_server_agent$", "The test is not applicable to 4.2 driver" ); - SKIP_PATTERN_TO_REASON.put( "^.*authorization.AuthorizationTests.*", "These tests is not applicable to 4.2 driver" ); } private StartTestBody data;