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 2017/05/31 17:01:09 UTC
[04/32] geode git commit: GEODE-2958: Destroying a defined index now
removes the RegionListener
GEODE-2958: Destroying a defined index now removes the RegionListener
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/662358fd
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/662358fd
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/662358fd
Branch: refs/heads/feature/GEODE-1279
Commit: 662358fdba33ce2ea99cadfe07303361b26ead56
Parents: dff937f
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Tue May 23 17:27:01 2017 -0700
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Wed May 24 10:06:50 2017 -0700
----------------------------------------------------------------------
.../lucene/internal/LuceneServiceImpl.java | 3 +
.../lucene/LuceneIndexDestroyDUnitTest.java | 39 +++++++++--
.../LuceneDestroyIndexFunctionJUnitTest.java | 72 ++++++++++++--------
3 files changed, 79 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/662358fd/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
index ebee59e..afbcc40 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
@@ -232,6 +232,9 @@ public class LuceneServiceImpl implements InternalLuceneService {
}
public void destroyDefinedIndex(String indexName, String regionPath) {
+ if (!regionPath.startsWith("/")) {
+ regionPath = "/" + regionPath;
+ }
String uniqueIndexName = LuceneServiceImpl.getUniqueIndexName(indexName, regionPath);
if (definedIndexMap.containsKey(uniqueIndexName)) {
definedIndexMap.remove(uniqueIndexName);
http://git-wip-us.apache.org/repos/asf/geode/blob/662358fd/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
index a6252c8..b34d998 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
@@ -401,7 +401,7 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
// Recreate index and region
String newIndexName = INDEX_NAME + "+_1";
- SerializableRunnableIF createIndexNewName = createIndex(newIndexName, "field1");
+ SerializableRunnableIF createIndexNewName = createIndex(newIndexName, REGION_NAME, "field1");
dataStore1.invoke(() -> initDataStore(createIndexNewName, regionType));
dataStore2.invoke(() -> initDataStore(createIndexNewName, regionType));
accessor.invoke(() -> initAccessor(createIndexNewName, regionType));
@@ -455,7 +455,7 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
dataStore1.invoke(() -> destroyDataRegion(true));
// Create new index and region
- SerializableRunnableIF createNewIndex = createIndex(INDEX_NAME, "field2");
+ SerializableRunnableIF createNewIndex = createIndex(INDEX_NAME, REGION_NAME, "field2");
dataStore1.invoke(() -> initDataStore(createNewIndex, regionType));
dataStore2.invoke(() -> initDataStore(createNewIndex, regionType));
accessor.invoke(() -> initAccessor(createNewIndex, regionType));
@@ -472,14 +472,26 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
accessor.invoke(() -> executeQuery(INDEX_NAME, "field2Value", "field2", numPuts));
}
+ @Test
+ @Parameters(method = "getListOfRegionTestTypes")
+ public void verifyCreateDestroyDefinedIndex(RegionTestableType regionType) {
+ String[] regionNames = {REGION_NAME, "/" + REGION_NAME};
+ for (String regionName : regionNames) {
+ dataStore1.invoke(createIndex(INDEX_NAME, regionName, "field1"));
+ dataStore1.invoke(() -> verifyDefinedIndexCreated(INDEX_NAME, regionName));
+ dataStore1.invoke(() -> destroyDefinedIndex(INDEX_NAME, regionName));
+ dataStore1.invoke(() -> verifyDefinedIndexDestroyed(INDEX_NAME, regionName));
+ }
+ }
+
private SerializableRunnableIF createIndex() {
- return createIndex(INDEX_NAME, "field1");
+ return createIndex(INDEX_NAME, REGION_NAME, "field1");
}
- private SerializableRunnableIF createIndex(String indexName, String field) {
+ private SerializableRunnableIF createIndex(String indexName, String regionName, String field) {
return () -> {
LuceneService luceneService = LuceneServiceProvider.get(getCache());
- luceneService.createIndexFactory().setFields(field).create(indexName, REGION_NAME);
+ luceneService.createIndexFactory().setFields(field).create(indexName, regionName);
};
}
@@ -502,6 +514,18 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
assertNotNull(luceneService.getIndex(INDEX2_NAME, REGION_NAME));
}
+ private void verifyDefinedIndexCreated(String indexName, String regionName) {
+ LuceneServiceImpl luceneService = (LuceneServiceImpl) LuceneServiceProvider.get(getCache());
+ assertNotNull(luceneService.getDefinedIndex(indexName, regionName));
+ assertEquals(1, getCache().getRegionListeners().size());
+ }
+
+ private void verifyDefinedIndexDestroyed(String indexName, String regionName) {
+ LuceneServiceImpl luceneService = (LuceneServiceImpl) LuceneServiceProvider.get(getCache());
+ assertNull(luceneService.getDefinedIndex(indexName, regionName));
+ assertEquals(0, getCache().getRegionListeners().size());
+ }
+
private void waitUntilFlushed(String indexName) throws Exception {
LuceneService luceneService = LuceneServiceProvider.get(getCache());
assertTrue(
@@ -598,6 +622,11 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
luceneService.destroyIndex(INDEX_NAME, REGION_NAME);
}
+ private void destroyDefinedIndex(String indexName, String regionName) {
+ LuceneServiceImpl luceneService = (LuceneServiceImpl) LuceneServiceProvider.get(getCache());
+ luceneService.destroyDefinedIndex(indexName, regionName);
+ }
+
private void destroyIndexes() {
LuceneService luceneService = LuceneServiceProvider.get(getCache());
luceneService.destroyIndexes(REGION_NAME);
http://git-wip-us.apache.org/repos/asf/geode/blob/662358fd/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
index 1d2d773..ce0344d 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
@@ -56,58 +56,66 @@ public class LuceneDestroyIndexFunctionJUnitTest {
@Test
@SuppressWarnings("unchecked")
public void testDestroyIndex() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo("index1", "/region1", false);
+ String indexName = "index1";
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath, false);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
function.execute(this.context);
- verify(this.service).destroyIndex(eq("index1"), eq("/region1"));
- verify(function).getXmlEntity(eq("index1"), eq("/region1"));
- verify(this.service, never()).destroyDefinedIndex(eq("index1"), eq("/region1"));
- verify(this.service, never()).destroyIndexes(eq("/region1"));
+ verify(this.service).destroyIndex(eq(indexName), eq(regionPath));
+ verify(function).getXmlEntity(eq(indexName), eq(regionPath));
+ verify(this.service, never()).destroyDefinedIndex(eq(indexName), eq(regionPath));
+ verify(this.service, never()).destroyIndexes(eq(regionPath));
verifyFunctionResult(true);
}
@Test
@SuppressWarnings("unchecked")
public void testDestroyIndexFailure() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo("index1", "/region1", false);
+ String indexName = "index1";
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath, false);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
- doThrow(new IllegalStateException()).when(this.service).destroyIndex(eq("index1"),
- eq("/region1"));
+ doThrow(new IllegalStateException()).when(this.service).destroyIndex(eq(indexName),
+ eq(regionPath));
function.execute(this.context);
verifyFunctionResult(false);
}
@Test
public void testDestroyDefinedIndex() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo("index1", "/region1", true);
+ String indexName = "index1";
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath, true);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
function.execute(this.context);
- verify(this.service).destroyDefinedIndex(eq("index1"), eq("/region1"));
- verify(this.service, never()).destroyIndex(eq("index1"), eq("/region1"));
- verify(this.service, never()).destroyIndexes(eq("/region1"));
- verify(function, never()).getXmlEntity(eq("index1"), eq("/region1"));
+ verify(this.service).destroyDefinedIndex(eq(indexName), eq(regionPath));
+ verify(this.service, never()).destroyIndex(eq(indexName), eq(regionPath));
+ verify(this.service, never()).destroyIndexes(eq(regionPath));
+ verify(function, never()).getXmlEntity(eq(indexName), eq(regionPath));
verifyFunctionResult(true);
}
@Test
@SuppressWarnings("unchecked")
public void testDestroyDefinedIndexFailure() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo("index1", "/region1", true);
+ String indexName = "index1";
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath, true);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
- doThrow(new IllegalStateException()).when(this.service).destroyDefinedIndex(eq("index1"),
- eq("/region1"));
+ doThrow(new IllegalStateException()).when(this.service).destroyDefinedIndex(eq(indexName),
+ eq(regionPath));
function.execute(this.context);
verifyFunctionResult(false);
}
@@ -115,28 +123,30 @@ public class LuceneDestroyIndexFunctionJUnitTest {
@Test
@SuppressWarnings("unchecked")
public void testDestroyIndexes() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, "/region1", false);
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, regionPath, false);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
function.execute(this.context);
- verify(this.service).destroyIndexes(eq("/region1"));
- verify(function).getXmlEntity(eq(null), eq("/region1"));
- verify(this.service, never()).destroyDefinedIndexes(eq("/region1"));
- verify(this.service, never()).destroyIndex(any(), eq("/region1"));
+ verify(this.service).destroyIndexes(eq(regionPath));
+ verify(function).getXmlEntity(eq(null), eq(regionPath));
+ verify(this.service, never()).destroyDefinedIndexes(eq(regionPath));
+ verify(this.service, never()).destroyIndex(any(), eq(regionPath));
verifyFunctionResult(true);
}
@Test
@SuppressWarnings("unchecked")
public void testDestroyIndexesFailure() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, "/region1", false);
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, regionPath, false);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
- doThrow(new IllegalStateException()).when(this.service).destroyIndexes(eq("/region1"));
+ doThrow(new IllegalStateException()).when(this.service).destroyIndexes(eq(regionPath));
function.execute(this.context);
verifyFunctionResult(false);
}
@@ -144,28 +154,30 @@ public class LuceneDestroyIndexFunctionJUnitTest {
@Test
@SuppressWarnings("unchecked")
public void testDestroyDefinedIndexes() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, "/region1", true);
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, regionPath, true);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
function.execute(this.context);
- verify(this.service).destroyDefinedIndexes(eq("/region1"));
- verify(this.service, never()).destroyIndexes(eq("/region1"));
- verify(this.service, never()).destroyIndex(any(), eq("/region1"));
- verify(function, never()).getXmlEntity(eq("index1"), eq("/region1"));
+ verify(this.service).destroyDefinedIndexes(eq(regionPath));
+ verify(this.service, never()).destroyIndexes(eq(regionPath));
+ verify(this.service, never()).destroyIndex(any(), eq(regionPath));
+ verify(function, never()).getXmlEntity(eq("index1"), eq(regionPath));
verifyFunctionResult(true);
}
@Test
@SuppressWarnings("unchecked")
public void testDestroyDefinedIndexesFailure() throws Throwable {
- LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, "/region1", true);
+ String regionPath = "/region1";
+ LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(null, regionPath, true);
when(this.context.getArguments()).thenReturn(indexInfo);
LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
function = spy(function);
doReturn(this.cache).when(function).getCache();
- doThrow(new IllegalStateException()).when(this.service).destroyDefinedIndexes(eq("/region1"));
+ doThrow(new IllegalStateException()).when(this.service).destroyDefinedIndexes(eq(regionPath));
function.execute(this.context);
verifyFunctionResult(false);
}