@Test
  public void goldenPath() throws InterruptedException {
    String vcapJson =
        "{ \"mqlight\": [ { \"name\": \"mqlsampleservice\", "
            + "\"label\": \"mqlight\", \"plan\": \"default\", "
            + "\"credentials\": { \"username\": \"jBruGnaTHuwq\", "
            + "\"connectionLookupURI\": \"http://mqlightp-lookup.ng.bluemix.net/Lookup?serviceId=ServiceId_0000000090\", "
            + "\"password\": \"xhUQve2gdgAN\", \"version\": \"2\" } } ] }";
    String expectedUri =
        "http://mqlightp-lookup.ng.bluemix.net/Lookup?serviceId=ServiceId_0000000090";
    BluemixEndpointService service =
        new MockBluemixEndpointService(vcapJson, expectedUri, servicesJson);
    MockEndpointPromise promise = new MockEndpointPromise(Method.SUCCESS);
    service.lookup(promise);
    waitForComplete(promise);
    assertTrue("Promise should have been marked done", promise.isComplete());

    // Expect 1st endpoint to be returned.
    assertEquals("ep1.example.org", promise.getEndoint().getHost());

    // If the test asks for another endpoint - it should receive the second.
    promise = new MockEndpointPromise(Method.SUCCESS);
    service.lookup(promise);
    assertTrue("Promise should have been marked done", promise.isComplete());
    assertEquals("ep2.example.org", promise.getEndoint().getHost());

    // Mark the second endpoint as successful - expect it to be returned again if we ask for another
    // endpoint
    service.onSuccess(promise.getEndoint());
    promise = new MockEndpointPromise(Method.SUCCESS);
    service.lookup(promise);
    assertTrue("Promise should have been marked done", promise.isComplete());
    assertEquals("ep2.example.org", promise.getEndoint().getHost());

    // Asking for another endpoint should return the 1st endpoint...
    promise = new MockEndpointPromise(Method.SUCCESS);
    service.lookup(promise);
    assertTrue("Promise should have been marked done", promise.isComplete());
    assertEquals("ep1.example.org", promise.getEndoint().getHost());

    // Asking for another endpoint should result in the test being told to wait...
    promise = new MockEndpointPromise(Method.WAIT);
    service.lookup(promise);
    assertTrue("Promise should have been marked done", promise.isComplete());
  }