blob: 58d0d19dac4af315a774e188eb750a74933c5ebd [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
package com.gemstone.gemfire.internal.cache.partitioned.fixed;
import java.util.ArrayList;
import java.util.List;
import com.gemstone.gemfire.cache.DuplicatePrimaryPartitionException;
import com.gemstone.gemfire.cache.EntryNotFoundException;
import com.gemstone.gemfire.cache.FixedPartitionAttributes;
import com.gemstone.gemfire.cache.partition.PartitionNotAvailableException;
import dunit.AsyncInvocation;
import dunit.DistributedTestCase.ExpectedException;
import dunit.Host;
/**
* This Dunit test class have multiple tests to tests different validations of
* static partitioning
*
* @author kbachhav
*
*/
public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
public FixedPartitioningDUnitTest(String name) {
super(name);
}
private static final long serialVersionUID = 1L;
public void setUp() throws Exception {
super.setUp();
final Host host = Host.getHost(0);
member1 = host.getVM(0);
member2 = host.getVM(1);
member3 = host.getVM(2);
member4 = host.getVM(3);
}
public void tearDown2() throws Exception {
super.tearDown2();
}
/**
* This test validates that null partition name cannot be added in
* FixedPartitionAttributes
*/
public void testNullPartitionName() {
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa = FixedPartitionAttributes
.createFixedPartition(null, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
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.
*
*/
public void testSamePartitionNameTwice() {
try {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
fail("Expected IllegalStateException ", illegal);
}
}
}
/**
* This test validates that FixedPartitionAttributes cannot be defined for
* accessor nodes
*/
public void testFixedPartitionAttributes_Accessor() {
try {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
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.
*/
public void testSamePartitionName_Primary_OnTwoMembers() {
ExpectedException ex = addExpectedException("DuplicatePrimaryPartitionException");
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 9,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 9,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
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
*/
public void testSamePartitionName_DifferentNumBuckets() {
ExpectedException ex = addExpectedException("IllegalStateException");
try {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 9,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 8);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
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.
*/
public void testNumberOfPartitions() {
ExpectedException expected = addExpectedException("IllegalStateException");
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 1, 0, 9,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 9,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition("Q12", true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition("Q13", false, 3);
FixedPartitionAttributes fpa3 = FixedPartitionAttributes
.createFixedPartition("Q11", false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 9,
new QuarterPartitionResolver(), null, false});
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition("Q13", true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition("Q11", false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "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")))) {
fail("Expected IllegalStateException ", ex);
}
} finally {
expected.remove();
}
}
/**
* Sum of num-buckets for different primary partitions should not be
* greater than totalNumBuckets.
*/
public void testNumBuckets_totalNumBuckets() {
ExpectedException expected = addExpectedException("IllegalStateException");
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 1, 0, 5,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 5,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "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 ")))) {
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
*/
public void testPut_PartitionNotAvailableException() {
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 1, 0, 12,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
member1.invoke(FixedPartitioningTestBase.class, "putThorughAccessor",
new Object[] { "Quarter" });
fail("PartitionNotAvailableException Expected");
}
catch (Exception ex) {
if (!((ex.getCause() instanceof PartitionNotAvailableException))) {
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
*/
public void test_DataStoreWithoutPartition_DataStoreWithPartition() {
ExpectedException expected = addExpectedException("IllegalStateException");
try {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
}
catch (Exception ex) {
if (!((ex.getCause() instanceof IllegalStateException))) {
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
*/
public void test_DataStoreWithPartition_DataStoreWithoutPartition() {
ExpectedException expected = addExpectedException("IllegalStateException");
try {
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 1, 40, 12,
new QuarterPartitionResolver(), null, false});
}
catch (Exception ex) {
if (!((ex.getCause() instanceof IllegalStateException))) {
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
*/
public void testPut_ValidateDataOnMember_OnlyPrimary_Accessor() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 0, 0, 12,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member1.invoke(FixedPartitioningTestBase.class, "putThorughAccessor",
new Object[] { "Quarter" });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter1 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter2 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter3 });
}
public void testBug43283() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "setPRObserverBeforeCalculateStartingBucketId");
member2.invoke(FixedPartitioningTestBase.class, "setPRObserverBeforeCalculateStartingBucketId");
member3.invoke(FixedPartitioningTestBase.class, "setPRObserverBeforeCalculateStartingBucketId");
member4.invoke(FixedPartitioningTestBase.class, "setPRObserverBeforeCalculateStartingBucketId");
try {
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
AsyncInvocation inv1 = member1
.invokeAsync(FixedPartitioningTestBase.class,
"createRegionWithPartitionAttributes", new Object[] { "Quarter",
fpaList, 0, 40, 12, new QuarterPartitionResolver(), null,
false });
FixedPartitionAttributes fpa2 = FixedPartitionAttributes
.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa2);
AsyncInvocation inv2 = member2
.invokeAsync(FixedPartitioningTestBase.class,
"createRegionWithPartitionAttributes", new Object[] { "Quarter",
fpaList, 0, 40, 12, new QuarterPartitionResolver(), null,
false });
FixedPartitionAttributes fpa3 = FixedPartitionAttributes
.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa3);
AsyncInvocation inv3 = member3
.invokeAsync(FixedPartitioningTestBase.class,
"createRegionWithPartitionAttributes", new Object[] { "Quarter",
fpaList, 0, 40, 12, new QuarterPartitionResolver(), null,
false });
member4.invoke(FixedPartitioningTestBase.class,
"createRegionWithPartitionAttributes", new Object[] { "Quarter",
null, 0, 0, 12, new QuarterPartitionResolver(), null, false });
try {
member4.invoke(FixedPartitioningTestBase.class,
"putThorughAccessor_Immediate", new Object[] { "Quarter" });
}
catch (Exception e) {
e.printStackTrace();
if (!(e.getCause() instanceof PartitionNotAvailableException)) {
fail("exception thrown is not PartitionNotAvailableException");
}
}
try {
inv1.join();
inv2.join();
inv3.join();
}
catch (InterruptedException e) {
e.printStackTrace();
fail("Unexpected Exception");
}
} finally {
member1.invoke(FixedPartitioningTestBase.class, "resetPRObserverBeforeCalculateStartingBucketId");
member2.invoke(FixedPartitioningTestBase.class, "resetPRObserverBeforeCalculateStartingBucketId");
member3.invoke(FixedPartitioningTestBase.class, "resetPRObserverBeforeCalculateStartingBucketId");
member4.invoke(FixedPartitioningTestBase.class, "resetPRObserverBeforeCalculateStartingBucketId");
}
}
/**
* This tests validate that datastore member does the put on itself as well as
* other datastores as per primary FixedPartitionAttributes defined on
* datastores.
*/
public void testPut_ValidateDataOnMember_OnlyPrimary_Datastore() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter1 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter2 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter4 });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
}
/**
* This test validate that a delete operation on empty region will throw
* EntryNotFoundException
*/
public void testDelete_WithoutPut() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
try {
member1.invoke(FixedPartitioningTestBase.class, "deleteOperation",
new Object[] { "Quarter" });
fail("EntryNotFoundException expected");
}
catch (Exception ex) {
if (!((ex.getCause() instanceof EntryNotFoundException))) {
fail("Expected EntryNotFoundException ", ex);
}
}
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "getThroughDataStore",
new Object[] { "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
*/
public void testPut_NoResolver() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null , false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
try {
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore_NoResolver",
new Object[] { "Quarter" });
fail("IllegalStateException expected");
}
catch (Exception ex) {
if (!((ex.getCause() instanceof IllegalStateException))) {
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.
*/
public void testPut_CallBackWithResolver() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore_CallBackWithResolver",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter1 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter2 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter4 });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
}
/**
* This test validates that a PR without Fixed Partition Attributes and with
* FixedPartitionResolver will do custom partitioning as per resolver.
*/
public void testPut_WithResolver_NoFPAs() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", null, 0, 40, 12,
new QuarterPartitionResolver(), null, false});
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "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.
*/
public void testPut_FixedPartitionResolver_NoResolver() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
try {
member1.invoke(FixedPartitioningTestBase.class,
"putThroughDataStore_FixedPartitionResolver_NoResolver",
new Object[] { "Quarter" });
fail("IllegalStateException expected");
}
catch (Exception ex) {
if (!((ex.getCause() instanceof IllegalStateException))) {
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.
*/
public void testPut_FixedPartitionResolver_PartitionResolver() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
null, null, false });
try {
member1.invoke(FixedPartitioningTestBase.class,
"putThroughDataStore_FixedPartitionResolver_PartitionResolver",
new Object[] { "Quarter" });
fail("IllegalStateException expected");
}
catch (Exception ex) {
if (!((ex.getCause() instanceof IllegalStateException))) {
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.
*/
public void testFPR_DefaultNumBuckets() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, true);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 0, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter1 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter2 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryData",
new Object[] { Quarter4 });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 1, 1 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 1, 1 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 1, 1 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 1, 1 });
}
/**
* This tests validate that accessor member does the put on datastores as per
* primary and secondary FixedPartitionAttributes defined on datastores.
*/
public void testPut_ValidateDataOnMember_PrimarySecondary_Accessor() {
createCacheOnMember();
createRegionWithPartitionAttributes("Quarter", null, 3, 0, 12,
new QuarterPartitionResolver(), null, false);
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
putThroughDataStore("Quarter");
member1.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter1,
false });
member2.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter2,
false });
member3.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter3,
false });
member4.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { 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.
*/
public void testPut_ValidateDataOnMember_PrimarySecondary_Datastore() {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter1, false });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter2, false });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter3, false });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter4, false });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 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.
*
*/
public void testPut_ValidateDataOnMember_OnlySecondary_Datastore() {
member1.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
FixedPartitionAttributes fpa1 = FixedPartitionAttributes
.createFixedPartition(Quarter1, false, 3);
List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member1.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
createCacheOnMember();
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter1, true, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
createRegionWithPartitionAttributes("Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false);
pause(1000);
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 0 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 3, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 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)
*
*
*/
public void testPut_ValidateDataOnMember_PrimarySecondary_Accessor_CacheClosed() {
createCacheOnMember();
createRegionWithPartitionAttributes("Quarter", null, 3, 0, 12,
new QuarterPartitionResolver(), null, false);
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpa3 = FixedPartitionAttributes.createFixedPartition(Quarter2, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
fpaList.add(fpa3);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 3, 40, 12,
new QuarterPartitionResolver(), null, false });
putThroughDataStore("Quarter");
member1.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter1,
false });
member2.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter2,
false });
member3.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter3,
false });
member4.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter4,
false });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 9, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 9, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 9, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 9, 3 });
member4.invoke(FixedPartitioningTestBase.class, "closeCache");
pause(1000);
member1.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter1,
false });
member2.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter2,
false });
member3.invoke(FixedPartitioningTestBase.class,
"checkPrimarySecondaryData_TwoSecondaries", new Object[] { Quarter3,
false });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 9, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 9, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 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)
*/
public void testPut_ValidateDataOnMember_PrimarySecondary_Datastore_CacheClosed() {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter1, false });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter2, false });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter3, false });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter4, false });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "closeCache");
pause(1000);
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 6, 6 });
member1.invoke(FixedPartitioningTestBase.class, "putHAData", new Object[] { "Quarter" });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
pause(1000);
member1.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter1, true });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter2, true });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter3, true });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter4, true });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
}
public void test_Bug46619_Put_ValidateDataOnMember_PrimarySecondary_Datastore_CacheClosed() {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember_DisableMovePrimary");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember_DisableMovePrimary");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter3, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter4, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember_DisableMovePrimary");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter1, false });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter2, false });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter3, false });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter4, false });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "closeCache");
member2.invoke(FixedPartitioningTestBase.class, "closeCache");
pause(1000);
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 6, 6 });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarterAfterCacheClosed",
new Object[] { 6, 6 });
member1.invoke(FixedPartitioningTestBase.class, "putHAData", new Object[] { "Quarter" });
member4.invoke(FixedPartitioningTestBase.class, "createCacheOnMember_DisableMovePrimary");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter4, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter1, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member4.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember_DisableMovePrimary");
fpa1 = FixedPartitionAttributes.createFixedPartition(Quarter2, true, 3);
fpa2 = FixedPartitionAttributes.createFixedPartition(Quarter3, false, 3);
fpaList = new ArrayList<FixedPartitionAttributes>();
fpaList.add(fpa1);
fpaList.add(fpa2);
member2.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 1, 40, 12,
new QuarterPartitionResolver(), null, false });
pause(1000);
member1.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter1, true });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter2, true });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter3, true });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimarySecondaryData",
new Object[] { Quarter4, true });
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 6 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 0 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 6 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 0 });
member4.invoke(FixedPartitioningTestBase.class, "doRebalance");
pause(2000);
member1.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member2.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member3.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 6, 3 });
member4.invoke(FixedPartitioningTestBase.class, "checkPrimaryBucketsForQuarter",
new Object[] { 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)
*
*/
public void testPut_ValidateDataOnMember_MultiplePrimaries_Datastore_CacheClosed() {
member1.invoke(FixedPartitioningTestBase.class, "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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 2, 40, 12,
new QuarterPartitionResolver(), null, false });
member2.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpaList = new ArrayList<FixedPartitionAttributes>();
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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 2, 40, 12,
new QuarterPartitionResolver(), null, false });
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
fpaList = new ArrayList<FixedPartitionAttributes>();
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.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 2, 40, 12,
new QuarterPartitionResolver(), null, false });
member1.invoke(FixedPartitioningTestBase.class, "putThroughDataStore",
new Object[] { "Quarter" });
member1.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs");
member2.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs");
member3.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs");
member3.invoke(FixedPartitioningTestBase.class, "closeCache");
pause(1000);
member1.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs_Nodedown");
member2.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs_Nodedown");
member3.invoke(FixedPartitioningTestBase.class, "createCacheOnMember");
member3.invoke(FixedPartitioningTestBase.class, "createRegionWithPartitionAttributes",
new Object[] { "Quarter", fpaList, 2, 40, 12,
new QuarterPartitionResolver(), null, false });
pause(3000);
member1.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs_Nodeup");
member2.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs_Nodeup");
member3.invoke(FixedPartitioningTestBase.class, "checkStartingBucketIDs_Nodeup");
}
}