OLD | NEW |
---|---|
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 import static junit.framework.Assert.assertTrue; | 9 import static junit.framework.Assert.assertTrue; |
10 | 10 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
42 } | 42 } |
43 } | 43 } |
44 } | 44 } |
45 | 45 |
46 /** | 46 /** |
47 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info | 47 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info |
48 */ | 48 */ |
49 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener { | 49 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener { |
50 private RequestFinishedInfo mRequestInfo; | 50 private RequestFinishedInfo mRequestInfo; |
51 private ConditionVariable mBlock; | 51 private ConditionVariable mBlock; |
52 private int mNumExpectedRequests = -1; | |
53 | 52 |
54 // TODO(mgersh): it's weird that you can use either this constructor or blockUntilDone() but | 53 // TODO(mgersh): it's weird that you can use either this constructor or blockUntilDone() but |
55 // not both. Either clean it up or document why it has to work this way. | 54 // not both. Either clean it up or document why it has to work this way. |
56 public TestRequestFinishedListener(Executor executor) { | 55 public TestRequestFinishedListener(Executor executor) { |
57 super(executor); | 56 super(executor); |
58 } | 57 } |
59 | 58 |
60 public TestRequestFinishedListener(int numExpectedRequests) { | |
61 super(Executors.newSingleThreadExecutor()); | |
62 mNumExpectedRequests = numExpectedRequests; | |
63 mBlock = new ConditionVariable(); | |
64 } | |
65 | |
66 public TestRequestFinishedListener() { | 59 public TestRequestFinishedListener() { |
67 super(Executors.newSingleThreadExecutor()); | 60 super(Executors.newSingleThreadExecutor()); |
68 mNumExpectedRequests = 1; | |
69 mBlock = new ConditionVariable(); | 61 mBlock = new ConditionVariable(); |
70 } | 62 } |
71 | 63 |
72 public RequestFinishedInfo getRequestInfo() { | 64 public RequestFinishedInfo getRequestInfo() { |
73 return mRequestInfo; | 65 return mRequestInfo; |
74 } | 66 } |
75 | 67 |
76 @Override | 68 @Override |
77 public void onRequestFinished(RequestFinishedInfo requestInfo) { | 69 public void onRequestFinished(RequestFinishedInfo requestInfo) { |
78 assertNull("onRequestFinished called repeatedly", mRequestInfo); | 70 assertNull("onRequestFinished called repeatedly", mRequestInfo); |
79 assertNotNull(requestInfo); | 71 assertNotNull(requestInfo); |
80 mRequestInfo = requestInfo; | 72 mRequestInfo = requestInfo; |
81 mNumExpectedRequests--; | 73 mBlock.open(); |
82 if (mNumExpectedRequests == 0) { | |
83 mBlock.open(); | |
84 } | |
85 } | 74 } |
86 | 75 |
87 public void blockUntilDone() { | 76 public void blockUntilDone() { |
88 mBlock.block(); | 77 mBlock.block(); |
89 } | 78 } |
90 | 79 |
91 public void reset() { | 80 public void reset() { |
92 mBlock.close(); | 81 mBlock.close(); |
93 mNumExpectedRequests = 1; | |
94 mRequestInfo = null; | 82 mRequestInfo = null; |
95 } | 83 } |
96 } | 84 } |
97 | 85 |
86 // Helper method to assert date2 is equals to or after date1. | |
87 // Some implementation of java.util.Date broke asymmetric property, so | |
mgersh
2016/10/06 14:44:09
Huh, weird. I'm curious where?
nit: "asymmetric p
xunjieli
2016/10/06 16:14:21
Done. ah, you are right!
http://stackoverflow.com
xunjieli
2016/10/06 16:16:17
s/paranoia/paranoid
| |
88 // check both directions. | |
89 public static void assertAfter(Date date1, Date date2) { | |
mgersh
2016/10/06 14:44:09
Thanks for adding this. There are a few places in
xunjieli
2016/10/06 16:14:21
Acknowledged. I will leave it to you then. My brai
| |
90 assertTrue("date1: " + date1.getTime() + ", date2: " + date2.getTime(), | |
91 date1.after(date2) || date1.equals(date2) || date2.equals(date1) ); | |
92 } | |
93 | |
98 /** | 94 /** |
99 * Check existence of all the timing metrics that apply to most test request s, | 95 * Check existence of all the timing metrics that apply to most test request s, |
100 * except those that come from net::LoadTimingInfo::ConnectTiming. | 96 * except those that come from net::LoadTimingInfo::ConnectTiming. |
101 * Also check some timing differences, focusing on things we can't check wit h asserts in the | 97 * Also check some timing differences, focusing on things we can't check wit h asserts in the |
102 * CronetMetrics constructor. | 98 * CronetMetrics constructor. |
103 * Don't check push times here. | 99 * Don't check push times here. |
104 */ | 100 */ |
105 public static void checkTimingMetrics( | 101 public static void checkTimingMetrics( |
106 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) { | 102 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) { |
107 assertNotNull(metrics.getRequestStart()); | 103 assertNotNull(metrics.getRequestStart()); |
108 assertTrue(metrics.getRequestStart().after(startTime) | 104 assertAfter(metrics.getRequestStart(), startTime); |
109 || metrics.getRequestStart().equals(startTime)); | |
110 assertNotNull(metrics.getSendingStart()); | 105 assertNotNull(metrics.getSendingStart()); |
111 assertTrue(metrics.getSendingStart().after(startTime) | 106 assertAfter(metrics.getSendingStart(), startTime); |
112 || metrics.getSendingStart().equals(startTime)); | |
113 assertNotNull(metrics.getSendingEnd()); | 107 assertNotNull(metrics.getSendingEnd()); |
114 assertTrue(metrics.getSendingEnd().before(endTime)); | 108 assertTrue(metrics.getSendingEnd().before(endTime)); |
115 assertNotNull(metrics.getResponseStart()); | 109 assertNotNull(metrics.getResponseStart()); |
116 assertTrue(metrics.getResponseStart().after(startTime)); | 110 assertTrue(metrics.getResponseStart().after(startTime)); |
117 assertNotNull(metrics.getResponseEnd()); | 111 assertNotNull(metrics.getResponseEnd()); |
118 assertTrue(metrics.getResponseEnd().before(endTime) | 112 assertAfter(endTime, metrics.getResponseEnd()); |
119 || metrics.getResponseEnd().equals(endTime)); | |
120 // Entire request should take more than 0 ms | 113 // Entire request should take more than 0 ms |
121 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0); | 114 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0); |
122 } | 115 } |
123 | 116 |
124 /** | 117 /** |
125 * Check that the timing metrics which come from net::LoadTimingInfo::Connec tTiming exist, | 118 * Check that the timing metrics which come from net::LoadTimingInfo::Connec tTiming exist, |
126 * except SSL times in the case of non-https requests. | 119 * except SSL times in the case of non-https requests. |
127 */ | 120 */ |
128 public static void checkHasConnectTiming( | 121 public static void checkHasConnectTiming( |
129 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, b oolean isSsl) { | 122 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, b oolean isSsl) { |
130 assertNotNull(metrics.getDnsStart()); | 123 assertNotNull(metrics.getDnsStart()); |
131 assertTrue( | 124 assertAfter(metrics.getDnsStart(), startTime); |
132 metrics.getDnsStart().after(startTime) || metrics.getDnsStart(). equals(startTime)); | |
133 assertNotNull(metrics.getDnsEnd()); | 125 assertNotNull(metrics.getDnsEnd()); |
134 assertTrue(metrics.getDnsEnd().before(endTime)); | 126 assertTrue(metrics.getDnsEnd().before(endTime)); |
135 assertNotNull(metrics.getConnectStart()); | 127 assertNotNull(metrics.getConnectStart()); |
136 assertTrue(metrics.getConnectStart().after(startTime) | 128 assertAfter(metrics.getConnectStart(), startTime); |
137 || metrics.getConnectStart().equals(startTime)); | |
138 assertNotNull(metrics.getConnectEnd()); | 129 assertNotNull(metrics.getConnectEnd()); |
139 assertTrue(metrics.getConnectEnd().before(endTime)); | 130 assertTrue(metrics.getConnectEnd().before(endTime)); |
140 if (isSsl) { | 131 if (isSsl) { |
141 assertNotNull(metrics.getSslStart()); | 132 assertNotNull(metrics.getSslStart()); |
142 assertTrue(metrics.getSslStart().after(startTime) | 133 assertAfter(metrics.getSslStart(), startTime); |
143 || metrics.getSslStart().equals(startTime)); | |
144 assertNotNull(metrics.getSslEnd()); | 134 assertNotNull(metrics.getSslEnd()); |
145 assertTrue(metrics.getSslEnd().before(endTime)); | 135 assertTrue(metrics.getSslEnd().before(endTime)); |
146 } else { | 136 } else { |
147 assertNull(metrics.getSslStart()); | 137 assertNull(metrics.getSslStart()); |
148 assertNull(metrics.getSslEnd()); | 138 assertNull(metrics.getSslEnd()); |
149 } | 139 } |
150 } | 140 } |
151 | 141 |
152 /** | 142 /** |
153 * Check that the timing metrics from net::LoadTimingInfo::ConnectTiming don 't exist. | 143 * Check that the timing metrics from net::LoadTimingInfo::ConnectTiming don 't exist. |
154 */ | 144 */ |
155 public static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) { | 145 public static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) { |
156 assertNull(metrics.getDnsStart()); | 146 assertNull(metrics.getDnsStart()); |
157 assertNull(metrics.getDnsEnd()); | 147 assertNull(metrics.getDnsEnd()); |
158 assertNull(metrics.getSslStart()); | 148 assertNull(metrics.getSslStart()); |
159 assertNull(metrics.getSslEnd()); | 149 assertNull(metrics.getSslEnd()); |
160 assertNull(metrics.getConnectStart()); | 150 assertNull(metrics.getConnectStart()); |
161 assertNull(metrics.getConnectEnd()); | 151 assertNull(metrics.getConnectEnd()); |
162 } | 152 } |
163 } | 153 } |
OLD | NEW |