This is an automated email from the ASF dual-hosted git repository. jchen21 pushed a commit to branch feature/GEODE-7681 in repository https://gitbox.apache.org/repos/asf/geode.git
commit e16f47b58cd48a87a7c4640e859df852f753e0e7 Author: Jianxia Chen <[email protected]> AuthorDate: Fri Mar 6 12:35:50 2020 -0800 Initiate clear from both client and server Authored-by: Jianxia Chen <[email protected]> --- ...PartitionedRegionClearPerformanceDUnitTest.java | 222 +++++++-------------- 1 file changed, 75 insertions(+), 147 deletions(-) diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearPerformanceDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearPerformanceDUnitTest.java index 72cc36b..f9b0cc1 100644 --- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearPerformanceDUnitTest.java +++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearPerformanceDUnitTest.java @@ -18,9 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.Serializable; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.stream.IntStream; import junitparams.JUnitParamsRunner; @@ -28,7 +26,6 @@ import junitparams.Parameters; import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.apache.geode.cache.Cache; @@ -91,38 +88,42 @@ public class PartitionedRegionClearPerformanceDUnitTest implements Serializable } private void populateRegion() { - server1.invoke(() -> { - Region region = ClusterStartupRule.getCache().getRegion("/" + regionName); + client.invoke(() -> { + Region clientRegion = ClusterStartupRule.getClientCache().getRegion("/" + regionName); Map<String, String> entries = new HashMap<>(); IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); entries.entrySet().forEach(e -> { - region.put(e.getKey(), e.getValue()); + clientRegion.put(e.getKey(), e.getValue()); }); }); } - @Test - @Parameters({"true", "false"}) - public void testNonPersistentNonRedundant(boolean isClient) { - createRegionInCluster(RegionShortcut.PARTITION, 113, 0); - populateRegion(); + private void assertRegionSizeOnServer(int size) { + server1.invoke(()-> { + Region region = ClusterStartupRule.getCache().getRegion(regionName); + assertThat(region.size()).isEqualTo(size); + }); + } + + private void assertRegionAttributesOnServer(int numBuckets, boolean persistent, int redundancy) { server1.invoke(() -> { Region region = ClusterStartupRule.getCache().getRegion(regionName); - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isFalse(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(0); + assertThat(region.getAttributes().getPartitionAttributes().getTotalNumBuckets()).isEqualTo(numBuckets); + assertThat(region.getAttributes().getDataPolicy().withPersistence()).isEqualTo(persistent); + assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(redundancy); }); + } + + private void doRegionClear(String methodName, boolean isClient) { if (isClient) { client.invoke(() -> { Region clientRegion = ClusterStartupRule.getClientCache().getRegion(regionName); long startTime = System.currentTimeMillis(); - Set keys = new HashSet<>(); - IntStream.range(0, numEntries).forEach(i -> keys.add("key-" + i)); - clientRegion.removeAll(keys); // should be clientRegion.clear(); + clientRegion.removeAll(clientRegion.keySet()); // should be clientRegion.clear(); long endTime = System.currentTimeMillis(); System.out.println( "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear. " + " isClient=" + isClient); + + " milliseconds to clear. methodName=" + methodName + " isClient=" + isClient); assertThat(clientRegion.size()).isEqualTo(0); }); } else { @@ -133,159 +134,86 @@ public class PartitionedRegionClearPerformanceDUnitTest implements Serializable long endTime = System.currentTimeMillis(); System.out.println( "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear. " + " isClient=" + isClient); + + " milliseconds to clear. methodName=" + methodName + " isClient=" + isClient); }); } - server1.invoke(()-> { - Region region = ClusterStartupRule.getCache().getRegion(regionName); - assertThat(region.size()).isEqualTo(0); - }); } -/* - @Test - public void testRedundancyOneNonPersistent() { - createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT, 113, 1); - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isFalse(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(1); + @Test + @Parameters({"true", "false"}) + public void testNonPersistentNonRedundant(boolean isClient) { + createRegionInCluster(RegionShortcut.PARTITION, 113, 0); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, false, 0); + doRegionClear("testNonPersistentNonRedundant", isClient); + assertRegionSizeOnServer(0); + } - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + @Test + @Parameters({"true", "false"}) + public void testRedundancyOneNonPersistent(boolean isClient) { + createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT, 113, 1); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, false, 1); + doRegionClear("testRedundancyOneNonPersistent", isClient); + assertRegionSizeOnServer(0); } @Test - public void testRedundancyTwoNonPersistent() { + @Parameters({"true", "false"}) + public void testRedundancyTwoNonPersistent(boolean isClient) { createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT, 113, 2); - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isFalse(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(2); - - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, false, 2); + doRegionClear("testRedundancyTwoNonPersistent", isClient); + assertRegionSizeOnServer(0); } @Test - public void testPersistentNonRedundant() { + @Parameters({"true", "false"}) + public void testPersistentNonRedundant(boolean isClient) { createRegionInCluster(RegionShortcut.PARTITION_PERSISTENT, 113, 0); - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isTrue(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(0); - - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, true, 0); + doRegionClear("testPersistentNonRedundant", isClient); + assertRegionSizeOnServer(0); } @Test - public void testPersistentRedundancyOne() { + @Parameters({"true", "false"}) + public void testPersistentRedundancyOne(boolean isClient) { createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT, 113, 1); - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isTrue(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(1); - - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, true, 1); + doRegionClear("testPersistentRedundancyOne", isClient); + assertRegionSizeOnServer(0); } @Test - public void testPersistentRedundancyTwo() { + @Parameters({"true", "false"}) + public void testPersistentRedundancyTwo(boolean isClient) { createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT, 113, 2); - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isTrue(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(2); - - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(113, true, 2); + doRegionClear("testPersistentRedundancyTwo", isClient); + assertRegionSizeOnServer(0); } @Test - public void testOneBucketPersistentRedundancyTwo() { + @Parameters({"true", "false"}) + public void testOneBucketPersistentRedundancyTwo(boolean isClient) { createRegionInCluster(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT, 1, 2); - - server1.invoke(() -> { - Map<String, String> entries = new HashMap<>(); - IntStream.range(0, numEntries).forEach(i -> entries.put("key-" + i, "value-" + i)); - populateRegion(regionName, entries); - - Region region = ClusterStartupRule.getCache().getRegion(regionName); - - assertThat(region.size()).isEqualTo(numEntries); - assertThat(region.getAttributes().getPartitionAttributes().getTotalNumBuckets()).isEqualTo(1); - assertThat(region.getAttributes().getDataPolicy().withPersistence()).isTrue(); - assertThat(region.getAttributes().getPartitionAttributes().getRedundantCopies()).isEqualTo(2); - - long startTime = System.currentTimeMillis(); - region.removeAll(entries.keySet()); // should be region.clear(); - long endTime = System.currentTimeMillis(); - System.out.println( - "Partitioned region with " + numEntries + " entries takes " + (endTime - startTime) - + " milliseconds to clear."); - assertThat(region.size()).isEqualTo(0); - }); + populateRegion(); + assertRegionSizeOnServer(numEntries); + assertRegionAttributesOnServer(1, true, 2); + doRegionClear("testOneBucketPersistentRedundancyTwo", isClient); + assertRegionSizeOnServer(0); } -*/ + }
