package org.wso2.carbon.esb.passthru.transport.test; import org.apache.axis2.AxisFault; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; import org.wso2.carbon.automation.engine.annotations.SetEnvironment; import org.wso2.carbon.automation.test.utils.tcpmon.client.TCPMonListener; import org.wso2.esb.integration.common.utils.ESBIntegrationTest; import java.io.File; import static org.testng.Assert.assertTrue; /** * Automation test for https://wso2.org/jira/browse/ESBJAVA-4394 */ public class ESBJAVA4394 extends ESBIntegrationTest { private TCPMonListener tcpMonListener1; private TCPMonListener tcpMonListener2; @BeforeClass(alwaysRun = true) public void setEnvironment() throws Exception { /** * The configuration contains 'simpleStockPassthroug' proxy, which connects to port 5000 * here two tcpmon listener are started in port 5000 target port 8000, in port 8000 target port 9001 * the 2nd listeners target port is not the actual service port, because by making the 2nd tcpmon listener to * connect to a non existing port we could simulate the 101508 error. * * Without the fix of ESBJAVA-4394, when a 101508 happens the response is not send back * to the client. (client gets empty response) */ init(); loadESBConfigurationFromClasspath( "artifacts" + File.separator + "ESB" + File.separator + "passthru" + File.separator + "transport" + File.separator + "ESBJAVA4394-config.xml"); tcpMonListener1 = new TCPMonListener(9200, "localhost", 9300); tcpMonListener1.start(); tcpMonListener2 = new TCPMonListener(9300, "localhost", 9001); tcpMonListener2.start(); } @SetEnvironment(executionEnvironments = { ExecutionEnvironment.STANDALONE }) @Test(groups = "wso2.esb", description = "Test Error response created via makefault is never sent to the client " + "when the error connection timeout occurs by closing the TCP mon connection") public void testMakeFaultForConnectionTimeoutResponse() { try { axis2Client.sendSimpleStockQuoteRequest(getProxyServiceURLHttp("simpleStockPassthroug"), null, "WSO2"); } catch (AxisFault axisFault) { /** * since we are making a soap fault in the configuration axis2 client receives axis fault. */ String axisFaultMessage = axisFault.getMessage(); assertTrue(axisFaultMessage.contains("101508")); } } @AfterClass(alwaysRun = true) public void stop() throws Exception { cleanup(); tcpMonListener1.stop(); tcpMonListener2.stop(); } }