Fix Android peer connection client instrumentation tests.

- Updated Java VideoRenderer removes setSize() from video renderer interface.
Remove no longer valid test, which requires setSize() call before any
frame can be rendered.
- test_runner.py tries to run private member of InstrumentationTestCase class.
Workaround it by renaming private loopback test method.

R=wzh@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47549004

Cr-Commit-Position: refs/heads/master@{#8707}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8707 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
glaznev@webrtc.org 2015-03-12 23:06:47 +00:00
parent fde1de93f9
commit 3d3c005f36

View File

@ -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);