Package org.mule.jbi.container

Source Code of org.mule.jbi.container.JbiContainerFunctionalTestCase

/*
* Copyright 2005 SymphonySoft Limited. All rights reserved.
* http://www.symphonysoft.com
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* ------------------------------------------------------------------------------------------------------
* $Id: JbiContainerFunctionalTestCase.java 2184 2006-06-04 23:36:19Z holger $
* $Revision: 2184 $
* $Date: 2006-06-05 07:36:19 +0800 (周一, 2006-06-05) $
*/
package org.mule.jbi.container;

import junit.framework.TestCase;
import org.mule.jbi.JbiContainer;
import org.mule.jbi.framework.JbiContainerImpl;
import org.mule.registry.ComponentType;

import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.InOptionalOut;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchangeFactory;
import javax.jbi.messaging.NormalizedMessage;
import javax.jbi.messaging.RobustInOnly;
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.xml.namespace.QName;
import javax.xml.transform.stream.StreamSource;
import java.io.ByteArrayInputStream;
import java.io.File;

public class JbiContainerFunctionalTestCase extends TestCase {

  public static final QName SERVICE_NAME = new QName("http://jbi.mule.org", "myService");
  public static final String ENDPOINT_NAME = "myEndpoint";
  public static final String PAYLOAD = "<payload/>";
  public static final String RESPONSE = "<response/>";
 
  private JbiContainer container;
  private TestComponent provider;
  private TestComponent consumer;
  private ServiceEndpoint endpoint;
 
  public void setUp() throws Exception {
    // Remove jbi workspace
    //IOUtils.deleteFile(new File("target/.mule-jbi"));
    // Create jbi container
    JbiContainerImpl jbi = new JbiContainerImpl();
    jbi.setWorkingDir(new File("target/.mule-jbi"));
    container = jbi;
    // Initialize jbi
    container.initialize();
    // Create components
    provider = new TestComponent("provider");
    consumer = new TestComponent("consumer");
    // Register components
    container.getRegistry().addTransientComponent("provider", ComponentType.JBI_ENGINE_COMPONENT, provider, null);
    container.getRegistry().addTransientComponent("consumer", ComponentType.JBI_ENGINE_COMPONENT, consumer, null);
    // Start jbi
    container.start();
    // Activate endpoint
    endpoint = provider.getContext().activateEndpoint(SERVICE_NAME, ENDPOINT_NAME);
  }

  public void tearDown() throws Exception {
    if (container != null) {
      container.shutDown();
    }
    container = null;
  }
 
  public void testInOnly() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOnly mec = mef.createInOnlyExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOnly mep = (InOnly) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    mep.setStatus(ExchangeStatus.DONE);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOnlySync() throws Exception {
    // Create thread to answer
    new Thread(new Runnable() {
      public void run() {
        try {
          // Provider side
          InOnly mep = (InOnly) provider.getChannel().accept(10000L);
          assertNotNull(mep);
          assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
          mep.setStatus(ExchangeStatus.DONE);
          provider.getChannel().send(mep);
        } catch (Exception e) {
          e.printStackTrace();
          fail();
        }
      }
    }).start();
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOnly mec = mef.createInOnlyExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().sendSync(mec, 10000L);
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOut() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOut mec = mef.createInOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOut mep = (InOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    m = mep.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
    mep.setOutMessage(m);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ACTIVE, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOutSync() throws Exception {
    // Create thread to answer
    new Thread(new Runnable() {
      public void run() {
        try {
          // Provider side
          InOut mep = (InOut) provider.getChannel().accept(10000L);
          assertNotNull(mep);
          assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
          NormalizedMessage m = mep.createMessage();
          m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
          mep.setOutMessage(m);
          provider.getChannel().send(mep);
        } catch (Exception e) {
          e.printStackTrace();
          fail();
        }
      }
    }).start();
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOut mec = mef.createInOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().sendSync(mec, 10000L);
    assertEquals(ExchangeStatus.ACTIVE, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Provider site
    assertNotNull(provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOutSyncSync() throws Exception {
    // Create thread to answer
    Thread t = new Thread(new Runnable() {
      public void run() {
        try {
          // Provider side
          InOut mep = (InOut) provider.getChannel().accept(10000L);
          assertNotNull(mep);
          assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
          NormalizedMessage m = mep.createMessage();
          m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
          mep.setOutMessage(m);
          provider.getChannel().sendSync(mep);
          assertEquals(ExchangeStatus.DONE, mep.getStatus());
        } catch (Exception e) {
          e.printStackTrace();
          fail();
        }
      }
    });
    t.start();
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOut mec = mef.createInOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().sendSync(mec, 10000L);
    assertEquals(ExchangeStatus.ACTIVE, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Wait until other thread end
    t.join(1000L);
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOutWithFault() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOut mec = mef.createInOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOut mep = (InOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    m = mep.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
    mep.setStatus(ExchangeStatus.ERROR);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ERROR, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOptOutWithRep() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOptionalOut mec = mef.createInOptionalOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOptionalOut mep = (InOptionalOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    m = mep.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
    mep.setOutMessage(m);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ACTIVE, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOptOutWithoutRep() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOptionalOut mec = mef.createInOptionalOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOptionalOut mep = (InOptionalOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    mep.setStatus(ExchangeStatus.DONE);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOptOutWithProviderFault() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOptionalOut mec = mef.createInOptionalOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOptionalOut mep = (InOptionalOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    mep.setStatus(ExchangeStatus.ERROR);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ERROR, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    consumer.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testInOptOutWithRepAndConsumerFault() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    InOptionalOut mec = mef.createInOptionalOutExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    InOptionalOut mep = (InOptionalOut) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    m = mep.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(RESPONSE.getBytes())));
    mep.setOutMessage(m);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ACTIVE, mec.getStatus());
    mec.setStatus(ExchangeStatus.ERROR);
    consumer.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ERROR, mep.getStatus());
    mep.setStatus(ExchangeStatus.DONE);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testRobustInOnly() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    RobustInOnly mec = mef.createRobustInOnlyExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    RobustInOnly mep = (RobustInOnly) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    mep.setStatus(ExchangeStatus.DONE);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mec.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
  public void testRobustInOnlyWithFault() throws Exception {
    // Send message exchange
    MessageExchangeFactory mef = consumer.getChannel().createExchangeFactory(endpoint);
    RobustInOnly mec = mef.createRobustInOnlyExchange();
    NormalizedMessage m = mec.createMessage();
    m.setContent(new StreamSource(new ByteArrayInputStream(PAYLOAD.getBytes())));
    mec.setInMessage(m);
    consumer.getChannel().send(mec);
    // Provider side
    RobustInOnly mep = (RobustInOnly) provider.getChannel().accept(10L);
    assertNotNull(mep);
    assertEquals(ExchangeStatus.ACTIVE, mep.getStatus());
    mep.setStatus(ExchangeStatus.ERROR);
    provider.getChannel().send(mep);
    // Consumer side
    assertSame(mec, consumer.getChannel().accept(10L));
    assertEquals(ExchangeStatus.ERROR, mec.getStatus());
    mec.setStatus(ExchangeStatus.DONE);
    provider.getChannel().send(mec);
    // Provider site
    assertSame(mep, provider.getChannel().accept(10L));
    assertEquals(ExchangeStatus.DONE, mep.getStatus());
    // Nothing left
    assertNull(consumer.getChannel().accept(10L)); // receive in
    assertNull(provider.getChannel().accept(10L)); // receive in
  }
 
}
TOP

Related Classes of org.mule.jbi.container.JbiContainerFunctionalTestCase

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.