[ 
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)

Reply via email to