testoscachejsp.java

来自「一个不错的cache」· Java 代码 · 共 209 行

JAVA
209
字号
/* * Copyright (c) 2002-2003 by OpenSymphony * All rights reserved. */package com.opensymphony.oscache.web;import com.meterware.httpunit.WebConversation;import com.meterware.httpunit.WebResponse;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;/** * Test test the JSPs distributed with the package. It checks that the * cache integration is OK. * * $Id: TestOscacheJsp.java,v 1.1 2003/07/19 09:58:49 chris_miller Exp $ * @version        $Revision: 1.1 $ * @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a> */public final class TestOscacheJsp extends TestCase {    // The instance of a webconversation to invoke pages    WebConversation wc = null;    private final String APPLICATION_SCOPE = "scope=application&";    // Constants definition    private final String BASE_URL_SYSTEM_PRP = "test.web.baseURL";    private final String FIRST_PAGE = "oscacheTest.jsp?";    private final String FORCE_CACHE_USE = "forcecacheuse=yes&";    private final String FORCE_REFRESH = "refresh=true";    private final String PAGE_SCOPE = "scope=page&";    private final String REQUEST_SCOPE = "scope=request&";    private final String SECOND_PAGE = "oscacheTestMultipleTagNoKey.jsp?";    private final String SESSION_SCOPE = "scope=session&";    private final int CACHE_TAG_EXPIRATION = 2000;    private final int HALF_CACHE_TAG_EXPIRATION = CACHE_TAG_EXPIRATION / 2;    /**     * Constructor required by JUnit     * <p>     * @param str Test name     */    public TestOscacheJsp(String str) {        super(str);    }    /**     * Returns the test suite for the test class     * <p>     * @return   Test suite for the class     */    public static Test suite() {        return new TestSuite(TestOscacheJsp.class);    }    /**     * Setup method called before each testXXXX of the class     */    public void setUp() {        // Create a web conversation to invoke our JSP        if (wc == null) {            wc = new WebConversation();        }    }    /**     * Test the cache module under load     */    public void testOscacheBasicForLoad() {        String baseUrl = constructURL(FIRST_PAGE);        // Connect to the JSP using the application scope        String stringResponse = invokeJSP(baseUrl, CACHE_TAG_EXPIRATION);        // Assert that a page was properly generated.        // This does not ensure that the cache is working properly.        // Though, it ensures that no exception or other weird problem occured        assertTrue(stringResponse.indexOf("This is some cache content") > 0);        // Invoke the JSP page containing 2 cache tag        baseUrl = constructURL(SECOND_PAGE);        // Connect to the JSP using the application scope        stringResponse = invokeJSP(baseUrl, CACHE_TAG_EXPIRATION);        // Assert that a page was properly generated.        // This does not ensure that the cache is working properly.        // Though, it ensures that no exception or other weird problem occured        assertTrue(stringResponse.indexOf("This is some cache content") > 0);    }    /**     * Test the cache module using a JSP     */    public void testOscacheJsp() {        String baseUrl = constructURL(FIRST_PAGE);        // Connect to a session scope to allow the JSP compilation        compileJSP(baseUrl + SESSION_SCOPE);        // Connect to the JSP using the application scope        String stringResponse = invokeJSP(baseUrl, HALF_CACHE_TAG_EXPIRATION);        // Connect again, we should have the same content since it expires        // only each 2 seconds        assertTrue(stringResponse.equals(invokeJSP(baseUrl, HALF_CACHE_TAG_EXPIRATION)));        // Connect again, the content should be different        String newResponse = invokeJSP(baseUrl, CACHE_TAG_EXPIRATION + (CACHE_TAG_EXPIRATION / 4));        assertTrue(!stringResponse.equals(newResponse));        stringResponse = newResponse;        // Connect again, but request the cache content so no refresh should occur        assertTrue(stringResponse.equals(invokeJSP(baseUrl, FORCE_CACHE_USE, 0)));        // Connect again, the content should have changed        newResponse = invokeJSP(baseUrl, HALF_CACHE_TAG_EXPIRATION);        assertTrue(!stringResponse.equals(newResponse));        stringResponse = newResponse;        // Connect for the last time, force the cache        // refresh so the content should have changed        assertTrue(!stringResponse.equals(invokeJSP(baseUrl, FORCE_REFRESH, 0)));        // Invoke the JSP page containing 2 cache tag        baseUrl = constructURL(SECOND_PAGE);        compileJSP(baseUrl + SESSION_SCOPE);        stringResponse = invokeJSP(baseUrl, CACHE_TAG_EXPIRATION);        // Invoke the same page en check if it's identical        assertTrue(stringResponse.equals(invokeJSP(baseUrl, CACHE_TAG_EXPIRATION)));    }    /**     * Compile a JSP page by invoking it. We compile the page first to avoid     * the compilation delay when testing since the time is a crucial factor     * <p>     * @param URL The JSP url to invoke     */    private void compileJSP(String URL) {        try {            // Invoke the JSP            WebResponse resp = wc.getResponse(URL);        } catch (Exception ex) {            ex.printStackTrace();            fail("Exception raised!!");        }    }    /**     *  Reads the base url from the test.web.baseURL system property and     *  append the given URL.     *  <p>     *  @param Url  Url to append to the base.     *  @return Complete URL     */    private String constructURL(String Url) {        String base = System.getProperty(BASE_URL_SYSTEM_PRP);        String constructedUrl = null;        if (base != null) {            if (!base.endsWith("/")) {                base = base + "/";            }            constructedUrl = base + Url;        } else {            fail("System property test.web.baseURL needs to be set to the proper server to use.");        }        return constructedUrl;    }    /**     * Utility method to invoke a JSP page and then sleep some time before returning     * <p>     * @param baseUrl     The URL of the JSP to invoke     * @param sleepTime   THe time to sleep before returning     * @return The text value of the reponse (HTML code)     */    private String invokeJSP(String baseUrl, int sleepTime) {        return invokeJSP(baseUrl, "", sleepTime);    }    /**     * Utility method to invoke a JSP page and then sleep some time before returning     * <p>     * @param baseUrl     The URL of the JSP to invoke     * @param URLparam    The URL parameters of the JSP to invoke     * @param sleepTime   The time to sleep before returning     * @return The text value of the reponse (HTML code)     */    private String invokeJSP(String baseUrl, String URLparam, int sleepTime) {        try {            // Invoke the JSP and wait the specified sleepTime            WebResponse resp = wc.getResponse(baseUrl + APPLICATION_SCOPE + URLparam);            Thread.sleep(sleepTime);            return resp.getText();        } catch (Exception ex) {            ex.printStackTrace();            fail("Exception raised!!");            return null;        }    }}

⌨️ 快捷键说明

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