⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractsessiontest.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
// ========================================================================// Copyright 2008 Mort Bay Consulting Pty. Ltd.// ------------------------------------------------------------------------// Licensed 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.mortbay.jetty.servlet;import junit.framework.TestCase;public abstract class AbstractSessionTest extends TestCase{    public static final String __host1 = "localhost";    public static final String __host2 = __host1;    public static final String __port1 = "8010";    public static final String __port2 = "8011";    SessionTestServer _server1;    SessionTestServer _server2;    public abstract SessionTestServer newServer1 ();        public abstract SessionTestServer newServer2();        public void setUp () throws Exception    {        _server1 = newServer1();        _server2 = newServer2();        _server1.start();              _server2.start();    }        public void tearDown () throws Exception    {        if (_server1 != null)            _server1.stop();        if (_server2 != null)            _server2.stop();                _server1=null;        _server2=null;    }            public void testSessions () throws Exception    {        SessionTestClient client1 = new SessionTestClient("http://"+__host1+":"+__port1);        SessionTestClient client2 = new SessionTestClient("http://"+__host2+":"+__port2);        // confirm that user has no session        assertFalse(client1.send("/contextA", null));        String cookie1 = client1.newSession("/contextA");        assertNotNull(cookie1);        System.err.println("cookie1: " + cookie1);                // confirm that client2 has the same session attributes as client1        assertTrue(client1.setAttribute("/contextA", cookie1, "foo", "bar"));                assertTrue(client2.hasAttribute("/contextA", cookie1, "foo", "bar"));                // confirm that /contextA would share same sessionId as /contextB                assertTrue(client1.send("/contextA/dispatch/forward/contextB", cookie1));                assertTrue(client2.send("/contextA/dispatch/forward/contextB", cookie1));        assertTrue(client1.send("/contextB", cookie1));                // verify that session attributes on /contextA is different from /contextB        assertFalse(client1.hasAttribute("/contextB/action", cookie1, "foo", "bar"));                // add new session attributes on /contextB        client1.setAttribute("/contextB/action", cookie1, "zzzzz", "yyyyy");        assertTrue(client1.hasAttribute("/contextB/action", cookie1, "zzzzz", "yyyyy"));                // verify that client2 has same sessionAttributes on /contextB        // client1's newly added attribute "zzzzz" needs to be flushed to the database first        // saveInterval is configured at 10s... to test, uncomment the 2 lines below.        //Thread.sleep(10000);        //assertTrue(client2.hasAttribute("/contextB/action", cookie1, "zzzzz", "yyyyy"));                        String cookie2 = client2.newSession("/contextA");        assertNotNull(cookie2);        System.err.println("cookie2: " + cookie2);                // confirm that client1 has same session attributes as client2        assertTrue(client2.setAttribute("/contextA", cookie2, "hello", "world"));        assertTrue(client1.hasAttribute("/contextA", cookie2, "hello", "world"));                        // confirm that /contextA would share same sessionId as /contextB                assertTrue(client1.send("/contextA/dispatch/forward/contextB", cookie2));                assertTrue(client2.send("/contextA/dispatch/forward/contextB", cookie2));        assertTrue(client1.send("/contextB", cookie2));                // Session invalidate on contextA        assertTrue(client1.invalidate("/contextA", cookie1));                // confirm that session on contextB has not been invalidated after contextA has been invalidated        assertTrue(client1.send("/contextB", cookie1));                       // confirm that session on contextA has been deleted        assertFalse(client1.send("/contextA", cookie1));                // Session invalidate on contextB        assertTrue(client1.invalidate("/contextB/action", cookie1));                 // confirm that session on contextB has been deleted        assertFalse(client1.send("/contextB/action", cookie1));                        // wait for saveInterval and check if the session invalidation has been reflected to the other node        // to test, uncomment 3 lines below        //Thread.sleep(10000);        //assertFalse(client2.send("/contextA", cookie1));        //assertFalse(client2.send("/contextB/action", cookie1));            }        public void testSessionManagerStop() throws Exception    {             SessionTestClient client1 = new SessionTestClient("http://"+__host1+":"+__port1);        SessionTestClient client2 = new SessionTestClient("http://"+__host2+":"+__port2);        // confirm that user has no session        assertFalse(client1.send("/contextA", null));        String cookie1 = client1.newSession("/contextA");        assertNotNull(cookie1);        System.err.println("cookie1: " + cookie1);                // creates a session for contextB        assertTrue(client1.send("/contextB", cookie1));                // confirm that /contextA and /contextB sessions are available                assertTrue(client1.send("/contextA", cookie1));        assertTrue(client1.send("/contextB/action", cookie1));        assertTrue(client1.setAttribute("/contextA", cookie1, "a", "b"));        assertTrue(client1.setAttribute("/contextB/action", cookie1, "c", "d"));                // confirm that /contextA and /contextB sessions from client2 are available           assertTrue(client2.send("/contextA", cookie1));        assertTrue(client2.send("/contextB/action", cookie1));        assertTrue(client2.hasAttribute("/contextA", cookie1, "a", "b"));        assertTrue(client2.hasAttribute("/contextB/action", cookie1, "c", "d"));                // stop sessionManager from node1        _server1._sessionMgr1.stop();                // verify session still exists for contextB        assertTrue(client1.send("/contextB/action", cookie1));        assertTrue(client1.hasAttribute("/contextB/action", cookie1, "c", "d"));                // stop sessionManager from node2        _server2._sessionMgr2.stop();                // verfiy session still exists for contextA        assertTrue(client2.send("/contextA", cookie1));        assertTrue(client2.hasAttribute("/contextA", cookie1, "a", "b"));    }        public void testFailover() throws Exception    {        SessionTestClient client1 = new SessionTestClient("http://"+__host1+":"+__port1);        SessionTestClient client2 = new SessionTestClient("http://"+__host2+":"+__port2);        // confirm that user has no session        assertFalse(client1.send("/contextA", null));        String cookie1 = client1.newSession("/contextA");                assertNotNull(cookie1);        System.err.println("cookie1: " + cookie1);                assertTrue(client1.setAttribute("/contextA", cookie1, "a", "b"));                assertTrue(client2.hasAttribute("/contextA", cookie1, "a", "b"));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -