1abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato/*
2abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * Copyright (C) 2016 The Android Open Source Project
3abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato *
4abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
5abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * you may not use this file except in compliance with the License.
6abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * You may obtain a copy of the License at
7abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato *
8abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
9abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato *
10abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * Unless required by applicable law or agreed to in writing, software
11abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
12abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * See the License for the specific language governing permissions and
14abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * limitations under the License.
15abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato */
16abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
17abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratopackage com.android.internal.os;
18abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
19abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratoimport android.os.BatteryStats;
20abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratoimport android.os.Parcel;
2198f0d4692c6634ff5d4ffbbc150d405da66c4c38Adam Lesinskiimport android.support.test.filters.SmallTest;
22abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
23abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratoimport junit.framework.Assert;
24abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratoimport junit.framework.TestCase;
25abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
26abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato/**
27abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato * Provides test cases for android.os.BatteryStats.
28abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato */
29abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onoratopublic class BatteryStatsServTest extends TestCase {
30abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    private static final String TAG = "BatteryStatsServTest";
31abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
32abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public static class TestServ extends BatteryStatsImpl.Uid.Pkg.Serv {
33abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ(MockBatteryStatsImpl bsi) {
34abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            super(bsi);
35abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
36abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
37abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        void populate() {
38abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mStartTime = 1010;
39abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mRunningSince = 2021;
40abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mRunning = true;
41abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mStarts = 4042;
42abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLaunchedTime = 5053;
43abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLaunchedSince = 6064;
44abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLaunched = true;
45abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLaunches = 8085;
46abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLoadedStartTime = 9096;
47abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLoadedStarts = 10017;
48abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLoadedLaunches = 11118;
49abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLastStartTime = 12219;
50abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLastStarts = 13310;
51abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLastLaunches = 14411;
52abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mUnpluggedStartTime = 15512;
53abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mUnpluggedStarts = 16613;
54abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mUnpluggedLaunches = 17714;
55abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
56abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
57abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getStartTime() {
58abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mStartTime;
59abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
60abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
61abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getRunningSince() {
62abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mRunningSince;
63abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
64abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
65abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        void setRunning(boolean val) {
66abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mRunning = val;
67abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
68abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
69abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        boolean getRunning() {
70abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mRunning;
71abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
72abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
73abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getStarts() {
74abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mStarts;
75abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
76abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
77abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getLaunchedTime() {
78abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLaunchedTime;
79abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
80abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
81abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getLaunchedSince() {
82abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLaunchedSince;
83abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
84abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
85abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        void setLaunched(boolean val) {
86abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            mLaunched = val;
87abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
88abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
89abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        boolean getLaunched() {
90abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLaunched;
91abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
92abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
93abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getLaunches() {
94abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLaunches;
95abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
96abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
97abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getLoadedStartTime() {
98abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLoadedStartTime;
99abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
100abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
101abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getLoadedStarts() {
102abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLoadedStarts;
103abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
104abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
105abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getLoadedLaunches() {
106abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLoadedLaunches;
107abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
108abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
109abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getLastStartTime() {
110abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLastStartTime;
111abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
112abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
113abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getLastStarts() {
114abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLastStarts;
115abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
116abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
117abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getLastLaunches() {
118abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mLastLaunches;
119abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
120abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
121abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        long getUnpluggedStartTime() {
122abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mUnpluggedStartTime;
123abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
124abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
125abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getUnpluggedStarts() {
126abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mUnpluggedStarts;
127abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
128abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
129abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        int getUnpluggedLaunches() {
130abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            return mUnpluggedLaunches;
131abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        }
132abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
133abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
134abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
135abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test that the constructor and detach methods touch the time bast observer list.
136abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
137abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
138abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testConstructAndDetach() throws Exception  {
139abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
140abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
141abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
142abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(bsi.getOnBatteryTimeBase().hasObserver(serv));
143abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
144abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.detach();
145abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(bsi.getOnBatteryTimeBase().hasObserver(serv));
146abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
147abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
148abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
149abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test OnTimeStarted
150abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
151abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
152abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testOnTimeStarted() throws Exception  {
153abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
154abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
155abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
156abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
157abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
158abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.onTimeStarted(111111, 20000, 222222);
159abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(18989, serv.getUnpluggedStartTime());
160abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getUnpluggedStarts());
161abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getUnpluggedLaunches());
162abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
163abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
164abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(false);
165abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.onTimeStarted(111111, 20000, 222222);
166abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getUnpluggedStartTime());
167abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getUnpluggedStarts());
168abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getUnpluggedLaunches());
169abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
170abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
171abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
172abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test parceling and unparceling.
173abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
174abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
175abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testParceling() throws Exception  {
176abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
177abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ orig = new TestServ(bsi);
178abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        orig.populate();
179abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
180abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Parcel parcel = Parcel.obtain();
181abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        orig.writeToParcelLocked(parcel);
182abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
183abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        parcel.setDataPosition(0);
184abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
185abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
186abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.readFromParcelLocked(parcel);
187abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
188abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
189abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
190abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
191abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
192abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
193abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
194abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
195abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
196abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
197abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
198abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
199abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(0, serv.getLastStartTime());
200abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(0, serv.getLastStarts());
201abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(0, serv.getLastLaunches());
202abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
203abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
204abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
205abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
206abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
207abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
208abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getLaunchTimeToNow()
209abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
210abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
211abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testLaunchTimeToNow() throws Exception  {
212abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
213abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
214abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
215abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
216abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(true);
217abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8989, serv.getLaunchTimeToNowLocked(10000));
218abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
219abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
220abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(false);
221abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchTimeToNowLocked(10000));
222abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
223abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
224abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
225abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
226abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getStartTimeToNow()
227abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
228abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
229abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStartTimeToNow() throws Exception  {
230abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
231abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
232abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
233abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
234abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
235abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(18989, serv.getStartTimeToNowLocked(20000));
236abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
237abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
238abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(false);
239abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTimeToNowLocked(20000));
240abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
241abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
242abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
243abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test startLaunchedLocked while not previously launched
244abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
245abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
246e1acd636d492f5c828a8abaccfd2fed185ddc0d6Joe Onorato    public void testStartLaunchedLockedWhileLaunched() throws Exception  {
247abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
248abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
249abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
250abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
251abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
252abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
253abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
254abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
255abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
256abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
257abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(true);
258abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.startLaunchedLocked();
259abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
260abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No changes
261abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
262abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
263abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
264abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
265abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
266abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
267abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
268abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
269abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
270abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
271abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
272abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
273abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
274abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
275abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
276abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
277abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
278abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
279abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
280abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
281abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test startLaunchedLocked while previously launched
282abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
283abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
284e1acd636d492f5c828a8abaccfd2fed185ddc0d6Joe Onorato    public void testStartLaunchedLockedWhileNotLaunched() throws Exception  {
285abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
286abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
287abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
288abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
289abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
290abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
291abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
292abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
293abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
294abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
295abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(false);
296abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.startLaunchedLocked();
297abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
298abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
299abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
300abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
301abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
302abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(777777L, serv.getLaunchedSince()); // <-- changed
303abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched()); // <-- changed
304abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8086, serv.getLaunches()); // <-- changed
305abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
306abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
307abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
308abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
309abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
310abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
311abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
312abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
313abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
314abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
315abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
316abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
317abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test stopLaunchedLocked when not previously launched.
318abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
319abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
320abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStopLaunchedLockedWhileNotLaunched() throws Exception  {
321abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
322abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
323abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
324abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
325abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
326abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
327abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
328abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
329abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
330abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(false);
331abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
332abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.stopLaunchedLocked();
333abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
334abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No changes
335abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
336abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
337abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
338abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
339abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
340abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
341abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getLaunched());
342abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
343abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
344abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
345abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
346abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
347abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
348abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
349abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
350abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
351abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
352abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
353abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
354abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
355abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test stopLaunchedLocked when previously launched, with measurable time between
356abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * start and stop.
357abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
358abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
359abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStopLaunchedLockedWhileLaunchedNormal() throws Exception  {
360abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
361abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
362abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
363abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
364abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
365abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
366abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
367abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
368abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
369abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(true);
370abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
371abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.stopLaunchedLocked();
372abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
373abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
374abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
375abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
376abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
377abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(777777L-6064+5053, serv.getLaunchedTime()); // <-- changed
378abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
379abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getLaunched());
380abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
381abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
382abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
383abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
384abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
385abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
386abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
387abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
388abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
389abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
390abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
391abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
392abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
393abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test stopLaunchedLocked when previously launched, with no measurable time between
394abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * start and stop.
395abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
396abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
397abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStopLaunchedLockedWhileLaunchedTooQuick() throws Exception  {
398abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
399abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
400abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
401abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 6064L;
402abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
403abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
404abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
405abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
406abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
407abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setLaunched(true);
408abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
409abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.stopLaunchedLocked();
410abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
411abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
412abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
413abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
414abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
415abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
416abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
417abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getLaunched());
418abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085-1, serv.getLaunches()); // <-- changed
419abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
420abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
421abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
422abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
423abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
424abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
425abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
426abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
427abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
428abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
429abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
430abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
431abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test startRunningLocked while previously running
432abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
433abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
434abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStartRunningLockedWhileRunning() throws Exception  {
435abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
436abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
437abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
438abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
439abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
440abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
441abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
442abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
443abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
444abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
445abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
446abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.startRunningLocked();
447abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
448abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // no change
449abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
450abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
451abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
452abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
453abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
454abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
455abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
456abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
457abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
458abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
459abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
460abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
461abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
462abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
463abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
464abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
465abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
466abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
467abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
468abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
469abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test startRunningLocked while not previously launched
470abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
471abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
472abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStartRunningLockedWhileNotRunning() throws Exception  {
473abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
474abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
475abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
476abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
477abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
478abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
479abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
480abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
481abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
482abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(false);
483abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
484abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.startRunningLocked();
485abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
486abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
487abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(777777L, serv.getRunningSince());
488abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
489abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042+1, serv.getStarts());
490abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
491abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
492abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
493abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
494abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
495abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
496abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
497abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
498abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
499abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
500abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
501abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
502abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
503abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
504abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
505abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
506abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test stopRunningLocked when previously launched, with measurable time between
507abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * start and stop.
508abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
509abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
510abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStopRunningLockedWhileRunningNormal() throws Exception  {
511abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
512abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
513abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
514abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 777777L;
515abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
516abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
517abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
518abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
519abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
520abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
521abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
522abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.stopRunningLocked();
523abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
524abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(777777L-2021+1010, serv.getStartTime()); // <-- changed
525abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
526abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getRunning()); // <-- changed
527abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
528abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
529abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
530abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
531abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
532abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
533abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
534abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
535abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
536abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
537abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
538abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
539abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
540abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
541abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
542abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
543abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
544abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test stopRunningLocked when previously launched, with measurable time between
545abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * start and stop.
546abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
547abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
548abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testStopRunningLockedWhileRunningTooQuick() throws Exception  {
549abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl() {
550abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            @Override
551abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            public long getBatteryUptimeLocked() {
552abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                return 2021;
553abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato            }
554abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        };
555abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
556abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
557abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
558abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
559abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
560abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.stopRunningLocked();
561abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
562abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
563abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
564abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getRunning()); // <-- changed
565abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042-1, serv.getStarts()); // <-- changed
566abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
567abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
568abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
569abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
570abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
571abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
572abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
573abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
574abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
575abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
576abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
577abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
578abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
579abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
580abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
581abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
582abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test that getBatteryStats returns the BatteryStatsImpl passed in to the contstructor.
583abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
584abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
585abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testGetBatteryStats() throws Exception  {
586abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
587abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
588abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
589abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(bsi, serv.getBatteryStats());
590abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
591abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
592abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
593abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getLaunches
594abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
595abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
596abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testGetLaunches() throws Exception  {
597abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
598abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
599abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
600abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
601abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches(BatteryStats.STATS_SINCE_CHARGED));
602abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085-11118, serv.getLaunches(BatteryStats.STATS_CURRENT));
603abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085-17714, serv.getLaunches(BatteryStats.STATS_SINCE_UNPLUGGED));
604abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
605abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No change to fields
606abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
607abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
608abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
609abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
610abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
611abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
612abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
613abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
614abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
615abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
616abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
617abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
618abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
619abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
620abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
621abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
622abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
623abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
624abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
625abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
626abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getStartTime while running
627abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
628abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
629abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testGetStartTimeRunning() throws Exception  {
630abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
631abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
632abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
633abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(true);
634abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
635abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        final long startTimeToNow = 1010 + 20000 - 2021;
636abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
637abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow,
638abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_SINCE_CHARGED));
639abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow-9096,
640abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_CURRENT));
641abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow-15512,
642abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_SINCE_UNPLUGGED));
643abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
644abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No change to fields
645abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
646abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
647abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
648abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
649abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
650abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
651abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
652abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
653abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
654abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
655abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
656abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
657abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
658abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
659abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
660abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
661abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
662abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
663abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
664abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
665abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getStartTime while not running
666abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
667abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
668abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testGetStartTimeNotRunning() throws Exception  {
669abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
670abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
671abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
672abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.setRunning(false);
673abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
674abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        final long startTimeToNow = 1010;
675abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
676abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow,
677abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_SINCE_CHARGED));
678abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow-9096,
679abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_CURRENT));
680abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(startTimeToNow-15512,
681abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato                serv.getStartTime(20000, BatteryStats.STATS_SINCE_UNPLUGGED));
682abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
683abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No change to fields
684abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
685abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
686abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertFalse(serv.getRunning());
687abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
688abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
689abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
690abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
691abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
692abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
693abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
694abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
695abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
696abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
697abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
698abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
699abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
700abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
701abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
702abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
703abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
704abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    /**
705abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     * Test getStarts
706abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato     */
707abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    @SmallTest
708abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    public void testGetStarts() throws Exception  {
709abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        MockBatteryStatsImpl bsi = new MockBatteryStatsImpl();
710abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        TestServ serv = new TestServ(bsi);
711abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        serv.populate();
712abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
713abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts(BatteryStats.STATS_SINCE_CHARGED));
714abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042-10017, serv.getStarts(BatteryStats.STATS_CURRENT));
715abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042-16613, serv.getStarts(BatteryStats.STATS_SINCE_UNPLUGGED));
716abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
717abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        // No change to fields
718abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(1010, serv.getStartTime());
719abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(2021, serv.getRunningSince());
720abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getRunning());
721abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(4042, serv.getStarts());
722abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(5053, serv.getLaunchedTime());
723abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(6064, serv.getLaunchedSince());
724abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertTrue(serv.getLaunched());
725abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(8085, serv.getLaunches());
726abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(9096, serv.getLoadedStartTime());
727abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(10017, serv.getLoadedStarts());
728abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(11118, serv.getLoadedLaunches());
729abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(12219, serv.getLastStartTime());
730abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(13310, serv.getLastStarts());
731abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(14411, serv.getLastLaunches());
732abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(15512, serv.getUnpluggedStartTime());
733abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(16613, serv.getUnpluggedStarts());
734abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato        Assert.assertEquals(17714, serv.getUnpluggedLaunches());
735abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato    }
736abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
737abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato}
738abded113bde548734600dc1b6e4ce2e94f48e32eJoe Onorato
739