This is an automated email from the ASF dual-hosted git repository. zhouxj pushed a commit to branch feature/GEODE-3569 in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-3569 by this push: new 1d9b0ca GEODE-3569: add junit and dunit tests for fromData/toData add backward compatibility for fromData/toData 1d9b0ca is described below commit 1d9b0ca051d2428bea970c31da460b67f6661741 Author: zhouxh <gz...@pivotal.io> AuthorDate: Wed Sep 20 17:17:23 2017 -0700 GEODE-3569: add junit and dunit tests for fromData/toData add backward compatibility for fromData/toData --- .../internal/LuceneIndexCreationProfile.java | 10 ++++ .../cache/lucene/LuceneIndexCreationDUnitTest.java | 37 ++++++++++++++ .../LuceneIndexCreationProfileJUnitTest.java | 57 ++++++++++++++++------ 3 files changed, 88 insertions(+), 16 deletions(-) diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java index 596709c..e666cb2 100644 --- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java +++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java @@ -161,6 +161,11 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri @Override public void toData(DataOutput out) throws IOException { + toDataPre_GEODE_1_3_0_0(out); + DataSerializer.writeString(this.serializerClass, out); + } + + public void toDataPre_GEODE_1_3_0_0(DataOutput out) throws IOException { DataSerializer.writeString(this.indexName, out); DataSerializer.writeString(this.regionPath, out); DataSerializer.writeStringArray(this.fieldNames, out); @@ -170,6 +175,11 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri @Override public void fromData(DataInput in) throws IOException, ClassNotFoundException { + fromDataPre_GEODE_1_3_0_0(in); + this.serializerClass = DataSerializer.readString(in); + } + + private void fromDataPre_GEODE_1_3_0_0(DataInput in) throws IOException, ClassNotFoundException { this.indexName = DataSerializer.readString(in); this.regionPath = DataSerializer.readString(in); this.fieldNames = DataSerializer.readStringArray(in); diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexCreationDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexCreationDUnitTest.java index b83ca44..29475a3 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexCreationDUnitTest.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexCreationDUnitTest.java @@ -14,6 +14,7 @@ */ package org.apache.geode.cache.lucene; +import org.apache.geode.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer; import org.apache.geode.cache.lucene.test.LuceneTestUtilities; import org.apache.geode.test.dunit.SerializableRunnableIF; import org.apache.geode.test.junit.categories.DistributedTest; @@ -324,6 +325,17 @@ public class LuceneIndexCreationDUnitTest extends LuceneDUnitTest { dataStore2.invoke(() -> initDataStore(createIndex2, regionType)); } + @Test + @Parameters("PARTITION") + public void verifyDifferentSerializerShouldFail(RegionTestableType regionType) { + SerializableRunnableIF createIndex1 = getIndexWithDefaultSerializer(); + dataStore1.invoke(() -> initDataStore(createIndex1, regionType)); + + SerializableRunnableIF createIndex2 = getIndexWithDummySerializer(); + dataStore2.invoke(() -> initDataStore(createIndex2, regionType, + CANNOT_CREATE_LUCENE_INDEX_DIFFERENT_SERIALIZER)); + } + protected String getXmlFileForTest(String testName) { return TestUtil.getResourcePath(getClass(), getClassSimpleName() + "." + testName + ".cache.xml"); @@ -462,4 +474,29 @@ public class LuceneIndexCreationDUnitTest extends LuceneDUnitTest { luceneService.createIndexFactory().setFields(analyzers).create(INDEX_NAME, REGION_NAME); }; } + + protected SerializableRunnableIF getIndexWithDummySerializer() { + return () -> { + LuceneService luceneService = LuceneServiceProvider.get(getCache()); + luceneService.createIndexFactory().setFields(new String[] {"field1", "field2"}) + .setLuceneSerializer(new DummyLuceneSerializer()).create(INDEX_NAME, REGION_NAME); + }; + } + + protected SerializableRunnableIF getIndexWithDefaultSerializer() { + return () -> { + LuceneService luceneService = LuceneServiceProvider.get(getCache()); + luceneService.createIndexFactory().setFields(new String[] {"field1", "field2"}) + .create(INDEX_NAME, REGION_NAME); + }; + } + + protected SerializableRunnableIF getHeterogeneousLuceneSerializerCreationProfile() { + return () -> { + LuceneService luceneService = LuceneServiceProvider.get(getCache()); + luceneService.createIndexFactory().setFields(new String[] {"field1", "field2"}) + .setLuceneSerializer(new HeterogeneousLuceneSerializer(new String[] {"field1", "field2"})) + .create(INDEX_NAME, REGION_NAME); + }; + } } diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java index 926d74b..c653c2f 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java @@ -15,11 +15,14 @@ package org.apache.geode.cache.lucene.internal; import org.apache.geode.CopyHelper; +import org.apache.geode.DataSerializer; import org.apache.geode.cache.lucene.DummyLuceneSerializer; -import org.apache.geode.cache.lucene.LuceneSerializer; import org.apache.geode.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer; import org.apache.geode.cache.lucene.test.LuceneTestUtilities; +import org.apache.geode.internal.HeapDataOutputStream; +import org.apache.geode.internal.Version; import org.apache.geode.test.junit.categories.UnitTest; + import junitparams.JUnitParamsRunner; import junitparams.Parameters; import org.apache.lucene.analysis.Analyzer; @@ -30,6 +33,9 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -57,10 +63,44 @@ public class LuceneIndexCreationProfileJUnitTest { return $(new Object[] {getOneFieldLuceneIndexCreationProfile()}, new Object[] {getTwoFieldLuceneIndexCreationProfile()}, new Object[] {getTwoAnalyzersLuceneIndexCreationProfile()}, + new Object[] {getDummySerializerCreationProfile()}, new Object[] {getNullField1AnalyzerLuceneIndexCreationProfile()}); } @Test + @Parameters(method = "getProfileWithSerializer") + public void toDataFromDataShouldContainSerializer(LuceneIndexCreationProfile profile, + String expectedSerializerCLassName) throws IOException, ClassNotFoundException { + HeapDataOutputStream hdos = new HeapDataOutputStream(Version.CURRENT); + DataSerializer.writeObject(profile, hdos); + byte[] outputArray = hdos.toByteArray(); + ByteArrayInputStream bais = new ByteArrayInputStream(outputArray); + LuceneIndexCreationProfile profile2 = DataSerializer.readObject(new DataInputStream(bais)); + assertEquals(expectedSerializerCLassName, profile2.getSerializerClass()); + } + + private Object[] getProfileWithSerializer() { + return $(new Object[] {getDefaultSerializerCreationProfile(), "HeterogeneousLuceneSerializer"}, + new Object[] {getDummySerializerCreationProfile(), "DummyLuceneSerializer"}, new Object[] { + getHeterogeneousLuceneSerializerCreationProfile(), "HeterogeneousLuceneSerializer"}); + } + + private LuceneIndexCreationProfile getDefaultSerializerCreationProfile() { + return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, + new StandardAnalyzer(), null, null); + } + + private LuceneIndexCreationProfile getDummySerializerCreationProfile() { + return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, + new StandardAnalyzer(), null, new DummyLuceneSerializer()); + } + + private LuceneIndexCreationProfile getHeterogeneousLuceneSerializerCreationProfile() { + return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, + new StandardAnalyzer(), null, new HeterogeneousLuceneSerializer(new String[] {"field1"})); + } + + @Test @Parameters(method = "getCheckCompatibilityProfiles") public void testCheckCompatibility(LuceneIndexCreationProfile myProfile, LuceneIndexCreationProfile otherProfile, String expectedResult) { @@ -92,21 +132,6 @@ public class LuceneIndexCreationProfileJUnitTest { LuceneTestUtilities.CANNOT_CREATE_LUCENE_INDEX_DIFFERENT_ANALYZERS_2}); } - private LuceneIndexCreationProfile getDefaultSerializerCreationProfile() { - return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, - new StandardAnalyzer(), null, null); - } - - private LuceneIndexCreationProfile getDummySerializerCreationProfile() { - return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, - new StandardAnalyzer(), null, new DummyLuceneSerializer()); - } - - private LuceneIndexCreationProfile getHeterogeneousLuceneSerializerCreationProfile() { - return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, - new StandardAnalyzer(), null, new HeterogeneousLuceneSerializer(new String[] {"field1"})); - } - private LuceneIndexCreationProfile getOneFieldLuceneIndexCreationProfile() { return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] {"field1"}, new StandardAnalyzer(), null, null); -- To stop receiving notification emails like this one, please contact ['"commits@geode.apache.org" <commits@geode.apache.org>'].