Package org.mule.module.launcher.coreextension

Source Code of org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManagerTestCase$TestDeploymentListenerExtension

/*
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.module.launcher.coreextension;

import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.mule.MuleCoreExtension;
import org.mule.module.launcher.DeploymentListener;
import org.mule.module.launcher.DeploymentService;
import org.mule.module.launcher.DeploymentServiceAware;
import org.mule.module.launcher.PluginClassLoaderManager;
import org.mule.module.launcher.PluginClassLoaderManagerAware;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.mule.tck.size.SmallTest;

import java.util.LinkedList;
import java.util.List;

import org.junit.Test;
import org.mockito.InOrder;

@SmallTest
public class DefaultMuleCoreExtensionManagerTestCase extends AbstractMuleTestCase
{

    private final MuleCoreExtensionDiscoverer coreExtensionDiscoverer = mock(MuleCoreExtensionDiscoverer.class);
    private final MuleCoreExtensionDependencyResolver coreExtensionDependencyResolver = mock(MuleCoreExtensionDependencyResolver.class);
    private MuleCoreExtensionManager coreExtensionManager = new DefaultMuleCoreExtensionManager(coreExtensionDiscoverer, coreExtensionDependencyResolver);

    @Test
    public void discoversMuleCoreExtension() throws Exception
    {
        coreExtensionManager.initialise();

        verify(coreExtensionDiscoverer).discover();
    }

    @Test
    public void injectsDeploymentServiceAwareCoreExtension() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        TestDeploymentServiceAwareExtension extension = mock(TestDeploymentServiceAwareExtension.class);
        extensions.add(extension);
        when(coreExtensionDiscoverer.discover()).thenReturn(extensions);
        DeploymentService deploymentService = mock(DeploymentService.class);
        coreExtensionManager.setDeploymentService(deploymentService);

        coreExtensionManager.initialise();

        verify(extension).setDeploymentService(deploymentService);
    }

    @Test
    public void initializesDeploymentListenerCoreExtension() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        TestDeploymentListenerExtension extension = mock(TestDeploymentListenerExtension.class);
        extensions.add(extension);
        when(coreExtensionDiscoverer.discover()).thenReturn(extensions);

        DeploymentService deploymentService = mock(DeploymentService.class);
        coreExtensionManager.setDeploymentService(deploymentService);

        coreExtensionManager.initialise();

        verify(deploymentService).addDeploymentListener(extension);
    }

    @Test
    public void injectsPluginClassLoaderAwareCoreExtension() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        TestPluginClassLoaderManagerAwareExtension extension = mock(TestPluginClassLoaderManagerAwareExtension.class);
        extensions.add(extension);
        when(coreExtensionDiscoverer.discover()).thenReturn(extensions);
        PluginClassLoaderManager pluginClassLoaderManager = mock(PluginClassLoaderManager.class);
        coreExtensionManager.setPluginClassLoaderManager(pluginClassLoaderManager);

        coreExtensionManager.initialise();

        verify(extension).setPluginClassLoaderManager(pluginClassLoaderManager);
    }

    @Test
    public void startsCoreExtensionsInOrder() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        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<MuleCoreExtension>();
        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 stopsCoreExtensionsInOrder() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        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<MuleCoreExtension>();
        orderedExtensions.add(extension1);
        orderedExtensions.add(extension2);
        when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions);
        coreExtensionManager.initialise();

        coreExtensionManager.stop();

        InOrder ordered = inOrder(extension1, extension2);
        ordered.verify(extension2).stop();
        ordered.verify(extension1).stop();
    }

    @Test
    public void disposesCoreExtensions() throws Exception
    {
        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        TestDeploymentServiceAwareExtension extension1 = mock(TestDeploymentServiceAwareExtension.class);
        MuleCoreExtension extension2 = mock(MuleCoreExtension.class);
        extensions.add(extension1);
        extensions.add(extension2);
        when(coreExtensionDiscoverer.discover()).thenReturn(extensions);

        List<MuleCoreExtension> orderedExtensions = new LinkedList<MuleCoreExtension>();
        orderedExtensions.add(extension1);
        orderedExtensions.add(extension2);
        when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions);
        coreExtensionManager.initialise();

        coreExtensionManager.dispose();

        InOrder inOrder = inOrder(extension1, extension2);
        inOrder.verify(extension1).dispose();
        inOrder.verify(extension2).dispose();
    }

    @Test
    public void resolvesCoreExtensionDependencies() throws Exception
    {

        List<MuleCoreExtension> extensions = new LinkedList<MuleCoreExtension>();
        MuleCoreExtension extension = mock(MuleCoreExtension.class);
        extensions.add(extension);
        when(coreExtensionDiscoverer.discover()).thenReturn(extensions);

        coreExtensionManager.initialise();

        verify(coreExtensionDependencyResolver).resolveDependencies(extensions);
    }

    public static interface TestDeploymentServiceAwareExtension extends MuleCoreExtension, DeploymentServiceAware
    {

    }

    public static interface TestDeploymentListenerExtension extends MuleCoreExtension, DeploymentListener
    {

    }

    public static interface TestPluginClassLoaderManagerAwareExtension extends MuleCoreExtension, PluginClassLoaderManagerAware
    {

    }

}
TOP

Related Classes of org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManagerTestCase$TestDeploymentListenerExtension

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.