You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-dev@ws.apache.org by wi...@apache.org on 2005/08/09 22:18:18 UTC

svn commit: r231101 - in /webservices/muse/trunk/src/examples/ieeedemo/client/test: WsCompatabilityTest.java tests/ tests/WsCompatabilityTest.java

Author: wire
Date: Tue Aug  9 13:18:16 2005
New Revision: 231101

URL: http://svn.apache.org/viewcvs?rev=231101&view=rev
Log:
Moved test out of default package so it runs in tomcat

Added:
    webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/
    webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/WsCompatabilityTest.java
      - copied, changed from r230846, webservices/muse/trunk/src/examples/ieeedemo/client/test/WsCompatabilityTest.java
Removed:
    webservices/muse/trunk/src/examples/ieeedemo/client/test/WsCompatabilityTest.java

Copied: webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/WsCompatabilityTest.java (from r230846, webservices/muse/trunk/src/examples/ieeedemo/client/test/WsCompatabilityTest.java)
URL: http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/WsCompatabilityTest.java?p2=webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/WsCompatabilityTest.java&p1=webservices/muse/trunk/src/examples/ieeedemo/client/test/WsCompatabilityTest.java&r1=230846&r2=231101&rev=231101&view=diff
==============================================================================
--- webservices/muse/trunk/src/examples/ieeedemo/client/test/WsCompatabilityTest.java (original)
+++ webservices/muse/trunk/src/examples/ieeedemo/client/test/tests/WsCompatabilityTest.java Tue Aug  9 13:18:16 2005
@@ -1,8 +1,14 @@
+package tests;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.StringBufferInputStream;
 import java.util.Calendar;
 import java.util.Set;
 import java.util.TreeSet;
 
+import javax.servlet.jsp.JspWriter;
 import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
@@ -21,10 +27,12 @@
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.impl.values.XmlDoubleImpl;
 import org.apache.xmlbeans.impl.values.XmlStringImpl;
+import org.mortbay.util.StringBufferWriter;
 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.impl.DurationMetricImpl;
 import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.impl.ManagementEventTypeImpl;
 import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.impl.OperationalStatusDocumentImpl;
 import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.NotificationMessageHolderType;
+import org.wsdmdemo.service.weatherStation.KickmeDocument;
 import org.wsdmdemo.service.weatherStation.RecalibrateDocument;
 import org.wsdmdemo.service.weatherStation.impl.PriceDocumentImpl;
 import org.wsdmdemo.service.weatherStation.impl.TemperatureMetricTypeImpl;
@@ -236,14 +244,15 @@
 	 *
 	 */
 	public void testRecalibrate() throws IOException, InterruptedException, XmlException, FaultException{
+		//System.out.println("Starting Recal Test");
 		// Start Listener, Notifications will be passed to 
 		m_listener=new NotificationListener(LISTENER_PORT,NOTIFICATION_TIMEOUT,m_buffer);
 		m_listener.start();
 		
 		// Subscribe
 		assertNotNull("Please define the WeatherStationListenerHostname System property.",weatherStationListenerHostname);
-		String notificationURL = "http://"+weatherStationListenerHostname+":"+LISTENER_PORT+"/unittest";
-		EndpointReference subscriptionEpr = m_wsResourceStub.subscribe(notificationURL,weatherStationStatusTopic);
+		String notificationURL = "http://"+weatherStationListenerHostname+":"+LISTENER_PORT+"/"+weatherStationRid;
+		EndpointReference subscriptionEpr = m_wsResourceStub.subscribe(notificationURL,weatherStationStatusTopic,30000);
 		assertNotNull(subscriptionEpr);
 		
 		// Unit test thread will now block until a notification or a timeout occurs
@@ -256,31 +265,50 @@
 		}
 		
 		synchronized(m_buffer){
-			String messageText=m_buffer.toString();		
+			String messageText=m_buffer.toString();
+			//System.out.println(messageText);			
 			m_buffer.notify();// Release the buffer
 			String status = extractStatus(messageText);
-			assertEquals("Your weather station did not report unavailable in response to recalibrate","Unavailable",status);
+			assertEquals("Your weather station did not report unavailable in response to recalibrate. Notfification was "+messageText+".","Unavailable",status);
+			//System.out.println("Received Unavailable in response to Recalibrate.");
 		}
-		// There should be an available notification too
+		// There should be an available notification too but endure a few 
+		// more unavailables if they are sent first
+		//System.out.println("Waiting for system to become available...");
 		synchronized(m_buffer){
 			m_buffer.wait();
 		}
 
