This is an automated email from the ASF dual-hosted git repository.

kenhuuu pushed a commit to branch 3.7-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/3.7-dev by this push:
     new eebb8f8396 Fix Four Flaky Tests in gremlin-core (#3221)
eebb8f8396 is described below

commit eebb8f83965981d56704fff3d7f7e4dbedea33a1
Author: AnicaaOvO <[email protected]>
AuthorDate: Fri Oct 10 12:13:44 2025 -0500

    Fix Four Flaky Tests in gremlin-core (#3221)
    
    Hi! We detected flakiness in the following tests using the Nondex tool, The 
reason for the flakiness is similar to 
[#2943](https://github.com/apache/tinkerpop/pull/2943), which is due to the use 
of unordered collections.
    ```
    
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest.shouldHandleTraversalExplanation[v1]
    
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest.shouldHandleTraversalExplanation[v2-default]
    
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest.shouldHandleTraversalExplanation[v2]
    
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest.shouldHandleTraversalExplanation[v3]
    ```
    
    And correspondingly, the flakiness could be reproduced by running the 
following commands:
    ```
      mvn clean -pl gremlin-core \
        edu.illinois:nondex-maven-plugin:2.2.1:nondex \
        
-Dtest="org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest#shouldHandleTraversalExplanation[v1]"
 \
        -Drat.skip=true
    ```
    ```
      mvn clean -pl gremlin-core \
        edu.illinois:nondex-maven-plugin:2.2.1:nondex \
        
-Dtest="org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest#shouldHandleTraversalExplanation[v2]"
 \
        -Drat.skip=true
    ```
    ```
      mvn clean -pl gremlin-core \
        edu.illinois:nondex-maven-plugin:2.2.1:nondex \
        
-Dtest="org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest#shouldHandleTraversalExplanation[v2-default]"
 \
        -Drat.skip=true
    ```
    ```
      mvn clean -pl gremlin-core \
        edu.illinois:nondex-maven-plugin:2.2.1:nondex \
        
-Dtest="org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapperTest#shouldHandleTraversalExplanation[v3]"
 \
        -Drat.skip=true
    ```
    And the error might be as follows:
    ```
    [INFO]
    [INFO] Results:
    [INFO]
    [ERROR] Failures:
    [ERROR]   GraphSONMapperTest.shouldHandleTraversalExplanation:182 
expected:<...exStep(OUT,edge)"],"[intermediate":[],"final":["InjectStep([])","VertexStep(OUT,vertex)","EdgeVertexStep(OUT)","VertexStep(OUT,edge)"]]}>
 but 
was:<...exStep(OUT,edge)"],"[final":["InjectStep([])","VertexStep(OUT,vertex)","EdgeVertexStep(OUT)","VertexStep(OUT,edge)"],"intermediate":[]]}>
    [INFO]
    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
    ```
    Once fixed, the output should be `build success` without test errors.
---
 .../gremlin/structure/io/graphson/GraphSONSerializersV1.java         | 5 +++--
 .../gremlin/structure/io/graphson/GraphSONSerializersV2.java         | 5 +++--
 .../gremlin/structure/io/graphson/GraphSONSerializersV3.java         | 4 ++--
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
index 7f7f1adc76..dd45cef02d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
@@ -47,6 +47,7 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -339,14 +340,14 @@ final class GraphSONSerializersV1 {
         }
 
         public void ser(final TraversalExplanation te, final JsonGenerator 
jsonGenerator) throws IOException {
-            final Map<String, Object> m = new HashMap<>();
+            final Map<String, Object> m = new LinkedHashMap<>();
             m.put(GraphSONTokens.ORIGINAL, 
getStepsAsList(te.getOriginalTraversal()));
 
             final List<Pair<TraversalStrategy, Traversal.Admin<?,?>>> 
strategyTraversals = te.getStrategyTraversals();
 
             final List<Map<String,Object>> intermediates = new ArrayList<>();
             for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : 
strategyTraversals) {
-                final Map<String,Object> intermediate = new HashMap<>();
+                final Map<String,Object> intermediate = new LinkedHashMap<>();
                 intermediate.put(GraphSONTokens.STRATEGY, 
pair.getValue0().toString());
                 intermediate.put(GraphSONTokens.CATEGORY, 
pair.getValue0().getTraversalCategory().getSimpleName());
                 intermediate.put(GraphSONTokens.TRAVERSAL, 
getStepsAsList(pair.getValue1()));
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
index a36d3d9a0b..166c6074a2 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
@@ -65,6 +65,7 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -300,14 +301,14 @@ class GraphSONSerializersV2 {
         @Override
         public void serialize(final TraversalExplanation traversalExplanation, 
final JsonGenerator jsonGenerator,
                               final SerializerProvider serializerProvider) 
throws IOException {
-            final Map<String, Object> m = new HashMap<>();
+            final Map<String, Object> m = new LinkedHashMap<>();
             m.put(GraphSONTokens.ORIGINAL, 
getStepsAsList(traversalExplanation.getOriginalTraversal()));
 
             final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> 
strategyTraversals = traversalExplanation.getStrategyTraversals();
 
             final List<Map<String, Object>> intermediates = new ArrayList<>();
             for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : 
strategyTraversals) {
-                final Map<String, Object> intermediate = new HashMap<>();
+                final Map<String, Object> intermediate = new LinkedHashMap<>();
                 intermediate.put(GraphSONTokens.STRATEGY, 
pair.getValue0().toString());
                 intermediate.put(GraphSONTokens.CATEGORY, 
pair.getValue0().getTraversalCategory().getSimpleName());
                 intermediate.put(GraphSONTokens.TRAVERSAL, 
getStepsAsList(pair.getValue1()));
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
index c8a7cf2dc5..57c1269844 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
@@ -322,14 +322,14 @@ class GraphSONSerializersV3 {
         @Override
         public void serialize(final TraversalExplanation traversalExplanation, 
final JsonGenerator jsonGenerator,
                               final SerializerProvider serializerProvider) 
throws IOException {
-            final Map<String, Object> m = new HashMap<>();
+            final Map<String, Object> m = new LinkedHashMap<>();
             m.put(GraphSONTokens.ORIGINAL, 
getStepsAsList(traversalExplanation.getOriginalTraversal()));
 
             final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> 
strategyTraversals = traversalExplanation.getStrategyTraversals();
 
             final List<Map<String, Object>> intermediates = new ArrayList<>();
             for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : 
strategyTraversals) {
-                final Map<String, Object> intermediate = new HashMap<>();
+                final Map<String, Object> intermediate = new LinkedHashMap<>();
                 intermediate.put(GraphSONTokens.STRATEGY, 
pair.getValue0().toString());
                 intermediate.put(GraphSONTokens.CATEGORY, 
pair.getValue0().getTraversalCategory().getSimpleName());
                 intermediate.put(GraphSONTokens.TRAVERSAL, 
getStepsAsList(pair.getValue1()));

Reply via email to