Chromium Code Reviews| Index: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUploadTest.java |
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUploadTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..01e3e8d3842e68b70d8dab888843bb574692c47c |
| --- /dev/null |
| +++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUploadTest.java |
| @@ -0,0 +1,178 @@ |
| +// Copyright 2014 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.cronet_test_apk; |
| + |
| +import android.test.suitebuilder.annotation.SmallTest; |
| + |
| +import org.chromium.base.test.util.Feature; |
| +import org.chromium.net.CronetUploadDataStream; |
| + |
| +import java.util.concurrent.ExecutorService; |
| + |
| +public class CronetUploadTest extends CronetTestBase { |
| + private CronetTestActivity mActivity; |
| + private TestDrivenDataProvider mDataProvider; |
| + private CronetUploadDataStream mUploadDataStream; |
| + private UploadDataStreamHandler mHandler; |
| + |
| + @Override |
| + protected void setUp() throws Exception { |
| + super.setUp(); |
| + mActivity = launchCronetTestApp(); |
| + ExecutorService executor = Executors.newSingleThreadExecutor(); |
| + mDataProvider = new TestDrivenDataProvider(executor); |
| + mDataProvider.addRead("hello".getBytes()); |
| + mUploadDataStream = new CronetUploadDataStream(mDataProvider, executor); |
| + mHandler = new UploadDataStreamHandler(mUploadDataStream.createAdapter()); |
|
mmenke
2015/01/21 18:48:58
Need to destroy the handler's C-side stuff in tear
xunjieli
2015/01/21 23:49:23
Done.
|
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testResetBeforeRewindCompleted() throws Exception { |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
|
mmenke
2015/01/21 18:48:58
These should be capitalized. Also suggest to put
xunjieli
2015/01/21 23:49:23
Done.
|
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
|
mmenke
2015/01/21 18:48:58
Suggest some line breaks in here to make these eas
xunjieli
2015/01/21 23:49:23
Done.
|
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + mHandler.waitForReadComplete(); |
| + assertEquals(0, mDataProvider.getNumRewindCalls()); |
| + assertEquals("hello", mHandler.getData()); |
| + mHandler.reset(); |
| + assertEquals("", mHandler.getData()); |
| + assertFalse(mHandler.init()); // make sure init is asynchronous. |
| + mDataProvider.waitForRewindRequest(); |
| + assertFalse(mHandler.checkIfInitCallbackInvoked()); |
| + mHandler.reset(); |
| + assertFalse(mHandler.init()); // init should block on rewind. |
| + mHandler.resetWaitForInitComplete(); |
| + mDataProvider.onRewindSucceeded(mUploadDataStream); |
| + mHandler.waitForInitComplete(); |
| + mDataProvider.resetWaitForReadRequest(); |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mHandler.resetWaitForReadComplete(); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + mHandler.waitForReadComplete(); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("hello", mHandler.getData()); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testResetAfterRewindCompleted() throws Exception { |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + mHandler.waitForReadComplete(); |
| + assertEquals(0, mDataProvider.getNumRewindCalls()); |
| + assertEquals("hello", mHandler.getData()); |
| + mHandler.reset(); |
| + assertEquals("", mHandler.getData()); |
| + assertFalse(mHandler.init()); // make sure init is asynchronous. |
| + mDataProvider.waitForRewindRequest(); |
| + assertTrue(mDataProvider.checkIfRewindPending()); |
| + assertFalse(mHandler.checkIfInitCallbackInvoked()); |
| + mHandler.resetWaitForInitComplete(); |
| + mDataProvider.onRewindSucceeded(mUploadDataStream); |
| + mHandler.waitForInitComplete(); |
| + mHandler.reset(); |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
| + mDataProvider.resetWaitForReadRequest(); |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mHandler.resetWaitForReadComplete(); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + mHandler.waitForReadComplete(); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("hello", mHandler.getData()); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testReadCompleteTriggerRewind() throws Exception { |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mHandler.reset(); |
| + assertFalse(mHandler.init()); |
| + assertFalse(mDataProvider.checkIfRewindPending()); |
| + assertFalse(mHandler.checkIfInitCallbackInvoked()); |
| + assertEquals(0, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + // onReadCompleted triggers a rewind. |
| + mDataProvider.waitForRewindRequest(); |
| + mHandler.resetWaitForInitComplete(); |
| + mDataProvider.onRewindSucceeded(mUploadDataStream); |
| + mHandler.waitForInitComplete(); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + } |
| + |
| + // Reset before read and init/rewind are completed. and call reset and init |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testReadCompleteTriggerRewindOnlyOneRewind() throws Exception { |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mHandler.reset(); |
| + assertFalse(mHandler.init()); |
| + assertFalse(mDataProvider.checkIfRewindPending()); |
| + assertFalse(mHandler.checkIfInitCallbackInvoked()); |
| + assertEquals(0, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + // onReadCompleted triggers a rewind. |
| + mDataProvider.waitForRewindRequest(); |
| + mHandler.resetWaitForInitComplete(); |
| + mDataProvider.onRewindSucceeded(mUploadDataStream); |
| + mHandler.waitForInitComplete(); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + |
| + // Reset and Init again, no rewind should happen. |
| + mHandler.reset(); |
| + assertTrue(mHandler.init()); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testResetBeforeReadCompleteAndInitTriggerRewind() throws Exception { |
| + assertTrue(mHandler.init()); // make sure init is synchronous. |
| + mHandler.read(); |
| + mDataProvider.waitForReadRequest(); |
| + assertTrue(mDataProvider.checkIfReadPending()); |
| + assertFalse(mHandler.checkIfReadCallbackInvoked()); |
| + mHandler.reset(); |
| + mDataProvider.onReadSucceeded(mUploadDataStream); |
| + assertEquals(0, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + // Init should trigger a rewind. |
| + assertFalse(mHandler.init()); |
| + mDataProvider.waitForRewindRequest(); |
| + assertTrue(mDataProvider.checkIfRewindPending()); |
| + assertFalse(mHandler.checkIfInitCallbackInvoked()); |
| + mHandler.resetWaitForInitComplete(); |
| + mDataProvider.onRewindSucceeded(mUploadDataStream); |
| + mHandler.waitForInitComplete(); |
| + assertEquals(1, mDataProvider.getNumRewindCalls()); |
| + assertEquals("", mHandler.getData()); |
| + } |
| +} |