1 /** 2 * Copyright 2003-2006 Greg Luck 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package net.sf.ehcache; 18 19 import junit.framework.TestCase; 20 import org.apache.commons.logging.Log; 21 import org.apache.commons.logging.LogFactory; 22 23 /** 24 * Test cases for status. 25 * 26 * @author <a href="mailto:gluck@thoughtworks.com">Greg Luck</a> 27 * @version $Id: StatusTest.java 28 2006-04-15 05:12:32Z gregluck $ 28 */ 29 public class StatusTest extends TestCase { 30 private static final Log LOG = LogFactory.getLog(StatusTest.class.getName()); 31 32 private static int int1 = 1; 33 private int int2 = 2; 34 private Status status1 = Status.STATUS_ALIVE; 35 36 /** 37 * The status is checked in almost every public method. 38 * It has to be fast. 39 * This test keeps it that way. 40 */ 41 public void testEqualsPerformance() { 42 StopWatch stopWatch = new StopWatch(); 43 stopWatch.getElapsedTime(); 44 45 46 47 Status status2 = Status.STATUS_SHUTDOWN; 48 49 for (int i = 0; i < 10000; i++) { 50 status1.equals(status2); 51 } 52 stopWatch.getElapsedTime(); 53 for (int i = 0; i < 10000; i++) { 54 status1.equals(status2); 55 } 56 long statusCompareTime = stopWatch.getElapsedTime(); 57 LOG.info("Time to do equals(Status): " + statusCompareTime); 58 assertTrue("Status compare is greater than permitted time", statusCompareTime < 15); 59 60 } 61 62 /** 63 * An alternate implementation that is and override of the equals in Object. This would not normally 64 * be used 65 */ 66 public void testObjectEqualsPerformance() { 67 StopWatch stopWatch = new StopWatch(); 68 stopWatch.getElapsedTime(); 69 70 Object object = new Object(); 71 for (int i = 0; i < 10000; i++) { 72 status1.equals(object); 73 } 74 stopWatch.getElapsedTime(); 75 for (int i = 0; i < 10000; i++) { 76 status1.equals(object); 77 } 78 long objectCompareTime = stopWatch.getElapsedTime(); 79 LOG.info("Time to do equals(Object): " + objectCompareTime); 80 assertTrue("Status compare is greater than permitted time", objectCompareTime < 20); 81 82 83 } 84 85 86 /** 87 * This was the implementation up to ehcache 1.2 88 */ 89 public void testIntEqualsPerformance() { 90 StopWatch stopWatch = new StopWatch(); 91 stopWatch.getElapsedTime(); 92 93 int2 = 12; 94 boolean result; 95 for (int i = 0; i < 10000; i++) { 96 result = int1 == int2; 97 } 98 stopWatch.getElapsedTime(); 99 for (int i = 0; i < 10000; i++) { 100 result = int1 == int2; 101 } 102 long intCompareTime = stopWatch.getElapsedTime(); 103 LOG.info("Time to do int == int: " + intCompareTime); 104 assertTrue("Status compare is greater than permitted time", intCompareTime < 10); 105 106 107 } 108 109 110 111 112 }