testoscacheservlet.java
来自「一个不错的cache」· Java 代码 · 共 199 行
JAVA
199 行
/* * 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 osCacheServlet distributed with the package. It checks that the * cache integration is OK. * * $Id: TestOscacheServlet.java,v 1.1.2.1 2005/04/18 16:06:02 dres Exp $ * @version $Revision: 1.1.2.1 $ * @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a> */public final class TestOscacheServlet extends TestCase { // The instance of a webconversation to invoke pages static 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 FORCE_CACHE_USE = "forcecacheuse=yes&"; private final String FORCE_REFRESH = "forceRefresh=true&"; private final String KEY = "key=ServletKeyItem&"; private final String REFRESH_PERIOD = "refreshPeriod="; private final String SERVLET_URL = "/cacheServlet/?"; private final int NO_REFRESH_WANTED = 2000; private final int REFRESH_WANTED = 0; /** * Constructor required by JUnit * <p> * @param str Test name */ public TestOscacheServlet(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(TestOscacheServlet.class); } /** * This method is invoked before each testXXXX methods of the * class. It set ups the variables required for each tests. */ public void setUp() { // Create a web conversation on first run if (wc == null) { wc = new WebConversation(); } } /** * Test the cache module using a servlet */ public void testOscacheServlet() { // Make a first call just to initialize the servlet invokeServlet(NO_REFRESH_WANTED); // Connect to the servlet using the application scope String previousReponse = invokeServlet(NO_REFRESH_WANTED); // Call again an verify that the content hasn't changed assertTrue(previousReponse.equals(invokeServlet(NO_REFRESH_WANTED, "", 2000))); // Call again an verify that the content is updated String newResponse = invokeServlet(REFRESH_WANTED); assertTrue("new response is " + newResponse + " expected it to be different", !previousReponse.equals(newResponse)); previousReponse = newResponse; // Call short delay so content should be refresh, but it will not since // we ask to use the item already in cache assertTrue(previousReponse.equals(invokeServlet(REFRESH_WANTED, FORCE_CACHE_USE, 2000))); // Call with long delay so the item would not need refresh, but we'll ask // a refresh anyway assertTrue(!previousReponse.equals(invokeServlet(NO_REFRESH_WANTED, FORCE_REFRESH))); // Verify that the cache key and the cache entry are present in the output and // that their values are correct assertTrue("response '" + previousReponse + "' does not contain oscache string", previousReponse.indexOf("oscache") != -1); assertTrue("response '" + previousReponse + "' does not contain /Test_key string", previousReponse.indexOf("/Test_key") != -1); } /** * Test the cache module using a servlet and basic load */ public void testOscacheServletBasicForLoad() { // Call Servlet String stringResponse = invokeServlet(NO_REFRESH_WANTED); // 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); // Call again stringResponse = invokeServlet(REFRESH_WANTED); // idem comment assertTrue(stringResponse.indexOf("This is some cache content") > 0); // Call again stringResponse = invokeServlet(REFRESH_WANTED, FORCE_CACHE_USE); // idem comment assertTrue(stringResponse.indexOf("This is some cache content") > 0); // Call again stringResponse = invokeServlet(NO_REFRESH_WANTED, FORCE_REFRESH); // idem comment assertTrue(stringResponse.indexOf("This is some cache content") > 0); } /** * 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.substring(0, base.length() - 1); } 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 servlet * <p> * @param refresh The time interval telling if the item needs refresh * @return The HTML page returned by the servlet */ private String invokeServlet(int refresh) { // Invoke the servlet return invokeServlet(refresh, ""); } /** * Utility method to invoke a servlet * <p> * @param refresh The time interval telling if the item needs refresh * @param URL The URL of the servlet * @return The HTML page returned by the servlet */ private String invokeServlet(int refresh, String URL) { // Invoke the servlet return invokeServlet(refresh, URL, 0); } /** * Utility method to invoke a servlet * <p> * @param refresh The time interval telling if the item needs refresh * @param URL The URL of the servlet * @param sleepTime - the time to wait before invoking the servlet * @return The HTML page returned by the servlet */ private String invokeServlet(int refresh, String URL, long sleepTime) { try { // Invoke the servlet WebResponse resp = wc.getResponse(constructURL(SERVLET_URL) + APPLICATION_SCOPE + KEY + REFRESH_PERIOD + refresh + "&" + URL); Thread.sleep(sleepTime); return resp.getText(); } catch (Exception ex) { ex.printStackTrace(); fail("Exception raised!"); return ""; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?