This is an automated email from the ASF dual-hosted git repository.

zhouxj pushed a commit to branch feature/GEODE-7682
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-7682 by this 
push:
     new 2994ed8  add a dunit test
2994ed8 is described below

commit 2994ed83b35c1e8579491d0503d327bd8759db4a
Author: zhouxh <gz...@pivotal.io>
AuthorDate: Wed Feb 26 17:12:08 2020 -0800

    add a dunit test
---
 .../cache/PartitionedRegionClearDUnitTest.java     | 121 +++++++++++++++++++++
 1 file changed, 121 insertions(+)

diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearDUnitTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearDUnitTest.java
new file mode 100644
index 0000000..7eb7d53
--- /dev/null
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionClearDUnitTest.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license
+ * agreements. See the NOTICE file distributed with this work for additional 
information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache 
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the 
License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software 
distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
KIND, either express
+ * or implied. See the License for the specific language governing permissions 
and limitations under
+ * the License.
+ */
+package org.apache.geode.internal.cache;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.stream.IntStream;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.PartitionAttributesFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.test.dunit.cache.CacheTestCase;
+import org.apache.geode.test.dunit.rules.ClientVM;
+import org.apache.geode.test.dunit.rules.ClusterStartupRule;
+import org.apache.geode.test.dunit.rules.MemberVM;
+
+
+public class PartitionedRegionClearDUnitTest extends CacheTestCase {
+  protected static final String REGION_NAME = "testPR";
+  protected static final int NUM_ENTRIES = 1000;
+
+  protected int locatorPort;
+  protected MemberVM locator;
+  protected MemberVM dataStore1, dataStore2, accessor;
+  protected ClientVM client1, client2;
+
+  @Rule
+  public ClusterStartupRule cluster = new ClusterStartupRule(6);
+
+  @Before
+  public void setUp() throws Exception {
+    locator = cluster.startLocatorVM(0);
+    locatorPort = locator.getPort();
+    dataStore1 = cluster.startServerVM(1, locatorPort);
+    dataStore2 = cluster.startServerVM(2, locatorPort);
+    accessor = cluster.startServerVM(3, locatorPort);
+    client1 = cluster.startClientVM(4, c -> 
c.withLocatorConnection((locatorPort)));
+    client2 = cluster.startClientVM(5, c -> 
c.withLocatorConnection((locatorPort)));
+    dataStore1.invoke(this::initDataStore);
+    dataStore2.invoke(this::initDataStore);
+    accessor.invoke(this::initAccessor);
+
+    accessor.invoke(this::insertEntries);
+    dataStore1.invoke(this::verifyDataIsLoaded);
+    dataStore2.invoke(this::verifyDataIsLoaded);
+  }
+
+  private void verifyDataIsLoaded() {
+    Region region = cache.getRegion(REGION_NAME);
+    assertThat(region.size()).isEqualTo(NUM_ENTRIES);
+  }
+
+  private void initDataStore() {
+    Cache cache = getCache();
+    cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT)
+        .setPartitionAttributes(new 
PartitionAttributesFactory().setTotalNumBuckets(10).create())
+        .create(REGION_NAME);
+  }
+
+  private void initAccessor() {
+    Cache cache = getCache();
+    cache.createRegionFactory(RegionShortcut.PARTITION_REDUNDANT)
+        .setPartitionAttributes(
+            new 
PartitionAttributesFactory().setTotalNumBuckets(10).setLocalMaxMemory(0).create())
+        .create(REGION_NAME);
+  }
+
+  private void insertEntries() {
+    Cache cache = getCache();
+    Region region = cache.getRegion(REGION_NAME);
+    IntStream.range(0, NUM_ENTRIES).forEach(i -> region.put(i, "value" + i));
+    assertThat(region.size()).isEqualTo(NUM_ENTRIES);
+  }
+
+  @Test
+  public void normalClearFromDataStore() {
+    dataStore1.invoke(() -> {
+      Region region = cache.getRegion(REGION_NAME);
+      assertThat(region.size()).isEqualTo(NUM_ENTRIES);
+
+      region.clear();
+      assertThat(region.size()).isEqualTo(0);
+    });
+    dataStore2.invoke(() -> {
+      Region region = cache.getRegion(REGION_NAME);
+      assertThat(region.size()).isEqualTo(0);
+    });
+  }
+
+  @Test
+  public void normalClearFromAccessor() {
+    accessor.invoke(() -> {
+      Region region = cache.getRegion(REGION_NAME);
+      assertThat(region.size()).isEqualTo(NUM_ENTRIES);
+      region.clear();
+
+      assertThat(region.size()).isEqualTo(0);
+    });
+    dataStore2.invoke(() -> {
+      Region region = cache.getRegion(REGION_NAME);
+      assertThat(region.size()).isEqualTo(0);
+    });
+  }
+}

Reply via email to