jiajunwang commented on a change in pull request #1123:
URL: https://github.com/apache/helix/pull/1123#discussion_r446004914
##########
File path:
helix-core/src/test/java/org/apache/helix/controller/rebalancer/waged/TestAssignmentMetadataStore.java
##########
@@ -107,55 +84,103 @@ public void afterClass() {
*/
@Test
public void testReadEmptyBaseline() {
- Map<String, ResourceAssignment> baseline = _store.getBaseline();
- Assert.assertTrue(baseline.isEmpty());
+ // This should be the first test. Assert there is no record in ZK.
+ // Check that only one version exists
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 0);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
0);
+ // Read from cache and the result is empty.
+ Assert.assertTrue(_store.getBaseline().isEmpty());
+ Assert.assertTrue(_store.getBestPossibleAssignment().isEmpty());
}
/**
* Test that if the old assignment and new assignment are the same,
*/
@Test(dependsOnMethods = "testReadEmptyBaseline")
public void testAvoidingRedundantWrite() {
- String baselineKey = "BASELINE";
- String bestPossibleKey = "BEST_POSSIBLE";
-
Map<String, ResourceAssignment> dummyAssignment = getDummyAssignment();
// Call persist functions
_store.persistBaseline(dummyAssignment);
_store.persistBestPossibleAssignment(dummyAssignment);
// Check that only one version exists
- List<String> baselineVersions = getExistingVersionNumbers(baselineKey);
- List<String> bestPossibleVersions =
getExistingVersionNumbers(bestPossibleKey);
- Assert.assertEquals(baselineVersions.size(), 1);
- Assert.assertEquals(bestPossibleVersions.size(), 1);
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 1);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
1);
// Call persist functions again
_store.persistBaseline(dummyAssignment);
_store.persistBestPossibleAssignment(dummyAssignment);
// Check that only one version exists still
- baselineVersions = getExistingVersionNumbers(baselineKey);
- bestPossibleVersions = getExistingVersionNumbers(bestPossibleKey);
- Assert.assertEquals(baselineVersions.size(), 1);
- Assert.assertEquals(bestPossibleVersions.size(), 1);
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 1);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
1);
}
- @Test
+ @Test(dependsOnMethods = "testAvoidingRedundantWrite")
public void testAssignmentCache() {
Map<String, ResourceAssignment> dummyAssignment = getDummyAssignment();
// Call persist functions
_store.persistBaseline(dummyAssignment);
_store.persistBestPossibleAssignment(dummyAssignment);
+ // Check that only one version exists
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 1);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
1);
+
+ // Same data in cache
Assert.assertEquals(_store._bestPossibleAssignment, dummyAssignment);
Assert.assertEquals(_store._globalBaseline, dummyAssignment);
+ dummyAssignment.values().stream().forEach(assignment -> {
+ assignment.addReplicaMap(new Partition("foo"), Collections.emptyMap());
+ });
+
+ // Call persist functions
+ _store.persistBaseline(dummyAssignment);
+ _store.persistBestPossibleAssignment(dummyAssignment);
+
+ // Check that two versions exist
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 2);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
2);
+
+ // Same data in cache
+ Assert.assertEquals(_store._bestPossibleAssignment, dummyAssignment);
+ Assert.assertEquals(_store._globalBaseline, dummyAssignment);
+
+ // Clear cache
_store.reset();
Assert.assertEquals(_store._bestPossibleAssignment, null);
Assert.assertEquals(_store._globalBaseline, null);
+
+ // Check the persisted data is not changed.
+ Assert.assertEquals(getExistingVersionNumbers(BASELINE_KEY).size(), 2);
+ Assert.assertEquals(getExistingVersionNumbers(BEST_POSSIBLE_KEY).size(),
2);
+ }
+
+ @Test(dependsOnMethods = "testAssignmentCache")
+ void testClearAssignment() {
+ // Check the persisted data is not empty
+ List<String> baselineVersions = getExistingVersionNumbers(BASELINE_KEY);
+ List<String> bestPossibleVersions =
getExistingVersionNumbers(BEST_POSSIBLE_KEY);
+ int baselineVersionCount = baselineVersions.size();
+ int bestPossibleVersionCount = bestPossibleVersions.size();
+ Assert.assertTrue(baselineVersionCount > 0);
+ Assert.assertTrue(bestPossibleVersionCount > 0);
+
+ _store.clearAssignmentMetadata();
+
+ // 1. cache is cleaned up
+ Assert.assertEquals(_store._bestPossibleAssignment,
Collections.emptyMap());
+ Assert.assertEquals(_store._globalBaseline, Collections.emptyMap());
+ // 2. refresh the cache and then read from ZK again to ensure the
persisted assignments is empty
+ _store.reset();
+ Assert.assertEquals(_store.getBaseline(), Collections.emptyMap());
Review comment:
No difference. Same thing.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]