/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.test.cluster.defaultcfg.simpleweb.test; import junit.framework.TestCase; import org.apache.catalina.Session; import org.apache.catalina.connector.Response; import org.jboss.logging.Logger; import org.jboss.test.cluster.web.jvmroute.MockRequest; import org.jboss.test.cluster.web.mocks.MockClusteredManager; import org.jboss.test.cluster.web.mocks.MockValve; import org.jboss.web.tomcat.service.session.JvmRouteValve; /** * Tests of the JvmRouteValve. * * @author Brian Stansberry */ public class JvmRouteValveUnitTestCase extends TestCase { private static final Logger log = Logger.getLogger(JvmRouteValveUnitTestCase.class); private static final String JVM_ROUTE = "node1"; private static final String NON_FAILOVER_ID = "123." + JVM_ROUTE; private static final String FAILOVER_ID = "123.node2"; private static final String NO_JVMROUTE_ID = "123"; private static final String DOMAIN_JVM_ROUTE = "domain1.node1"; private static final String DOMAIN_NON_FAILOVER_ID = "123." + DOMAIN_JVM_ROUTE; private static final String DOMAIN_FAILOVER_ID = "123.domain1.node2"; /** * Create a new JvmRouteValueUnitTestCase. * * @param name */ public JvmRouteValveUnitTestCase(String name) { super(name); } public void testNonFailover() throws Exception { log.info("Enter testNonFailover"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testFailover() throws Exception { log.info("Enter testFailover"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testFailoverFromURL() throws Exception { log.info("Enter testFailoverFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testFailoverMismatchBadReq() throws Exception { log.info("Enter testFailoverMismatchBadReq"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(FAILOVER_ID); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testFailoverMismatchBadReqFromURL() throws Exception { log.info("Enter testFailoverMismatchBadReqFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(FAILOVER_ID); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testFailoverMismatchBadSession() throws Exception { log.info("Enter testFailoverMismatchBadSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(NON_FAILOVER_ID); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testFailoverMismatchBadSessionFromURL() throws Exception { log.info("Enter testFailoverMismatchBadSessionFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(NON_FAILOVER_ID); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testNoSession() throws Exception { log.info("Enter testNoSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); MockRequest req = new MockRequest(); req.setRequestedSessionId(NON_FAILOVER_ID); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(null, mgr.findSession("123.node1")); assertEquals(null, mgr.getNewCookieIdSession()); } public void testNoSessionFromURL() throws Exception { log.info("Enter testNoSessionFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); MockRequest req = new MockRequest(); req.setRequestedSessionId(NON_FAILOVER_ID); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(null, mgr.findSession(NON_FAILOVER_ID)); assertEquals(null, mgr.getNewCookieIdSession()); } public void testFailoverNoSession() throws Exception { log.info("Enter testFailoverNoSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); MockRequest req = new MockRequest(); req.setRequestedSessionId(FAILOVER_ID); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(null, mgr.findSession(NON_FAILOVER_ID)); assertEquals(null, mgr.findSession("123.node2")); assertEquals(null, mgr.getNewCookieIdSession()); } public void testNoSessionNoRequestedSession() throws Exception { log.info("Enter testNoSessionNoRequestedSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); MockRequest req = new MockRequest(); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(null, mgr.findSession(NON_FAILOVER_ID)); assertEquals(null, mgr.findSession(FAILOVER_ID)); assertEquals(null, mgr.getNewCookieIdSession()); } public void testSessionNoRequestedSession() throws Exception { log.info("Enter testSessionNoRequestedSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testSessionNoRequestedSessionFromURL() throws Exception { log.info("Enter testSessionNoRequestedSessionFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testFailoverSessionNoRequestedSession() throws Exception { log.info("Enter testFailoverSessionNoRequestedSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testFailoverSessionNoRequestedSessionFromURL() throws Exception { log.info("Enter testFailoverSessionNoRequestedSessionFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testNoJvmRouteSession() throws Exception { log.info("Enter testNoJvmRouteSession"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NO_JVMROUTE_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testNoJvmRouteSessionFromURL() throws Exception { log.info("Enter testNoJvmRouteSessionFromURL"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NO_JVMROUTE_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testNoJvmRouteRequest() throws Exception { log.info("Enter testNoJvmRouteRequest"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(NO_JVMROUTE_ID); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } public void testNoJvmRouteRequestFromURL() throws Exception { log.info("Enter testNoJvmRouteRequest"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(NON_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(NO_JVMROUTE_ID); req.setRequestedSessionIdFromURL(true); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(NON_FAILOVER_ID, session.getId()); assertEquals(null, mgr.getNewCookieIdSession()); } public void testJvmRouteIncludesDomain() throws Exception { log.info("Enter testJvmRouteIncludesDomain"); MockClusteredManager mgr = new MockClusteredManager(); mgr.setJvmRoute(DOMAIN_JVM_ROUTE); JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr); MockValve mockValve = new MockValve(); jvmRouteValve.setNext(mockValve); Session session = mgr.createSession(DOMAIN_FAILOVER_ID); MockRequest req = new MockRequest(); req.setSession(session.getSession()); req.setRequestedSessionId(session.getId()); Response res = new Response(); jvmRouteValve.invoke(req, res); assertSame(req, mockValve.getInvokedRequest()); assertSame(res, mockValve.getInvokedResponse()); assertEquals(DOMAIN_NON_FAILOVER_ID, session.getId()); assertEquals(DOMAIN_NON_FAILOVER_ID, mgr.getNewCookieIdSession()); } }