| 1 package org.grlea.log.rollover; 2 3 6 18 19 import junit.framework.TestCase; 20 21 import java.io.IOException ; 22 import java.lang.reflect.Field ; 23 import java.util.Date ; 24 import java.util.Properties ; 25 26 32 public class 33 TestOfFileSizeRolloverStrategy 34 extends TestCase 35 { 36 private static final long TEST_ROLLOVER_SIZE = 8 * 1024L; 37 38 static final String FILE_SIZE_KEY = "simplelog.rollover.fileSize.size"; 39 40 private FileSizeRolloverStrategy rollover; 41 42 public 43 TestOfFileSizeRolloverStrategy(String name) 44 { 45 super(name); 47 } 48 49 protected void 50 setUp() 51 { 52 rollover = new FileSizeRolloverStrategy(TEST_ROLLOVER_SIZE); 53 } 54 55 protected void 56 tearDown() 57 { 58 rollover = null; 59 } 60 61 public void 62 testProgression() 63 throws Exception  64 { 65 long step = TEST_ROLLOVER_SIZE / 13; 66 long size = -step; 67 Date creationDate = new Date (); 68 69 do 70 { 71 size += step; 72 boolean rolloverNow = rollover.rolloverNow(creationDate, size); 73 boolean expectedResult = size > TEST_ROLLOVER_SIZE; 74 75 assertEquals("rolloverNow", expectedResult, rolloverNow); 76 } 77 while (size <= TEST_ROLLOVER_SIZE); 78 } 79 80 public void 81 testBoundaries() 82 { 83 assertEquals("rollover one byte early", false, 84 rollover.rolloverNow(new Date (), TEST_ROLLOVER_SIZE - 1)); 85 assertEquals("rollover on exact length", true, 86 rollover.rolloverNow(new Date (), TEST_ROLLOVER_SIZE)); 87 assertEquals("rollover one byte after", true, 88 rollover.rolloverNow(new Date (), TEST_ROLLOVER_SIZE + 1)); 89 } 90 91 public void 92 testLongValues() 93 { 94 long rolloverSize = ((long) Integer.MAX_VALUE) << 4; 95 rollover.setRolloverSize(rolloverSize); 96 assertEquals("rollover one byte early", false, 97 rollover.rolloverNow(new Date (), rolloverSize - 1)); 98 assertEquals("rollover on exact length", true, 99 rollover.rolloverNow(new Date (), rolloverSize)); 100 assertEquals("rollover one byte after", true, 101 rollover.rolloverNow(new Date (), rolloverSize + 1)); 102 } 103 104 public void 105 testSettingIllegalValue() 106 { 107 rollover.setRolloverSize(1); 108 109 try 110 { 111 rollover.setRolloverSize(0); 112 fail("Exception should have been thrown"); 113 } 114 catch (Exception e) 115 { 116 } 117 118 try 119 { 120 rollover.setRolloverSize(-1); 121 fail("Exception should have been thrown"); 122 } 123 catch (Exception e) 124 { 125 } 126 } 127 128 public void 129 testConfigure() 130 throws Exception  131 { 132 rollover = new FileSizeRolloverStrategy(); 134 135 Properties properties = new Properties (); 136 137 Field rolloverField = FileSizeRolloverStrategy.class.getDeclaredField("rolloverSize"); 138 rolloverField.setAccessible(true); 139 140 rollover.configure(properties); 142 long rolloverValue = rolloverField.getLong(rollover); 143 assertEquals((long)(100 * 1024 * 1024), rolloverValue); 144 145 configureTest(properties, rolloverField, "24B", 24); 147 148 configureTest(properties, rolloverField, "24b", 24); 150 151 configureTest(properties, rolloverField, "12K", 12 * 1024); 153 154 configureTest(properties, rolloverField, "16M", 16 * 1024 * 1024); 156 157 configureTest(properties, rolloverField, "2G", 2L * 1024 * 1024 * 1024); 159 160 configureTest(properties, rolloverField, "7T", 7L * 1024 * 1024 * 1024 * 1024); 162 163 configureTest(properties, rolloverField, (9 * 1024 * 1024) + "B", 9 * 1024 * 1024); 165 166 try 168 { 169 configureTest(properties, rolloverField, "24", 24); 170 fail("IOException should have been thrown"); 171 } 172 catch (IOException e) 173 {} 174 } 175 176 private void 177 configureTest(Properties properties, Field rolloverField, String stringValue, long expectedValue) 178 throws IOException , IllegalAccessException  179 { 180 properties.setProperty(FILE_SIZE_KEY, stringValue); 181 rollover.configure(properties); 182 long rolloverValue = rolloverField.getLong(rollover); 183 assertEquals(expectedValue, rolloverValue); 184 } 185 } | Popular Tags |