@Test
  public void testDeriveImage() throws Throwable {
    ImageCreateSpec imageCreateSpec = new ImageCreateSpec();
    imageCreateSpec.setName("i1");
    imageCreateSpec.setReplicationType(ImageReplicationType.EAGER);

    ImageEntity vmImage =
        entityFactory.createImage(
            "image1", ImageState.READY, ImageReplicationType.EAGER, 100L, "n1", "v1", "n2", "v2");

    flushSession();

    String imageId = imageBackend.deriveImage(imageCreateSpec, vmImage).getId();

    flushSession();

    ImageEntity image = imageBackend.findById(imageId);
    assertThat(image.getName(), is(imageCreateSpec.getName()));
    assertThat(image.getReplicationType(), is(imageCreateSpec.getReplicationType()));
    assertThat(image.getState(), is(ImageState.CREATING));
    assertThat(image.getSize(), is(100L));
    assertThat(
        image.getImageSettingsMap(),
        is((Map<String, String>) ImmutableMap.of("n1", "v1", "n2", "v2")));
  }