/* * 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.partitioned.fixed; import org.junit.experimental.categories.Category; import org.junit.Test; import static org.junit.Assert.*; import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase; import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase; import org.apache.geode.test.junit.categories.DistributedTest; import java.util.ArrayList; import java.util.List; import org.junit.experimental.categories.Category; import org.apache.geode.cache.DuplicatePrimaryPartitionException; import org.apache.geode.cache.EntryNotFoundException; import org.apache.geode.cache.FixedPartitionAttributes; import org.apache.geode.cache.partition.PartitionNotAvailableException; import org.apache.geode.test.dunit.Assert; import org.apache.geode.test.dunit.AsyncInvocation; import org.apache.geode.test.dunit.IgnoredException; import org.apache.geode.test.dunit.Wait; import org.apache.geode.test.dunit.Host; import org.apache.geode.test.junit.categories.FlakyTest; /** * This Dunit test class have multiple tests to tests different validations of static partitioning */ @Category(DistributedTest.class) public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase { public FixedPartitioningDUnitTest() { super(); } private static final long serialVersionUID = 1L; @Override public final void postSetUp() throws Exception { final Host host = Host.getHost(0); member1 = host.getVM(0); member2 = host.getVM(1); member3 = host.getVM(2); member4 = host.getVM(3); } /** * This test validates that null partition name cannot be added in FixedPartitionAttributes */ @Test public void testNullPartitionName() { try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa = FixedPartitionAttributes.createFixedPartition(null, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 3, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException Expected"); } catch (Exception illegal) { if (!((illegal.getCause() instanceof IllegalStateException) && (illegal.getCause().getMessage().contains("Fixed partition name cannot be null")))) { Assert.fail("Expected IllegalStateException ", illegal); } } } /** * This tests validate that same partition name cannot be added more than once as primary as well * as secondary on same member. * */ @Test public void testSamePartitionNameTwice() { try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 3, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException Expected"); } catch (Exception illegal) { if (!((illegal.getCause() instanceof IllegalStateException) && (illegal.getCause() .getMessage().contains("can be added only once in FixedPartitionAttributes")))) { Assert.fail("Expected IllegalStateException ", illegal); } } } /** * This test validates that FixedPartitionAttributes cannot be defined for accessor nodes */ @Test public void testFixedPartitionAttributes_Accessor() { try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 0, 3, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException Expected"); } catch (Exception illegal) { if (!((illegal.getCause() instanceof IllegalStateException) && (illegal.getCause().getMessage().contains("can not be defined for accessor")))) { Assert.fail("Expected IllegalStateException ", illegal); } } } /** * Test validation : only one node should return primary for a particular partition name for a * specific FPR at any given point of time. DuplicatePrimaryPartitionException is thrown during * FPR creation if this condition is not met. */ @Test public void testSamePartitionName_Primary_OnTwoMembers() { IgnoredException ex = IgnoredException.addIgnoredException("DuplicatePrimaryPartitionException"); try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 9, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 9, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 9, new QuarterPartitionResolver(), null, false)); fail("DuplicatePrimaryPartitionException Expected"); } catch (Exception duplicate) { if (!((duplicate.getCause() instanceof DuplicatePrimaryPartitionException) && (duplicate.getCause().getMessage() .contains("can not be defined as primary on more than one node")))) { Assert.fail("Expected DuplicatePrimaryPartitionException ", duplicate); } } finally { ex.remove(); } } /** * Test validation : if same partition is having different num-buckets across the nodes then * illegalStateException will be thrown */ @Test public void testSamePartitionName_DifferentNumBuckets() { IgnoredException ex = IgnoredException.addIgnoredException("IllegalStateException"); try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 9, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 8); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 9, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException Expected"); } catch (Exception illegal) { if (!((illegal.getCause() instanceof IllegalStateException) && (illegal.getCause().getMessage().contains("num-buckets are not same")))) { Assert.fail("Expected IllegalStateException ", illegal); } } finally { ex.remove(); } } /** * Number of primary partitions (which should be one for a partition) and secondary partitions of * a FPR for a partition should never exceed number of redundant copies + 1. IllegalStateException * is thrown during FPR creation if this condition is not met. */ @Test public void testNumberOfPartitions() { IgnoredException expected = IgnoredException.addIgnoredException("IllegalStateException"); try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 1, 0, 9, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition("Q11", true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition("Q12", false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 9, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition("Q12", true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition("Q13", false, 3); FixedPartitionAttributes fpa3 = FixedPartitionAttributes.createFixedPartition("Q11", false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 9, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition("Q13", true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition("Q11", false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 9, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException) && (ex.getCause().getMessage() .contains("should never exceed number of redundant copies")))) { Assert.fail("Expected IllegalStateException ", ex); } } finally { expected.remove(); } } /** * Sum of num-buckets for different primary partitions should not be greater than totalNumBuckets. */ @Test public void testNumBuckets_totalNumBuckets() { IgnoredException expected = IgnoredException.addIgnoredException("IllegalStateException"); try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 1, 0, 5, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 5, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 5, new QuarterPartitionResolver(), null, false)); fail("IllegalStateException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException) && (ex.getCause().getMessage().contains( "for different primary partitions should not be greater than total-num-buckets ")))) { Assert.fail("Expected IllegalStateException ", ex); } } finally { expected.remove(); } } /** * This test validates that if the required partition is not available at the time of entry * operation then PartitionNotAvailabelException is thrown */ @Test public void testPut_PartitionNotAvailableException() { try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 1, 0, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThorughAccessor("Quarter")); fail("PartitionNotAvailableException Expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof PartitionNotAvailableException))) { Assert.fail("Expected PartitionNotAvailableException ", ex); } } } /** * This test validates that if one datastore has the fixed partition attributes defined then other * datastore should also have the fixed partition attributes defined */ @Test public void test_DataStoreWithoutPartition_DataStoreWithPartition() { IgnoredException expected = IgnoredException.addIgnoredException("IllegalStateException"); try { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException))) { Assert.fail("Expected IllegalStateException ", ex); } } finally { expected.remove(); } } /** * This test validates that if one datastore has the fixed partition attributes defined then other * datastore should also have the fixed partition attributes defined */ @Test public void test_DataStoreWithPartition_DataStoreWithoutPartition() { IgnoredException expected = IgnoredException.addIgnoredException("IllegalStateException"); try { member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 1, 40, 12, new QuarterPartitionResolver(), null, false)); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException))) { Assert.fail("Expected IllegalStateException ", ex); } } finally { expected.remove(); } } /** * This tests validate that accessor member does the put on datastores as per primary * FixedPartitionAttributes defined on datastores */ @Test public void testPut_ValidateDataOnMember_OnlyPrimary_Accessor() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 0, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThorughAccessor("Quarter")); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter1)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter2)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter3)); } @Category(FlakyTest.class) // GEODE-567: async actions, waitForCriterion, time sensitive, // non-thread-safe test hook, eats exceptions (partially fixed) @Test public void testBug43283() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.setPRObserverBeforeCalculateStartingBucketId()); member2.invoke(() -> FixedPartitioningTestBase.setPRObserverBeforeCalculateStartingBucketId()); member3.invoke(() -> FixedPartitioningTestBase.setPRObserverBeforeCalculateStartingBucketId()); member4.invoke(() -> FixedPartitioningTestBase.setPRObserverBeforeCalculateStartingBucketId()); try { FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); AsyncInvocation inv1 = member1.invokeAsync( () -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa2); AsyncInvocation inv2 = member2.invokeAsync( () -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); FixedPartitionAttributes fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa3); AsyncInvocation inv3 = member3.invokeAsync( () -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 0, 12, new QuarterPartitionResolver(), null, false)); try { member4.invoke(() -> FixedPartitioningTestBase.putThorughAccessor_Immediate("Quarter")); } catch (Exception e) { e.printStackTrace(); if (!(e.getCause() instanceof PartitionNotAvailableException)) { Assert.fail("exception thrown is not PartitionNotAvailableException", e); } } try { inv1.join(); inv2.join(); inv3.join(); } catch (InterruptedException e) { e.printStackTrace(); Assert.fail("Unexpected Exception", e); } } finally { member1 .invoke(() -> FixedPartitioningTestBase.resetPRObserverBeforeCalculateStartingBucketId()); member2 .invoke(() -> FixedPartitioningTestBase.resetPRObserverBeforeCalculateStartingBucketId()); member3 .invoke(() -> FixedPartitioningTestBase.resetPRObserverBeforeCalculateStartingBucketId()); member4 .invoke(() -> FixedPartitioningTestBase.resetPRObserverBeforeCalculateStartingBucketId()); } } /** * This tests validate that datastore member does the put on itself as well as other datastores as * per primary FixedPartitionAttributes defined on datastores. */ @Test public void testPut_ValidateDataOnMember_OnlyPrimary_Datastore() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter1)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter2)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter4)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); } /** * This test validate that a delete operation on empty region will throw EntryNotFoundException */ @Test public void testDelete_WithoutPut() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); try { member1.invoke(() -> FixedPartitioningTestBase.deleteOperation("Quarter")); fail("EntryNotFoundException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof EntryNotFoundException))) { Assert.fail("Expected EntryNotFoundException ", ex); } } member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.getThroughDataStore("Quarter")); } /** * This tests validate that datastore member tries the put on itself as well as other datastores * as per primary FixedPartitionAttributes defined on datastores. But No resolver is provided. So * IllegalStateException in expected */ @Test public void testPut_NoResolver() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); try { member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore_NoResolver("Quarter")); fail("IllegalStateException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException))) { Assert.fail("Expected IllegalStateException ", ex); } } } /** * This tests validate that datastore member tries the put with callback on itself as well as * other datastores as per primary FixedPartitionAttributes defined on datastores. here CallBack * implements FixedPartitionResolver. */ @Test public void testPut_CallBackWithResolver() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member1.invoke( () -> FixedPartitioningTestBase.putThroughDataStore_CallBackWithResolver("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter1)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter2)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter4)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); } /** * This test validates that a PR without Fixed Partition Attributes and with * FixedPartitionResolver will do custom partitioning as per resolver. */ @Test public void testPut_WithResolver_NoFPAs() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", null, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); } /** * This tests validate that datastore member tries the put on itself as well as other datastores * as per primary FixedPartitionAttributes defined on datastores. Here No Resolver is provided * through attributes. Some keys implement FixedPartitionResolver and some does't implement any * resolver. IllegalStateException is expected. */ @Test public void testPut_FixedPartitionResolver_NoResolver() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); try { member1.invoke(() -> FixedPartitioningTestBase .putThroughDataStore_FixedPartitionResolver_NoResolver("Quarter")); fail("IllegalStateException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException))) { Assert.fail("Expected IllegalStateException ", ex); } } } /** * This tests validate that datastore member tries the put on itself as well as other datastores * as per primary FixedPartitionAttributes defined on datastores. Here No Resolver is provided * through attributes. Some keys implement FixedPartitionResolver and some implements * PartitionResolver. IllegalStateException is expected. */ @Test public void testPut_FixedPartitionResolver_PartitionResolver() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, null, null, false)); try { member1.invoke(() -> FixedPartitioningTestBase .putThroughDataStore_FixedPartitionResolver_PartitionResolver("Quarter")); fail("IllegalStateException expected"); } catch (Exception ex) { if (!((ex.getCause() instanceof IllegalStateException))) { Assert.fail("Expected IllegalStateException ", ex); } } } /** * This tests validate that datastore member tries the put on itself as well as other datastores * as per primary FixedPartitionAttributes defined on datastores with only one bucket per * partition. */ @Test public void testFPR_DefaultNumBuckets() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 0, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter1)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter2)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryData(Quarter4)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(1, 1)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(1, 1)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(1, 1)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(1, 1)); } /** * This tests validate that accessor member does the put on datastores as per primary and * secondary FixedPartitionAttributes defined on datastores. */ @Test public void testPut_ValidateDataOnMember_PrimarySecondary_Accessor() { createCacheOnMember(); createRegionWithPartitionAttributes("Quarter", null, 3, 0, 12, new QuarterPartitionResolver(), null, false); member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); FixedPartitionAttributes fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); putThroughDataStore("Quarter"); member1.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter1, false)); member2.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter2, false)); member3.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter3, false)); member4.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter4, false)); } /** * This tests validate that datastore member does the put on itself as well as other datastores as * per primary and secondary FixedPartitionAttributes defined on datastores. */ @Category(FlakyTest.class) // GEODE-1704 @Test public void testPut_ValidateDataOnMember_PrimarySecondary_Datastore() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter1, false)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter2, false)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter3, false)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter4, false)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); } /** * This tests validate that if only the secondary partitions are available then put should happen * successfully for these secondary partitions. These secondary partitions should acts as primary. * When the primary partition joins the system then this new member should create the primary * buckets for this partition on itself. And Secondary partitions who were holding primary buckets * status should now act as secondary buckets. * */ @Test public void testPut_ValidateDataOnMember_OnlySecondary_Datastore() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); fpaList.clear(); fpaList.add(fpa1); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); createCacheOnMember(); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); fpaList.clear(); fpaList.add(fpa1); createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false); Wait.pause(1000); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 0)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(3, 3)); checkPrimaryBucketsForQuarter(3, 3); } /** * Accessor =1 Datastore = 4 Datastores Primary Secondary Member1 = Q1(0,1,2) Q3(3,4,5), Q4(6,7,8) * Member2 = Q2(9,10,11) Q3(3,4,5), Q4(6,7,8) Member3 = Q3(3,4,5) Q1(0,1,2), Q2(9,10,11) Member4 = * Q4(6,7,8) Q1(0,1,2), Q2(9,10,11) Put happens for all buckets Member 4 goes down, then either * member1 or member2 holds primary for member4 * * Primary Secondary Member1 = Q1(0,1,2) Q3(3,4,5), Q4(6,7,8) Member2 = Q2(9,10,11), Q4(6,7,8) * Q3(3,4,5) Member3 = Q3(3,4,5) Q1(0,1,2), Q2(9,10,11) * * Put happens considering Member2 is holding primary for Q4. * * Member4 comes again, then Memeber4 should do the GII from member2 for buckets 6,7,8 and should * acqiure primary status Member1 = Q1(0,1,2) Q3(3,4,5), Q4(6,7,8) Member2 = Q2(9,10,11) * Q3(3,4,5), Q4(6,7,8) Member3 = Q3(3,4,5) Q1(0,1,2), Q2(9,10,11) Member4 = Q4(6,7,8) Q1(0,1,2), * Q2(9,10,11) * * */ @Test public void testPut_ValidateDataOnMember_PrimarySecondary_Accessor_CacheClosed() { createCacheOnMember(); createRegionWithPartitionAttributes("Quarter", null, 3, 0, 12, new QuarterPartitionResolver(), null, false); member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); FixedPartitionAttributes fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); fpaList.add(fpa3); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12, new QuarterPartitionResolver(), null, false)); putThroughDataStore("Quarter"); member1.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter1, false)); member2.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter2, false)); member3.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter3, false)); member4.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter4, false)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(9, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(9, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(9, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(9, 3)); member4.invoke(() -> FixedPartitioningTestBase.closeCache()); Wait.pause(1000); member1.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter1, false)); member2.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter2, false)); member3.invoke( () -> FixedPartitioningTestBase.checkPrimarySecondaryData_TwoSecondaries(Quarter3, false)); member1.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(9, 3)); member2.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(9, 3)); member3.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(9, 3)); } /** * Datastore = 4 Datastores Primary Secondary Member1 = Q1(0,1,2) Q2(3,4,5) Member2 = Q2(3,4,5) * Q3(6,7,8) Member3 = Q3(6,7,8) Q4(9,10,11) Member4 = Q4(9,10,11) Q1(0,1,2) Put happens for all * buckets Member 4 goes down, then either member1 or member2 holds primary for member4 * * Primary Secondary Member1 = Q1(0,1,2) Q2(3,4,5) Member2 = Q2(3,4,5) Q3(6,7,8) Member3 = * Q3(6,7,8), Q4(9,10,11) * * Put happens considering Member3 is holding primary for Q4. * * Member4 comes again, then Memeber4 should do the GII from member2 for buckets 6,7,8 and should * acqiure primary status Datastores Primary Secondary Member1 = Q1(0,1,2) Q2(3,4,5) Member2 = * Q2(3,4,5) Q3(6,7,8) Member3 = Q3(6,7,8) Q4(9,10,11) Member4 = Q4(9,10,11) Q1(0,1,2) */ @Test public void testPut_ValidateDataOnMember_PrimarySecondary_Datastore_CacheClosed() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter1, false)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter2, false)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter3, false)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter4, false)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.closeCache()); Wait.pause(1000); member3.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(6, 6)); member1.invoke(() -> FixedPartitioningTestBase.putHAData("Quarter")); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); Wait.pause(1000); member1.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter1, true)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter2, true)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter3, true)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter4, true)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); } @Test public void test_Bug46619_Put_ValidateDataOnMember_PrimarySecondary_Datastore_CacheClosed() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); FixedPartitionAttributes fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3); FixedPartitionAttributes fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(fpa1); fpaList.add(fpa2); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter1, false)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter2, false)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter3, false)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter4, false)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.closeCache()); member2.invoke(() -> FixedPartitioningTestBase.closeCache()); Wait.pause(1000); member3.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(6, 6)); member1.invoke( () -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarterAfterCacheClosed(6, 6)); member1.invoke(() -> FixedPartitioningTestBase.putHAData("Quarter")); member4.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member4.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember_DisableMovePrimary()); fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3); fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3); fpaList.clear(); fpaList.add(fpa1); fpaList.add(fpa2); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 1, 40, 12, new QuarterPartitionResolver(), null, false)); Wait.pause(1000); member1.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter1, true)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter2, true)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter3, true)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimarySecondaryData(Quarter4, true)); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 6)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 0)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 6)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 0)); member4.invoke(() -> FixedPartitioningTestBase.doRebalance()); Wait.pause(2000); member1.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member2.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member3.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); member4.invoke(() -> FixedPartitioningTestBase.checkPrimaryBucketsForQuarter(6, 3)); } /** * Datastore = 4 Datastores Primary Secondary Member1 = Q1(0,1,2) Q2(3,4,5),Q3(6,7,8),Q4(9,10,11) * Member2 = Q3(6,7,8) Q1(0,1,2), Q2(3,4,5),Q4(9,10,11) Member3 = Q2(3,4,5),Q4(9,10,11) Q1(0,1,2), * Q3(6,7,8) * * Put happens for all buckets * * Member 3 goes down, then either member1 or member2 holds primary for member4 * * Primary Secondary Member1 = Q1(0,1,2),Q2(3,4,5) Q3(6,7,8), Q4(9,10,11) Member2 = * Q3(6,7,8),Q4(9,10,11) Q1(0,1,2), Q2(3,4,5) * * Member 3 comes again then it should be same as it was before member 3 went down * * Member1 = Q1(0,1,2) Q2(3,4,5),Q3(6,7,8),Q4(9,10,11) Member2 = Q3(6,7,8) Q1(0,1,2), * Q2(3,4,5),Q4(9,10,11) Member3 = Q2(3,4,5),Q4(9,10,11) Q1(0,1,2), Q3(6,7,8) * */ @Test public void testPut_ValidateDataOnMember_MultiplePrimaries_Datastore_CacheClosed() { member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3)); member1.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 2, 40, 12, new QuarterPartitionResolver(), null, false)); member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpaList.clear(); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3)); member2.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 2, 40, 12, new QuarterPartitionResolver(), null, false)); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); fpaList.clear(); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3)); fpaList.add(FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3)); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 2, 40, 12, new QuarterPartitionResolver(), null, false)); member1.invoke(() -> FixedPartitioningTestBase.putThroughDataStore("Quarter")); member1.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs()); member2.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs()); member3.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs()); member3.invoke(() -> FixedPartitioningTestBase.closeCache()); Wait.pause(1000); member1.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs_Nodedown()); member2.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs_Nodedown()); member3.invoke(() -> FixedPartitioningTestBase.createCacheOnMember()); member3.invoke(() -> FixedPartitioningTestBase.createRegionWithPartitionAttributes("Quarter", fpaList, 2, 40, 12, new QuarterPartitionResolver(), null, false)); Wait.pause(3000); member1.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs_Nodeup()); member2.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs_Nodeup()); member3.invoke(() -> FixedPartitioningTestBase.checkStartingBucketIDs_Nodeup()); } }