View Javadoc
1   /*
2    * #%L
3    * IsisFish
4    * 
5    * $Id: LineReaderUtilTest.java 4156 2014-12-09 11:27:18Z echatellier $
6    * $HeadURL: https://svn.codelutin.com/isis-fish/tags/isis-fish-4.4.0.2/src/test/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.java $
7    * %%
8    * Copyright (C) 2006 - 2010 Ifremer, Code Lutin
9    * %%
10   * This program is free software: you can redistribute it and/or modify
11   * it under the terms of the GNU General Public License as
12   * published by the Free Software Foundation, either version 3 of the 
13   * License, or (at your option) any later version.
14   * 
15   * This program is distributed in the hope that it will be useful,
16   * but WITHOUT ANY WARRANTY; without even the implied warranty of
17   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   * GNU General Public License for more details.
19   * 
20   * You should have received a copy of the GNU General Public 
21   * License along with this program.  If not, see
22   * <http://www.gnu.org/licenses/gpl-3.0.html>.
23   * #L%
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   * Tests unitaires sur les implantations de LineReader
43   *
44   * @author chemit
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              //10000,
70              //50000,
71              //100000,
72              //200000,
73              //300000,
74              //500000,
75              //1000000,
76              //2000000
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 }