@Test
  public void testPut_ValidateDataOnMember_PrimarySecondary_Accessor_CacheClosed()
      throws ParseException {
    cache.set(new CacheFactory(getDistributedSystemProperties()).create());
    createPartitionedRegion("Quarter", null, 3, 0, 12, newQuarterPartitionResolver());

    member1.invoke(() -> {
      cache.set(new CacheFactory(getDistributedSystemProperties()).create());
      FixedPartitionAttributes fpa1 = createFixedPartition(QUARTER_1, true, 3);
      FixedPartitionAttributes fpa2 = createFixedPartition(QUARTER_3, false, 3);
      FixedPartitionAttributes fpa3 = createFixedPartition(QUARTER_4, false, 3);
      createPartitionedRegion("Quarter", asList(fpa1, fpa2, fpa3), 3, 40, 12,
          newQuarterPartitionResolver());
    });

    member2.invoke(() -> {
      cache.set(new CacheFactory(getDistributedSystemProperties()).create());
      FixedPartitionAttributes fpa1 = createFixedPartition(QUARTER_2, true, 3);
      FixedPartitionAttributes fpa2 = createFixedPartition(QUARTER_3, false, 3);
      FixedPartitionAttributes fpa3 = createFixedPartition(QUARTER_4, false, 3);
      createPartitionedRegion("Quarter", asList(fpa1, fpa2, fpa3), 3, 40, 12,
          newQuarterPartitionResolver());
    });

    member3.invoke(() -> {
      cache.set(new CacheFactory(getDistributedSystemProperties()).create());
      FixedPartitionAttributes fpa1 = createFixedPartition(QUARTER_3, true, 3);
      FixedPartitionAttributes fpa2 = createFixedPartition(QUARTER_1, false, 3);
      FixedPartitionAttributes fpa3 = createFixedPartition(QUARTER_2, false, 3);
      createPartitionedRegion("Quarter", asList(fpa1, fpa2, fpa3), 3, 40, 12,
          newQuarterPartitionResolver());
    });

    member4.invoke(() -> {
      cache.set(new CacheFactory(getDistributedSystemProperties()).create());
      FixedPartitionAttributes fpa1 = createFixedPartition(QUARTER_4, true, 3);
      FixedPartitionAttributes fpa2 = createFixedPartition(QUARTER_1, false, 3);
      FixedPartitionAttributes fpa3 = createFixedPartition(QUARTER_2, false, 3);
      createPartitionedRegion("Quarter", asList(fpa1, fpa2, fpa3), 3, 40, 12,
          newQuarterPartitionResolver());
    });

    putThroughDataStore("Quarter");

    member1.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_1, false));
    member2.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_2, false));
    member3.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_3, false));
    member4.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_4, false));

    member1.invoke(() -> checkPrimaryBucketsForQuarter(9, 3));
    member2.invoke(() -> checkPrimaryBucketsForQuarter(9, 3));
    member3.invoke(() -> checkPrimaryBucketsForQuarter(9, 3));
    member4.invoke(() -> checkPrimaryBucketsForQuarter(9, 3));

    member4.invoke(() -> cache.get().close());

    Wait.pause(1000);

    member1.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_1, false));
    member2.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_2, false));
    member3.invoke(() -> checkPrimarySecondaryData_TwoSecondaries(QUARTER_3, false));

    member1.invoke(() -> checkPrimaryBucketsForQuarterAfterCacheClosed(9, 3));
    member2.invoke(() -> checkPrimaryBucketsForQuarterAfterCacheClosed(9, 3));
    member3.invoke(() -> checkPrimaryBucketsForQuarterAfterCacheClosed(9, 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

<p>
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)

<p>
Put happens considering Member2 is holding primary for Q4.

<p>
Member4 comes again, then Member4 should do the GII from member2 for buckets 6,7,8 and should
acquire 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)
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java