KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > grlea > log > rollover > TestOfFileSizeRolloverStrategy


1 package org.grlea.log.rollover;
2
3 // $Id: TestOfFileSizeRolloverStrategy.java,v 1.2 2006/07/13 12:44:52 grlea Exp $
4
// Copyright (c) 2004-2006 Graham Lea. All rights reserved.
5

6 // Licensed under the Apache License, Version 2.0 (the "License");
7
// you may not use this file except in compliance with the License.
8
// You may obtain a copy of the License at
9
//
10
// http://www.apache.org/licenses/LICENSE-2.0
11
//
12
// Unless required by applicable law or agreed to in writing, software
13
// distributed under the License is distributed on an "AS IS" BASIS,
14
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
// See the License for the specific language governing permissions and
16
// limitations under the License.
17

18
19 import junit.framework.TestCase;
20
21 import java.io.IOException JavaDoc;
22 import java.lang.reflect.Field JavaDoc;
23 import java.util.Date JavaDoc;
24 import java.util.Properties JavaDoc;
25
26 /**
27  * <p>Tests the public interface of {@link FileSizeRolloverStrategy}.</p>
28  *
29  * @author Graham Lea
30  * @version $Revision: 1.2 $
31  */

32 public class
33 TestOfFileSizeRolloverStrategy
34 extends TestCase
35 {
36    private static final long TEST_ROLLOVER_SIZE = 8 * 1024L;
37
38    static final String JavaDoc FILE_SIZE_KEY = "simplelog.rollover.fileSize.size";
39
40    private FileSizeRolloverStrategy rollover;
41
42    public
43    TestOfFileSizeRolloverStrategy(String JavaDoc name)
44    {
45       // Standard TestCase constructor. You shouldn't edit this.
46
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 JavaDoc
64    {
65       long step = TEST_ROLLOVER_SIZE / 13;
66       long size = -step;
67       Date JavaDoc creationDate = new Date JavaDoc();
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 JavaDoc(), TEST_ROLLOVER_SIZE - 1));
85       assertEquals("rollover on exact length", true,
86                    rollover.rolloverNow(new Date JavaDoc(), TEST_ROLLOVER_SIZE));
87       assertEquals("rollover one byte after", true,
88                    rollover.rolloverNow(new Date JavaDoc(), 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 JavaDoc(), rolloverSize - 1));
98       assertEquals("rollover on exact length", true,
99                    rollover.rolloverNow(new Date JavaDoc(), rolloverSize));
100       assertEquals("rollover one byte after", true,
101                    rollover.rolloverNow(new Date JavaDoc(), 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 JavaDoc e)
115       {
116       }
117
118       try
119       {
120          rollover.setRolloverSize(-1);
121          fail("Exception should have been thrown");
122       }
123       catch (Exception JavaDoc e)
124       {
125       }
126    }
127
128    public void
129    testConfigure()
130    throws Exception JavaDoc
131    {
132       // Need a new rollover for this one, as setUp() declares a programattic limit
133
rollover = new FileSizeRolloverStrategy();
134
135       Properties JavaDoc properties = new Properties JavaDoc();
136
137       Field JavaDoc rolloverField = FileSizeRolloverStrategy.class.getDeclaredField("rolloverSize");
138       rolloverField.setAccessible(true);
139
140       // default (100M):
141
rollover.configure(properties);
142       long rolloverValue = rolloverField.getLong(rollover);
143       assertEquals((long)(100 * 1024 * 1024), rolloverValue);
144
145       // bytes:
146
configureTest(properties, rolloverField, "24B", 24);
147
148       // lower-case:
149
configureTest(properties, rolloverField, "24b", 24);
150
151       // kilobytes:
152
configureTest(properties, rolloverField, "12K", 12 * 1024);
153
154       // megabytes:
155
configureTest(properties, rolloverField, "16M", 16 * 1024 * 1024);
156
157       // gigabytes:
158
configureTest(properties, rolloverField, "2G", 2L * 1024 * 1024 * 1024);
159
160       // terabytes:
161
configureTest(properties, rolloverField, "7T", 7L * 1024 * 1024 * 1024 * 1024);
162
163       // megabytes, as bytes:
164
configureTest(properties, rolloverField, (9 * 1024 * 1024) + "B", 9 * 1024 * 1024);
165
166       // No magnitude:
167
try
168       {
169          configureTest(properties, rolloverField, "24", 24);
170          fail("IOException should have been thrown");
171       }
172       catch (IOException JavaDoc e)
173       {}
174    }
175
176    private void
177    configureTest(Properties JavaDoc properties, Field JavaDoc rolloverField, String JavaDoc stringValue, long expectedValue)
178    throws IOException JavaDoc, IllegalAccessException JavaDoc
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