@Test public void testTombstone() throws Throwable { TaskEntity task = imageBackend.prepareImageUpload(inputStream, "image-name", ImageReplicationType.ON_DEMAND); StepEntity step = task.getSteps().get(0); ImageEntity image = (ImageEntity) step.getTransientResourceEntities().get(0); assertThat(image.getState(), is(ImageState.CREATING)); image.setState(ImageState.READY); flushSession(); TenantEntity tenant = new TenantEntity(); tenant.setName("t1"); tenantDao.create(tenant); ProjectEntity project = new ProjectEntity(); project.setTenantId(tenant.getId()); project.setName("staging"); projectDao.create(project); VmEntity vm = new VmEntity(); vm.setName("vm-1"); vm.setProjectId(project.getId()); vm.setImageId(image.getId()); vmDao.create(vm); flushSession(); imageBackend.tombstone(image); assertThat(image.getState(), is(ImageState.PENDING_DELETE)); vm = vmDao.findById(vm.getId()).get(); vmDao.delete(vm); flushSession(); imageBackend.tombstone(image); try { imageBackend.findById(image.getId()); fail("Image should be deleted in database"); } catch (ImageNotFoundException e) { } }