@Override public void start() throws MuleException { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Starting core extensions"); } for (MuleCoreExtension extension : orderedCoreExtensions) { extension.start(); startedCoreExtensions.add(extension); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Core extension '{}' started", extension.toString()); } } }
@Test public void startsCoreExtensionsInOrder() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); extensions.add(extension1); extensions.add(extension2); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension2); orderedExtensions.add(extension1); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); coreExtensionManager.start(); InOrder ordered = inOrder(extension1, extension2); ordered.verify(extension2).start(); ordered.verify(extension1).start(); }
@Test public void stopsCoreExtensionsAfterStartFail() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); Exception firstStartFailure = new RuntimeException(); doThrow(firstStartFailure).when(extension1).start(); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); extensions.add(extension1); extensions.add(extension2); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension1); orderedExtensions.add(extension2); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); try { coreExtensionManager.start(); fail(); } catch (Exception e) { assertThat(e, sameInstance(firstStartFailure)); } coreExtensionManager.stop(); verify(extension2, never()).stop(); }
@Override public void start() throws MuleException { LOGGER.info("Starting core extensions"); for (MuleCoreExtension extension : orderedCoreExtensions) { extension.start(); LOGGER.info("Core extension '{}' started", extension.toString()); } }