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 android.os.ConditionVariable; | 7 import android.os.ConditionVariable; |
8 import android.os.ParcelFileDescriptor; | 8 import android.os.ParcelFileDescriptor; |
9 import android.os.StrictMode; | 9 import android.os.StrictMode; |
10 import android.test.suitebuilder.annotation.SmallTest; | 10 import android.test.suitebuilder.annotation.SmallTest; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 super.tearDown(); | 65 super.tearDown(); |
66 } finally { | 66 } finally { |
67 StrictMode.setVmPolicy(mOldVmPolicy); | 67 StrictMode.setVmPolicy(mOldVmPolicy); |
68 } | 68 } |
69 } | 69 } |
70 | 70 |
71 @SmallTest | 71 @SmallTest |
72 @Feature({"Cronet"}) | 72 @Feature({"Cronet"}) |
73 public void testFileProvider() throws Exception { | 73 public void testFileProvider() throws Exception { |
74 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 74 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
75 UrlRequest.Builder builder = | 75 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
76 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 76 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
77 callback.getExecutor(), mTestFramework.mCronetEngine); | |
78 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); | 77 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); |
79 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 78 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
80 builder.addHeader("Content-Type", "useless/string"); | 79 builder.addHeader("Content-Type", "useless/string"); |
81 builder.build().start(); | 80 builder.build().start(); |
82 callback.blockForDone(); | 81 callback.blockForDone(); |
83 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 82 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
84 assertEquals(LOREM, callback.mResponseAsString); | 83 assertEquals(LOREM, callback.mResponseAsString); |
85 } | 84 } |
86 | 85 |
87 @SmallTest | 86 @SmallTest |
88 @Feature({"Cronet"}) | 87 @Feature({"Cronet"}) |
89 public void testFileDescriptorProvider() throws Exception { | 88 public void testFileDescriptorProvider() throws Exception { |
90 ParcelFileDescriptor descriptor = | 89 ParcelFileDescriptor descriptor = |
91 ParcelFileDescriptor.open(mFile, ParcelFileDescriptor.MODE_READ_
ONLY); | 90 ParcelFileDescriptor.open(mFile, ParcelFileDescriptor.MODE_READ_
ONLY); |
92 assertTrue(descriptor.getFileDescriptor().valid()); | 91 assertTrue(descriptor.getFileDescriptor().valid()); |
93 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 92 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
94 UrlRequest.Builder builder = | 93 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
95 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 94 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
96 callback.getExecutor(), mTestFramework.mCronetEngine); | |
97 UploadDataProvider dataProvider = UploadDataProviders.create(descriptor)
; | 95 UploadDataProvider dataProvider = UploadDataProviders.create(descriptor)
; |
98 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 96 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
99 builder.addHeader("Content-Type", "useless/string"); | 97 builder.addHeader("Content-Type", "useless/string"); |
100 builder.build().start(); | 98 builder.build().start(); |
101 callback.blockForDone(); | 99 callback.blockForDone(); |
102 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 100 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
103 assertEquals(LOREM, callback.mResponseAsString); | 101 assertEquals(LOREM, callback.mResponseAsString); |
104 } | 102 } |
105 | 103 |
106 @SmallTest | 104 @SmallTest |
107 @Feature({"Cronet"}) | 105 @Feature({"Cronet"}) |
108 public void testBadFileDescriptorProvider() throws Exception { | 106 public void testBadFileDescriptorProvider() throws Exception { |
109 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 107 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
110 UrlRequest.Builder builder = | 108 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
111 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 109 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
112 callback.getExecutor(), mTestFramework.mCronetEngine); | |
113 ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); | 110 ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); |
114 try { | 111 try { |
115 UploadDataProvider dataProvider = UploadDataProviders.create(pipe[0]
); | 112 UploadDataProvider dataProvider = UploadDataProviders.create(pipe[0]
); |
116 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 113 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
117 builder.addHeader("Content-Type", "useless/string"); | 114 builder.addHeader("Content-Type", "useless/string"); |
118 builder.build().start(); | 115 builder.build().start(); |
119 callback.blockForDone(); | 116 callback.blockForDone(); |
120 | 117 |
121 assertTrue(callback.mError.getCause() instanceof IllegalArgumentExce
ption); | 118 assertTrue(callback.mError.getCause() instanceof IllegalArgumentExce
ption); |
122 } finally { | 119 } finally { |
123 pipe[1].close(); | 120 pipe[1].close(); |
124 } | 121 } |
125 } | 122 } |
126 | 123 |
127 @SmallTest | 124 @SmallTest |
128 @Feature({"Cronet"}) | 125 @Feature({"Cronet"}) |
129 public void testBufferProvider() throws Exception { | 126 public void testBufferProvider() throws Exception { |
130 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 127 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
131 UrlRequest.Builder builder = | 128 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
132 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 129 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
133 callback.getExecutor(), mTestFramework.mCronetEngine); | |
134 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); | 130 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); |
135 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 131 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
136 builder.addHeader("Content-Type", "useless/string"); | 132 builder.addHeader("Content-Type", "useless/string"); |
137 builder.build().start(); | 133 builder.build().start(); |
138 callback.blockForDone(); | 134 callback.blockForDone(); |
139 | 135 |
140 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 136 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
141 assertEquals(LOREM, callback.mResponseAsString); | 137 assertEquals(LOREM, callback.mResponseAsString); |
142 } | 138 } |
143 | 139 |
144 @SmallTest | 140 @SmallTest |
145 @Feature({"Cronet"}) | 141 @Feature({"Cronet"}) |
146 public void testNoErrorWhenCanceledDuringStart() throws Exception { | 142 public void testNoErrorWhenCanceledDuringStart() throws Exception { |
147 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 143 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
148 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), | 144 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
149 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 145 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
150 final ConditionVariable first = new ConditionVariable(); | 146 final ConditionVariable first = new ConditionVariable(); |
151 final ConditionVariable second = new ConditionVariable(); | 147 final ConditionVariable second = new ConditionVariable(); |
152 builder.addHeader("Content-Type", "useless/string"); | 148 builder.addHeader("Content-Type", "useless/string"); |
153 builder.setUploadDataProvider(new UploadDataProvider() { | 149 builder.setUploadDataProvider(new UploadDataProvider() { |
154 @Override | 150 @Override |
155 public long getLength() throws IOException { | 151 public long getLength() throws IOException { |
156 first.open(); | 152 first.open(); |
157 second.block(); | 153 second.block(); |
158 return 0; | 154 return 0; |
159 } | 155 } |
(...skipping 11 matching lines...) Expand all Loading... |
171 urlRequest.cancel(); | 167 urlRequest.cancel(); |
172 second.open(); | 168 second.open(); |
173 callback.blockForDone(); | 169 callback.blockForDone(); |
174 assertTrue(callback.mOnCanceledCalled); | 170 assertTrue(callback.mOnCanceledCalled); |
175 } | 171 } |
176 | 172 |
177 @SmallTest | 173 @SmallTest |
178 @Feature({"Cronet"}) | 174 @Feature({"Cronet"}) |
179 public void testNoErrorWhenExceptionDuringStart() throws Exception { | 175 public void testNoErrorWhenExceptionDuringStart() throws Exception { |
180 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 176 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
181 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), | 177 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
182 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 178 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
183 final ConditionVariable first = new ConditionVariable(); | 179 final ConditionVariable first = new ConditionVariable(); |
184 final String exceptionMessage = "Bad Length"; | 180 final String exceptionMessage = "Bad Length"; |
185 builder.addHeader("Content-Type", "useless/string"); | 181 builder.addHeader("Content-Type", "useless/string"); |
186 builder.setUploadDataProvider(new UploadDataProvider() { | 182 builder.setUploadDataProvider(new UploadDataProvider() { |
187 @Override | 183 @Override |
188 public long getLength() throws IOException { | 184 public long getLength() throws IOException { |
189 first.open(); | 185 first.open(); |
190 throw new IOException(exceptionMessage); | 186 throw new IOException(exceptionMessage); |
191 } | 187 } |
192 | 188 |
193 @Override | 189 @Override |
194 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) | 190 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) |
195 throws IOException {} | 191 throws IOException {} |
196 | 192 |
197 @Override | 193 @Override |
198 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} | 194 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} |
199 }, callback.getExecutor()); | 195 }, callback.getExecutor()); |
200 UrlRequest urlRequest = builder.build(); | 196 UrlRequest urlRequest = builder.build(); |
201 urlRequest.start(); | 197 urlRequest.start(); |
202 first.block(); | 198 first.block(); |
203 callback.blockForDone(); | 199 callback.blockForDone(); |
204 assertFalse(callback.mOnCanceledCalled); | 200 assertFalse(callback.mOnCanceledCalled); |
205 assertEquals(UrlRequestError.LISTENER_EXCEPTION_THROWN, callback.mError.
getErrorCode()); | 201 assertEquals(UrlRequestException.ERROR_LISTENER_EXCEPTION_THROWN, |
| 202 callback.mError.getErrorCode()); |
206 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 203 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); |
207 assertEquals(exceptionMessage, callback.mError.getCause().getMessage()); | 204 assertEquals(exceptionMessage, callback.mError.getCause().getMessage()); |
208 } | 205 } |
209 | 206 |
210 @SmallTest | 207 @SmallTest |
211 @Feature({"Cronet"}) | 208 @Feature({"Cronet"}) |
212 // Tests that creating a ByteBufferUploadProvider using a byte array with an | 209 // Tests that creating a ByteBufferUploadProvider using a byte array with an |
213 // offset gives a ByteBuffer with position 0. crbug.com/603124. | 210 // offset gives a ByteBuffer with position 0. crbug.com/603124. |
214 public void testCreateByteBufferUploadWithArrayOffset() throws Exception { | 211 public void testCreateByteBufferUploadWithArrayOffset() throws Exception { |
215 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 212 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
216 // This URL will trigger a rewind(). | 213 // This URL will trigger a rewind(). |
217 UrlRequest.Builder builder = | 214 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
218 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 215 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
219 callback.getExecutor(), mTestFramework.mCronetEngine); | |
220 builder.addHeader("Content-Type", "useless/string"); | 216 builder.addHeader("Content-Type", "useless/string"); |
221 byte[] uploadData = LOREM.getBytes("UTF-8"); | 217 byte[] uploadData = LOREM.getBytes("UTF-8"); |
222 int offset = 5; | 218 int offset = 5; |
223 byte[] uploadDataWithPadding = new byte[uploadData.length + offset]; | 219 byte[] uploadDataWithPadding = new byte[uploadData.length + offset]; |
224 System.arraycopy(uploadData, 0, uploadDataWithPadding, offset, uploadDat
a.length); | 220 System.arraycopy(uploadData, 0, uploadDataWithPadding, offset, uploadDat
a.length); |
225 UploadDataProvider dataProvider = | 221 UploadDataProvider dataProvider = |
226 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); | 222 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); |
227 assertEquals(uploadData.length, dataProvider.getLength()); | 223 assertEquals(uploadData.length, dataProvider.getLength()); |
228 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 224 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
229 UrlRequest urlRequest = builder.build(); | 225 UrlRequest urlRequest = builder.build(); |
230 urlRequest.start(); | 226 urlRequest.start(); |
231 callback.blockForDone(); | 227 callback.blockForDone(); |
232 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 228 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
233 assertEquals(LOREM, callback.mResponseAsString); | 229 assertEquals(LOREM, callback.mResponseAsString); |
234 } | 230 } |
235 } | 231 } |
OLD | NEW |