LastMileLoggerTest.java revision 3f2187fdcc3ed55c909cb4cdee589744655d3243
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();
611716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mLastMileLogger = new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(),
621716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal                mTraceEnableFile.getPath(),  mTraceReleaseFile.getPath());
631716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
641716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
651716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
661716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void ctorDoesNotCrash() throws Exception {
671716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(), mTraceEnableFile.getPath(),
681716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal                mTraceReleaseFile.getPath());
691716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        verifyZeroInteractions(mLog);
701716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
711716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
721716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
731716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void ctorDoesNotCrashEvenIfReleaseFileIsMissing() throws Exception {
741716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceReleaseFile.delete();
751716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        new LastMileLogger(mWifiInjector, mTraceDataFile.getPath(), mTraceEnableFile.getPath(),
761716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal                mTraceReleaseFile.getPath());
771716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        verify(mLog).warn(contains("Failed"));
781716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
791716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
801716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
811716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventStartedEnablesTracing() throws Exception {
823f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
833f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
841716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertEquals("1", IoUtils.readFileAsString(mTraceEnableFile.getPath()));
851716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
861716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
871716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
881716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventStartedDoesNotCrashIfEnableFileIsMissing() throws Exception {
891716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceEnableFile.delete();
903f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
913f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
921716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
931716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
941716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
951716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventStartedDoesNotCrashOnRepeatedCalls() throws Exception {
963f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
973f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
983f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
993f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1001716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1011716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1021716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1031716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventSucceededDisablesTracing() throws Exception {
1043f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1053f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED);
1061716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath()));
1071716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1081716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1091716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1101716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventSucceededDoesNotCrashIfEnableFileIsMissing() throws Exception {
1111716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceEnableFile.delete();
1123f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1133f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED);
1141716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1151716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1161716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1171716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventSucceededDoesNotCrashOnRepeatedCalls() throws Exception {
1183f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1193f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED);
1203f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1213f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED);
1221716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1231716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1241716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1251716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventFailedDisablesTracing() throws Exception {
1263f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1273f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1281716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertEquals("0", IoUtils.readFileAsString(mTraceEnableFile.getPath()));
1291716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1301716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1311716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1321716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventFailedDoesNotCrashIfEnableFileIsMissing() throws Exception {
1331716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceEnableFile.delete();
1343f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1353f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1361716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1371716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1381716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1391716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventFailedDoesNotCrashIfDataFileIsMissing() throws Exception {
1401716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceDataFile.delete();
1413f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1423f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1431716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1441716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1451716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1461716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void connectionEventFailedDoesNotCrashOnRepeatedCalls() throws Exception {
1473f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1483f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1493f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1503f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1511716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1521716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1531716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1541716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpShowsFailureTrace() throws Exception {
1553f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1563f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1571716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect");
1583f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1593f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1601716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(getDumpString().contains("rdev_connect"));
1611716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1621716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1631716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1641716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpShowsPendingConnectionTrace() throws Exception {
1653f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1663f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1671716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect");
1681716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(getDumpString().contains("rdev_connect"));
1691716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1701716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1711716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1721716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpShowsLastFailureTraceAndPendingConnectionTrace() throws Exception {
1733f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1743f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1751716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #1");
1763f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1773f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1783f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1793f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1801716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #2");
1811716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1821716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        String dumpString = getDumpString();
1831716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect try #1"));
1841716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect try #2"));
1851716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
1861716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
1871716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
1881716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpShowsLastFailureTraceAndCurrentConnectionTrace() throws Exception {
1893f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1903f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1911716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #1");
1923f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1933f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
1943f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1953f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
1961716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect try #2");
1973f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
1983f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_SUCCEEDED);
1991716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2001716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        String dumpString = getDumpString();
2011716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect try #1"));
2021716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect try #2"));
2031716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2041716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2051716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
2061716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpDoesNotClearLastFailureData() throws Exception {
2073f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
2083f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
2091716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect");
2103f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
2113f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_FAILED);
2121716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2131716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        getDumpString();
2141716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        String dumpString = getDumpString();
2151716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect"));
2161716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2171716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2181716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
2191716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpDoesNotClearPendingConnectionTrace() throws Exception {
2203f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal        mLastMileLogger.reportConnectionEvent(
2213f2187fdcc3ed55c909cb4cdee589744655d3243mukesh agrawal                FAKE_CONNECTION_ID, BaseWifiDiagnostics.CONNECTION_EVENT_STARTED);
2221716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        FileUtils.stringToFile(mTraceDataFile.getPath(), "rdev_connect");
2231716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2241716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        getDumpString();
2251716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        String dumpString = getDumpString();
2261716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        assertTrue(dumpString.contains("rdev_connect"));
2271716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2281716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2291716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
2301716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpDoesNotCrashIfDataFileIsEmpty() throws Exception {
2311716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        getDumpString();
2321716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2331716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2341716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    @Test
2351716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    public void dumpDoesNotCrashIfDataFileIsMissing() throws Exception {
2361716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mTraceDataFile.delete();
2371716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        getDumpString();
2381716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2391716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2401716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private static final String TRACE_DATA_PREFIX = "last-mile-logger-trace-data";
2411716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private static final String TRACE_ENABLE_PREFIX = "last-mile-logger-trace-enable";
2421716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private static final String TRACE_RELEASE_PREFIX = "last-mile-logger-trace-release";
2431716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private LastMileLogger mLastMileLogger;
2441716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private File mTraceDataFile;
2451716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private File mTraceEnableFile;
2461716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private File mTraceReleaseFile;
2471716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal
2481716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    private String getDumpString() {
2491716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        StringWriter sw = new StringWriter();
2501716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        PrintWriter pw = new PrintWriter(sw);
2511716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        mLastMileLogger.dump(pw);
2521716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal        return sw.toString();
2531716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal    }
2541716aa7ad8e00a41980c4120c2104b25fe36630emukesh agrawal}
255