[ https://issues.apache.org/jira/browse/TINKERPOP-3079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17847207#comment-17847207 ]
ASF GitHub Bot commented on TINKERPOP-3079: ------------------------------------------- codecov-commenter commented on PR #2608: URL: https://github.com/apache/tinkerpop/pull/2608#issuecomment-2117045164 ## [Codecov](https://app.codecov.io/gh/apache/tinkerpop/pull/2608?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report All modified and coverable lines are covered by tests :white_check_mark: > Project coverage is 80.44%. Comparing base [(`2d32517`)](https://app.codecov.io/gh/apache/tinkerpop/commit/2d32517b3bca1b00d716b3205c2abdbcd6ed3352?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) to head [(`ffd57f5`)](https://app.codecov.io/gh/apache/tinkerpop/pull/2608?dropdown=coverage&src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache). > Report is 130 commits behind head on master. <details><summary>Additional details and impacted files</summary> ```diff @@ Coverage Diff @@ ## master #2608 +/- ## ============================================ + Coverage 76.16% 80.44% +4.28% ============================================ Files 1085 27 -1058 Lines 65189 5002 -60187 Branches 7289 0 -7289 ============================================ - Hits 49651 4024 -45627 + Misses 12830 776 -12054 + Partials 2708 202 -2506 ``` </details> [:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/apache/tinkerpop/pull/2608?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache). :loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache). > The test `TraversalStrategiesTest#shouldAllowUserManipulationOfGlobalCache` > is not idempotent, as it passes in the first run and fails in repeated runs > in the same environment. > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: TINKERPOP-3079 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3079 > Project: TinkerPop > Issue Type: Bug > Environment: Ubuntu 22.04, Java 17 > Reporter: Kaiyao Ke > Priority: Major > Original Estimate: 1h > Remaining Estimate: 1h > > ### Brief Description of the Bug > The test `TraversalStrategiesTest#shouldAllowUserManipulationOfGlobalCache` > is non-idempotent, as it passes in the first run but fails in the second run > in the same environment. The source of the problem is that the initial > strategies registration (`StrategyA`, `StrategyB` and `StrategyC`) for the > `TestGraph` and ` TestGraphComputer` classes are static (see > https://github.com/apache/tinkerpop/blob/66e5a47ffd3976d29bc7797c399b8e11c5ba810e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java#L132 > and > https://github.com/apache/tinkerpop/blob/66e5a47ffd3976d29bc7797c399b8e11c5ba810e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java#L185). > These static blocks will only be called once during class loading. > In the first execution of the test > `TraversalStrategiesTest#shouldAllowUserManipulationOfGlobalCache`, > `StrategyA` is removed from global > strategies(https://github.com/apache/tinkerpop/blob/66e5a47ffd3976d29bc7797c399b8e11c5ba810e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java#L82), > and the test does not restore it after execution. > Therefore, in the second execution of the test, `StrategyA` is not present in > the global strategies, so assertions like > `assertTrue(strategies.getStrategy(StrategyA.class).isPresent())` would > fail(https://github.com/apache/tinkerpop/blob/66e5a47ffd3976d29bc7797c399b8e11c5ba810e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java#L77). > A fix is necessary since unit tests shall be self-contained. Idempotent tests > help maintain this isolation by ensuring that the state of the system under > test is consistent at the beginning of each test, regardless of previous test > runs. For example, fixing non-idempotent tests can help proactively avoid > state pollution that results in test order dependency (which could hurt > regression testing with the use of test selection / prioritization / > parallelism. > ### Failure Message in the 2nd Test Run: > ``` > java.lang.AssertionError: > at org.junit.Assert.fail(Assert.java:87) > at org.junit.Assert.assertTrue(Assert.java:42) > at org.junit.Assert.assertTrue(Assert.java:53) > at > org.apache.tinkerpop.gremlin.process.TraversalStrategiesTest.shouldAllowUserManipulationOfGlobalCache(TraversalStrategiesTest.java:77) > ``` > ### Reproduce > Use the `NIOInspector` plugin that supports rerunning individual tests in the > same environment: > ``` > cd gremlin-core > mvn edu.illinois:NIOInspector:rerun > -Dtest=org.apache.tinkerpop.gremlin.process.TraversalStrategiesTest#shouldAllowUserManipulationOfGlobalCache > ``` > ### Proposed Fix > Handle initial strategies registration in a `setup()` method rather than in > static blocks of test classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)