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

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUploadTest.java

Issue 849903002: [Cronet] Upload support for async APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months 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 side-by-side diff with in-line comments
Download patch
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());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698