[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jboss-cvs-commits
Subject:    [jboss-cvs] jbosstest/src/main/org/jboss/test/cluster/test BaseTest.java SimpleTestCase.java
From:       Ben Wang <bwang00 () users ! sourceforge ! net>
Date:       2004-12-31 23:16:47
Message-ID: E1CkW0l-0004gH-Uj () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]

  User: bwang00 
  Date: 04/12/31 15:16:47

  Added:       src/main/org/jboss/test/cluster/test BaseTest.java
                        SimpleTestCase.java
  Log:
  Added basic http session repl unit test
  
  Revision  Changes    Path
  1.1                  jbosstest/src/main/org/jboss/test/cluster/test/BaseTest.java
  
  Index: BaseTest.java
  ===================================================================
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.test.cluster.test;
  
  import org.apache.commons.httpclient.*;
  import org.apache.commons.httpclient.methods.GetMethod;
  import org.jboss.test.JBossClusteredTestCase;
  import org.jboss.test.JBossRMIAdaptorHelper;
  
  import javax.management.MBeanInfo;
  import javax.management.ObjectName;
  import java.io.IOException;
  import java.net.HttpURLConnection;
  
  /**
   * Base class to test HttpSessionReplication.
   *
   * @author Ben Wang
   * @version $Revision: 1.0
   */
  public abstract class BaseTest
        extends JBossClusteredTestCase
  {
     protected String[] servers_ = null;
  
     public BaseTest(String name)
     {
        super(name);
     }
  
     public void setUp() throws Exception
     {
        servers_ = getServers();
        assertEquals("Server size " , servers_.length, 2);
     }
  
     /**
      * Sleep for specified time
      *
      * @param secs
      * @throws Exception
      */
     protected void sleepThread(long secs)
           throws Exception
     {
        Thread.sleep(1000 * secs);
     }
  
  
     /**
      * Makes a http call to the jsp that retrieves the attribute stored on the
      * session. When the attribute values mathes with the one retrieved earlier,
      * we have HttpSessionReplication.
      * Makes use of commons-httpclient library of Apache
      *
      * @param client
      * @param url
      * @return session attribute
      */
     protected String makeGet(HttpClient client, String url)
     {
        GetMethod method = new GetMethod(url);
        int responseCode = 0;
        try
        {
           responseCode = client.executeMethod(method);
        } catch (IOException e)
        {
           e.printStackTrace();
           fail("HttpClient executeMethod fails." +e.toString());
        }
        assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK);
  
        // Read the response body.
        byte[] responseBody = method.getResponseBody();
  
        // Release the connection.
  //      method.releaseConnection();
  
        // Deal with the response.
        // Use caution: ensure correct character encoding and is not binary data
        return new String(responseBody);
     }
  
  
     /**
      * Makes a http call to the jsp that retrieves the attribute stored on the
      * session. When the attribute values mathes with the one retrieved earlier,
      * we have HttpSessionReplication.
      * Makes use of commons-httpclient library of Apache
      *
      * @param client
      * @param url
      * @return session attribute
      */
     protected String makeGetWithState(HttpClient client, String url)
     {
        GetMethod method = new GetMethod(url);
        int responseCode = 0;
        try
        {
           HttpState state = client.getState();
           responseCode = client.executeMethod(method.getHostConfiguration(),
              method, state);
        } catch (IOException e)
        {
           e.printStackTrace();
           fail("HttpClient executeMethod fails." +e.toString());
        }
        assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK);
  
        // Read the response body.
        byte[] responseBody = method.getResponseBody();
  
        // Release the connection.
  //      method.releaseConnection();
  
        // Deal with the response.
        // Use caution: ensure correct character encoding and is not binary data
        return new String(responseBody);
     }
  
     protected void setCookieDomainToThisServer(HttpClient client, String server)
     {
        // Get the state for the JSESSIONID
        HttpState state = client.getState();
        // Get the JSESSIONID so we can reset the host
        Cookie[] cookies = state.getCookies();
        Cookie sessionID = null;
        for(int c = 0; c < cookies.length; c ++)
        {
           Cookie k = cookies[c];
           if( k.getName().equalsIgnoreCase("JSESSIONID") )
              sessionID = k;
        }
        if(sessionID == null)
        {
           fail("setCookieDomainToThisServer(): fail to find session id. Server name: " +server);
        }
        log.info("Saw JSESSIONID="+sessionID);
        // Reset the domain so that the cookie will be sent to server1
        sessionID.setDomain(server);
        state.addCookie(sessionID);
     }
  }
  
  
  
  1.1                  jbosstest/src/main/org/jboss/test/cluster/test/SimpleTestCase.java
  
  Index: SimpleTestCase.java
  ===================================================================
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.test.cluster.test;
  
  import junit.framework.Test;
  import org.apache.commons.httpclient.HttpClient;
  import org.apache.commons.httpclient.HttpMethod;
  import org.apache.commons.httpclient.methods.GetMethod;
  import org.jboss.test.JBossClusteredTestCase;
  
  /**
   * Simple clustering test case of get/set.
   *
   * @author Ben Wang
   * @version $Revision: 1.0
   */
  public class SimpleTestCase
        extends BaseTest
  {
  
     public SimpleTestCase(String name)
     {
        super(name);
  
     }
  
     public static Test suite() throws Exception
     {
        Test t1 = JBossClusteredTestCase.getDeploySetup(SimpleTestCase.class,
              "http-sr.war");
        return t1;
     }
  
     /**
      * Main method that deals with the Http Session Replication Test
      *
      * @throws Exception
      */
     public void testHttpSessionReplication()
           throws Exception
     {
        String attr = "";
        getLog().debug("Enter testHttpSessionReplication");
  
        String baseURL0 = System.getProperty("jbosstest.cluster.node0.http.url");
        String baseURL1 = baseURL0;
        if( servers_.length > 1 )
        {
          baseURL1 = System.getProperty("jbosstest.cluster.node1.http.url");
        }
  
        String setURLName = "/http-sr/testsessionreplication.jsp";
        String getURLName = "/http-sr/getattribute.jsp";
  
        getLog().debug(setURLName + ":::::::" + getURLName);
  
        // Create an instance of HttpClient.
        HttpClient client = new HttpClient();
  
        // Set the session attribute first
        makeGet(client, baseURL0 +setURLName);
  
        // Get the Attribute set by testsessionreplication.jsp
        attr = makeGetWithState(client, baseURL0 +getURLName);
  
        // Let's switch to server 2 to retrieve the session attribute.
        setCookieDomainToThisServer(client, servers_[1]);
        String attr2 = makeGet(client, baseURL1 +getURLName);
  
        // Check the result
        assertEquals("Http session replication attribtues retrieved from both servers ", attr, attr2);
  
        getLog().debug("Http Session Replication has happened");
        getLog().debug("Exit testHttpSessionReplication");
     }
  
  
  }
  
  
  


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
jboss-cvs-commits mailing list
jboss-cvs-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-cvs-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic