You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2018/03/26 17:37:37 UTC
[geode] 12/19: GEODE-1279: Rename Bug41091DUnitTest as
BucketCreationGIIHARegressionTest
This is an automated email from the ASF dual-hosted git repository.
klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
commit f53b5a6aaa23701af15a2388e191c8b9f939e461
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Mar 22 16:38:42 2018 -0700
GEODE-1279: Rename Bug41091DUnitTest as BucketCreationGIIHARegressionTest
* Cleanup the test.
---
.../cache/BucketCreationGIIHARegressionTest.java | 120 +++++++++++++++
.../geode/internal/cache/Bug41091DUnitTest.java | 169 ---------------------
2 files changed, 120 insertions(+), 169 deletions(-)
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java
new file mode 100644
index 0000000..754d645
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java
@@ -0,0 +1,120 @@
+/*
+ * 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.apache.geode.test.dunit.Host.getHost;
+import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.AttributesFactory;
+import org.apache.geode.cache.PartitionAttributesFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.DistributionMessageObserver;
+import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.cache.CacheTestCase;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
+
+/**
+ * This class tests that bucket regions can handle a failure of the GII target during GII.
+ *
+ * <p>
+ * TRAC #41091: Missing primary detected after member forcefully disconnected from DS (underlying
+ * InternalGemFireError: Trying to clear a bucket region that was not destroyed)
+ */
+@Category(DistributedTest.class)
+public class BucketCreationGIIHARegressionTest extends CacheTestCase {
+
+ private String uniqueName;
+
+ private VM server1;
+ private VM server2;
+ private VM server3;
+
+ @Rule
+ public SerializableTestName testName = new SerializableTestName();
+
+ @Before
+ public void setUp() throws Exception {
+ server1 = getHost(0).getVM(0);
+ server2 = getHost(0).getVM(1);
+ server3 = getHost(0).getVM(2);
+
+ uniqueName = getClass().getSimpleName() + "_" + testName.getMethodName();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ DistributionMessageObserver.setInstance(null);
+ invokeInEveryVM(() -> {
+ DistributionMessageObserver.setInstance(null);
+ });
+
+ disconnectAllFromDS();
+ }
+
+ @Test
+ public void bucketCreationLosesGiiTarget() {
+ server1.invoke(() -> createRegion());
+ server2.invoke(() -> createRegion());
+
+ server3.invoke(() -> {
+ PartitionAttributesFactory paf = new PartitionAttributesFactory();
+ paf.setRedundantCopies(1);
+ paf.setLocalMaxMemory(0);
+
+ AttributesFactory af = new AttributesFactory();
+ af.setPartitionAttributes(paf.create());
+
+ Region<Integer, String> region = getCache().createRegion(uniqueName, af.create());
+
+ region.put(0, "a");
+ });
+ }
+
+ private void createRegion() {
+ DistributionMessageObserver.setInstance(new MyDistributionMessageObserver());
+
+ PartitionAttributesFactory paf = new PartitionAttributesFactory();
+ paf.setRedundantCopies(1);
+
+ AttributesFactory af = new AttributesFactory();
+ af.setPartitionAttributes(paf.create());
+
+ getCache().createRegion(uniqueName, af.create());
+ }
+
+ private class MyDistributionMessageObserver extends DistributionMessageObserver {
+
+ @Override
+ public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+ if (message instanceof RequestImageMessage) {
+ RequestImageMessage rim = (RequestImageMessage) message;
+ Region region = getCache().getRegion(rim.regionPath);
+ if (region instanceof BucketRegion) {
+ getCache().close();
+ }
+ }
+ }
+ }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/Bug41091DUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/Bug41091DUnitTest.java
deleted file mode 100644
index 2c8f496..0000000
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/Bug41091DUnitTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.AttributesFactory;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.PartitionAttributesFactory;
-import org.apache.geode.cache.Region;
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
-import org.apache.geode.distributed.internal.DistributionMessageObserver;
-import org.apache.geode.internal.AvailablePort;
-import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage;
-import org.apache.geode.test.dunit.Assert;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.LogWriterUtils;
-import org.apache.geode.test.dunit.NetworkUtils;
-import org.apache.geode.test.dunit.SerializableRunnable;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-
-/**
- * This class tests that bucket regions can handle a failure of the GII target during GII.
- */
-@Category(DistributedTest.class)
-public class Bug41091DUnitTest extends JUnit4CacheTestCase {
-
- @Override
- public final void postTearDownCacheTestCase() throws Exception {
- disconnectAllFromDS();
- }
-
- @Test
- public void test() {
- final Host host = Host.getHost(0);
- VM vm0 = host.getVM(0);
- VM vm1 = host.getVM(1);
- VM vm2 = host.getVM(2);
- VM vm3 = host.getVM(3);
-
- final int locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-
- // We need to use our own locator because we need enable network partition detection.
- startLocatorInVM(vm3, locatorPort);
- try {
-
- final SerializableRunnable createRegion = new SerializableRunnable("create the region") {
-
- public void run() {
- DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
-
- @Override
- public void beforeProcessMessage(ClusterDistributionManager dm,
- DistributionMessage message) {
- if (message instanceof RequestImageMessage) {
- RequestImageMessage rim = (RequestImageMessage) message;
- Region region = getCache().getRegion(rim.regionPath);
- if (region instanceof BucketRegion) {
- // We can no longer do any puts until the bucket is completely created,
- // so this will hang
- // getCache().getRegion("region").put(113, "b");
- getCache().close();
- }
- }
- }
- });
-
- Properties props = new Properties();
- props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
- props.setProperty(LOCATORS,
- NetworkUtils.getServerHostName(host) + "[" + locatorPort + "]");
- getSystem(props);
-
-
- Cache cache = getCache();
- AttributesFactory af = new AttributesFactory();
- PartitionAttributesFactory paf = new PartitionAttributesFactory();
- paf.setRedundantCopies(1);
- af.setPartitionAttributes(paf.create());
- cache.createRegion("region", af.create());
- }
- };
- vm0.invoke(createRegion);
- vm1.invoke(createRegion);
-
- vm2.invoke(new SerializableRunnable("create an entry") {
-
- public void run() {
- Properties props = new Properties();
- props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
- props.setProperty(LOCATORS,
- NetworkUtils.getServerHostName(host) + "[" + locatorPort + "]");
- getSystem(props);
- Cache cache = getCache();
- AttributesFactory af = new AttributesFactory();
- PartitionAttributesFactory paf = new PartitionAttributesFactory();
- paf.setRedundantCopies(1);
- paf.setLocalMaxMemory(0);
- af.setPartitionAttributes(paf.create());
- Region region = cache.createRegion("region", af.create());
- region.put(Integer.valueOf(0), "a");
- }
- });
- } finally {
- SerializableRunnable stopLocator = new SerializableRunnable("Stop locator") {
- public void run() {
- assertTrue(Locator.hasLocator());
- Locator.getLocator().stop();
- assertFalse(Locator.hasLocator());
- }
- };
- vm3.invoke(stopLocator);
- }
- }
-
- protected void startLocatorInVM(final VM vm, final int locatorPort) {
- vm.invoke(new SerializableRunnable("Create Locator") {
-
- final String testName = getUniqueName();
-
- public void run() {
- disconnectFromDS();
- Properties props = new Properties();
- props.setProperty(MCAST_PORT, String.valueOf(0));
- props.setProperty(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
- props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
- props.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
- try {
- File logFile = new File(testName + "-locator" + locatorPort + ".log");
- InetAddress bindAddr = null;
- try {
- bindAddr = InetAddress.getByName(NetworkUtils.getServerHostName(vm.getHost()));
- } catch (UnknownHostException uhe) {
- Assert.fail("While resolving bind address ", uhe);
- }
- Locator locator = Locator.startLocatorAndDS(locatorPort, logFile, bindAddr, props);
- } catch (IOException ex) {
- Assert.fail("While starting locator on port " + locatorPort, ex);
- }
- }
- });
- }
-}
--
To stop receiving notification emails like this one, please contact
klund@apache.org.