@Test
public void buildUUID() {

    CommandLineArgumentParser.parseFromProperties(this);
    Utils.setTimeDriftThreshold(TimeUnit.HOURS.toMicros(1));
    try {
        Logger log = Logger.getAnonymousLogger();
        String baseId = Utils.computeHash("some id");
        // verify uniqueness of each value returned, across N threads
        Set<String> set = new ConcurrentSkipListSet<>();
        int threadCount = Utils.DEFAULT_THREAD_COUNT;
        int iterations = this.iterationCount;
        log.info("Starting uniqueness check, thread count: " + threadCount);
        TestContext ctx = new TestContext(threadCount, Duration.ofSeconds(30));
        for (int t = 0; t < threadCount; t++) {
            ForkJoinPool.commonPool().execute(() -> {
                for (int i = 0; i < iterations / threadCount; i++) {
                    String value = Utils.buildUUID(baseId);
                    if (!set.add(value)) {
                        ctx.fail(new IllegalStateException("Duplicate: " + value));
                    }
                }
                ctx.complete();
            });
        }
        ctx.await();
        set.clear();
        System.gc();
        // keep jvm from optimizing away calls
        int sum = 0;
        long start = System.nanoTime();
        for (int i = 0; i < iterations; i++) {
            sum += Utils.buildUUID(baseId).length();
        }
        long end = System.nanoTime();
        log.info("iterations: " + iterations);
        log.info("Total chars: " + sum);
        double thpt = this.iterationCount / ((end - start) / 1000000000.0);
        log.info("Throughput (calls / sec): " + thpt);
        this.testResults.getReport().lastValue(TestResults.KEY_THROUGHPUT, thpt);
    } finally {
        Utils.setTimeDriftThreshold(Utils.DEFAULT_TIME_DRIFT_THRESHOLD_MICROS);
    }
}