@Test
    void requireThatValidatorHandlesModelsWithDifferentTopology() {
        MockRoot oldRoot = createRootWithChildren(
                new SimpleConfigProducer("p1", 0).withChildren(new ServiceWithAnnotation("s1", 1)),
                new SimpleConfigProducer("p2", 0).withChildren(new ServiceWithAnnotation("s2", 1)));
        MockRoot newRoot = createRootWithChildren(
                new ServiceWithAnnotation("s1", 2),
                new ServiceWithAnnotation("s2", 2),
                new ServiceWithAnnotation("s3", 2)
        );

        List<ConfigChangeAction> changes = getConfigChanges(oldRoot, newRoot);
        assertTrue(changes.isEmpty());
        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