1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package fr.ifremer.isisfish.logging.io;
27
28 import java.io.File;
29
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32 import org.junit.Assert;
33 import org.junit.Before;
34 import org.junit.Test;
35
36 import fr.ifremer.isisfish.AbstractIsisFishTest;
37 import fr.ifremer.isisfish.logging.LogLevel;
38 import fr.ifremer.isisfish.logging.LogLevelUtil;
39 import fr.ifremer.isisfish.logging.LoggerHelper;
40
41
42
43
44
45
46
47 public class LineReaderUtilTest extends AbstractIsisFishTest {
48
49 protected static final Log log = LogFactory.getLog(LineReaderUtilTest.class);
50
51 protected static File testDir;
52
53 public static File getTestDir() {
54 if (testDir == null) {
55 testDir = new File(getTestDirectory(), "bench_" + System.nanoTime());
56 if (!testDir.mkdirs()) {
57 throw new IllegalStateException("could not create directory " + testDir);
58 }
59 }
60 return testDir;
61 }
62
63 final static int[] sizes = new int[]{
64 10,
65 50,
66 100,
67 1000,
68 5000,
69
70
71
72
73
74
75
76
77 };
78 File f;
79
80 @Before
81 public void setUp() throws Exception {
82 System.out.println("benchdir " + getTestDir());
83 String filename = "LineReaderTest_30.log";
84 f = new File(testDir, filename);
85
86 if (!f.exists()) {
87 LoggerHelper.createMock(testDir, filename, 5);
88 }
89 }
90
91 @Test
92 public void testLevelReader() throws Exception {
93
94 long nbLines;
95 LineReader reader, reader2;
96
97 reader = new LineReader(f, new FileOffsetReader(new File(f.getParentFile(), "offsets")));
98 reader.getOffsetReader().deleteOffsetFile();
99 reader.open();
100 nbLines = reader.getNbLines();
101 Assert.assertEquals(30, nbLines);
102 log.info("found " + nbLines + " in reader " + reader);
103
104 reader2 = new LineReaderUtil.LevelLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + LogLevel.DEBUG.mask())), LogLevel.FATAL);
105 reader2.getOffsetReader().deleteOffsetFile();
106 reader2.open();
107 nbLines = reader2.getNbLines();
108 log.info("found " + nbLines + " in reader " + reader2);
109 Assert.assertEquals(5, nbLines);
110 reader2.close();
111
112 reader2 = new LineReaderUtil.LevelLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + LogLevel.DEBUG.mask())), LogLevel.DEBUG);
113 reader2.getOffsetReader().deleteOffsetFile();
114 reader2.open();
115 nbLines = reader2.getNbLines();
116 log.info("found " + nbLines + " in reader " + reader2);
117 Assert.assertEquals(5, nbLines);
118 reader2.close();
119
120 reader2 = new LineReaderUtil.LevelLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + LogLevel.INFO.mask())), LogLevel.INFO);
121 reader2.getOffsetReader().deleteOffsetFile();
122 reader2.open();
123 nbLines = reader2.getNbLines();
124 log.info("found " + nbLines + " in reader " + reader2);
125 Assert.assertEquals(5, nbLines);
126 reader2.getOffsetReader().deleteOffsetFile();
127 reader2.close();
128
129 reader.getOffsetReader().deleteOffsetFile();
130 reader.close();
131 }
132
133 @Test
134 public void testLevelsReader() throws Exception {
135
136 LineReader reader, reader2, reader3;
137 int levels;
138 long nbLines;
139
140 reader = new LineReader(f, new FileOffsetReader(new File(f.getParentFile(), "offsets")));
141 reader.getOffsetReader().deleteOffsetFile();
142 reader.open();
143 nbLines = reader.getNbLines();
144 Assert.assertEquals(30, nbLines);
145 log.info("found " + nbLines + " in reader " + reader);
146
147 levels = LogLevelUtil.createSet(LogLevel.DEBUG, LogLevel.INFO);
148 reader2 = new LineReaderUtil.LevelsLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.DEBUG, LogLevel.INFO);
149 reader2.getOffsetReader().deleteOffsetFile();
150 reader2.open();
151 nbLines = reader2.getNbLines();
152 log.info("found " + nbLines + " in reader " + reader2);
153 Assert.assertEquals(10, nbLines);
154 reader2.getOffsetReader().deleteOffsetFile();
155 reader2.close();
156
157 levels = LogLevelUtil.createSet(LogLevel.WARN, LogLevel.INFO);
158 reader2 = new LineReaderUtil.LevelsLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.INFO, LogLevel.WARN);
159 reader2.getOffsetReader().deleteOffsetFile();
160 Assert.assertTrue(reader2.getOffsetReader().needCreate());
161 reader2.open();
162 nbLines = reader2.getNbLines();
163 log.info("found " + nbLines + " in reader " + reader2);
164 Assert.assertEquals(10, nbLines);
165
166 levels = LogLevelUtil.createSet(LogLevel.INFO);
167 reader3 = new LineReaderUtil.LevelsLineReader(reader2, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.INFO);
168 reader3.getOffsetReader().deleteOffsetFile();
169 Assert.assertTrue(reader3.getOffsetReader().needCreate());
170 reader3.open();
171 nbLines = reader3.getNbLines();
172 log.info("found " + nbLines + " in reader " + reader3);
173 Assert.assertEquals(5, nbLines);
174
175 reader2.close();
176 reader3.close();
177
178 levels = LogLevelUtil.createSet(LogLevel.INFO, LogLevel.WARN);
179 reader2 = new LineReaderUtil.LevelsLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.WARN, LogLevel.INFO);
180 Assert.assertFalse(reader2.getOffsetReader().needCreate());
181 reader2.open();
182 nbLines = reader2.getNbLines();
183 log.info("found " + nbLines + " in reader " + reader2);
184 Assert.assertEquals(10, nbLines);
185 reader2.getOffsetReader().deleteOffsetFile();
186 reader2.close();
187
188 levels = LogLevelUtil.createSet(LogLevel.DEBUG);
189 reader2 = new LineReaderUtil.LevelsLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.DEBUG);
190 Assert.assertFalse(reader2.getOffsetReader().needCreate());
191 reader2.open();
192 nbLines = reader2.getNbLines();
193 log.info("found " + nbLines + " in reader " + reader2);
194 Assert.assertEquals(5, nbLines);
195 reader2.close();
196
197 levels = LogLevelUtil.createSet(LogLevel.DEBUG, LogLevel.DEBUG);
198 reader2 = new LineReaderUtil.LevelsLineReader(reader, new FileOffsetReader(new File(reader.getFile().getParentFile(), "leveloffsets_" + levels)), LogLevel.DEBUG, LogLevel.DEBUG);
199 Assert.assertFalse(reader2.getOffsetReader().needCreate());
200 reader2.open();
201 nbLines = reader2.getNbLines();
202 log.info("found " + nbLines + " in reader " + reader2);
203 Assert.assertEquals(5, nbLines);
204 reader2.getOffsetReader().deleteOffsetFile();
205 reader2.close();
206
207 reader.getOffsetReader().deleteOffsetFile();
208
209 reader.close();
210 }
211
212 @Test
213 public void testPatternReader() throws Exception {
214
215 LineReader reader, reader2;
216 long nbLines;
217
218 reader = new LineReader(f, new FileOffsetReader(new File(f.getParentFile(), "offsets")));
219 reader.getOffsetReader().deleteOffsetFile();
220 reader.open();
221 nbLines = reader.getNbLines();
222 Assert.assertEquals(30, nbLines);
223 log.info("found " + nbLines + " in reader " + reader);
224
225 reader2 = new LineReaderUtil.PatternLineReader(reader, new MemoryOffsetReader(100), "DEBUG.*", 0);
226 reader2.getOffsetReader().deleteOffsetFile();
227 reader2.open();
228 nbLines = reader2.getNbLines();
229 log.info("found " + nbLines + " in reader " + reader2);
230 Assert.assertEquals(5, nbLines);
231 reader2.close();
232
233 reader2 = new LineReaderUtil.PatternLineReader(reader, new MemoryOffsetReader(100), "ADEBUG.*", 0);
234 reader2.getOffsetReader().deleteOffsetFile();
235 reader2.open();
236 nbLines = reader2.getNbLines();
237 log.info("found " + nbLines + " in reader " + reader2);
238 Assert.assertEquals(0, nbLines);
239 reader2.close();
240
241 reader.getOffsetReader().deleteOffsetFile();
242 reader.close();
243 }
244
245 }