LastMileLoggerTest.java revision 3355eb4392aabfae9453e7d6f11d9f0620bf5dae
11716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal/* 21716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * Copyright (C) 2017 The Android Open Source Project 31716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * 41716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * Licensed under the Apache License, Version 2.0 (the "License"); 51716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * you may not use this file except in compliance with the License. 61716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * You may obtain a copy of the License at 71716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * 81716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * http://www.apache.org/licenses/LICENSE-2.0 91716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * 101716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * Unless required by applicable law or agreed to in writing, software 111716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * distributed under the License is distributed on an "AS IS" BASIS, 121716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * See the License for the specific language governing permissions and 141716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * limitations under the License. 151716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal */ 161716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 171716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalpackage com.android.server.wifi; 181716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 191716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.junit.Assert.assertEquals; 201716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.junit.Assert.assertTrue; 211716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.mockito.Matchers.anyString; 221716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.mockito.Matchers.contains; 231716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.mockito.Mockito.verify; 241716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.mockito.Mockito.verifyZeroInteractions; 251716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport static org.mockito.Mockito.when; 261716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 271716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport android.os.FileUtils; 281716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport android.test.suitebuilder.annotation.SmallTest; 291716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 301716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport libcore.io.IoUtils; 311716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 321716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport org.junit.Before; 331716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport org.junit.Test; 341716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport org.mockito.Mock; 351716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport org.mockito.MockitoAnnotations; 361716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport org.mockito.Spy; 371716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 381716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport java.io.File; 391716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport java.io.PrintWriter; 401716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalimport java.io.StringWriter; 411716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 421716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal/** 431716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal * Unit tests for {@link LastMileLogger}. 441716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal */ 451716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal@SmallTest 461716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawalpublic class LastMileLoggerTest { 471716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Mock WifiInjector mWifiInjector; 481716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Spy FakeWifiLog mLog; 493f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal private static final long FAKE_CONNECTION_ID = 1; 501716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 511716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Before 521716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void setUp() throws Exception { 531716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal MockitoAnnotations.initMocks(this); 541716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal when(mWifiInjector.makeLog(anyString())).thenReturn(mLog); 551716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceDataFile = File.createTempFile(TRACE_DATA_PREFIX, null); 561716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile = File.createTempFile(TRACE_ENABLE_PREFIX, null); 571716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceReleaseFile = File.createTempFile(TRACE_RELEASE_PREFIX, null); 581716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceDataFile.deleteOnExit(); 591716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile.deleteOnExit(); 601716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceReleaseFile.deleteOnExit(); 613355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FileUtils.stringToFile(mTraceEnableFile, "0"); 621716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mLastMileLogger = new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(), 631716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile.getPath(), mTraceReleaseFile.getPath()); 641716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 651716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 661716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 671716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void ctorDoesNotCrash() throws Exception { 681716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(), mTraceEnableFile.getPath(), 691716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceReleaseFile.getPath()); 701716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal verifyZeroInteractions(mLog); 711716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 721716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 731716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 741716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void ctorDoesNotCrashEvenIfReleaseFileIsMissing() throws Exception { 751716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceReleaseFile.delete(); 761716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(), mTraceEnableFile.getPath(), 771716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceReleaseFile.getPath()); 781716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal verify(mLog).warn(contains("Failed")); 791716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 801716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 811716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 821716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventStartedEnablesTracing() throws Exception { 833f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 843f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 851716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertEquals("1", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 861716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 871716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 881716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 893355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal public void connectionEventStartedDoesNotEnableTracingForInvalidConnectionId() 903355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal throws Exception { 913355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 923355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal -1, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 933355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 943355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal } 953355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal 963355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal @Test 971716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventStartedDoesNotCrashIfEnableFileIsMissing() throws Exception { 981716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile.delete(); 993f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1003f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1011716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1021716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1031716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1041716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventStartedDoesNotCrashOnRepeatedCalls() throws Exception { 1053f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1063f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1073f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1083f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1091716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1101716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1111716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1121716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventSucceededDisablesTracing() throws Exception { 1133f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1143f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED); 1151716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 1161716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1171716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1181716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1191716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventSucceededDoesNotCrashIfEnableFileIsMissing() throws Exception { 1201716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile.delete(); 1213f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1223f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED); 1231716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1241716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1251716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1261716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventSucceededDoesNotCrashOnRepeatedCalls() throws Exception { 1273f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1283f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED); 1293f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1303f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED); 1311716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1321716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1331716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1343355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal public void connectionEventFailedDisablesTracingWhenPendingFails() throws Exception { 1353355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1363355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1373355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1383355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1393355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 1403355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal } 1413355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal 1423355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal @Test 1433355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal public void connectionEventFailedDoesNotDisableTracingOnFailureOfStaleConnection() 1443355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal throws Exception { 1453355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1463355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1473355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1483355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID + 1, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1493f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1503f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1513355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertEquals("1", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 1523355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal } 1533355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal 1543355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal @Test 1553355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal public void connectionEventFailedDisablesTracingOnFailureOfFutureConnection() 1563355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal throws Exception { 1573355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1583355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1593355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 1603355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID + 1, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1611716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath())); 1621716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1631716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1641716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1651716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventFailedDoesNotCrashIfEnableFileIsMissing() throws Exception { 1661716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceEnableFile.delete(); 1673f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1683f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1691716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1701716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1711716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1721716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventFailedDoesNotCrashIfDataFileIsMissing() throws Exception { 1731716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceDataFile.delete(); 1743f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1753f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1761716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1771716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1781716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1791716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void connectionEventFailedDoesNotCrashOnRepeatedCalls() throws Exception { 1803f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1813f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1823f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1833f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1841716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 1851716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 1861716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 1871716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpShowsFailureTrace() throws Exception { 1883f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1893f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 1901716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect"); 1913f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 1923f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 1933355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertTrue(getDumpString().contains("--- Last failed")); 1943355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertTrue(getDumpString().contains("rdev_connect")); 1953355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal } 1963355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal 1973355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal @Test 1983355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal public void dumpShowsFailureTraceEvenIfConnectionIdIncreases() throws Exception { 1993355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 2003355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2013355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect"); 2023355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal mLastMileLogger.reportConnectionEvent( 2033355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal FAKE_CONNECTION_ID + 1, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 2043355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertTrue(getDumpString().contains("--- Last failed")); 2051716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(getDumpString().contains("rdev_connect")); 2061716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2071716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2081716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2091716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpShowsPendingConnectionTrace() throws Exception { 2103f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2113f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2121716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect"); 2133355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertTrue(getDumpString().contains("No last mile log for \"Last failed")); 2143355eb4392aabfae9453e7d6f11d9f0620bf5daemukesh agrawal assertTrue(getDumpString().contains("--- Latest")); 2151716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(getDumpString().contains("rdev_connect")); 2161716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2171716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2181716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2191716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpShowsLastFailureTraceAndPendingConnectionTrace() throws Exception { 2203f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2213f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2221716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #1"); 2233f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2243f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 2253f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2263f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2271716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #2"); 2281716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2291716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal String dumpString = getDumpString(); 2301716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect try #1")); 2311716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect try #2")); 2321716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2331716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2341716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2351716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpShowsLastFailureTraceAndCurrentConnectionTrace() throws Exception { 2363f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2373f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2381716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #1"); 2393f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2403f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 2413f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2423f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2431716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #2"); 2443f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2453f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED); 2461716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2471716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal String dumpString = getDumpString(); 2481716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect try #1")); 2491716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect try #2")); 2501716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2511716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2521716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2531716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpDoesNotClearLastFailureData() throws Exception { 2543f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2553f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2561716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect"); 2573f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2583f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED); 2591716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2601716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal getDumpString(); 2611716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal String dumpString = getDumpString(); 2621716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect")); 2631716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2641716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2651716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2661716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpDoesNotClearPendingConnectionTrace() throws Exception { 2673f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal mLastMileLogger.reportConnectionEvent( 2683f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED); 2691716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect"); 2701716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2711716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal getDumpString(); 2721716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal String dumpString = getDumpString(); 2731716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal assertTrue(dumpString.contains("rdev_connect")); 2741716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2751716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2761716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2771716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpDoesNotCrashIfDataFileIsEmpty() throws Exception { 2781716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal getDumpString(); 2791716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2801716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2811716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal @Test 2821716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal public void dumpDoesNotCrashIfDataFileIsMissing() throws Exception { 2831716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mTraceDataFile.delete(); 2841716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal getDumpString(); 2851716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 2861716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2871716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private static final String TRACE_DATA_PREFIX = "last-mile-logger-trace-data"; 2881716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private static final String TRACE_ENABLE_PREFIX = "last-mile-logger-trace-enable"; 2891716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private static final String TRACE_RELEASE_PREFIX = "last-mile-logger-trace-release"; 2901716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private LastMileLogger mLastMileLogger; 2911716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private File mTraceDataFile; 2921716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private File mTraceEnableFile; 2931716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private File mTraceReleaseFile; 2941716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal 2951716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal private String getDumpString() { 2961716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal StringWriter sw = new StringWriter(); 2971716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal PrintWriter pw = new PrintWriter(sw); 2981716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal mLastMileLogger.dump(pw); 2991716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal return sw.toString(); 3001716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal } 3011716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal} 302