• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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