@Before
 public final void setUpLocatorLauncherTest() throws Exception {
   final int port = AvailablePortHelper.getRandomAvailableTCPPort();
   System.setProperty(
       DistributionLocator.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, String.valueOf(port));
   this.locatorPort = port;
 }
  // Executes the query on the server with the RM and QM configured
  private void doCriticalMemoryHitTestOnServer(
      final String regionName,
      boolean createPR,
      final int criticalThreshold,
      final boolean disabledQueryMonitorForLowMem,
      final int queryTimeout,
      final boolean hitCriticalThreshold)
      throws Exception {
    // create region on the server
    final Host host = Host.getHost(0);
    final VM server = host.getVM(0);
    final VM client = host.getVM(1);
    final int numObjects = 200;
    try {
      final int port = AvailablePortHelper.getRandomAvailableTCPPort();
      startCacheServer(
          server,
          port,
          criticalThreshold,
          disabledQueryMonitorForLowMem,
          queryTimeout,
          regionName,
          createPR,
          0);

      // startPeerClient(client, server, port, regionName);
      populateData(server, regionName, numObjects);

      doTestCriticalHeapAndQueryTimeout(
          server,
          server,
          regionName,
          disabledQueryMonitorForLowMem,
          queryTimeout,
          hitCriticalThreshold);

      // Pause for a second and then let's recover
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
      }

      // Recover from critical heap
      if (hitCriticalThreshold) {
        vmRecoversFromCriticalHeap(server);
      }

      // Check to see if query execution is ok under "normal" or "healthy" conditions
      server.invoke(
          new CacheSerializableRunnable("Executing query when system is 'Normal'") {
            public void run2() {
              try {
                QueryService qs = getCache().getQueryService();
                Query query = qs.newQuery("Select * From /" + regionName);
                SelectResults results = (SelectResults) query.execute();
                assertEquals(numObjects, results.size());
              } catch (QueryInvocationTargetException e) {
                assertFalse(true);
              } catch (NameResolutionException e) {
                assertFalse(true);
              } catch (TypeMismatchException e) {
                assertFalse(true);
              } catch (FunctionDomainException e) {
                assertFalse(true);
              }
            }
          });

      // Execute a critical heap event/ query timeout test again
      doTestCriticalHeapAndQueryTimeout(
          server,
          server,
          regionName,
          disabledQueryMonitorForLowMem,
          queryTimeout,
          hitCriticalThreshold);

      // Recover from critical heap
      if (hitCriticalThreshold) {
        vmRecoversFromCriticalHeap(server);
      }
    } finally {
      stopServer(server);
    }
  }