You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2017/04/27 18:47:56 UTC
[21/40] geode git commit: GEODE-2681: prevent synchronization hang on
getAnyInstance
GEODE-2681: prevent synchronization hang on getAnyInstance
Take advantage of recent refactoring to use the InternalCache interface API
instead of GemFireCahceImpl.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/809fd1aa
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/809fd1aa
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/809fd1aa
Branch: refs/heads/feature/GEM-1299
Commit: 809fd1aad30f66b724aecae7e5cbca2b9b9bf3a0
Parents: e800282
Author: Ken Howe <kh...@pivotal.io>
Authored: Tue Apr 18 10:43:51 2017 -0700
Committer: Ken Howe <kh...@pivotal.io>
Committed: Wed Apr 26 07:40:35 2017 -0700
----------------------------------------------------------------------
.../ShowMissingDiskStoresFunction.java | 44 +++--
.../ShowMissingDiskStoresDUnitTest.java | 170 +++++++++++++++++++
.../ShowMissingDiskStoresFunctionJUnitTest.java | 110 +++++-------
.../apache/geode/test/dunit/rules/MemberVM.java | 5 +
.../test/dunit/rules/ServerStarterRule.java | 2 +-
5 files changed, 235 insertions(+), 96 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/809fd1aa/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
index a2812fa..441486e 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
@@ -35,8 +35,8 @@ import org.apache.geode.internal.cache.persistence.PersistentMemberPattern;
public class ShowMissingDiskStoresFunction extends FunctionAdapter implements InternalEntity {
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
+ protected InternalCache getCache() {
+ return GemFireCacheImpl.getInstance();
}
@Override
@@ -48,34 +48,28 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In
throw new RuntimeException();
}
try {
- final Cache cache = getCache();
+ final InternalCache cache = getCache();
- if (cache instanceof InternalCache) {
- final InternalCache gemfireCache = (InternalCache) cache;
+ if (cache != null && !cache.isClosed()) {
+ final DistributedMember member = cache.getMyId();
- final DistributedMember member = gemfireCache.getMyId();
-
- GemFireCacheImpl gfci = GemFireCacheImpl.getInstance();
- if (gfci != null && !gfci.isClosed()) {
- // Missing DiskStores
- PersistentMemberManager mm = gfci.getPersistentMemberManager();
- Map<String, Set<PersistentMemberID>> waitingRegions = mm.getWaitingRegions();
- for (Map.Entry<String, Set<PersistentMemberID>> entry : waitingRegions.entrySet()) {
- for (PersistentMemberID id : entry.getValue()) {
- memberMissingIDs.add(new PersistentMemberPattern(id));
- }
+ // Missing DiskStores
+ PersistentMemberManager mm = cache.getPersistentMemberManager();
+ Map<String, Set<PersistentMemberID>> waitingRegions = mm.getWaitingRegions();
+ for (Set<PersistentMemberID> entry : waitingRegions.values()) {
+ for (PersistentMemberID id : entry) {
+ memberMissingIDs.add(new PersistentMemberPattern(id));
}
- // Missing colocated regions
- Set<PartitionedRegion> prs = gfci.getPartitionedRegions();
- for (PartitionedRegion pr : prs) {
- List<String> missingChildRegions = pr.getMissingColocatedChildren();
- for (String child : missingChildRegions) {
- missingColocatedRegions.add(new ColocatedRegionDetails(member.getHost(),
- member.getName(), pr.getFullPath(), child));
- }
+ }
+ // Missing colocated regions
+ Set<PartitionedRegion> prs = ((GemFireCacheImpl) cache).getPartitionedRegions();
+ for (PartitionedRegion pr : prs) {
+ List<String> missingChildRegions = pr.getMissingColocatedChildren();
+ for (String child : missingChildRegions) {
+ missingColocatedRegions.add(new ColocatedRegionDetails(member.getHost(),
+ member.getName(), pr.getFullPath(), child));
}
}
-
}
if (memberMissingIDs.isEmpty() && missingColocatedRegions.isEmpty()) {
http://git-wip-us.apache.org/repos/asf/geode/blob/809fd1aa/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoresDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoresDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoresDUnitTest.java
new file mode 100644
index 0000000..766f25a
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoresDUnitTest.java
@@ -0,0 +1,170 @@
+/*
+ * 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.management.internal.cli.commands;
+
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_CONFIGURATION_DIR;
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.DiskStoreFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.distributed.ConfigurationProperties;
+import org.apache.geode.distributed.ServerLauncher;
+import org.apache.geode.internal.cache.DiskStoreAttributes;
+import org.apache.geode.internal.cache.DiskStoreFactoryImpl;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.CommandResult;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
+import org.apache.geode.test.dunit.AsyncInvocation;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
+import org.apache.geode.test.dunit.rules.MemberVM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.awaitility.Awaitility;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TestName;
+import org.springframework.shell.support.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+@Category(DistributedTest.class)
+public class ShowMissingDiskStoresDUnitTest {
+
+ // private static final String DISK_STORE = "diskStore";
+ private static final String DISK_STORE_DIR = "myDiskStores";
+ private MemberVM locator;
+ private MemberVM server1;
+ private MemberVM server2;
+
+ @Rule
+ public TestName testName = new TestName();
+
+ @Rule
+ public LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
+
+ @Rule
+ public GfshShellConnectionRule gfshConnector = new GfshShellConnectionRule();
+
+ @Before
+ public void before() throws Exception {
+ locator = lsRule.startLocatorVM(0);
+ gfshConnector.connect(locator);
+ assertThat(gfshConnector.isConnected()).isTrue();
+
+ // start a server so that we can execute data commands that requires at least a server running
+ server1 = lsRule.startServerVM(1, locator.getPort());
+ server2 = lsRule.startServerVM(2, locator.getPort());
+ }
+
+ @Ignore("WIP: new test for GEODE-2681 fix")
+ @Test
+ public void missingDiskStores_gfshDoesntHang() throws Exception {
+ final String testRegionName = "regionA";
+ CommandStringBuilder csb;
+ // TODO: Need to ensure that the diskstores are created in "user.dir" as set by the
+ // *StarterRules, see DiskStoreFactoryImpl.setDiskDirsAndSizes
+ csb = new CommandStringBuilder(CliStrings.CREATE_DISK_STORE)
+ .addOption(CliStrings.CREATE_DISK_STORE__NAME, "diskStore")
+ .addOption(CliStrings.CREATE_DISK_STORE__DIRECTORY_AND_SIZE, "diskStoreDir");
+ gfshConnector.executeAndVerifyCommand(csb.getCommandString());
+
+ Awaitility.await().until(() -> {
+ return new File(server1.getWorkingDir(), "diskStoreDir").exists()
+ && new File(server2.getWorkingDir(), "diskStoreDir").exists();
+ });
+
+ csb = new CommandStringBuilder(CliStrings.CREATE_REGION)
+ .addOption(CliStrings.CREATE_REGION__REGION, testRegionName)
+ .addOption(CliStrings.CREATE_REGION__DISKSTORE, "diskStore")
+ .addOption(CliStrings.CREATE_REGION__REGIONSHORTCUT,
+ RegionShortcut.REPLICATE_PERSISTENT.toString());
+ gfshConnector.executeAndVerifyCommand(csb.getCommandString());
+
+ // Add data to the region
+ putUsingGfsh(gfshConnector, testRegionName, 1, "A");
+ putUsingGfsh(gfshConnector, testRegionName, 2, "B");
+ putUsingGfsh(gfshConnector, testRegionName, 3, "C");
+
+ lsRule.stopMember(1);
+ lsRule.stopMember(2);
+
+ AsyncInvocation restart1 = restartServerAsync(server1);
+ checkAsyncResults(restart1, gfshConnector, 5);
+
+ AsyncInvocation restart2 = restartServerAsync(server2);
+ checkAsyncResults(restart2, gfshConnector, 5);
+
+ for (AsyncInvocation ai : new AsyncInvocation[] {restart1, restart2}) {
+ if (ai.isAlive()) {
+ restart1.cancel(true);
+ }
+ }
+ }
+
+ private AsyncInvocation restartServerAsync(MemberVM member) throws Exception {
+ String memberWorkingDir = member.getWorkingDir().getAbsolutePath();
+ int locatorPort = locator.getPort();
+ AsyncInvocation restart = member.invokeAsync(() -> {
+ ServerLauncher serverLauncher =
+ new ServerLauncher.Builder().setWorkingDirectory(memberWorkingDir)
+ .setMemberName("server-1").set(LOCATORS, "localhost[" + locatorPort + "]").build();
+ serverLauncher.start();
+ });
+
+ return restart;
+ }
+
+ private void checkAsyncResults(AsyncInvocation ai, GfshShellConnectionRule gfsh, int secsToWait)
+ throws Exception {
+ try {
+ Awaitility.await().atLeast(secsToWait, TimeUnit.SECONDS).until(() -> ai.isDone());
+ } catch (Exception e) {
+ // e.printStackTrace();
+ }
+
+ CommandResult result;
+
+ result = gfsh.executeCommand("list members");
+ System.out.println(result);
+ result = gfsh.executeCommand("show missing-disk-stores");
+ System.out.println(result);
+ }
+
+ private void putUsingGfsh(GfshShellConnectionRule gfsh, String regionName, int key, String val)
+ throws Exception {
+ CommandStringBuilder csb = new CommandStringBuilder(CliStrings.PUT)
+ .addOption(CliStrings.PUT__KEY, Integer.toString(key)).addOption(CliStrings.PUT__VALUE, val)
+ .addOption(CliStrings.PUT__REGIONNAME, regionName);
+ gfsh.executeAndVerifyCommand(csb.getCommandString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/809fd1aa/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java
index 1cfa242..ba436c5 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.Logger;
@@ -107,16 +108,16 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
GemFireCacheImpl.setInstanceForTests(oldCacheInstance);
}
- private class TestSPRFFunc1 extends ShowMissingDiskStoresFunction {
+ private class TestSMDSFFunc1 extends ShowMissingDiskStoresFunction {
@Override
- protected Cache getCache() {
+ protected InternalCache getCache() {
return null;
}
}
- private class TestSPRFFunc2 extends ShowMissingDiskStoresFunction {
+ private class TestSMDSFFunc2 extends ShowMissingDiskStoresFunction {
@Override
- protected Cache getCache() {
+ protected InternalCache getCache() {
return cache;
}
}
@@ -127,22 +128,21 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
*/
@Test
public final void testGetCache() {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
- assertTrue(rff.getCache() instanceof Cache);
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
+ assertTrue(smdsFunc.getCache() instanceof Cache);
}
/**
- * Test method for
- * {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}.
+ * Test method for {@link ShowMissingDiskStoresFunction#execute(FunctionContext)}.
*/
@Test
public final void testExecute() {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
- rff.execute(context);
+ smdsFunc.execute(context);
try {
results = resultSender.getResults();
} catch (Throwable e) {
@@ -160,8 +160,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
public final void testExecuteWithNullContextThrowsRuntimeException() {
expectedException.expect(RuntimeException.class);
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
- rff.execute(null);
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
+ smdsFunc.execute(null);
fail("Missing expected RuntimeException");
}
@@ -170,17 +170,12 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}.
*/
@Test
- public final void testExecuteWithNullCacheInstanceHasEmptyResults() {
- TestSPRFFunc1 rff = new TestSPRFFunc1();
+ public final void testExecuteWithNullCacheInstanceHasEmptyResults() throws Throwable {
+ TestSMDSFFunc1 testSMDSFunc = new TestSMDSFFunc1();
List<?> results = null;
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ testSMDSFunc.execute(context);
+ results = resultSender.getResults();
assertNotNull(results);
assertEquals(1, results.size());
assertNull(results.get(0));
@@ -191,20 +186,15 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}.
*/
@Test
- public final void testExecuteWithNullGFCIResultValueIsNull() {
- TestSPRFFunc2 rff = new TestSPRFFunc2();
+ public final void testExecuteWithNullGFCIResultValueIsNull() throws Throwable {
+ TestSMDSFFunc2 testSMDSFunc = new TestSMDSFFunc2();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
GemFireCacheImpl.setInstanceForTests(null);
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ testSMDSFunc.execute(context);
+ results = resultSender.getResults();
assertNotNull(results);
assertEquals(1, results.size());
assertNull(results.get(0));
@@ -215,19 +205,14 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}.
*/
@Test
- public final void testExecuteWhenGFCIClosedResultValueIsNull() {
- TestSPRFFunc2 rff = new TestSPRFFunc2();
+ public final void testExecuteWhenGFCIClosedResultValueIsNull() throws Throwable {
+ TestSMDSFFunc2 testSMDSFunc = new TestSMDSFFunc2();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
when(((GemFireCacheImpl) cache).isClosed()).thenReturn(true);
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ testSMDSFunc.execute(context);
+ results = resultSender.getResults();
assertNotNull(results);
}
@@ -238,8 +223,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* @throws UnknownHostException
*/
@Test
- public final void testExecuteReturnsMissingDiskStores() throws UnknownHostException {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
+ public final void testExecuteReturnsMissingDiskStores() throws Throwable {
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
@@ -255,13 +240,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
mapMember1.put("member1", regions1);
when(memberManager.getWaitingRegions()).thenReturn(mapMember1);
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ smdsFunc.execute(context);
+ results = resultSender.getResults();
assertNotNull(results);
assertEquals(1, results.size());
Set<?> detailSet = (Set<?>) results.get(0);
@@ -286,8 +266,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}.
*/
@Test
- public final void testExecuteReturnsMissingColocatedRegions() {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
+ public final void testExecuteReturnsMissingColocatedRegions() throws Throwable {
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
@@ -301,13 +281,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
when(pr1.getMissingColocatedChildren()).thenReturn(missing1);
when(pr1.getFullPath()).thenReturn("/pr1");
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ smdsFunc.execute(context);
+ results = resultSender.getResults();
assertEquals(1, results.size());
Set<?> detailSet = (Set<?>) results.get(0);
assertEquals(2, detailSet.toArray().length);
@@ -332,8 +307,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
* @throws UnknownHostException
*/
@Test
- public final void testExecuteReturnsMissingStoresAndRegions() throws UnknownHostException {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
+ public final void testExecuteReturnsMissingStoresAndRegions() throws Throwable {
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
List<?> results = null;
when(cache.getPersistentMemberManager()).thenReturn(memberManager);
@@ -358,13 +333,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
when(pr1.getMissingColocatedChildren()).thenReturn(missing1);
when(pr1.getFullPath()).thenReturn("/pr1");
- rff.execute(context);
- try {
- results = resultSender.getResults();
- } catch (Throwable e) {
- e.printStackTrace();
- fail("Unexpected exception");
- }
+ smdsFunc.execute(context);
+ results = resultSender.getResults();
assertEquals(2, results.size());
for (Object result : results) {
Set<?> detailSet = (Set<?>) result;
@@ -412,11 +382,11 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
public final void testExecuteCatchesExceptions() throws Throwable {
expectedException.expect(RuntimeException.class);
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
when(cache.getPersistentMemberManager()).thenThrow(new RuntimeException());
- rff.execute(context);
+ smdsFunc.execute(context);
List<?> results = resultSender.getResults();
fail("Failed to catch expected RuntimeException");
}
@@ -428,8 +398,8 @@ public class ShowMissingDiskStoresFunctionJUnitTest {
*/
@Test
public final void testGetId() {
- ShowMissingDiskStoresFunction rff = new ShowMissingDiskStoresFunction();
- assertEquals(ShowMissingDiskStoresFunction.class.getName(), rff.getId());
+ ShowMissingDiskStoresFunction smdsFunc = new ShowMissingDiskStoresFunction();
+ assertEquals(ShowMissingDiskStoresFunction.class.getName(), smdsFunc.getId());
}
private static class TestResultSender implements ResultSender {
http://git-wip-us.apache.org/repos/asf/geode/blob/809fd1aa/geode-core/src/test/java/org/apache/geode/test/dunit/rules/MemberVM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/MemberVM.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/MemberVM.java
index 05e541a..1626985 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/MemberVM.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/MemberVM.java
@@ -15,6 +15,7 @@
package org.apache.geode.test.dunit.rules;
+import org.apache.geode.test.dunit.AsyncInvocation;
import org.apache.geode.test.dunit.SerializableRunnableIF;
import org.apache.geode.test.dunit.VM;
@@ -41,6 +42,10 @@ public class MemberVM<T extends Member> implements Member {
vm.invoke(runnable);
}
+ public AsyncInvocation invokeAsync(final SerializableRunnableIF runnable) {
+ return vm.invokeAsync(runnable);
+ }
+
public T getMember() {
return (T) member;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/809fd1aa/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
index 0e65354..ead1047 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
@@ -93,7 +93,7 @@ public class ServerStarterRule extends MemberStarterRule<ServerStarterRule> impl
}
@Override
- void stopMember() {
+ public void stopMember() {
// make sure this cache is the one currently open. A server cache can be recreated due to
// importing a new set of cluster configuration.
cache = GemFireCacheImpl.getInstance();