@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()); }