/* * (C) Copyright 2014 Kurento (http://kurento.org/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.kurento.test.functional.webrtc; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import org.junit.runners.Parameterized.Parameters; import org.kurento.client.FaceOverlayFilter; import org.kurento.client.MediaPipeline; import org.kurento.client.WebRtcEndpoint; import org.kurento.test.base.FunctionalTest; import org.kurento.test.browser.WebRtcChannel; import org.kurento.test.browser.WebRtcMode; import org.kurento.test.config.TestScenario; /** * WebRTC in loopback with a FaceOverlayFilter. * </p> * Media Pipeline(s): * <ul> * <li>WebRtcEndpoint -> FaceOverlayFilter -> WebRtcEndpoint</li> * </ul> * Browser(s): * <ul> * <li>Chrome</li> * <li>Firefox</li> * </ul> * Test logic: * <ol> * <li>(KMS) WebRtcEndpoint in loopback with a FaceOverlayFilter</li> * <li>(Browser) WebRtcPeer in send-receive mode and receives media</li> * </ol> * Main assertion(s): * <ul> * <li>Playing event should be received in remote video tag</li> * <li>Play time in remote video should be as expected</li> * <li>The color of the received video should be as expected</li> * </ul> * Secondary assertion(s): * <ul> * <li>--</li> * </ul> * * @author Boni Garcia (bgarcia@gsyc.es) * @since 5.0.5 */ public class WebRtcOneFaceOverlayTest extends FunctionalTest { private static final int DEFAULT_PLAYTIME = 10; // seconds @Parameters(name = "{index}: {0}") public static Collection<Object[]> data() { return TestScenario.localChromeAndFirefox(); } @Test public void testWebRtcFaceOverlay() throws InterruptedException { // Media Pipeline MediaPipeline mp = kurentoClient.createMediaPipeline(); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(mp).build(); FaceOverlayFilter faceOverlayFilter = new FaceOverlayFilter.Builder(mp).build(); webRtcEndpoint.connect(faceOverlayFilter); faceOverlayFilter.connect(webRtcEndpoint); // Start WebRTC and wait for playing event getPage().subscribeEvents("playing"); getPage().initWebRtc(webRtcEndpoint, WebRtcChannel.AUDIO_AND_VIDEO, WebRtcMode.SEND_RCV); Assert.assertTrue("Not received media (timeout waiting playing event)", getPage().waitForEvent("playing")); // Guard time to play the video int playTime = Integer.parseInt( System.getProperty("test.webrtcfaceoverlay.playtime", String.valueOf(DEFAULT_PLAYTIME))); waitSeconds(playTime); // Assertions double currentTime = getPage().getCurrentTime(); Assert.assertTrue( "Error in play time (expected: " + playTime + " sec, real: " + currentTime + " sec)", getPage().compare(playTime, currentTime)); Assert.assertTrue("The color of the video should be green", getPage().similarColor(CHROME_VIDEOTEST_COLOR)); // Release Media Pipeline mp.release(); } }