@Test
  public void testColocation_FPR_Persistence_ChildUsingAttributesOfParent() {
    for (VM vm : asList(vm0, vm1, vm2, vm3)) {
      vm.invoke(this::createCache);
    }

    vm0.invoke(() -> new RegionBuilder<>()
        .addFixedPartitionAttributes(createFixedPartition("10", true, 5))
        .addFixedPartitionAttributes(createFixedPartition("30", false, 5))
        .addFixedPartitionAttributes(createFixedPartition("40", false, 5))
        .redundantCopies(2)
        .localMaxMemory(50)
        .totalNumBuckets(20)
        .partitionResolver(new CustomerFixedPartitionResolver<>())
        .persistent(true)
        .create(CUSTOMERS_REGION));

    vm1.invoke(() -> new RegionBuilder<>()
        .addFixedPartitionAttributes(createFixedPartition("20", true, 5))
        .addFixedPartitionAttributes(createFixedPartition("30", false, 5))
        .addFixedPartitionAttributes(createFixedPartition("40", false, 5))
        .redundantCopies(2)
        .localMaxMemory(50)
        .totalNumBuckets(20)
        .partitionResolver(new CustomerFixedPartitionResolver<>())
        .persistent(true)
        .create(CUSTOMERS_REGION));

    vm2.invoke(() -> new RegionBuilder<>()
        .addFixedPartitionAttributes(createFixedPartition("30", true, 5))
        .addFixedPartitionAttributes(createFixedPartition("10", false, 5))
        .addFixedPartitionAttributes(createFixedPartition("20", false, 5))
        .redundantCopies(2)
        .localMaxMemory(50)
        .totalNumBuckets(20)
        .partitionResolver(new CustomerFixedPartitionResolver<>())
        .persistent(true)
        .create(CUSTOMERS_REGION));

    vm3.invoke(() -> new RegionBuilder<>()
        .addFixedPartitionAttributes(createFixedPartition("40", true, 5))
        .addFixedPartitionAttributes(createFixedPartition("10", false, 5))
        .addFixedPartitionAttributes(createFixedPartition("20", false, 5))
        .redundantCopies(2)
        .localMaxMemory(50)
        .totalNumBuckets(20)
        .partitionResolver(new CustomerFixedPartitionResolver<>())
        .persistent(true)
        .create(CUSTOMERS_REGION));

    for (VM vm : asList(vm0, vm1, vm2, vm3)) {
      vm.invoke(() -> new RegionBuilder<>()
          .redundantCopies(2)
          .localMaxMemory(50)
          .totalNumBuckets(20)
          .partitionResolver(new CustomerFixedPartitionResolver<>())
          .colocatedWith(CUSTOMERS_REGION)
          .create(ORDERS_REGION));
    }

    for (VM vm : asList(vm0, vm1, vm2, vm3)) {
      vm.invoke(() -> new RegionBuilder<>()
          .redundantCopies(2)
          .localMaxMemory(50)
          .totalNumBuckets(20)
          .partitionResolver(new CustomerFixedPartitionResolver<>())
          .colocatedWith(ORDERS_REGION)
          .create(SHIPMENTS_REGION));
    }

    for (VM vm : asList(vm0, vm1, vm2, vm3)) {
      vm.invoke(() -> {
        validateFixedPartitionAttributes(ORDERS_REGION);
        validateFixedPartitionAttributes(SHIPMENTS_REGION);
      });
    }

    vm0.invoke(() -> {
      putOrdersData(40);
      putCustomersData(40);
      putShipmentsData(40);

      validateColocatedData(10);
    });

    for (VM vm : asList(vm0, vm1, vm2, vm3)) {
      vm.invoke(() -> validatePrimaryBucketsForColocation(15, 5));
    }
  }
Validates that in Customer-Order-shipment colocation, Order and shipment have the
FixedPartitionAttributes of the parent region Customer.

<p>
Put happens for all 3 regions. Colocation of the data is achieved by using a partition-resolver
{@link CustomerFixedPartitionResolver#getRoutingObject(EntryOperation)}
Also the Fixed Partitioning is achieved using same partition-resolver
{@link CustomerFixedPartitionResolver#getPartitionName(EntryOperation, Set)}

<p>
Validation is done for the same number of the buckets on a particular member for all 3 regions.
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningWithColocationAndPersistenceDUnitTest.java