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