diff --git a/talk/app/webrtc/androidtests/AndroidManifest.xml b/talk/app/webrtc/androidtests/AndroidManifest.xml
deleted file mode 100644
index 3bcd99b425..0000000000
--- a/talk/app/webrtc/androidtests/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/talk/app/webrtc/androidtests/ant.properties b/talk/app/webrtc/androidtests/ant.properties
deleted file mode 100644
index bc05353865..0000000000
--- a/talk/app/webrtc/androidtests/ant.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is used to override default values used by the Ant build system.
-#
-# This file must be checked into Version Control Systems, as it is
-# integral to the build system of your project.
-
-# This file is only used by the Ant script.
-
-# You can use this to override default values such as
-# 'source.dir' for the location of your java source folder and
-# 'out.dir' for the location of your output folder.
-
-# You can also use it define how the release builds are signed by declaring
-# the following properties:
-# 'key.store' for the location of your keystore and
-# 'key.alias' for the name of the key to use.
-# The password will be asked during the build when you use the 'release' target.
-
-source.dir=../java/testcommon/src;src
\ No newline at end of file
diff --git a/talk/app/webrtc/androidtests/build.xml b/talk/app/webrtc/androidtests/build.xml
deleted file mode 100644
index cb4cb7ac94..0000000000
--- a/talk/app/webrtc/androidtests/build.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/talk/app/webrtc/androidtests/jni/Android.mk b/talk/app/webrtc/androidtests/jni/Android.mk
deleted file mode 100644
index 8e80160039..0000000000
--- a/talk/app/webrtc/androidtests/jni/Android.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-# This space intentionally left blank (required for Android build system).
-
diff --git a/talk/app/webrtc/androidtests/project.properties b/talk/app/webrtc/androidtests/project.properties
deleted file mode 100644
index 47b70783f2..0000000000
--- a/talk/app/webrtc/androidtests/project.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-21
-
-java.compilerargs=-Xlint:all -Werror
diff --git a/talk/app/webrtc/androidtests/res/drawable-hdpi/ic_launcher.png b/talk/app/webrtc/androidtests/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 96a442e5b8..0000000000
Binary files a/talk/app/webrtc/androidtests/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/talk/app/webrtc/androidtests/res/drawable-ldpi/ic_launcher.png b/talk/app/webrtc/androidtests/res/drawable-ldpi/ic_launcher.png
deleted file mode 100644
index 99238729d8..0000000000
Binary files a/talk/app/webrtc/androidtests/res/drawable-ldpi/ic_launcher.png and /dev/null differ
diff --git a/talk/app/webrtc/androidtests/res/drawable-mdpi/ic_launcher.png b/talk/app/webrtc/androidtests/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 359047dfa4..0000000000
Binary files a/talk/app/webrtc/androidtests/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/talk/app/webrtc/androidtests/res/drawable-xhdpi/ic_launcher.png b/talk/app/webrtc/androidtests/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 71c6d760f0..0000000000
Binary files a/talk/app/webrtc/androidtests/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/talk/app/webrtc/androidtests/res/values/strings.xml b/talk/app/webrtc/androidtests/res/values/strings.xml
deleted file mode 100644
index dfe63f89c7..0000000000
--- a/talk/app/webrtc/androidtests/res/values/strings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- AndroidPeerConnectionTests
-
-
diff --git a/talk/app/webrtc/androidtests/src/org/webrtc/PeerConnectionAndroidTest.java b/talk/app/webrtc/androidtests/src/org/webrtc/PeerConnectionAndroidTest.java
deleted file mode 100644
index 228d35c128..0000000000
--- a/talk/app/webrtc/androidtests/src/org/webrtc/PeerConnectionAndroidTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * libjingle
- * Copyright 2014, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.webrtc;
-
-import android.test.ActivityTestCase;
-
-public class PeerConnectionAndroidTest extends ActivityTestCase {
- private PeerConnectionTest test = new PeerConnectionTest();
-
- @Override
- protected void setUp() {
- assertTrue(PeerConnectionFactory.initializeAndroidGlobals(
- getInstrumentation().getContext(), true,
- true, null));
- }
-
- public void testCompleteSession() throws Exception {
- // TODO(perkj): Investigate if |test.initializeThreadCheck()| can be used
- // on android as well. Currently this check fail.
- test.doTest();
- }
-
-
-}
diff --git a/talk/app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh b/talk/app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh
index 4f8c74ad07..0ecb7309d8 100644
--- a/talk/app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh
+++ b/talk/app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh
@@ -44,4 +44,4 @@ export LD_LIBRARY_PATH=`pwd`
export JAVA_HOME=GYP_JAVA_HOME
${JAVA_HOME}/bin/java -Xcheck:jni -classpath $CLASSPATH \
- junit.textui.TestRunner org.webrtc.PeerConnectionTestJava
+ junit.textui.TestRunner org.webrtc.PeerConnectionTest
diff --git a/talk/app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java b/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java
similarity index 94%
rename from talk/app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java
rename to talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java
index 8d962cce97..048d92b26f 100644
--- a/talk/app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java
+++ b/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java
@@ -27,6 +27,9 @@
package org.webrtc;
+import junit.framework.TestCase;
+
+import org.junit.Test;
import org.webrtc.PeerConnection.IceConnectionState;
import org.webrtc.PeerConnection.IceGatheringState;
import org.webrtc.PeerConnection.SignalingState;
@@ -36,6 +39,7 @@ import java.lang.ref.WeakReference;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Arrays;
+import java.util.EnumSet;
import java.util.IdentityHashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -43,18 +47,15 @@ import java.util.TreeSet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import static junit.framework.Assert.*;
-
/** End-to-end tests for PeerConnection.java. */
-public class PeerConnectionTest {
+public class PeerConnectionTest extends TestCase {
// Set to true to render video.
private static final boolean RENDER_TO_GUI = false;
- private TreeSet threadsBeforeTest = null;
private static class ObserverExpectations implements PeerConnection.Observer,
- VideoRenderer.Callbacks,
- DataChannel.Observer,
- StatsObserver {
+ VideoRenderer.Callbacks,
+ DataChannel.Observer,
+ StatsObserver {
private final String name;
private int expectedIceCandidates = 0;
private int expectedErrors = 0;
@@ -112,6 +113,10 @@ public class PeerConnectionTest {
gotIceCandidates.add(candidate);
}
+ public synchronized void expectError() {
+ ++expectedErrors;
+ }
+
public synchronized void expectSetSize() {
if (RENDER_TO_GUI) {
// When new frames are delivered to the GUI renderer we don't get
@@ -435,7 +440,6 @@ public class PeerConnectionTest {
public int height = -1;
public int numFramesDelivered = 0;
- @Override
public void setSize(int width, int height) {
assertEquals(this.width, -1);
assertEquals(this.height, -1);
@@ -443,7 +447,6 @@ public class PeerConnectionTest {
this.height = height;
}
- @Override
public void renderFrame(VideoRenderer.I420Frame frame) {
++numFramesDelivered;
}
@@ -485,21 +488,40 @@ public class PeerConnectionTest {
return new WeakReference(lMS);
}
- // Used for making sure thread handles are not leaked.
- // Call initializeThreadCheck before a test and finalizeThreadCheck after
- // a test.
- void initializeThreadCheck() {
+ private static void assertEquals(
+ SessionDescription lhs, SessionDescription rhs) {
+ assertEquals(lhs.type, rhs.type);
+ assertEquals(lhs.description, rhs.description);
+ }
+
+ @Test
+ public void testCompleteSession() throws Exception {
+ doTest();
+ }
+
+ @Test
+ public void testCompleteSessionOnNonMainThread() throws Exception {
+ final Exception[] exceptionHolder = new Exception[1];
+ Thread nonMainThread = new Thread("PeerConnectionTest-nonMainThread") {
+ @Override public void run() {
+ try {
+ doTest();
+ } catch (Exception e) {
+ exceptionHolder[0] = e;
+ }
+ }
+ };
+ nonMainThread.start();
+ nonMainThread.join();
+ if (exceptionHolder[0] != null)
+ throw exceptionHolder[0];
+ }
+
+ private void doTest() throws Exception {
+ CountDownLatch testDone = new CountDownLatch(1);
System.gc(); // Encourage any GC-related threads to start up.
- threadsBeforeTest = allThreads();
- }
+ TreeSet threadsBeforeTest = allThreads();
- void finalizeThreadCheck() throws Exception {
- TreeSet threadsAfterTest = allThreads();
- assertEquals(threadsBeforeTest, threadsAfterTest);
- Thread.sleep(100);
- }
-
- void doTest() throws Exception {
PeerConnectionFactory factory = new PeerConnectionFactory();
// Uncomment to get ALL WebRTC tracing and SENSITIVE libjingle logging.
// NOTE: this _must_ happen while |factory| is alive!
@@ -714,6 +736,10 @@ public class PeerConnectionTest {
videoSource.dispose();
factory.dispose();
System.gc();
+
+ TreeSet threadsAfterTest = allThreads();
+ assertEquals(threadsBeforeTest, threadsAfterTest);
+ Thread.sleep(100);
}
private static void shutdownPC(
@@ -756,4 +782,16 @@ public class PeerConnectionTest {
}
return threads;
}
+
+ // Return a String form of |strings| joined by |separator|.
+ private static String joinStrings(String separator, TreeSet strings) {
+ StringBuilder builder = new StringBuilder();
+ for (String s : strings) {
+ if (builder.length() > 0) {
+ builder.append(separator);
+ }
+ builder.append(s);
+ }
+ return builder.toString();
+ }
}
diff --git a/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTestJava.java b/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTestJava.java
deleted file mode 100644
index 2f0419c426..0000000000
--- a/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTestJava.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * libjingle
- * Copyright 2014, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.webrtc;
-
-
-import junit.framework.TestCase;
-
-/** End-to-end tests for PeerConnection.java. */
-public class PeerConnectionTestJava extends TestCase {
- private PeerConnectionTest test = new PeerConnectionTest();
- @Test
- public void testCompleteSession() throws Exception {
- test.initializeThreadCheck();
- test.doTest();
- test.finalizeThreadCheck();
- }
-
- @Test
- public void testCompleteSessionOnNonMainThread() throws Exception {
- final Exception[] exceptionHolder = new Exception[1];
- Thread nonMainThread = new Thread("PeerConnectionTest-nonMainThread") {
- @Override public void run() {
- try {
- test.initializeThreadCheck();
- test.doTest();
- test.finalizeThreadCheck();
- } catch (Exception e) {
- exceptionHolder[0] = e;
- }
- }
- };
- nonMainThread.start();
- nonMainThread.join();
- if (exceptionHolder[0] != null)
- throw exceptionHolder[0];
- }
-}
\ No newline at end of file
diff --git a/talk/libjingle_tests.gyp b/talk/libjingle_tests.gyp
index d853236da1..128203b4b8 100755
--- a/talk/libjingle_tests.gyp
+++ b/talk/libjingle_tests.gyp
@@ -263,8 +263,7 @@
'variables': {
'java_src_dir': 'app/webrtc/javatests/src',
'java_files': [
- 'app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java',
- 'app/webrtc/javatests/src/org/webrtc/PeerConnectionTestJava.java',
+ 'app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java',
],
},
'action_name': 'create_jar',
@@ -314,61 +313,6 @@
},
],
}],
- ['OS=="android"', {
- 'targets': [
- {
- 'target_name': 'libjingle_peerconnection_android_unittest',
- 'type': 'none',
- 'dependencies': [
- 'libjingle.gyp:libjingle_peerconnection_jar',
- ],
- 'actions': [
- {
- # TODO(perkj): convert from a custom script to a standard gyp
- # apk build once chromium's apk-building gyp machinery can be used
- # (http://crbug.com/225101)
- 'action_name': 'build_peerconnection_unittests_apk',
- 'inputs' : [
- '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
- '<(PRODUCT_DIR)/libjingle_peerconnection_so.so',
- 'app/webrtc/androidtests/AndroidManifest.xml',
- 'app/webrtc/androidtests/ant.properties',
- 'app/webrtc/androidtests/build.xml',
- 'app/webrtc/androidtests/jni/Android.mk',
- 'app/webrtc/androidtests/project.properties',
- 'app/webrtc/androidtests/res/drawable-hdpi/ic_launcher.png',
- 'app/webrtc/androidtests/res/drawable-ldpi/ic_launcher.png',
- 'app/webrtc/androidtests/res/drawable-mdpi/ic_launcher.png',
- 'app/webrtc/androidtests/res/drawable-xhdpi/ic_launcher.png',
- 'app/webrtc/androidtests/res/values/strings.xml',
- 'app/webrtc/androidtests/src/org/webrtc/PeerConnectionAndroidTest.java',
- 'app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/libjingle_peerconnection_android_unittest.apk',
- ],
- 'variables': {
- 'ant_log': '../../../<(INTERMEDIATE_DIR)/ant.log', # ../.. to compensate for the cd app/webrtc/androidtests below.
- },
- 'action': [
- 'bash', '-ec',
- 'rm -fr <(_outputs) app/webrtc/androidtests/{bin,libs} && '
- 'mkdir -p <(INTERMEDIATE_DIR) && ' # Must happen _before_ the cd below
- 'mkdir -p app/webrtc/androidtests/libs/<(android_app_abi) && '
- 'cp <(PRODUCT_DIR)/libjingle_peerconnection.jar app/webrtc/androidtests/libs/ &&'
- '<(android_strip) -o app/webrtc/androidtests/libs/<(android_app_abi)/libjingle_peerconnection_so.so <(PRODUCT_DIR)/libjingle_peerconnection_so.so &&'
- 'cd app/webrtc/androidtests && '
- '{ ANDROID_SDK_ROOT=<(android_sdk_root) '
- 'ant debug > <(ant_log) 2>&1 || '
- ' { cat <(ant_log) ; exit 1; } } && '
- 'cd - > /dev/null && '
- 'cp app/webrtc/androidtests/bin/libjingle_peerconnection_android_unittest-debug.apk <(_outputs)'
- ],
- },
- ],
- }, # target AppRTCDemo
- ], # targets
- }], # OS=="android"
['OS=="ios" or (OS=="mac" and target_arch!="ia32" and mac_sdk>="10.7")', {
# The >=10.7 above is required to make ARC link cleanly (e.g. as
# opposed to _compile_ cleanly, which the library under test