@Test public void testJobComplete() { AsyncJob<?> job = AsyncJob.builder().id("100") .status(Status.SUCCEEDED).resultCode(ResultCode.SUCCESS).build(); expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job); replay(client, asyncJobClient); assertTrue(new JobComplete(client).apply(job.getId())); verify(client, asyncJobClient); }
public void testApply() { String id = "1"; String jobId = "2"; CloudStackClient client = createMock(CloudStackClient.class); Predicate<String> jobComplete = Predicates.alwaysTrue(); AsyncJobClient jobClient = createMock(AsyncJobClient.class); expect(client.getAsyncJobClient()).andReturn(jobClient).atLeastOnce(); expect(jobClient.getAsyncJob(jobId)).andReturn(AsyncJob.builder().id(jobId).result("foo").build()).atLeastOnce(); replay(client); replay(jobClient); assertEquals( new BlockUntilJobCompletesAndReturnResult(client, jobComplete).<String>apply(AsyncCreateResponse.builder().id(id).jobId( jobId).build()), "foo"); verify(client); verify(jobClient); }
@Test public void testJobComplete() { AsyncJob<?> job = AsyncJob.builder().id("100") .status(Status.SUCCEEDED).resultCode(ResultCode.SUCCESS).build(); expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job); replay(client, asyncJobClient); assertTrue(new JobComplete(client).apply(job.getId())); verify(client, asyncJobClient); }
public void testApply() { String id = "1"; String jobId = "2"; CloudStackApi client = createMock(CloudStackApi.class); Predicate<String> jobComplete = Predicates.alwaysTrue(); AsyncJobApi jobClient = createMock(AsyncJobApi.class); expect(client.getAsyncJobApi()).andReturn(jobClient).atLeastOnce(); expect(jobClient.getAsyncJob(jobId)).andReturn(AsyncJob.builder().id(jobId).result("foo").build()).atLeastOnce(); replay(client); replay(jobClient); assertEquals( new BlockUntilJobCompletesAndReturnResult(client, jobComplete).<String>apply(AsyncCreateResponse.builder().id(id).jobId( jobId).build()), "foo"); verify(client); verify(jobClient); }
@Test(expectedExceptions = IllegalStateException.class) public void testJobDoesntCompleteThrowsIllegalStateException() { String id = "1"; String jobId = "2"; CloudStackClient client = createMock(CloudStackClient.class); // the alwaysfalse predicate should blow up with IllegalStateException Predicate<String> jobComplete = Predicates.alwaysFalse(); AsyncJobClient jobClient = createMock(AsyncJobClient.class); expect(client.getAsyncJobClient()).andReturn(jobClient).atLeastOnce(); expect(jobClient.getAsyncJob(jobId)).andReturn(AsyncJob.builder().id(jobId).result("foo").build()).atLeastOnce(); replay(client); replay(jobClient); assertEquals( new BlockUntilJobCompletesAndReturnResult(client, jobComplete).<String>apply( AsyncCreateResponse.builder().id(id).jobId(jobId).build()), "foo"); verify(client); verify(jobClient); }
@Test(expectedExceptions = IllegalStateException.class) public void testJobDoesntCompleteThrowsIllegalStateException() { String id = "1"; String jobId = "2"; CloudStackApi client = createMock(CloudStackApi.class); // the alwaysfalse predicate should blow up with IllegalStateException Predicate<String> jobComplete = Predicates.alwaysFalse(); AsyncJobApi jobClient = createMock(AsyncJobApi.class); expect(client.getAsyncJobApi()).andReturn(jobClient).atLeastOnce(); expect(jobClient.getAsyncJob(jobId)).andReturn(AsyncJob.builder().id(jobId).result("foo").build()).atLeastOnce(); replay(client); replay(jobClient); assertEquals( new BlockUntilJobCompletesAndReturnResult(client, jobComplete).<String>apply( AsyncCreateResponse.builder().id(id).jobId(jobId).build()), "foo"); verify(client); verify(jobClient); }
@Test public void testFailedJobComplete() { AsyncJob<?> job = AsyncJob.builder().id("100") .status(Status.FAILED).resultCode(ResultCode.FAIL) .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("Dummy test error").build()).build(); expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job); replay(client, asyncJobClient); try { new JobComplete(client).apply(job.getId()); fail("No exception thrown"); } catch (AsyncJobException e) { assertTrue(e.toString().contains("Dummy test error")); } verify(client, asyncJobClient); } }
@Test(expectedExceptions = UncheckedExecutionException.class) public void testJobWithErrorThrowsUncheckedExecutionException() { String id = "1"; String jobId = "2"; CloudStackClient client = createMock(CloudStackClient.class); Predicate<String> jobComplete = Predicates.alwaysTrue(); AsyncJobClient jobClient = createMock(AsyncJobClient.class); expect(client.getAsyncJobClient()).andReturn(jobClient).atLeastOnce(); expect(jobClient.getAsyncJob(jobId)).andReturn( AsyncJob.builder().id(jobId) .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("ERRROR").build()) .result("foo").build()) .atLeastOnce(); replay(client); replay(jobClient); assertEquals( new BlockUntilJobCompletesAndReturnResult(client, jobComplete).<String>apply( AsyncCreateResponse.builder().id(id).jobId(jobId).build()), "foo"); verify(client); verify(jobClient); } }
@Test public void testFailedJobComplete() { AsyncJob<?> job = AsyncJob.builder().id("100") .status(Status.FAILED).resultCode(ResultCode.FAIL) .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("Dummy test error").build()).build(); expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job); replay(client, asyncJobClient); try { new JobComplete(client).apply(job.getId()); fail("No exception thrown"); } catch (AsyncJobException e) { assertTrue(e.toString().contains("Dummy test error")); } verify(client, asyncJobClient); } }
public void testWithNoResult() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":860,\"jobstatus\":0,\"jobprocstatus\":0,\"jobresultcode\":0} }"; AsyncJob<PublicIPAddress> expects = AsyncJob.<PublicIPAddress>builder() .id("860") .status(Status.IN_PROGRESS) .progress(0) .resultCode(ResultCode.SUCCESS).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithNoResult() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":860,\"jobstatus\":0,\"jobprocstatus\":0,\"jobresultcode\":0} }"; AsyncJob<PublicIPAddress> expects = AsyncJob.<PublicIPAddress>builder() .id("860") .status(Status.IN_PROGRESS) .progress(0) .resultCode(ResultCode.SUCCESS).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithUnknownResultReturnsStringifiedJson() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":860,\"jobstatus\":0,\"jobprocstatus\":0,\"jobresultcode\":0,\"jobresult\":{\"foo\":{\"bar\":1}}}}"; AsyncJob<?> expects = AsyncJob.builder() .id("860") .status(Status.IN_PROGRESS) .progress(0) .resultCode(ResultCode.SUCCESS) .result("{\"bar\":1}") .build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithSuccessTrueResultSetsNullResult() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":1138,\"jobstatus\":1,\"jobprocstatus\":0,\"jobresultcode\":0,\"jobresulttype\":\"object\",\"jobresult\":{\"success\":true}} }"; AsyncJob<PublicIPAddress> expects = AsyncJob.<PublicIPAddress>builder() .id("1138") .status(Status.SUCCEEDED) .progress(0) .resultType("object") .resultCode(ResultCode.SUCCESS).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithSuccessTrueResultSetsNullResult() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":1138,\"jobstatus\":1,\"jobprocstatus\":0,\"jobresultcode\":0,\"jobresulttype\":\"object\",\"jobresult\":{\"success\":true}} }"; AsyncJob<PublicIPAddress> expects = AsyncJob.<PublicIPAddress>builder() .id("1138") .status(Status.SUCCEEDED) .progress(0) .resultType("object") .resultCode(ResultCode.SUCCESS).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithUnknownResultReturnsStringifiedJson() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":860,\"jobstatus\":0,\"jobprocstatus\":0,\"jobresultcode\":0,\"jobresult\":{\"foo\":{\"bar\":1}}}}"; AsyncJob<?> expects = AsyncJob.builder() .id("860") .status(Status.IN_PROGRESS) .progress(0) .resultCode(ResultCode.SUCCESS) .result("{\"bar\":1}") .build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithBadResultReturnsMap() { // Not the best result object, but this is an unexpected error case. // Cloud.com have verified // that this case will not happen. This code is only here to prevent // exceptions from being // thrown in case they change their minds. String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":860,\"jobstatus\":0,\"jobprocstatus\":0,\"jobresultcode\":0,\"jobresult\":{\"foo\":{\"bar\":1},\"foo2\":{\"bar2\":2}}}}"; AsyncJob<?> expects = AsyncJob.builder() .id("860") .status(Status.IN_PROGRESS) .progress(0) .resultCode(ResultCode.SUCCESS) .result(ImmutableMap.of("foo", new JsonBall("{\"bar\":1}"), "foo2", new JsonBall("{\"bar2\":2}"))).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testWithErrorSetsResultNullSoToAvoidClassCastExceptions() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":1103,\"jobstatus\":2,\"jobprocstatus\":0,\"jobresultcode\":530,\"jobresulttype\":\"object\",\"jobresult\":{\"errorcode\":530,\"errortext\":\"Internal error executing command, please contact your system administrator\"}} }"; AsyncJob<PublicIPAddress> expects = AsyncJob .<PublicIPAddress>builder() .id("1103") .status(Status.FAILED) .progress(0) .resultType("object") .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("Internal error executing " + "command, please contact your system administrator").build()) .resultCode(ResultCode.FAIL).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testIPForwardingRule() { InputStream is = getClass().getResourceAsStream("/queryasyncjobresultresponse-ipforwardingrule.json"); AsyncJob<IPForwardingRule> expects = AsyncJob .<IPForwardingRule>builder() .id("1133") .status(Status.SUCCEEDED) .progress(0) .resultType("object") .resultCode(ResultCode.SUCCESS) .result( IPForwardingRule.builder().id("109").protocol("tcp").virtualMachineId("226") .virtualMachineName("i-3-226-VM").IPAddressId("36").IPAddress("72.52.126.65").startPort(22) .endPort(22).state("Active").build()).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<IPForwardingRule> response = (AsyncJob<IPForwardingRule>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(is).build()); assertEquals(response, expects); }
public void testWithErrorSetsResultNullSoToAvoidClassCastExceptions() { String input = "{ \"queryasyncjobresultresponse\" : {\"jobid\":1103,\"jobstatus\":2,\"jobprocstatus\":0,\"jobresultcode\":530,\"jobresulttype\":\"object\",\"jobresult\":{\"errorcode\":530,\"errortext\":\"Internal error executing command, please contact your system administrator\"}} }"; AsyncJob<PublicIPAddress> expects = AsyncJob .<PublicIPAddress>builder() .id("1103") .status(Status.FAILED) .progress(0) .resultType("object") .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("Internal error executing " + "command, please contact your system administrator").build()) .resultCode(ResultCode.FAIL).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(input).build()); assertEquals(response, expects); }
public void testPublicIPAddress() { InputStream is = getClass().getResourceAsStream("/queryasyncjobresultresponse-ipaddress.json"); AsyncJob<PublicIPAddress> expects = AsyncJob .<PublicIPAddress>builder() .id("860") .status(Status.SUCCEEDED) .progress(0) .resultType("object") .resultCode(ResultCode.SUCCESS) .result( PublicIPAddress .builder() .id("6") .IPAddress("72.52.126.35") .allocated( new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-23T20:15:01-0800")) .zoneId("1").zoneName("San Jose 1").isSourceNAT(false).account("adrian").domainId("1") .domain("ROOT").usesVirtualNetwork(true).isStaticNAT(false).associatedNetworkId("204") .networkId("200").state(PublicIPAddress.State.ALLOCATING).build() ).build(); ParseAsyncJobFromHttpResponse parser = i.getInstance(ParseAsyncJobFromHttpResponse.class); @SuppressWarnings("unchecked") AsyncJob<PublicIPAddress> response = (AsyncJob<PublicIPAddress>) parser.apply(HttpResponse.builder() .statusCode(200).message("ok") .payload(is).build()); assertEquals(response, expects); }