1package com.android.launcher3.logging; 2 3import android.test.AndroidTestCase; 4import android.test.suitebuilder.annotation.SmallTest; 5 6import java.io.File; 7import java.io.PrintWriter; 8import java.io.StringWriter; 9import java.util.Calendar; 10 11/** 12 * Tests for {@link FileLog} 13 */ 14@SmallTest 15public class FileLogTest extends AndroidTestCase { 16 17 private File mTempDir; 18 19 @Override 20 protected void setUp() throws Exception { 21 super.setUp(); 22 int count = 0; 23 do { 24 mTempDir = new File(getContext().getCacheDir(), "log-test-" + (count++)); 25 } while(!mTempDir.mkdir()); 26 27 FileLog.setDir(mTempDir); 28 } 29 30 @Override 31 protected void tearDown() throws Exception { 32 // Clear existing logs 33 new File(mTempDir, "log-0").delete(); 34 new File(mTempDir, "log-1").delete(); 35 mTempDir.delete(); 36 super.tearDown(); 37 } 38 39 public void testPrintLog() throws Exception { 40 FileLog.print("Testing", "hoolalala"); 41 StringWriter writer = new StringWriter(); 42 FileLog.flushAll(new PrintWriter(writer)); 43 assertTrue(writer.toString().contains("hoolalala")); 44 45 FileLog.print("Testing", "abracadabra", new Exception("cat! cat!")); 46 writer = new StringWriter(); 47 FileLog.flushAll(new PrintWriter(writer)); 48 assertTrue(writer.toString().contains("abracadabra")); 49 // Exception is also printed 50 assertTrue(writer.toString().contains("cat! cat!")); 51 52 // Old logs still present after flush 53 assertTrue(writer.toString().contains("hoolalala")); 54 } 55 56 public void testOldFileTruncated() throws Exception { 57 FileLog.print("Testing", "hoolalala"); 58 StringWriter writer = new StringWriter(); 59 FileLog.flushAll(new PrintWriter(writer)); 60 assertTrue(writer.toString().contains("hoolalala")); 61 62 Calendar threeDaysAgo = Calendar.getInstance(); 63 threeDaysAgo.add(Calendar.HOUR, -72); 64 new File(mTempDir, "log-0").setLastModified(threeDaysAgo.getTimeInMillis()); 65 new File(mTempDir, "log-1").setLastModified(threeDaysAgo.getTimeInMillis()); 66 67 FileLog.print("Testing", "abracadabra", new Exception("cat! cat!")); 68 writer = new StringWriter(); 69 FileLog.flushAll(new PrintWriter(writer)); 70 assertTrue(writer.toString().contains("abracadabra")); 71 // Exception is also printed 72 assertTrue(writer.toString().contains("cat! cat!")); 73 74 // Old logs have been truncated 75 assertFalse(writer.toString().contains("hoolalala")); 76 } 77} 78