@Test
    void requireThatValidatorDetectsConfigChangeFromParentProducer() {
        MockRoot oldRoot = createRootWithChildren(new SimpleConfigProducer("p", 1)
                .withChildren(new ServiceWithAnnotation("s1", 0), new ServiceWithAnnotation("s2", 0)));
        MockRoot newRoot = createRootWithChildren(new SimpleConfigProducer("p", 2)
                .withChildren(new ServiceWithAnnotation("s1", 0), new ServiceWithAnnotation("s2", 0)));
        List<ConfigChangeAction> changes = getConfigChanges(oldRoot, newRoot);
        assertEquals(2, changes.size());
        assertComponentsEquals(changes, "p/s1", 0);
        assertComponentsEquals(changes, "p/s2", 1);
        assertEmptyLog();
    }
NOTE: This test method has the following assumptions about the {@link com.yahoo.vespa.model.VespaModel}:
   1) verbosegc and heapsize in qr-start.def is marked with restart.
   2) {@link com.yahoo.vespa.model.container.Container} class has QrStartConfig listed in its
      {@link com.yahoo.vespa.model.application.validation.RestartConfigs} attribute.
   3) That the config ids for the container services have a specific value.

This test will to a certain degree ensure that the annotations in the VespaModel is correctly applied.
config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java