private void testCallbacks(boolean failJob) throws Exception {
ClusterScheduler clusterScheduler = injector.getInstance(ClusterScheduler.class);
String tenantId = cluster.getAccount().getTenantId();
clusterQueues.add(tenantId, new Element(cluster.getId(), ClusterAction.CLUSTER_CREATE.name()));
clusterScheduler.run();
CallbackScheduler callbackScheduler = injector.getInstance(CallbackScheduler.class);
Assert.assertEquals(0, jobQueues.size(tenantId));
waitForCallback(callbackScheduler);
Assert.assertEquals(CallbackData.Type.START, mockClusterCallback.getReceivedCallbacks().get(0).getType());
JobScheduler jobScheduler = injector.getInstance(JobScheduler.class);
jobScheduler.run();
TakeTaskRequest takeRequest = new TakeTaskRequest("consumer1", PROVISIONER_ID, tenantId);
SchedulableTask task = TestHelper.takeTask(getInternalServerUrl(), takeRequest);
while (task != null) {
FinishTaskRequest finishRequest =
new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId,
task.getTaskId(), null, null, failJob ? 1 : 0, null, null, null);
TestHelper.finishTask(getInternalServerUrl(), finishRequest);
jobScheduler.run();
jobScheduler.run();
task = TestHelper.takeTask(getInternalServerUrl(), takeRequest);
}
jobScheduler.run();
waitForCallback(callbackScheduler);
Assert.assertEquals(failJob ? CallbackData.Type.FAILURE : CallbackData.Type.SUCCESS,
mockClusterCallback.getReceivedCallbacks().get(1).getType());
}