package com.twitter.common.net.http.handlers; import java.io.File; import java.util.List; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; /** * Test for the LogPrinter. * * @author William Farner */ public class LogPrinterTest { @Test public void testRelativeFileHandling() { LogPrinter printer = new LogPrinter(new File("/this/is/the/log/dir"), true); LogPrinter.LogFile absFile = printer.new LogFile("/absolute/path.log"); assertEquals("/absolute/path.log", absFile.getPath()); LogPrinter.LogFile relFile = printer.new LogFile("relative/file.log"); assertEquals("/this/is/the/log/dir/relative/file.log", relFile.getPath()); } @Test public void testFilterLines() { testFilterLinesHelper(TEST_LINES, FILTER0, FILTERED_LINES0); testFilterLinesHelper(TEST_LINES, FILTER1, FILTERED_LINES1); testFilterLinesHelper(TEST_LINES, FILTER2, FILTERED_LINES2); testFilterLinesHelper(TEST_LINES, FILTER3, FILTERED_LINES3); } private void testFilterLinesHelper(List<String> testLines, String filter, List<String> expectedLines) { List<String> filteredLines = Lists.newArrayList( LogPrinter.filterLines(Joiner.on("\n").join(testLines), filter).split("\n")); assertThat(filteredLines, is(expectedLines)); } private static final List<String> TEST_LINES = Lists.newArrayList( "Matching line 1 twittttter", "Matching line 2 twitter", "Not matching line 1 twiter", "Matching line 3" ); private static final String FILTER0 = ""; private static final List<String> FILTERED_LINES0 = TEST_LINES; private static final String FILTER1 = "Matching.*"; private static final List<String> FILTERED_LINES1 = Lists.newArrayList( "Matching line 1 twittttter", "Matching line 2 twitter", "Matching line 3" ); private static final String FILTER2 = "^.*twitt+er$"; private static final List<String> FILTERED_LINES2 = Lists.newArrayList( "Matching line 1 twittttter", "Matching line 2 twitter" ); private static final String FILTER3 = "^.*\\d.*$"; private static final List<String> FILTERED_LINES3 = TEST_LINES; }