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

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java

Issue 2393543003: Modify TestRequestFinishedListener to block for finished requests (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.net; 5 package org.chromium.net;
6 6
7 import static junit.framework.Assert.assertNotNull; 7 import static junit.framework.Assert.assertNotNull;
8 import static junit.framework.Assert.assertNull; 8 import static junit.framework.Assert.assertNull;
9 9
10 import android.os.ConditionVariable;
11
10 import java.util.LinkedList; 12 import java.util.LinkedList;
11 import java.util.NoSuchElementException; 13 import java.util.NoSuchElementException;
12 import java.util.concurrent.Executor; 14 import java.util.concurrent.Executor;
15 import java.util.concurrent.Executors;
13 16
14 /** 17 /**
15 * Classes which are useful for testing Cronet's metrics implementation and are needed in more than 18 * Classes which are useful for testing Cronet's metrics implementation and are needed in more than
16 * one test file. 19 * one test file.
17 */ 20 */
18 public class MetricsTestUtil { 21 public class MetricsTestUtil {
19 /** 22 /**
20 * Executor which runs tasks only when told to with runAllTasks(). 23 * Executor which runs tasks only when told to with runAllTasks().
21 */ 24 */
22 public static class TestExecutor implements Executor { 25 public static class TestExecutor implements Executor {
23 private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable> (); 26 private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable> ();
24 27
25 @Override 28 @Override
26 public void execute(Runnable task) { 29 public void execute(Runnable task) {
27 mTaskQueue.add(task); 30 mTaskQueue.add(task);
28 } 31 }
29 32
30 public void runAllTasks() { 33 public void runAllTasks() {
31 try { 34 try {
32 while (mTaskQueue.size() > 0) { 35 while (mTaskQueue.size() > 0) {
33 mTaskQueue.remove().run(); 36 mTaskQueue.remove().run();
34 } 37 }
35 } catch (NoSuchElementException e) { 38 } catch (NoSuchElementException e) {
36 throw new RuntimeException("Task was removed during iteration", e); 39 throw new RuntimeException("Task was removed during iteration", e);
37 } 40 }
38 } 41 }
39 } 42 }
40 43
41 /** 44 /**
42 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info 45 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info
43 */ 46 */
44 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener { 47 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener {
45 private RequestFinishedInfo mRequestInfo; 48 private RequestFinishedInfo mRequestInfo;
49 private ConditionVariable mBlock;
50 private int mNumExpectedRequests = -1;
46 51
47 public TestRequestFinishedListener(Executor executor) { 52 public TestRequestFinishedListener(Executor executor) {
48 super(executor); 53 super(executor);
49 } 54 }
50 55
56 public TestRequestFinishedListener(int numExpectedRequests) {
57 super(Executors.newSingleThreadExecutor());
58 mNumExpectedRequests = numExpectedRequests;
59 mBlock = new ConditionVariable();
60 }
61
62 public TestRequestFinishedListener() {
63 super(Executors.newSingleThreadExecutor());
64 mNumExpectedRequests = 1;
65 mBlock = new ConditionVariable();
66 }
67
51 public RequestFinishedInfo getRequestInfo() { 68 public RequestFinishedInfo getRequestInfo() {
52 return mRequestInfo; 69 return mRequestInfo;
53 } 70 }
54 71
55 @Override 72 @Override
56 public void onRequestFinished(RequestFinishedInfo requestInfo) { 73 public void onRequestFinished(RequestFinishedInfo requestInfo) {
57 assertNull("onRequestFinished called repeatedly", mRequestInfo); 74 assertNull("onRequestFinished called repeatedly", mRequestInfo);
58 assertNotNull(requestInfo); 75 assertNotNull(requestInfo);
59 mRequestInfo = requestInfo; 76 mRequestInfo = requestInfo;
77 mNumExpectedRequests--;
78 if (mNumExpectedRequests == 0) {
79 mBlock.open();
80 }
81 }
82
83 public void blockUntilDone() {
84 mBlock.block();
60 } 85 }
61 } 86 }
62 } 87 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698