-		synchronized(m_buffer){
-			String messageText=m_buffer.toString();		
-			m_buffer.notify();// Release the buffer
-			String status = extractStatus(messageText);
-			assertEquals("Your weather station did not report available after unavailable in response to recalibrate","Available",status);
-		}
+
+//		boolean pass=false;
+		//for(int retry=0;retry <10;retry++){			
+			synchronized(m_buffer){
+				String messageText=m_buffer.toString();		
+				//System.out.println(messageText);			
+				m_buffer.notify();// Release the buffer
+				String status = extractStatus(messageText);
+				//System.out.println("Received "+status);
+				assertEquals("Your weather station did not report available after unavailable in response to recalibrate. This message also occurs if there is a previous subscription which has not expired causing double notification.","Available",status);
+//				if(status.equals("Available")){
+//					pass=true;
+//					break;
+//				}
+			}
+		//}
+		
+
+		// Destroy this subscription
+		//System.out.println("Destroying Subscription");
+		ResourceStub subManager=new ResourceStub(subscriptionEpr);
+		subManager.destroySubscription();//EndpointReference subscriptionEpr1 = 
+		//System.out.println("Ending Recal Test");
+		
 	}
 
 	private String extractStatus(String messageText) throws XmlException {
-		// If we get here there is something in our buffer
-		System.out.println("Notification Starts.");
-		System.out.println(messageText);
-		System.out.println("Notification Ends.");
 
 		// Break down the message
+		assertNotNull("The content received as a notifications was null.",messageText);
 		NotificationMessageHolderType noteMess = WcMgrApp.getNotificationMessageHolder(messageText);
 		assertNotNull(noteMess);
 		ManagementEventTypeImpl manEvt = WcMgrApp.parseManagementEvent(noteMess);				
@@ -289,20 +317,52 @@
 		assertNotNull(optStatus);
 		EndpointReferenceType epr = WcMgrApp.parseSourceEpr(noteMess);
 		assertNotNull(epr);
-		assertNotNull("You are required to provide a vailid Source Epr for your notifications.",epr);
+		assertNotNull("You are required to provide a vailid Source Epr for your notifications. Notification XML was "+messageText+".",epr);
 		AttributedURI address = epr.getAddress();
 		assertNotNull(address);
-		assertEquals("The Source EPR address should match your service's EPR for the clients to identify the origination of your notification.",weatherStationURL,address.getStringValue());
+		
+		// Make sure that the POST Uri is the same as the URI provided by the subscription request.
+		// This is how notifications will be sorted by clients 
+		assertEquals("The Notification URI should match the URI provided by the subscriber. This is required because the client may need to identify your notifications from other weather stations.","/"+weatherStationRid,m_listener.getRequestUri());
 		return optStatus;
 	}
 	
 	/**
 	 * Objectives:
 	 * When a kick is issued, weather readings should drop out of the expected range.
+	 * @throws FaultException 
+	 * @throws XmlException 
+	 * @throws InterruptedException 
+	 * @throws IOException 
 	 *
 	 */
-	public void testForKickResponse(){
+	public void testForKickResponse() throws FaultException, IOException, InterruptedException, XmlException{
+        KickmeDocument kickmeDocument = KickmeDocument.Factory.newInstance();
+        kickmeDocument.addNewKickme();
+        XmlObject kickResponse = m_wsResourceStub.sendRequest(kickmeDocument,"http://kickme","M");
+		assertNotNull(kickResponse);
+
+		// Temperature should drop below 75
+		XmlObject[] responseArry=m_wsResourceStub.getResourceProperty(weatherStationTemperatureQname);
+		assertNotNull(responseArry);
+		assertTrue(responseArry.length>0);
+
+		assertTrue("The response document was not a TemperatureMetricTypeImpl. This may indicate that you are missing the xbean jars for the Weather Station. Confirm that they are on the classpath and try again.",
+				responseArry[0] instanceof TemperatureMetricTypeImpl);
+		
+		TemperatureMetricTypeImpl temperatureMetric=(TemperatureMetricTypeImpl)responseArry[0];
+		assertNotNull(temperatureMetric);
 				
+		double temperature = temperatureMetric.doubleValue();
+		assertTrue("Temperature should be less than 75 Degrees because the station has just been kicked. Reported Temperature was "+temperature,temperature<75.0);
+
+		// Issue a recalibrate. This should reset the temperature to range after going 
+		// unavaiable and then available.
+		testRecalibrate();
+		
+		// Get temp and check is it is in range.
+		getCurrentTemperature();
+		
 	}
 	
 	
@@ -333,9 +393,31 @@
 		if(args.length>=3)
 			System.setProperty("WeatherStationListenerHostname",args[2]);
 		
+		junit.textui.TestRunner.run(WsCompatabilityTest.class);
 		
-		junit.swingui.TestRunner.run(WsCompatabilityTest.class);
 	}
-
-
+	public static void runTests(String[] args, JspWriter jspw) {//PrintStream
+		if(args.length==0){
+			System.out.println("Usage: wstest <ServiceURL> <ServiceResourceID> <ListenerHostname>");
+			return ;
+		}
+		if(args.length>=1)
+			System.setProperty("WeatherStationServiceURL",args[0]);
+		if(args.length>=2)
+			System.setProperty("WeatherStationServiceResourceID",args[1]);
+		if(args.length>=3)
+			System.setProperty("WeatherStationListenerHostname",args[2]);
+		
+		PrintStream saveOut = System.out;
+		ByteArrayOutputStream os=new ByteArrayOutputStream();
+		PrintStream sbip = new PrintStream(os);
+		System.setOut(sbip);
+		junit.textui.TestRunner.run(WsCompatabilityTest.class);
+		System.setOut(saveOut);
+		try {
+			jspw.println(os.toString());
+		} catch (IOException e) {		
+			e.printStackTrace();
+		}
+	}
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: muse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-dev-help@ws.apache.org