@Test public void testAddObserverNotifiesImmediately() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("default", "extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, true); EasyMock.verify(observer); }
@Test public void testConfigurationChanged() throws Exception { ContainerConfig config = new BasicContainerConfig(); config .newTransaction() .addContainer(makeContainer(ContainerConfig.DEFAULT_CONTAINER)) .addContainer( makeContainer("container", LOCKED_DOMAIN_REQUIRED_KEY, true, LOCKED_DOMAIN_SUFFIX_KEY, "-a.example.com:8080")) .commit(); lockedDomainService = new HashLockedDomainService(config, true, ldgen); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertFalse(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); config.newTransaction().addContainer(makeContainer( "other", LOCKED_DOMAIN_REQUIRED_KEY, true, LOCKED_DOMAIN_SUFFIX_KEY, "-a.example.com:8080")) .commit(); lockedDomainService.getConfigObserver().containersChanged( config, ImmutableSet.of("other"), ImmutableSet.<String>of()); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); config.newTransaction().removeContainer("container").commit(); assertFalse(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testConfigurationChanged() throws Exception { ContainerConfig config = new BasicContainerConfig(); config .newTransaction() .addContainer(makeContainer(ContainerConfig.DEFAULT_CONTAINER)) .addContainer( makeContainer("container", LOCKED_DOMAIN_REQUIRED_KEY, true, LOCKED_DOMAIN_SUFFIX_KEY, "-a.example.com:8080")) .commit(); lockedDomainService = new HashLockedDomainService(config, true, ldgen); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertFalse(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); config.newTransaction().addContainer(makeContainer( "other", LOCKED_DOMAIN_REQUIRED_KEY, true, LOCKED_DOMAIN_SUFFIX_KEY, "-a.example.com:8080")) .commit(); lockedDomainService.getConfigObserver().containersChanged( config, ImmutableSet.of("other"), ImmutableSet.<String>of()); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); config.newTransaction().removeContainer("container").commit(); assertFalse(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "container")); assertTrue(lockedDomainService.isGadgetValidForHost( "8uhr00296d2o3sfhqilj387krjmgjv3v-a.example.com:8080", wantsLocked, "other")); }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testAddObserverNotifiesImmediately() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("default", "extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, true); EasyMock.verify(observer); }
@Test public void testAddObserverNotifiesImmediately() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("default", "extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, true); EasyMock.verify(observer); }
@Test public void testReadSameContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("yes", config.getString("extra", "inherited")); EasyMock.verify(observer); }
@Test public void testRemoveContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().removeContainer("extra").commit(); assertFalse(config.getContainers().contains("extra")); EasyMock.verify(observer); }
@Test public void testRemoveContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().removeContainer("extra").commit(); assertFalse(config.getContainers().contains("extra")); EasyMock.verify(observer); }
@Test public void testReadSameContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("yes", config.getString("extra", "inherited")); EasyMock.verify(observer); }
@Test public void testReadSameContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("yes", config.getString("extra", "inherited")); EasyMock.verify(observer); }
@Test public void testRemoveContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.<String>of()), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().removeContainer("extra").commit(); assertFalse(config.getContainers().contains("extra")); EasyMock.verify(observer); }
@Test public void testReplaceContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(MODIFIED_EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("no", config.getString("extra", "inherited")); EasyMock.verify(observer); }
@Test public void testReplaceContainer() throws Exception { config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(MODIFIED_EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("no", config.getString("extra", "inherited")); EasyMock.verify(observer); }
@Test public void testAddNewContainer() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("yes", config.getString("extra", "inherited")); EasyMock.verify(observer); }
/** * Notifies the configuration observers that some containers' configurations * have been changed. * * @param changed The names of the containers that have been added or changed. * @param removed The names of the containers that have been removed. */ protected void notifyObservers(Collection<String> changed, Collection<String> removed) { for (ConfigObserver observer : observers) { observer.containersChanged(this, changed, removed); } }
@Test public void testAddNewContainer() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("extra")), EasyMock.eq(ImmutableSet.<String>of())); EasyMock.replay(observer); config.addConfigObserver(observer, false); config.newTransaction().addContainer(EXTRA_CONTAINER).commit(); assertTrue(config.getContainers().contains("extra")); assertEquals("yes", config.getString("extra", "inherited")); EasyMock.verify(observer); }
/** * Notifies the configuration observers that some containers' configurations * have been changed. * * @param changed The names of the containers that have been added or changed. * @param removed The names of the containers that have been removed. */ protected void notifyObservers(Collection<String> changed, Collection<String> removed) { for (ConfigObserver observer : observers) { observer.containersChanged(this, changed, removed); } }