1 22 package org.jboss.test.cluster.test; 23 24 import java.net.HttpURLConnection ; 25 26 import junit.framework.Test; 27 28 import org.apache.commons.httpclient.Cookie; 29 import org.apache.commons.httpclient.Header; 30 import org.apache.commons.httpclient.HttpClient; 31 import org.apache.commons.httpclient.HttpState; 32 import org.apache.commons.httpclient.methods.GetMethod; 33 import org.jboss.test.JBossClusteredTestCase; 34 35 40 public class WebSessionTestCase extends JBossClusteredTestCase 41 { 42 46 public static final long DEFAULT_SLEEP = BaseTest.DEFAULT_SLEEP; 47 48 public WebSessionTestCase(String name) 49 { 50 super(name); 51 } 52 53 public static Test suite() throws Exception 54 { 55 Test t1 = getDeploySetup(WebSessionTestCase.class, "dist-ss.war"); 56 return t1; 57 } 58 59 68 public void testServletSessionFailover() 69 throws Exception 70 { 71 getLog().debug("+++ testServletSessionFailover"); 72 73 String [] servers = super.getServers(); 74 String [] httpURLs = super.getHttpURLs(); 75 String baseURL0 = httpURLs[0]; 77 HttpClient httpConn = new HttpClient(); 78 GetMethod servletGet0 = new GetMethod(baseURL0+"/dist-ss/StatefulSessionServlet/"); 79 int responseCode = httpConn.executeMethod(servletGet0); 80 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 81 Header accessCount = servletGet0.getResponseHeader("X-AccessCount"); 82 int count = Integer.parseInt(accessCount.getValue()); 83 assertEquals("X-AccessCount ", 1, count); 84 HttpState state = httpConn.getState(); 86 servletGet0 = new GetMethod(baseURL0+"/dist-ss/StatefulSessionServlet/"); 87 responseCode = httpConn.executeMethod(servletGet0.getHostConfiguration(), 88 servletGet0, state); 89 accessCount = servletGet0.getResponseHeader("X-AccessCount"); 90 count = Integer.parseInt(accessCount.getValue()); 91 assertEquals("X-AccessCount ", 2, count); 92 Cookie[] cookies = state.getCookies(); 94 Cookie sessionID = null; 95 for(int c = 0; c < cookies.length; c ++) 96 { 97 Cookie k = cookies[c]; 98 if( k.getName().equalsIgnoreCase("JSESSIONID") ) 99 sessionID = k; 100 } 101 log.info("Saw JSESSIONID="+sessionID); 102 sessionID.setDomain(servers[1]); 104 state.addCookie(sessionID); 105 _sleep(DEFAULT_SLEEP); 106 107 String baseURL1 = httpURLs[1]; 109 GetMethod servletGet1 = new GetMethod(baseURL1+"/dist-ss/StatefulSessionServlet/"); 110 responseCode = httpConn.executeMethod(servletGet1.getHostConfiguration(), 111 servletGet1, state); 112 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 113 accessCount = servletGet1.getResponseHeader("X-AccessCount"); 114 count = Integer.parseInt(accessCount.getValue()); 115 assertEquals("X-AccessCount ", 3, count); 116 servletGet1 = new GetMethod(baseURL1+"/dist-ss/StatefulSessionServlet/"); 117 responseCode = httpConn.executeMethod(servletGet1.getHostConfiguration(), 118 servletGet1, state); 119 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 120 accessCount = servletGet1.getResponseHeader("X-AccessCount"); 121 count = Integer.parseInt(accessCount.getValue()); 122 assertEquals("X-AccessCount ", 4, count); 123 } 124 125 139 public void testServletSessionLoadBalancing() 140 throws Exception 141 { 142 getLog().debug("+++ testServletSessionLoadBalancing"); 143 144 String [] servers = getServers(); 145 String [] httpURLs = super.getHttpURLs(); 146 String baseURL0 = httpURLs[0]; 147 String baseURL1 = baseURL0; 148 if( servers.length > 1 ) 149 { 150 baseURL1 = httpURLs[1]; 151 } 152 HttpClient httpConn = new HttpClient(); 154 GetMethod servletGet0 = new GetMethod(baseURL0+"/dist-ss/StatefulSessionServlet/"); 155 int responseCode = httpConn.executeMethod(servletGet0); 156 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 157 Header accessCount = servletGet0.getResponseHeader("X-AccessCount"); 158 int count = Integer.parseInt(accessCount.getValue()); 159 assertEquals("X-AccessCount ", 1, count); 160 HttpState state = httpConn.getState(); 162 Cookie[] cookies = state.getCookies(); 164 Cookie sessionID = null; 165 for(int c = 0; c < cookies.length; c ++) 166 { 167 Cookie k = cookies[c]; 168 if( k.getName().equalsIgnoreCase("JSESSIONID") ) 169 sessionID = k; 170 } 171 log.info("Saw JSESSIONID="+sessionID); 172 sessionID.setDomain(servers[1]); 174 state.addCookie(sessionID); 175 _sleep(DEFAULT_SLEEP); 176 GetMethod servletGet1 = new GetMethod(baseURL1+"/dist-ss/StatefulSessionServlet/"); 178 responseCode = httpConn.executeMethod(servletGet1.getHostConfiguration(), 179 servletGet1, state); 180 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 181 accessCount = servletGet1.getResponseHeader("X-AccessCount"); 182 count = Integer.parseInt(accessCount.getValue()); 183 assertEquals("X-AccessCount ", 2, count); 184 185 _sleep(DEFAULT_SLEEP); 186 sessionID.setDomain(servers[0]); 188 state.addCookie(sessionID); 189 servletGet0 = new GetMethod(baseURL0+"/dist-ss/StatefulSessionServlet/"); 190 responseCode = httpConn.executeMethod(servletGet0.getHostConfiguration(), 191 servletGet0, state); 192 accessCount = servletGet0.getResponseHeader("X-AccessCount"); 193 count = Integer.parseInt(accessCount.getValue()); 194 assertEquals("X-AccessCount ", 3, count); 195 196 _sleep(DEFAULT_SLEEP); 197 sessionID.setDomain(servers[1]); 199 state.addCookie(sessionID); 200 servletGet1 = new GetMethod(baseURL1+"/dist-ss/StatefulSessionServlet/"); 201 responseCode = httpConn.executeMethod(servletGet1.getHostConfiguration(), 202 servletGet1, state); 203 assertTrue("Get OK", responseCode == HttpURLConnection.HTTP_OK); 204 accessCount = servletGet1.getResponseHeader("X-AccessCount"); 205 count = Integer.parseInt(accessCount.getValue()); 206 assertEquals("X-AccessCount ", 4, count); 207 } 208 209 210 215 protected void _sleep(long msecs) 216 { 217 try { 218 Thread.sleep(msecs); 219 } catch (InterruptedException e) { 220 e.printStackTrace(); 221 } 222 } 223 224 } 225 | Popular Tags |