| Index: components/cronet/android/test/javatests/src/org/chromium/net/QuicUploadTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/QuicUploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/QuicUploadTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cdbcac4290c5aa20ac7f89004614d0c540532c3d
|
| --- /dev/null
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/QuicUploadTest.java
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.net;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.json.JSONObject;
|
| +
|
| +import java.io.OutputStream;
|
| +import java.net.HttpURLConnection;
|
| +import java.net.URL;
|
| +
|
| +/**
|
| + * Tests HttpURLConnection upload using QUIC.
|
| + */
|
| +@SuppressWarnings("deprecation")
|
| +public class QuicUploadTest extends CronetTestBase {
|
| + private CronetTestFramework mTestFramework;
|
| +
|
| + @Override
|
| + protected void setUp() throws Exception {
|
| + super.setUp();
|
| + // Load library first to create MockCertVerifier.
|
| + System.loadLibrary("cronet_tests");
|
| + CronetEngine.Builder builder = new CronetEngine.Builder(getContext());
|
| +
|
| + QuicTestServer.startQuicTestServer(getContext());
|
| +
|
| + builder.enableQUIC(true);
|
| + JSONObject quicParams = new JSONObject().put("host_whitelist", "test.example.com");
|
| + JSONObject experimentalOptions = new JSONObject().put("QUIC", quicParams);
|
| + builder.setExperimentalOptions(experimentalOptions.toString());
|
| +
|
| + builder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getServerPort(),
|
| + QuicTestServer.getServerPort());
|
| +
|
| + builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerifier());
|
| +
|
| + mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, builder);
|
| + registerHostResolver(mTestFramework);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @OnlyRunNativeCronet
|
| + // Regression testing for crbug.com/618872.
|
| + public void testOneMassiveWrite() throws Exception {
|
| + String path = "/simple.txt";
|
| + URL url = new URL(QuicTestServer.getServerURL() + path);
|
| + HttpURLConnection connection =
|
| + (HttpURLConnection) mTestFramework.mCronetEngine.openConnection(url);
|
| + connection.setDoOutput(true);
|
| + connection.setRequestMethod("POST");
|
| + byte[] largeData = new byte[195055];
|
| + for (int i = 0; i < largeData.length; i++) {
|
| + largeData[i] = 97;
|
| + }
|
| + connection.setFixedLengthStreamingMode(largeData.length);
|
| + OutputStream out = connection.getOutputStream();
|
| + // Write everything at one go, so the data is larger than the buffer
|
| + // used in CronetFixedModeOutputStream.
|
| + out.write(largeData);
|
| + assertEquals(200, connection.getResponseCode());
|
| + connection.disconnect();
|
| + }
|
| +}
|
|
|