@Test
  public void testFPR_Persistence2() throws InterruptedException {
    vm0.invoke(() -> {
      createCache();
      new RegionBuilder<>()
          .addFixedPartitionAttributes(createFixedPartition(Q1.toString(), true, 3))
          .addFixedPartitionAttributes(createFixedPartition(Q2.toString(), true, 3))
          .redundantCopies(0)
          .localMaxMemory(40)
          .totalNumBuckets(12)
          .partitionResolver(new QuarterFixedPartitionResolver<>())
          .persistent(true)
          .create(QUARTERS_REGION);
    });

    vm1.invoke(() -> {
      createCache();
      new RegionBuilder<>()
          .addFixedPartitionAttributes(createFixedPartition(Q3.toString(), true, 3))
          .addFixedPartitionAttributes(createFixedPartition(Q4.toString(), true, 3))
          .redundantCopies(0)
          .localMaxMemory(40)
          .totalNumBuckets(12)
          .partitionResolver(new QuarterFixedPartitionResolver<>())
          .persistent(true)
          .create(QUARTERS_REGION);
    });

    vm0.invoke(() -> putQuartersData());

    vm0.invoke(() -> validatePrimaryWithSecondaryData(Q1, Q2));
    vm1.invoke(() -> validatePrimaryWithSecondaryData(Q3, Q4));

    for (VM vm : asList(vm0, vm1)) {
      vm.invoke(() -> validatePrimaryBucketsForQuarters(6, 6));
    }

    for (VM vm : asList(vm0, vm1)) {
      vm.invoke(this::closeCache);
    }

    AsyncInvocation<Void> createRegionInVM1 = vm1.invokeAsync(() -> {
      createCache();
      new RegionBuilder<>()
          .addFixedPartitionAttributes(createFixedPartition(Q3.toString(), true, 3))
          .addFixedPartitionAttributes(createFixedPartition(Q4.toString(), true, 3))
          .redundantCopies(0)
          .localMaxMemory(40)
          .totalNumBuckets(12)
          .partitionResolver(new QuarterFixedPartitionResolver<>())
          .persistent(true)
          .create(QUARTERS_REGION);
    });

    AsyncInvocation<Void> createRegionInVM0 = vm0.invokeAsync(() -> {
      createCache();
      new RegionBuilder<>()
          .addFixedPartitionAttributes(createFixedPartition(Q1.toString(), true, 3))
          .addFixedPartitionAttributes(createFixedPartition(Q2.toString(), true, 3))
          .redundantCopies(0)
          .localMaxMemory(40)
          .totalNumBuckets(12)
          .partitionResolver(new QuarterFixedPartitionResolver<>())
          .persistent(true)
          .create(QUARTERS_REGION);
    });

    createRegionInVM1.await();
    createRegionInVM0.await();

    vm1.invoke(() -> {
      validatePrimaryWithSecondaryData(Q3, Q4);
      validatePrimaryBucketsForQuarters(6, 6);
    });

    vm0.invoke(() -> {
      validatePrimaryWithSecondaryData(Q1, Q2);
      validatePrimaryBucketsForQuarters(6, 6);
    });
  }
Tests validate the behavior of FPR with persistence and with colocation when all members goes
down and comes up.
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningWithColocationAndPersistenceDUnitTest.java