Add separate native library for instrumentationtests
Also adds api in PCF for specifying which library to load. This is in preparation for a CL adding a native function to be used only in tests. Bug: webrtc:9225 Change-Id: I72eff272350404729424176758bfa81f7da81836 Reviewed-on: https://webrtc-review.googlesource.com/84125 Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Commit-Queue: Paulina Hensman <phensman@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23663}
This commit is contained in:

committed by
Commit Bot

parent
faf282700c
commit
fa2b8d7456
@ -1045,6 +1045,7 @@ if (rtc_include_tests) {
|
|||||||
"instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
|
"instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
|
||||||
"instrumentationtests/src/org/webrtc/Camera2CapturerTest.java",
|
"instrumentationtests/src/org/webrtc/Camera2CapturerTest.java",
|
||||||
"instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
|
"instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
|
||||||
|
"instrumentationtests/src/org/webrtc/TestConstants.java",
|
||||||
"instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java",
|
"instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java",
|
||||||
"instrumentationtests/src/org/webrtc/EglRendererTest.java",
|
"instrumentationtests/src/org/webrtc/EglRendererTest.java",
|
||||||
"instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java",
|
"instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java",
|
||||||
@ -1081,10 +1082,29 @@ if (rtc_include_tests) {
|
|||||||
"//third_party/junit",
|
"//third_party/junit",
|
||||||
]
|
]
|
||||||
|
|
||||||
shared_libraries = [ "../../sdk/android:libjingle_peerconnection_so" ]
|
shared_libraries =
|
||||||
|
[ "../../sdk/android:libjingle_peerconnection_instrumentationtests_so" ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtc_shared_library("libjingle_peerconnection_instrumentationtests_so") {
|
||||||
|
testonly = true
|
||||||
|
sources = [
|
||||||
|
"src/jni/jni_onload.cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
|
||||||
|
configs += [ "//build/config/android:hide_all_but_jni" ]
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":libjingle_peerconnection_jni",
|
||||||
|
":libjingle_peerconnection_metrics_default_jni",
|
||||||
|
"../../pc:libjingle_peerconnection",
|
||||||
|
"../../rtc_base:rtc_base",
|
||||||
|
]
|
||||||
|
output_extension = "so"
|
||||||
|
}
|
||||||
|
|
||||||
# The native API is currently experimental and may change without notice.
|
# The native API is currently experimental and may change without notice.
|
||||||
group("native_api") {
|
group("native_api") {
|
||||||
deps = [
|
deps = [
|
||||||
|
@ -41,15 +41,17 @@ public class PeerConnectionFactory {
|
|||||||
final boolean enableInternalTracer;
|
final boolean enableInternalTracer;
|
||||||
final boolean enableVideoHwAcceleration;
|
final boolean enableVideoHwAcceleration;
|
||||||
final NativeLibraryLoader nativeLibraryLoader;
|
final NativeLibraryLoader nativeLibraryLoader;
|
||||||
|
final String nativeLibraryName;
|
||||||
|
|
||||||
private InitializationOptions(Context applicationContext, String fieldTrials,
|
private InitializationOptions(Context applicationContext, String fieldTrials,
|
||||||
boolean enableInternalTracer, boolean enableVideoHwAcceleration,
|
boolean enableInternalTracer, boolean enableVideoHwAcceleration,
|
||||||
NativeLibraryLoader nativeLibraryLoader) {
|
NativeLibraryLoader nativeLibraryLoader, String nativeLibraryName) {
|
||||||
this.applicationContext = applicationContext;
|
this.applicationContext = applicationContext;
|
||||||
this.fieldTrials = fieldTrials;
|
this.fieldTrials = fieldTrials;
|
||||||
this.enableInternalTracer = enableInternalTracer;
|
this.enableInternalTracer = enableInternalTracer;
|
||||||
this.enableVideoHwAcceleration = enableVideoHwAcceleration;
|
this.enableVideoHwAcceleration = enableVideoHwAcceleration;
|
||||||
this.nativeLibraryLoader = nativeLibraryLoader;
|
this.nativeLibraryLoader = nativeLibraryLoader;
|
||||||
|
this.nativeLibraryName = nativeLibraryName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder(Context applicationContext) {
|
public static Builder builder(Context applicationContext) {
|
||||||
@ -62,6 +64,7 @@ public class PeerConnectionFactory {
|
|||||||
private boolean enableInternalTracer = false;
|
private boolean enableInternalTracer = false;
|
||||||
private boolean enableVideoHwAcceleration = true;
|
private boolean enableVideoHwAcceleration = true;
|
||||||
private NativeLibraryLoader nativeLibraryLoader = new NativeLibrary.DefaultLoader();
|
private NativeLibraryLoader nativeLibraryLoader = new NativeLibrary.DefaultLoader();
|
||||||
|
private String nativeLibraryName = "jingle_peerconnection_so";
|
||||||
|
|
||||||
Builder(Context applicationContext) {
|
Builder(Context applicationContext) {
|
||||||
this.applicationContext = applicationContext;
|
this.applicationContext = applicationContext;
|
||||||
@ -86,10 +89,15 @@ public class PeerConnectionFactory {
|
|||||||
this.nativeLibraryLoader = nativeLibraryLoader;
|
this.nativeLibraryLoader = nativeLibraryLoader;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public Builder setNativeLibraryName(String nativeLibraryName) {
|
||||||
|
this.nativeLibraryName = nativeLibraryName;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public PeerConnectionFactory.InitializationOptions createInitializationOptions() {
|
public PeerConnectionFactory.InitializationOptions createInitializationOptions() {
|
||||||
return new PeerConnectionFactory.InitializationOptions(applicationContext, fieldTrials,
|
return new PeerConnectionFactory.InitializationOptions(applicationContext, fieldTrials,
|
||||||
enableInternalTracer, enableVideoHwAcceleration, nativeLibraryLoader);
|
enableInternalTracer, enableVideoHwAcceleration, nativeLibraryLoader,
|
||||||
|
nativeLibraryName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,7 +201,7 @@ public class PeerConnectionFactory {
|
|||||||
*/
|
*/
|
||||||
public static void initialize(InitializationOptions options) {
|
public static void initialize(InitializationOptions options) {
|
||||||
ContextUtils.initialize(options.applicationContext);
|
ContextUtils.initialize(options.applicationContext);
|
||||||
NativeLibrary.initialize(options.nativeLibraryLoader);
|
NativeLibrary.initialize(options.nativeLibraryLoader, options.nativeLibraryName);
|
||||||
nativeInitializeAndroidGlobals(options.enableVideoHwAcceleration);
|
nativeInitializeAndroidGlobals(options.enableVideoHwAcceleration);
|
||||||
nativeInitializeFieldTrials(options.fieldTrials);
|
nativeInitializeFieldTrials(options.fieldTrials);
|
||||||
if (options.enableInternalTracer && !internalTracerInitialized) {
|
if (options.enableInternalTracer && !internalTracerInitialized) {
|
||||||
|
@ -334,6 +334,7 @@ class CameraVideoCapturerTestFixtures {
|
|||||||
CameraVideoCapturerTestFixtures(TestObjectFactory testObjectFactory) {
|
CameraVideoCapturerTestFixtures(TestObjectFactory testObjectFactory) {
|
||||||
PeerConnectionFactory.initialize(
|
PeerConnectionFactory.initialize(
|
||||||
PeerConnectionFactory.InitializationOptions.builder(testObjectFactory.getAppContext())
|
PeerConnectionFactory.InitializationOptions.builder(testObjectFactory.getAppContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
|
|
||||||
this.peerConnectionFactory = PeerConnectionFactory.builder().createPeerConnectionFactory();
|
this.peerConnectionFactory = PeerConnectionFactory.builder().createPeerConnectionFactory();
|
||||||
|
@ -64,7 +64,7 @@ public class DefaultVideoEncoderFactoryTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
|
@ -115,6 +115,7 @@ public class EglRendererTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
eglRenderer = new EglRenderer("TestRenderer: ");
|
eglRenderer = new EglRenderer("TestRenderer: ");
|
||||||
eglRenderer.init(null /* sharedContext */, EglBase.CONFIG_RGBA, new GlRectDrawer());
|
eglRenderer.init(null /* sharedContext */, EglBase.CONFIG_RGBA, new GlRectDrawer());
|
||||||
|
@ -61,7 +61,7 @@ public class FileVideoCapturerTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -155,7 +155,7 @@ public final class HardwareVideoDecoderTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
|
|
||||||
TEST_FRAMES = generateTestFrames();
|
TEST_FRAMES = generateTestFrames();
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ public class HardwareVideoEncoderTest {
|
|||||||
// # Tests
|
// # Tests
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
|
|
||||||
eglBase = new EglBase14(null, EglBase.CONFIG_PLAIN);
|
eglBase = new EglBase14(null, EglBase.CONFIG_PLAIN);
|
||||||
eglBase.createDummyPbufferSurface();
|
eglBase.createDummyPbufferSurface();
|
||||||
|
@ -23,6 +23,7 @@ public class PeerConnectionFactoryTest {
|
|||||||
public void testInitialize() {
|
public void testInitialize() {
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,9 +32,11 @@ public class PeerConnectionFactoryTest {
|
|||||||
public void testInitializeTwice() {
|
public void testInitializeTwice() {
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,10 +46,12 @@ public class PeerConnectionFactoryTest {
|
|||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
.setEnableInternalTracer(true)
|
.setEnableInternalTracer(true)
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
.setEnableInternalTracer(true)
|
.setEnableInternalTracer(true)
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +61,7 @@ public class PeerConnectionFactoryTest {
|
|||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
.setEnableInternalTracer(true)
|
.setEnableInternalTracer(true)
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
PeerConnectionFactory.shutdownInternalTracer();
|
PeerConnectionFactory.shutdownInternalTracer();
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@ public class PeerConnectionTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ public class SurfaceTextureHelperTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
// Load the JNI library for textureToYuv.
|
// Load the JNI library for textureToYuv.
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.webrtc;
|
||||||
|
|
||||||
|
class TestConstants {
|
||||||
|
public static final String NATIVE_LIBRARY = "jingle_peerconnection_instrumentationtests_so";
|
||||||
|
}
|
@ -31,7 +31,7 @@ import org.junit.runner.RunWith;
|
|||||||
public class VideoFileRendererTest {
|
public class VideoFileRendererTest {
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -61,7 +61,7 @@ public class VideoFrameBufferTest {
|
|||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
// Needed for JniCommon.nativeAllocateByteBuffer() to work, which is used from JavaI420Buffer.
|
// Needed for JniCommon.nativeAllocateByteBuffer() to work, which is used from JavaI420Buffer.
|
||||||
System.loadLibrary("jingle_peerconnection_so");
|
System.loadLibrary(TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final BufferType bufferType;
|
private final BufferType bufferType;
|
||||||
|
@ -27,6 +27,7 @@ public class WebRtcJniBootTest {
|
|||||||
public void testJniLoadsWithoutError() throws InterruptedException {
|
public void testJniLoadsWithoutError() throws InterruptedException {
|
||||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||||
.builder(InstrumentationRegistry.getTargetContext())
|
.builder(InstrumentationRegistry.getTargetContext())
|
||||||
|
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
|
||||||
.createInitializationOptions());
|
.createInitializationOptions());
|
||||||
PeerConnectionFactory.builder().createPeerConnectionFactory();
|
PeerConnectionFactory.builder().createPeerConnectionFactory();
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ public class YuvHelperTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
NativeLibrary.initialize(new NativeLibrary.DefaultLoader());
|
NativeLibrary.initialize(new NativeLibrary.DefaultLoader(), TestConstants.NATIVE_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
|
@ -34,14 +34,14 @@ class NativeLibrary {
|
|||||||
* Loads the native library. Clients should call PeerConnectionFactory.initialize. It will call
|
* Loads the native library. Clients should call PeerConnectionFactory.initialize. It will call
|
||||||
* this method for them.
|
* this method for them.
|
||||||
*/
|
*/
|
||||||
static void initialize(NativeLibraryLoader loader) {
|
static void initialize(NativeLibraryLoader loader, String libraryName) {
|
||||||
synchronized (lock) {
|
synchronized (lock) {
|
||||||
if (libraryLoaded) {
|
if (libraryLoaded) {
|
||||||
Logging.d(TAG, "Native library has already been loaded.");
|
Logging.d(TAG, "Native library has already been loaded.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Logging.d(TAG, "Loading native library.");
|
Logging.d(TAG, "Loading native library: " + libraryName);
|
||||||
libraryLoaded = loader.load("jingle_peerconnection_so");
|
libraryLoaded = loader.load(libraryName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user