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

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

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Rebase & Conflict Resolution Created 4 years, 1 month 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 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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698