diff --git a/talk/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java b/talk/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java index 59784657f..487c031b6 100644 --- a/talk/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java +++ b/talk/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java @@ -61,6 +61,8 @@ public class PeerConnectionClientTest extends InstrumentationTestCase private static final String VIDEO_CODEC_H264 = "H264"; private static final int AUDIO_RUN_TIMEOUT = 1000; private static final String DTLS_SRTP_KEY_AGREEMENT_CONSTRAINT = "DtlsSrtpKeyAgreement"; + private static final String LOCAL_RENDERER_NAME = "Local renderer"; + private static final String REMOTE_RENDERER_NAME = "Remote renderer"; // The peer connection client is assumed to be thread safe in itself; the // reference is written by the test thread and read by worker threads. @@ -81,43 +83,36 @@ public class PeerConnectionClientTest extends InstrumentationTestCase // Mock renderer implementation. private static class MockRenderer implements VideoRenderer.Callbacks { // These are protected by 'this' since we gets called from worker threads. - private int width = -1; - private int height = -1; + private String rendererName; private boolean renderFrameCalled = false; - private boolean setSizeCalledBeforeRenderFrame = false; // Thread-safe in itself. private CountDownLatch doneRendering; - public MockRenderer(int expectedFrames) { + public MockRenderer(int expectedFrames, String rendererName) { + this.rendererName = rendererName; reset(expectedFrames); } // Resets render to wait for new amount of video frames. public synchronized void reset(int expectedFrames) { + renderFrameCalled = false; doneRendering = new CountDownLatch(expectedFrames); } - private synchronized void setSize(int width, int height) { - Log.d(TAG, "Set size: " + width + " x " + height); - this.width = width; - this.height = height; - if (!renderFrameCalled) { - setSizeCalledBeforeRenderFrame = true; - } - } - @Override public synchronized void renderFrame(VideoRenderer.I420Frame frame) { + if (!renderFrameCalled) { + if (rendererName != null) { + Log.d(TAG, rendererName + " render frame: " + frame.width + " x " + frame.height); + } else { + Log.d(TAG, "Render frame: " + frame.width + " x " + frame.height); + } + } renderFrameCalled = true; doneRendering.countDown(); } - public synchronized int getWidth() { return width; } - public synchronized int getHeight() { return height; } - public synchronized boolean setSizeCalledBeforeRenderFrame() { - return setSizeCalledBeforeRenderFrame; - } // This method shouldn't hold any locks or touch member variables since it // blocks. @@ -288,9 +283,9 @@ public class PeerConnectionClientTest extends InstrumentationTestCase public void testSetLocalOfferMakesVideoFlowLocally() throws InterruptedException { Log.d(TAG, "testSetLocalOfferMakesVideoFlowLocally"); - MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); + MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); pcClient = createPeerConnectionClient( - localRenderer, new MockRenderer(0), true, VIDEO_CODEC_VP8); + localRenderer, new MockRenderer(0, null), true, VIDEO_CODEC_VP8); // Wait for local SDP and ice candidates set events. assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); @@ -307,38 +302,15 @@ public class PeerConnectionClientTest extends InstrumentationTestCase Log.d(TAG, "testSetLocalOfferMakesVideoFlowLocally Done."); } - public void testSizeIsSetBeforeStartingToRender() - throws InterruptedException { - Log.d(TAG, "testSizeIsSetBeforeStartingToRender"); - MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); - pcClient = createPeerConnectionClient( - localRenderer, new MockRenderer(0), true, VIDEO_CODEC_VP8); - - waitForLocalSDP(WAIT_TIMEOUT); - waitForIceCandidates(WAIT_TIMEOUT); - - // Check that local video frames were rendered. - assertTrue("Local video frames were not rendered.", - localRenderer.waitForFramesRendered(WAIT_TIMEOUT)); - assertTrue("Should have set size before rendering frames; size wasn't set", - localRenderer.setSizeCalledBeforeRenderFrame()); - assertTrue(localRenderer.getWidth() > 0); - assertTrue(localRenderer.getHeight() > 0); - - pcClient.close(); - waitForPeerConnectionClosed(WAIT_TIMEOUT); - Log.d(TAG, "testSizeIsSetBeforeStartingToRender Done."); - } - - private void testLoopback(boolean enableVideo, String videoCodec) + private void doLoopbackTest(boolean enableVideo, String videoCodec) throws InterruptedException { loopback = true; MockRenderer localRenderer = null; MockRenderer remoteRenderer = null; if (enableVideo) { Log.d(TAG, "testLoopback for video " + videoCodec); - localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); - remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); + localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); + remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); } else { Log.d(TAG, "testLoopback for audio."); } @@ -373,19 +345,19 @@ public class PeerConnectionClientTest extends InstrumentationTestCase } public void testLoopbackAudio() throws InterruptedException { - testLoopback(false, VIDEO_CODEC_VP8); + doLoopbackTest(false, VIDEO_CODEC_VP8); } public void testLoopbackVp8() throws InterruptedException { - testLoopback(true, VIDEO_CODEC_VP8); + doLoopbackTest(true, VIDEO_CODEC_VP8); } public void testLoopbackVp9() throws InterruptedException { - testLoopback(true, VIDEO_CODEC_VP9); + doLoopbackTest(true, VIDEO_CODEC_VP9); } public void testLoopbackH264() throws InterruptedException { - testLoopback(true, VIDEO_CODEC_H264); + doLoopbackTest(true, VIDEO_CODEC_H264); } // Checks if default front camera can be switched to back camera and then @@ -394,8 +366,8 @@ public class PeerConnectionClientTest extends InstrumentationTestCase Log.d(TAG, "testCameraSwitch"); loopback = true; - MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); - MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); + MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); + MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); pcClient = createPeerConnectionClient( localRenderer, remoteRenderer, true, VIDEO_CODEC_VP8); @@ -440,8 +412,8 @@ public class PeerConnectionClientTest extends InstrumentationTestCase Log.d(TAG, "testVideoSourceRestart"); loopback = true; - MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); - MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES); + MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); + MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); pcClient = createPeerConnectionClient( localRenderer, remoteRenderer, true, VIDEO_CODEC_VP8);