You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2007/11/22 07:13:34 UTC
svn commit: r597308 -
/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java
Author: ningjiang
Date: Wed Nov 21 22:13:32 2007
New Revision: 597308
URL: http://svn.apache.org/viewvc?rev=597308&view=rev
Log:
CXF1217 Added Gary's test case into the systest
Added:
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java (with props)
Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java?rev=597308&view=auto
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java (added)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java Wed Nov 21 22:13:32 2007
@@ -0,0 +1,109 @@
+/**
+ * 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.cxf.systest.bus;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.net.URL;
+
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Endpoint;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.GreeterImpl;
+import org.apache.hello_world_soap_http.SOAPService;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class BusShutdownTest extends Assert {
+ private String close;
+
+ @Before
+ public void setSystemProperties() {
+ close = System.getProperty("org.apache.cxf.transports.http_jetty.DontClosePort");
+ System.setProperty("org.apache.cxf.transports.http_jetty.DontClosePort", "false");
+
+ }
+
+ @After
+ public void resetSystemProperties() {
+ if (close != null) {
+ System.setProperty("org.apache.cxf.transports.http_jetty.DontClosePort", close);
+ }
+ }
+
+ @Test
+ public void testStartWorkShutdownWork() throws Exception {
+
+
+ URL wsdlUrl = getClass().getResource("/wsdl/hello_world.wsdl");
+ assertNotNull("wsdl resource was not found", wsdlUrl);
+
+ String serverAddr = "http://localhost:9098/greeter/port";
+ makeTwoWayCallOnNewBus(wsdlUrl, serverAddr);
+ Thread.sleep(4000);
+
+ // verify sutdown cleans the slate and reverts to null state
+ //
+ // This test should not need to workaroundHangWithDifferentAddr,
+ // and when using ADDR, the test should not need:
+ // org.apache.cxf.transports.http_jetty.DontClosePort
+ //
+ String workaroundHangWithDifferentAddr = serverAddr;
+
+ // reusing same address will cause failure, hang on client invoke
+ //possibleWorkaroundHandWithDifferentAddr = ADDR.replace('8', '9');
+ makeTwoWayCallOnNewBus(wsdlUrl, workaroundHangWithDifferentAddr);
+ }
+
+ private void makeTwoWayCallOnNewBus(URL wsdlUrl, String address) {
+ SpringBusFactory bf = new SpringBusFactory();
+ Bus bus = bf.createBus();
+ SpringBusFactory.setDefaultBus(bus);
+ createService(address);
+ doWork(wsdlUrl, address);
+ // this should revert the JVM to its original state pending gc
+ bus.shutdown(false);
+ }
+
+ private void doWork(URL wsdlUrl, String address) {
+ SOAPService service = new SOAPService(wsdlUrl);
+ assertNotNull(service);
+ Greeter greeter = service.getSoapPort();
+
+ // overwrite client address
+ InvocationHandler handler = Proxy.getInvocationHandler(greeter);
+ BindingProvider bp = (BindingProvider)handler;
+ bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+ address);
+ // invoke twoway call
+ greeter.sayHi();
+
+ }
+
+ private void createService(String address) {
+ Object impl = new GreeterImpl();
+ Endpoint.publish(address, impl);
+ }
+}
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/bus/BusShutdownTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date