@Override
      public void run2() throws CacheException {
        Cache cache = getCache();
        AttributesFactory attr = new AttributesFactory();
        attr.setValueConstraint(constraint);
        if (makePersistent) {
          DiskStore ds = cache.findDiskStore(diskName);
          if (ds == null) {
            ds = cache.createDiskStoreFactory().setDiskDirs(JUnit4CacheTestCase.getDiskDirs())
                .create(diskName);
          }
          attr.setDataPolicy(DataPolicy.PERSISTENT_PARTITION);
          attr.setDiskStoreName(diskName);
        } else {
          attr.setDataPolicy(DataPolicy.PARTITION);
          attr.setDiskStoreName(null);
        }

        PartitionAttributesFactory paf = new PartitionAttributesFactory();
        paf.setRedundantCopies(redundancy);
        attr.setPartitionAttributes(paf.create());

        // parent region
        Region partitionedregion = cache.createRegion(regionName, attr.create());
        assertNotNull(
            "PRQueryDUnitHelper#getCacheSerializableRunnableForPRCreateWithRedundancy: Partitioned Region "
                + regionName + " not in cache",
            cache.getRegion(regionName));
        assertNotNull(
            "PRQueryDUnitHelper#getCacheSerializableRunnableForPRCreateWithRedundancy: Partitioned Region ref null",
            partitionedregion);
        assertTrue(
            "PRQueryDUnitHelper#getCacheSerializableRunnableForPRCreateWithRedundancy: Partitioned Region ref claims to be destroyed",
            !partitionedregion.isDestroyed());

        // child region
        attr.setValueConstraint(constraint);
        paf.setColocatedWith(regionName);
        attr.setPartitionAttributes(paf.create());

        cache.createRegion(childRegionName, attr.create());
      }
This function creates a colocated pair of PR's given the scope & the redundancy parameters for
the parent *

@return cacheSerializable object
geode-core/src/distributedTest/java/org/apache/geode/cache/query/partitioned/PRQueryDUnitHelper.java