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