Package com.muleinaction

Source Code of com.muleinaction.PrivateFlowTestCase

package com.muleinaction;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import org.junit.Before;
import org.junit.Test;
import org.mule.api.MuleMessage;
import org.mule.api.client.MuleClient;
import org.mule.tck.functional.FunctionalTestComponent;
import org.mule.tck.junit4.FunctionalTestCase;

public class PrivateFlowTestCase extends FunctionalTestCase
{
    private static final String SYNC_PRIVATE_FLOW_NAME = "sync-private-flow";
    private static final String ASYNC_PRIVATE_FLOW_NAME = "async-private-flow";
    private static final String SYNC_OR_ASYNC_PRIVATE_FLOW_NAME = "sync-or-async-private-flow";

    private static final String SYNC_PRIVATE_FLOW_MSG = "spf";
    private static final String ASYNC_PRIVATE_FLOW_MSG = "apf";
    private static final String SYNC_OR_ASYNC_PRIVATE_FLOW_MSG = "soapf";

    private static final String UNITTEST_THREAD_NAME = "unittest.thread";
    private static final String ASYNC_PRIVATE_FLOW_THREAD_NAME = "async-private-flow.stage1.01";
    private static final String SYNC_OR_ASYNC_PRIVATE_FLOW_THREAD_NAME = "sync-or-async-private-flow.stage1.02";
    private static final String ASYNC_MAIN_FLOW_THREAD_NAME = "main-flow.stage1.02";

    private static final String ONE_WAY_ENDPOINT = "vm://main-flow.one-way";
    private static final String REQUEST_RESPONSE_ENDPOINT = "vm://main-flow.request-response";
    private MuleClient muleClient;

    @Override
    protected String getConfigResources()
    {
        return "private-flow.xml";
    }

    @Override
    protected void doSetUp() throws Exception
    {
        super.doSetUp();
        muleClient = muleContext.getClient();
    }

    @Before
    public void setThreadName()
    {
        Thread.currentThread().setName(UNITTEST_THREAD_NAME);
    }

    @Test
    public void syncEventToSyncPrivateFlow() throws Exception
    {
        MuleMessage response = muleClient.send(REQUEST_RESPONSE_ENDPOINT,
            SYNC_PRIVATE_FLOW_MSG, null);

        String dispatched = ponderForMessageInTestComponent(SYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched, is(SYNC_PRIVATE_FLOW_MSG + ".main1@"
                                  + UNITTEST_THREAD_NAME + "."
                                  + SYNC_PRIVATE_FLOW_NAME + "@"
                                  + UNITTEST_THREAD_NAME));

        assertThat(response.getPayloadAsString(),
            is(dispatched + ".main2@" + UNITTEST_THREAD_NAME));
    }

    @Test
    public void syncEventToAsyncPrivateFlow() throws Exception
    {
        MuleMessage response = muleClient.send(REQUEST_RESPONSE_ENDPOINT,
            ASYNC_PRIVATE_FLOW_MSG, null);

        assertThat(response.getPayloadAsString(),
            is(ASYNC_PRIVATE_FLOW_MSG + ".main1@" + UNITTEST_THREAD_NAME
               + ".main2@" + UNITTEST_THREAD_NAME));

        String dispatched = ponderForMessageInTestComponent(ASYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched, is(ASYNC_PRIVATE_FLOW_MSG + ".main1@"
                                  + UNITTEST_THREAD_NAME + "."
                                  + ASYNC_PRIVATE_FLOW_NAME + "@"
                                  + ASYNC_PRIVATE_FLOW_THREAD_NAME));
    }

    @Test
    public void syncEventToSyncOrAsyncPrivateFlow() throws Exception
    {
        MuleMessage response = muleClient.send(REQUEST_RESPONSE_ENDPOINT,
            SYNC_OR_ASYNC_PRIVATE_FLOW_MSG, null);

        String dispatched = ponderForMessageInTestComponent(SYNC_OR_ASYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched, is(SYNC_OR_ASYNC_PRIVATE_FLOW_MSG
                                  + ".main1@" + UNITTEST_THREAD_NAME + "."
                                  + SYNC_OR_ASYNC_PRIVATE_FLOW_NAME + "@"
                                  + UNITTEST_THREAD_NAME));

        assertThat(response.getPayloadAsString(),
            is(dispatched + ".main2@" + UNITTEST_THREAD_NAME));
    }

    @Test
    public void asyncEventToSyncPrivateFlow() throws Exception
    {
        muleClient.dispatch(ONE_WAY_ENDPOINT, SYNC_PRIVATE_FLOW_MSG, null);

        String dispatched = ponderForMessageInTestComponent(SYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched, is(SYNC_PRIVATE_FLOW_MSG + ".main1@"
                                  + ASYNC_MAIN_FLOW_THREAD_NAME + "."
                                  + SYNC_PRIVATE_FLOW_NAME + "@"
                                  + ASYNC_MAIN_FLOW_THREAD_NAME));
    }

    @Test
    public void asyncEventToAsyncPrivateFlow() throws Exception
    {
        muleClient.dispatch(ONE_WAY_ENDPOINT, ASYNC_PRIVATE_FLOW_MSG, null);

        String dispatched = ponderForMessageInTestComponent(ASYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched, is(ASYNC_PRIVATE_FLOW_MSG + ".main1@"
                                  + ASYNC_MAIN_FLOW_THREAD_NAME + "."
                                  + ASYNC_PRIVATE_FLOW_NAME + "@"
                                  + ASYNC_PRIVATE_FLOW_THREAD_NAME));
    }

    @Test
    public void asyncEventToSyncOrAsyncPrivateFlow() throws Exception
    {
        muleClient.dispatch(ONE_WAY_ENDPOINT,
            SYNC_OR_ASYNC_PRIVATE_FLOW_MSG, null);

        String dispatched = ponderForMessageInTestComponent(SYNC_OR_ASYNC_PRIVATE_FLOW_NAME);
        assertThat(dispatched,
            is(SYNC_OR_ASYNC_PRIVATE_FLOW_MSG + ".main1@"
               + ASYNC_MAIN_FLOW_THREAD_NAME + "."
               + SYNC_OR_ASYNC_PRIVATE_FLOW_NAME + "@"
               + SYNC_OR_ASYNC_PRIVATE_FLOW_THREAD_NAME));
    }

    private String ponderForMessageInTestComponent(String flowName)
        throws Exception
    {
        FunctionalTestComponent ftc = getFunctionalTestComponent(flowName);

        do
        {
            int count = ftc.getReceivedMessagesCount();
            if (count != 0)
            {
                return ftc.getLastReceivedMessage().toString();
            }
            Thread.sleep(50L);
        }
        while (true);
    }

}
TOP

Related Classes of com.muleinaction.PrivateFlowTestCase

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.