@Test
public void buildChildSelfLink() throws Throwable {

    SomeFactoryService f = new SomeFactoryService();
    f = (SomeFactoryService) this.host.startServiceAndWait(f,
            UUID.randomUUID().toString(),
            null);
    // this test assumes how the implementation works. If we change
    // the implementation, it will break, by design
    String idHash = Utils.computeHash(this.host.getId());
    assertTrue(f.buildDefaultChildSelfLink().startsWith(idHash));
    long s = System.nanoTime();
    for (int i = 0; i < this.iterationCount; i++) {
        assertTrue(f.buildDefaultChildSelfLink() != null);
    }
    long e = System.nanoTime();
    double thpt = (double) this.iterationCount / (e - s);
    thpt *= TimeUnit.SECONDS.toNanos(1);
    this.host.log("throughput (calls/sec) %f", thpt);
    s = System.nanoTime();
    for (int i = 0; i < this.iterationCount; i++) {
        assertTrue(UUID.randomUUID().toString() != null);
    }
    e = System.nanoTime();
    thpt = (double) this.iterationCount / (e - s);
    thpt *= TimeUnit.SECONDS.toNanos(1);
    this.host.log("UUID.randomUUID().toString() throughput (calls/sec) %f", thpt);
}