private void validateFalsePosRate(double falsePosRate, int nTrials, double zValueBoundary,
    CompoundBloomFilter cbf, String additionalMsg) {
    double p = BloomFilterFactory.getErrorRate(conf);
    double zValue = (falsePosRate - p) / Math.sqrt(p * (1 - p) / nTrials);

    String assortedStatsStr =
      " (targetErrorRate=" + p + ", falsePosRate=" + falsePosRate + ", nTrials=" + nTrials + ")";
    LOG.info("z-value is " + zValue + assortedStatsStr);

    boolean isUpperBound = zValueBoundary > 0;

    if (isUpperBound && zValue > zValueBoundary || !isUpperBound && zValue < zValueBoundary) {
      String errorMsg = "False positive rate z-value " + zValue + " is "
        + (isUpperBound ? "higher" : "lower") + " than " + zValueBoundary + assortedStatsStr
        + ". Per-chunk stats:\n" + cbf.formatTestingStats();
      fail(errorMsg + additionalMsg);
    }
  }
Validates the false positive ratio by computing its z-value and comparing it to the provided
threshold.
@param falsePosRate   experimental positive rate
@param nTrials        the number of Bloom filter checks
@param zValueBoundary z-value boundary, positive for an upper bound and negative for a lower
                      bound
@param cbf            the compound Bloom filter we are using
@param additionalMsg  additional message to include in log output and assertion failures
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.java