### Question:
ProvisioningService extends AbstractIdleService { public Runnable deprovision(ProgramRunId programRunId, StructuredTableContext context) throws IOException { return deprovision(programRunId, context, taskStateCleanup); } @Inject  ProvisioningService(CConfiguration cConf, ProvisionerProvider provisionerProvider,
                      ProvisionerConfigProvider provisionerConfigProvider,
                      ProvisionerNotifier provisionerNotifier, LocationFactory locationFactory,
                      SecureStore secureStore, ProgramStateWriter programStateWriter,
                      ProvisionerStore provisionerStore, TransactionRunner transactionRunner,
                      MetricsCollectionService metricsCollectionService); ClusterStatus getClusterStatus(ProgramRunId programRunId, ProgramOptions programOptions,
                                        Cluster cluster, String userId); Optional<ProvisioningTaskInfo> cancelProvisionTask(ProgramRunId programRunId); Runnable provision(ProvisionRequest provisionRequest, StructuredTableContext context); Optional<RuntimeJobManager> getRuntimeJobManager(ProgramRunId programRunId, ProgramOptions programOptions); Runnable deprovision(ProgramRunId programRunId, StructuredTableContext context); Collection<ProvisionerDetail> getProvisionerDetails(); @Nullable ProvisionerDetail getProvisionerDetail(String name); void validateProperties(String provisionerName, Map<String, String> properties);  }### Answer:
@Test public void testClusterCreateFailure() throws Exception { ProgramRunId programRunId = testProvision(ProvisioningOp.Status.FAILED, new MockProvisioner.PropertyBuilder().failCreate().build()).programRunId; Runnable task = TransactionRunners.run(transactionRunner, context -> { return provisioningService.deprovision(programRunId, context); }); task.run(); ProvisioningTaskInfo taskInfo = provisionerStore. getTaskInfo(new ProvisioningTaskKey(programRunId, ProvisioningOp.Type.PROVISION)); Assert.assertNull("provision task info was not cleaned up", taskInfo); taskInfo = provisionerStore.getTaskInfo(new ProvisioningTaskKey(programRunId, ProvisioningOp.Type.DEPROVISION)); Assert.assertNull("deprovision task info was not cleaned up", taskInfo); }