1 package com.android.launcher3.logging; 2 3 import android.support.test.InstrumentationRegistry; 4 import android.support.test.filters.SmallTest; 5 import android.support.test.runner.AndroidJUnit4; 6 7 import org.junit.After; 8 import org.junit.Before; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 12 import java.io.File; 13 import java.io.PrintWriter; 14 import java.io.StringWriter; 15 import java.util.Calendar; 16 17 import static org.junit.Assert.assertFalse; 18 import static org.junit.Assert.assertTrue; 19 20 /** 21 * Tests for {@link FileLog} 22 */ 23 @SmallTest 24 @RunWith(AndroidJUnit4.class) 25 public class FileLogTest { 26 27 private File mTempDir; 28 29 @Before setUp()30 public void setUp() throws Exception { 31 int count = 0; 32 do { 33 mTempDir = new File(InstrumentationRegistry.getTargetContext().getCacheDir(), 34 "log-test-" + (count++)); 35 } while(!mTempDir.mkdir()); 36 37 FileLog.setDir(mTempDir); 38 } 39 40 @After tearDown()41 public void tearDown() throws Exception { 42 // Clear existing logs 43 new File(mTempDir, "log-0").delete(); 44 new File(mTempDir, "log-1").delete(); 45 mTempDir.delete(); 46 } 47 48 @Test testPrintLog()49 public void testPrintLog() throws Exception { 50 if (!FileLog.ENABLED) { 51 return; 52 } 53 FileLog.print("Testing", "hoolalala"); 54 StringWriter writer = new StringWriter(); 55 FileLog.flushAll(new PrintWriter(writer)); 56 assertTrue(writer.toString().contains("hoolalala")); 57 58 FileLog.print("Testing", "abracadabra", new Exception("cat! cat!")); 59 writer = new StringWriter(); 60 FileLog.flushAll(new PrintWriter(writer)); 61 assertTrue(writer.toString().contains("abracadabra")); 62 // Exception is also printed 63 assertTrue(writer.toString().contains("cat! cat!")); 64 65 // Old logs still present after flush 66 assertTrue(writer.toString().contains("hoolalala")); 67 } 68 69 @Test testOldFileTruncated()70 public void testOldFileTruncated() throws Exception { 71 if (!FileLog.ENABLED) { 72 return; 73 } 74 FileLog.print("Testing", "hoolalala"); 75 StringWriter writer = new StringWriter(); 76 FileLog.flushAll(new PrintWriter(writer)); 77 assertTrue(writer.toString().contains("hoolalala")); 78 79 Calendar threeDaysAgo = Calendar.getInstance(); 80 threeDaysAgo.add(Calendar.HOUR, -72); 81 new File(mTempDir, "log-0").setLastModified(threeDaysAgo.getTimeInMillis()); 82 new File(mTempDir, "log-1").setLastModified(threeDaysAgo.getTimeInMillis()); 83 84 FileLog.print("Testing", "abracadabra", new Exception("cat! cat!")); 85 writer = new StringWriter(); 86 FileLog.flushAll(new PrintWriter(writer)); 87 assertTrue(writer.toString().contains("abracadabra")); 88 // Exception is also printed 89 assertTrue(writer.toString().contains("cat! cat!")); 90 91 // Old logs have been truncated 92 assertFalse(writer.toString().contains("hoolalala")); 93 } 94 } 95