Author: hiranya
Date: Wed Aug 7 22:36:06 2013
New Revision: 1511524
URL: http://svn.apache.org/r1511524
Log:
Adding some tests cases for the AbstractEndpoint class
Added:
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/endpoints/BasicEndpointTest.java
Added:
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/endpoints/BasicEndpointTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/endpoints/BasicEndpointTest.java?rev=1511524&view=auto
==============================================================================
---
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/endpoints/BasicEndpointTest.java
(added)
+++
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/endpoints/BasicEndpointTest.java
Wed Aug 7 22:36:06 2013
@@ -0,0 +1,189 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse.endpoints;
+
+import junit.framework.TestCase;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.synapse.FaultHandler;
+import org.apache.synapse.MessageContext;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.config.SynapseConfiguration;
+import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
+import org.apache.synapse.mediators.TestUtils;
+
+public class BasicEndpointTest extends TestCase {
+
+ private static final int CUSTOM_ERROR = 911911;
+
+ public void testDefaultTimeoutErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertTrue(endpoint.isTimeout(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_CLOSED);
+ assertTrue(endpoint.isTimeout(messageContext));
+ }
+
+ public void testCustomTimeoutErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ def.addTimeoutErrorCode(SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ def.addTimeoutErrorCode(CUSTOM_ERROR);
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertTrue(endpoint.isTimeout(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE, CUSTOM_ERROR);
+ assertTrue(endpoint.isTimeout(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_CLOSED);
+ assertFalse(endpoint.isTimeout(messageContext));
+ }
+
+ public void testDefaultSuspendErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertTrue(endpoint.isSuspendFault(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE, CUSTOM_ERROR);
+ assertTrue(endpoint.isSuspendFault(messageContext));
+ }
+
+ public void testCustomSuspendErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ def.addSuspendErrorCode(CUSTOM_ERROR);
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertFalse(endpoint.isSuspendFault(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE, CUSTOM_ERROR);
+ assertTrue(endpoint.isSuspendFault(messageContext));
+ }
+
+ public void testDefaultRetryErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertFalse(endpoint.isRetryDisabled(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE, CUSTOM_ERROR);
+ assertFalse(endpoint.isRetryDisabled(messageContext));
+ }
+
+ public void testCustomRetryErrorHandling() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ def.addRetryDisabledErrorCode(CUSTOM_ERROR);
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setProperty(SynapseConstants.ERROR_CODE,
+ SynapseConstants.NHTTP_CONNECTION_TIMEOUT);
+ assertFalse(endpoint.isRetryDisabled(messageContext));
+
+ messageContext.setProperty(SynapseConstants.ERROR_CODE, CUSTOM_ERROR);
+ assertTrue(endpoint.isRetryDisabled(messageContext));
+ }
+
+ public void testFaultHandlerInvocation() throws Exception {
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ endpoint.setDefinition(def);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ TestFaultHandler faultHandler = new TestFaultHandler();
+ messageContext.pushFaultHandler(faultHandler);
+
+ endpoint.onFault(messageContext);
+ assertTrue(faultHandler.invoked);
+
+ faultHandler.invoked = false;
+ messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.pushFaultHandler(faultHandler);
+ endpoint.informFailure(messageContext, CUSTOM_ERROR, "Custom Error");
+ assertTrue(faultHandler.invoked);
+ assertEquals(String.valueOf(CUSTOM_ERROR),
+ messageContext.getProperty(SynapseConstants.ERROR_CODE));
+ assertEquals("Custom Error",
+ messageContext.getProperty(SynapseConstants.ERROR_MESSAGE));
+ }
+
+ public void testSend() throws Exception {
+ SynapseConfiguration synapseConfig = new SynapseConfiguration();
+ AxisConfiguration axisConfig = new AxisConfiguration();
+ ConfigurationContext configContext = new
ConfigurationContext(axisConfig);
+ SynapseEnvironment env = new Axis2SynapseEnvironment(configContext,
synapseConfig) {
+ @Override
+ public void send(EndpointDefinition endpoint, MessageContext
synCtx) {
+ synCtx.setProperty("__test__", "__success__");
+ }
+ };
+
+ AddressEndpoint endpoint = new AddressEndpoint();
+ EndpointDefinition def = new EndpointDefinition();
+ def.setAddress("http://foo.com");
+ endpoint.setDefinition(def);
+ endpoint.init(env);
+
+ MessageContext messageContext =
TestUtils.createLightweightSynapseMessageContext("<test/>");
+ messageContext.setEnvironment(env);
+ endpoint.send(messageContext);
+
+ assertEquals("__success__", messageContext.getProperty("__test__"));
+ assertTrue(messageContext.getFaultStack().peek() == endpoint);
+ assertTrue(messageContext.getProperty(SynapseConstants.LAST_ENDPOINT)
== endpoint);
+ endpoint.destroy();
+ }
+
+ private static class TestFaultHandler extends FaultHandler {
+
+ boolean invoked = false;
+
+ @Override
+ public void onFault(MessageContext synCtx) {
+ invoked = true;
+ }
+ }
+}