test: make TestHiveStore#testBenchmarkExists deterministic #301
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
gora-hiveorg.apache.gora.hive.store.TestHiveStore#testBenchmarkExistsgora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.javaMotivation
The original benchmark test has two issues:
UUID randomness:
SQL parsing instability:
The goal is to solve these two problems while maintaining test semantic invariance:
Fix (maintaining original test semantic equivalence)
Data determinism:
key-%05dto replaceUUID.randomUUID()Replace exists implementation:
Equivalence To Original Test
Compared with the original DataStoreTestUtil.testBenchmarkExists method, the overridden testBenchmarkExists method maintains core logic completely, with only two implementation-level adjustments:
Test scale and process remain unchanged:
Two implementation-level adjustments:
These adjustments do not change test coverage and standards, only enhancing test reliability and reproducibility.
Validation
mvn -pl gora-hive -Dtest=org.apache.gora.hive.store.TestHiveStore#testBenchmarkExists testpassesRisk
Low. Adjustments are at test level only; maintaining semantic equivalence and coverage, improving stability and reproducibility.