Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1118)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java

Issue 2766373004: Convert the rest of chrome_public_test_apk InstrumentationTestCases to JUnit4 (Closed)
Patch Set: nits and rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.precache; 5 package org.chromium.chrome.browser.precache;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.Intent; 8 import android.content.Intent;
9 import android.content.SharedPreferences.Editor; 9 import android.content.SharedPreferences.Editor;
10 import android.support.test.InstrumentationRegistry;
11 import android.support.test.annotation.UiThreadTest;
10 import android.support.test.filters.SmallTest; 12 import android.support.test.filters.SmallTest;
11 import android.test.InstrumentationTestCase; 13 import android.support.test.rule.UiThreadTestRule;
12 14
13 import com.google.android.gms.gcm.GcmNetworkManager; 15 import com.google.android.gms.gcm.GcmNetworkManager;
14 import com.google.android.gms.gcm.Task; 16 import com.google.android.gms.gcm.Task;
15 17
18 import org.junit.After;
19 import org.junit.Assert;
20 import org.junit.Before;
21 import org.junit.Rule;
22 import org.junit.Test;
23 import org.junit.runner.RunWith;
24
16 import org.chromium.base.ContextUtils; 25 import org.chromium.base.ContextUtils;
17 import org.chromium.base.metrics.RecordHistogram; 26 import org.chromium.base.metrics.RecordHistogram;
18 import org.chromium.base.test.util.AdvancedMockContext; 27 import org.chromium.base.test.util.AdvancedMockContext;
19 import org.chromium.base.test.util.Feature; 28 import org.chromium.base.test.util.Feature;
20 import org.chromium.base.test.util.RetryOnFailure; 29 import org.chromium.base.test.util.RetryOnFailure;
30 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
21 import org.chromium.components.precache.MockDeviceState; 31 import org.chromium.components.precache.MockDeviceState;
22 32
23 /** 33 /**
24 * Tests of {@link PrecacheController}. 34 * Tests of {@link PrecacheController}.
25 */ 35 */
26 public class PrecacheControllerTest extends InstrumentationTestCase { 36 @RunWith(ChromeJUnit4ClassRunner.class)
37 public class PrecacheControllerTest {
27 private Context mContext; 38 private Context mContext;
28 private MockPrecacheLauncher mPrecacheLauncher; 39 private MockPrecacheLauncher mPrecacheLauncher;
29 private MockPrecacheController mPrecacheController; 40 private MockPrecacheController mPrecacheController;
30 private MockPrecacheTaskScheduler mPrecacheTaskScheduler; 41 private MockPrecacheTaskScheduler mPrecacheTaskScheduler;
31 42
43 @Rule
44 public UiThreadTestRule mRule = new UiThreadTestRule();
45
32 /** 46 /**
33 * Mock of the {@link PrecacheLauncher}. 47 * Mock of the {@link PrecacheLauncher}.
34 */ 48 */
35 static class MockPrecacheLauncher extends PrecacheLauncher { 49 static class MockPrecacheLauncher extends PrecacheLauncher {
36 50
37 private MockPrecacheController mController; 51 private MockPrecacheController mController;
38 52
39 public int destroyCnt = 0; 53 public int destroyCnt = 0;
40 public int startCnt = 0; 54 public int startCnt = 0;
41 public int cancelCnt = 0; 55 public int cancelCnt = 0;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 boolean cancelTask(Context context, String tag) { 105 boolean cancelTask(Context context, String tag) {
92 if (PrecacheController.PERIODIC_TASK_TAG.equals(tag)) { 106 if (PrecacheController.PERIODIC_TASK_TAG.equals(tag)) {
93 cancelPeriodicCnt++; 107 cancelPeriodicCnt++;
94 } else if (PrecacheController.CONTINUATION_TASK_TAG.equals(tag)) { 108 } else if (PrecacheController.CONTINUATION_TASK_TAG.equals(tag)) {
95 cancelContinuationCnt++; 109 cancelContinuationCnt++;
96 } 110 }
97 return true; 111 return true;
98 } 112 }
99 } 113 }
100 114
101 @Override 115 @Before
102 protected void setUp() throws Exception { 116 public void setUp() throws Exception {
103 super.setUp(); 117 mContext = new AdvancedMockContext(
104 mContext = new AdvancedMockContext(getInstrumentation().getTargetContext ()); 118 InstrumentationRegistry.getInstrumentation().getTargetContext()) ;
105 mPrecacheLauncher = new MockPrecacheLauncher(); 119 mPrecacheLauncher = new MockPrecacheLauncher();
106 mPrecacheController = new MockPrecacheController(mContext); 120 mPrecacheController = new MockPrecacheController(mContext);
107 mPrecacheTaskScheduler = new MockPrecacheTaskScheduler(); 121 mPrecacheTaskScheduler = new MockPrecacheTaskScheduler();
108 mPrecacheLauncher.setController(mPrecacheController); 122 mPrecacheLauncher.setController(mPrecacheController);
109 mPrecacheController.setPrecacheLauncher(mPrecacheLauncher); 123 mPrecacheController.setPrecacheLauncher(mPrecacheLauncher);
110 PrecacheController.setTaskScheduler(mPrecacheTaskScheduler); 124 PrecacheController.setTaskScheduler(mPrecacheTaskScheduler);
111 RecordHistogram.setDisabledForTests(true); 125 RecordHistogram.setDisabledForTests(true);
112 Editor editor = ContextUtils.getAppSharedPreferences().edit(); 126 Editor editor = ContextUtils.getAppSharedPreferences().edit();
113 editor.putBoolean(PrecacheController.PREF_IS_PRECACHING_ENABLED, false); 127 editor.putBoolean(PrecacheController.PREF_IS_PRECACHING_ENABLED, false);
114 editor.apply(); 128 editor.apply();
115 } 129 }
116 130
117 @Override 131 @After
118 public void tearDown() throws Exception { 132 public void tearDown() throws Exception {
119 super.tearDown();
120 RecordHistogram.setDisabledForTests(false); 133 RecordHistogram.setDisabledForTests(false);
121 } 134 }
122 135
123 protected void verifyScheduledAndCanceledCounts( 136 protected void verifyScheduledAndCanceledCounts(
124 int expectedPeriodicScheduled, int expectedContinuationScheduled, 137 int expectedPeriodicScheduled, int expectedContinuationScheduled,
125 int expectedPeriodicCanceled, int expectedContinuationCanceled) { 138 int expectedPeriodicCanceled, int expectedContinuationCanceled) {
126 if (!mPrecacheTaskScheduler.canScheduleTasks(mContext)) { 139 if (!mPrecacheTaskScheduler.canScheduleTasks(mContext)) {
127 expectedPeriodicScheduled = 0; 140 expectedPeriodicScheduled = 0;
128 expectedContinuationScheduled = 0; 141 expectedContinuationScheduled = 0;
129 } 142 }
130 assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.scheduleP eriodicCnt); 143 Assert.assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.sc hedulePeriodicCnt);
131 assertEquals(expectedContinuationScheduled, mPrecacheTaskScheduler.sched uleContinuationCnt); 144 Assert.assertEquals(
132 assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.cancelPeri odicCnt); 145 expectedContinuationScheduled, mPrecacheTaskScheduler.scheduleCo ntinuationCnt);
133 assertEquals(expectedContinuationCanceled, mPrecacheTaskScheduler.cancel ContinuationCnt); 146 Assert.assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.can celPeriodicCnt);
147 Assert.assertEquals(
148 expectedContinuationCanceled, mPrecacheTaskScheduler.cancelConti nuationCnt);
134 } 149 }
135 150
136 protected void verifyLockCounts(int expectedAcquired, int expectedReleased) { 151 protected void verifyLockCounts(int expectedAcquired, int expectedReleased) {
137 assertEquals(expectedAcquired, mPrecacheController.acquiredLockCnt); 152 Assert.assertEquals(expectedAcquired, mPrecacheController.acquiredLockCn t);
138 assertEquals(expectedReleased, mPrecacheController.releasedLockCnt); 153 Assert.assertEquals(expectedReleased, mPrecacheController.releasedLockCn t);
139 } 154 }
140 155
141 protected void verifyBeginPrecaching() { 156 protected void verifyBeginPrecaching() {
142 PrecacheController.setIsPrecachingEnabled(mContext, true); 157 PrecacheController.setIsPrecachingEnabled(mContext, true);
143 assertEquals(GcmNetworkManager.RESULT_SUCCESS, 158 Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS,
144 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA G)); 159 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA G));
145 assertTrue(mPrecacheController.isPrecaching()); 160 Assert.assertTrue(mPrecacheController.isPrecaching());
146 verifyLockCounts(1, 0); 161 verifyLockCounts(1, 0);
147 // Any existing completion tasks are canceled. 162 // Any existing completion tasks are canceled.
148 verifyScheduledAndCanceledCounts(1, 0, 0, 1); 163 verifyScheduledAndCanceledCounts(1, 0, 0, 1);
149 assertEquals(1, mPrecacheLauncher.startCnt); 164 Assert.assertEquals(1, mPrecacheLauncher.startCnt);
150 } 165 }
151 166
152 protected void verifyContinuationGetsPreemptedByPeriodicTask() { 167 protected void verifyContinuationGetsPreemptedByPeriodicTask() {
153 PrecacheController.setIsPrecachingEnabled(mContext, true); 168 PrecacheController.setIsPrecachingEnabled(mContext, true);
154 assertEquals(GcmNetworkManager.RESULT_SUCCESS, 169 Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS,
155 mPrecacheController.precache(PrecacheController.CONTINUATION_TAS K_TAG)); 170 mPrecacheController.precache(PrecacheController.CONTINUATION_TAS K_TAG));
156 assertTrue(mPrecacheController.isPrecaching()); 171 Assert.assertTrue(mPrecacheController.isPrecaching());
157 verifyLockCounts(1, 0); 172 verifyLockCounts(1, 0);
158 // Any existing completion tasks are canceled. 173 // Any existing completion tasks are canceled.
159 verifyScheduledAndCanceledCounts(1, 0, 0, 1); 174 verifyScheduledAndCanceledCounts(1, 0, 0, 1);
160 assertEquals(1, mPrecacheLauncher.startCnt); 175 Assert.assertEquals(1, mPrecacheLauncher.startCnt);
161 } 176 }
162 177
178 @Test
163 @SmallTest 179 @SmallTest
164 @Feature({"Precache"}) 180 @Feature({"Precache"})
181 @UiThreadTest
165 public void testStartPrecachingNotEnabled() { 182 public void testStartPrecachingNotEnabled() {
166 PrecacheController.setIsPrecachingEnabled(mContext, false); 183 PrecacheController.setIsPrecachingEnabled(mContext, false);
167 verifyScheduledAndCanceledCounts(0, 0, 0, 0); 184 verifyScheduledAndCanceledCounts(0, 0, 0, 0);
168 assertEquals(0, mPrecacheLauncher.startCnt); 185 Assert.assertEquals(0, mPrecacheLauncher.startCnt);
169 assertTrue(mPrecacheController.precache(PrecacheController.PERIODIC_TASK _TAG) 186 Assert.assertTrue(mPrecacheController.precache(PrecacheController.PERIOD IC_TASK_TAG)
170 == GcmNetworkManager.RESULT_SUCCESS); 187 == GcmNetworkManager.RESULT_SUCCESS);
171 assertFalse(mPrecacheController.isPrecaching()); 188 Assert.assertFalse(mPrecacheController.isPrecaching());
172 verifyLockCounts(0, 0); 189 verifyLockCounts(0, 0);
173 // All tasks are canceled. 190 // All tasks are canceled.
174 verifyScheduledAndCanceledCounts(0, 0, 1, 1); 191 verifyScheduledAndCanceledCounts(0, 0, 1, 1);
175 assertEquals(0, mPrecacheLauncher.startCnt); 192 Assert.assertEquals(0, mPrecacheLauncher.startCnt);
176 } 193 }
177 194
195 @Test
178 @SmallTest 196 @SmallTest
179 @Feature({"Precache"}) 197 @Feature({"Precache"})
198 @UiThreadTest
180 public void testStartPrecachingEnabled() { 199 public void testStartPrecachingEnabled() {
181 verifyBeginPrecaching(); 200 verifyBeginPrecaching();
182 201
183 mPrecacheLauncher.onPrecacheCompleted(true); 202 mPrecacheLauncher.onPrecacheCompleted(true);
184 assertFalse(mPrecacheController.isPrecaching()); 203 Assert.assertFalse(mPrecacheController.isPrecaching());
185 // A continuation task is scheduled. 204 // A continuation task is scheduled.
186 verifyScheduledAndCanceledCounts(1, 1, 0, 1); 205 verifyScheduledAndCanceledCounts(1, 1, 0, 1);
187 verifyLockCounts(1, 1); 206 verifyLockCounts(1, 1);
188 } 207 }
189 208
209 @Test
190 @SmallTest 210 @SmallTest
191 @Feature({"Precache"}) 211 @Feature({"Precache"})
212 @UiThreadTest
192 @RetryOnFailure 213 @RetryOnFailure
193 public void testStartWhenAlreadyStarted() { 214 public void testStartWhenAlreadyStarted() {
194 verifyBeginPrecaching(); 215 verifyBeginPrecaching();
195 216
196 assertEquals(GcmNetworkManager.RESULT_FAILURE, 217 Assert.assertEquals(GcmNetworkManager.RESULT_FAILURE,
197 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA G)); 218 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA G));
198 assertTrue(mPrecacheController.isPrecaching()); 219 Assert.assertTrue(mPrecacheController.isPrecaching());
199 // No additional tasks are scheduled or canceled. 220 // No additional tasks are scheduled or canceled.
200 verifyScheduledAndCanceledCounts(1, 0, 0, 1); 221 verifyScheduledAndCanceledCounts(1, 0, 0, 1);
201 verifyLockCounts(1, 0); 222 verifyLockCounts(1, 0);
202 } 223 }
203 224
225 @Test
204 @SmallTest 226 @SmallTest
205 @Feature({"Precache"}) 227 @Feature({"Precache"})
228 @UiThreadTest
206 @RetryOnFailure 229 @RetryOnFailure
207 public void testDeviceStateChangeCancels() { 230 public void testDeviceStateChangeCancels() {
208 verifyBeginPrecaching(); 231 verifyBeginPrecaching();
209 232
210 mPrecacheController.setDeviceState(new MockDeviceState(0, true, false)); 233 mPrecacheController.setDeviceState(new MockDeviceState(0, true, false));
211 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent()); 234 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent());
212 assertFalse(mPrecacheController.isPrecaching()); 235 Assert.assertFalse(mPrecacheController.isPrecaching());
213 // A continuation task is scheduled. 236 // A continuation task is scheduled.
214 verifyScheduledAndCanceledCounts(1, 1, 0, 1); 237 verifyScheduledAndCanceledCounts(1, 1, 0, 1);
215 verifyLockCounts(1, 1); 238 verifyLockCounts(1, 1);
216 } 239 }
217 240
241 @Test
218 @SmallTest 242 @SmallTest
219 @Feature({"Precache"}) 243 @Feature({"Precache"})
244 @UiThreadTest
220 public void testDeviceStateChangeDoesNotCancel() { 245 public void testDeviceStateChangeDoesNotCancel() {
221 verifyBeginPrecaching(); 246 verifyBeginPrecaching();
222 247
223 mPrecacheController.setDeviceState(new MockDeviceState(0, true, true)); 248 mPrecacheController.setDeviceState(new MockDeviceState(0, true, true));
224 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent()); 249 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent());
225 assertTrue(mPrecacheController.isPrecaching()); 250 Assert.assertTrue(mPrecacheController.isPrecaching());
226 // No additional tasks are scheduled or canceled. 251 // No additional tasks are scheduled or canceled.
227 verifyScheduledAndCanceledCounts(1, 0, 0, 1); 252 verifyScheduledAndCanceledCounts(1, 0, 0, 1);
228 verifyLockCounts(1, 0); 253 verifyLockCounts(1, 0);
229 } 254 }
230 255
256 @Test
231 @SmallTest 257 @SmallTest
232 @Feature({"Precache"}) 258 @Feature({"Precache"})
259 @UiThreadTest
233 @RetryOnFailure 260 @RetryOnFailure
234 public void testDeviceStateChangeWhenNotPrecaching() { 261 public void testDeviceStateChangeWhenNotPrecaching() {
235 assertFalse(mPrecacheController.isPrecaching()); 262 Assert.assertFalse(mPrecacheController.isPrecaching());
236 mPrecacheController.setDeviceState(new MockDeviceState(0, false, true)); 263 mPrecacheController.setDeviceState(new MockDeviceState(0, false, true));
237 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent()); 264 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int ent());
238 assertFalse(mPrecacheController.isPrecaching()); 265 Assert.assertFalse(mPrecacheController.isPrecaching());
239 // No tasks are scheduled or canceled. 266 // No tasks are scheduled or canceled.
240 verifyScheduledAndCanceledCounts(0, 0, 0, 0); 267 verifyScheduledAndCanceledCounts(0, 0, 0, 0);
241 verifyLockCounts(0, 0); 268 verifyLockCounts(0, 0);
242 // device state change when not running has no effect (maybe unregisters ) 269 // device state change when not running has no effect (maybe unregisters )
243 } 270 }
244 271
272 @Test
245 @SmallTest 273 @SmallTest
246 @Feature({"Precache"}) 274 @Feature({"Precache"})
275 @UiThreadTest
247 @RetryOnFailure 276 @RetryOnFailure
248 public void testTimeoutCancelsPrecaching() { 277 public void testTimeoutCancelsPrecaching() {
249 verifyBeginPrecaching(); 278 verifyBeginPrecaching();
250 279
251 mPrecacheController.getTimeoutRunnable().run(); 280 mPrecacheController.getTimeoutRunnable().run();
252 assertFalse(mPrecacheController.isPrecaching()); 281 Assert.assertFalse(mPrecacheController.isPrecaching());
253 // A continuation task is scheduled. 282 // A continuation task is scheduled.
254 verifyScheduledAndCanceledCounts(1, 1, 0, 1); 283 verifyScheduledAndCanceledCounts(1, 1, 0, 1);
255 verifyLockCounts(1, 1); 284 verifyLockCounts(1, 1);
256 } 285 }
257 286
287 @Test
258 @SmallTest 288 @SmallTest
259 @Feature({"Precache"}) 289 @Feature({"Precache"})
290 @UiThreadTest
260 @RetryOnFailure 291 @RetryOnFailure
261 public void testTimeoutDoesNotCancelIfNotPrecaching() { 292 public void testTimeoutDoesNotCancelIfNotPrecaching() {
262 assertFalse(mPrecacheController.isPrecaching()); 293 Assert.assertFalse(mPrecacheController.isPrecaching());
263 294
264 mPrecacheController.getTimeoutRunnable().run(); 295 mPrecacheController.getTimeoutRunnable().run();
265 assertFalse(mPrecacheController.isPrecaching()); 296 Assert.assertFalse(mPrecacheController.isPrecaching());
266 // No tasks are scheduled or canceled. 297 // No tasks are scheduled or canceled.
267 verifyScheduledAndCanceledCounts(0, 0, 0, 0); 298 verifyScheduledAndCanceledCounts(0, 0, 0, 0);
268 verifyLockCounts(0, 0); 299 verifyLockCounts(0, 0);
269 } 300 }
270 301
302 @Test
271 @SmallTest 303 @SmallTest
272 @Feature({"Precache"}) 304 @Feature({"Precache"})
305 @UiThreadTest
273 @RetryOnFailure 306 @RetryOnFailure
274 public void testPrecachingEnabledPreferences() { 307 public void testPrecachingEnabledPreferences() {
275 // Initial enable will schedule a periodic task. 308 // Initial enable will schedule a periodic task.
276 PrecacheController.setIsPrecachingEnabled(mContext, true); 309 PrecacheController.setIsPrecachingEnabled(mContext, true);
277 verifyScheduledAndCanceledCounts(1, 0, 0, 0); 310 verifyScheduledAndCanceledCounts(1, 0, 0, 0);
278 // Subsequent enable will not schedule or cancel tasks. 311 // Subsequent enable will not schedule or cancel tasks.
279 PrecacheController.setIsPrecachingEnabled(mContext, true); 312 PrecacheController.setIsPrecachingEnabled(mContext, true);
280 verifyScheduledAndCanceledCounts(1, 0, 0, 0); 313 verifyScheduledAndCanceledCounts(1, 0, 0, 0);
281 314
282 // Disabling will cancel periodic and one-off tasks. 315 // Disabling will cancel periodic and one-off tasks.
283 PrecacheController.setIsPrecachingEnabled(mContext, false); 316 PrecacheController.setIsPrecachingEnabled(mContext, false);
284 verifyScheduledAndCanceledCounts(1, 0, 1, 1); 317 verifyScheduledAndCanceledCounts(1, 0, 1, 1);
285 // Subsequent disable will not schedule or cancel tasks. 318 // Subsequent disable will not schedule or cancel tasks.
286 PrecacheController.setIsPrecachingEnabled(mContext, false); 319 PrecacheController.setIsPrecachingEnabled(mContext, false);
287 verifyScheduledAndCanceledCounts(1, 0, 1, 1); 320 verifyScheduledAndCanceledCounts(1, 0, 1, 1);
288 } 321 }
289 } 322 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698