private static void createReplicateRegionWithEviction(File workingDir) {
    InternalCache cache = ClusterStartupRule.getCache();
    DiskStoreFactory dsf = cache.createDiskStoreFactory();
    dsf.setDiskDirs(new File[] {workingDir}).create("ds");
    EvictionAttributes evictAttrs =
        EvictionAttributes.createLRUEntryAttributes(100, EvictionAction.OVERFLOW_TO_DISK);
    cache.createRegionFactory(RegionShortcut.REPLICATE)
        .setDiskStoreName("ds")
        .setEvictionAttributes(evictAttrs)
        .create("exampleRegion");
  }
These tests add a test hook to make sure query execution sleeps for at least 20 ms, so the
queryMonitor thread will get a chance to cancel the query before it completes.

The MAX_QUERY_EXECUTION_TIME is set as 1 ms, i.e, theoretically all queries will be cancelled
after 1ms, but due to thread scheduling, this may not be true. we can only decrease the flakyness
of the test by making MAX_QUERY_EXECUTION_TIME the smallest possible (1) and making the query
execution time longer (but not too long to make the test run too slow).
geode-cq/src/distributedTest/java/org/apache/geode/cache/query/dunit/QueryMonitorDUnitTest.java