Files
platform-external-webrtc/sdk/android/instrumentationtests/src/org/webrtc/LoggableTest.java
Xavier Lepaul a76ae851ad Run instrumentation tests with the default runner
This migrates all tests that work by just changing their runner.

This excludes tests using `@RunWith(ParameterizedRunner.class)`, and a
few other non-parameterized tests that fail with the default runner.

Bug: webrtc:13662
Change-Id: Ia0b7c80e04a6a6b7a51348b3a7f587d10061b58e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256367
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Xavier Lepaul‎ <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36298}
2022-03-23 10:01:04 +00:00

162 lines
7.3 KiB
Java

/*
* 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;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.support.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import java.util.ArrayList;
import org.junit.Test;
import org.webrtc.Loggable;
import org.webrtc.Logging.Severity;
import org.webrtc.PeerConnectionFactory;
public class LoggableTest {
private static String TAG = "LoggableTest";
private static String NATIVE_FILENAME_TAG = "loggable_test.cc";
private static class MockLoggable implements Loggable {
private ArrayList<String> messages = new ArrayList<>();
private ArrayList<Severity> sevs = new ArrayList<>();
private ArrayList<String> tags = new ArrayList<>();
@Override
public void onLogMessage(String message, Severity sev, String tag) {
messages.add(message);
sevs.add(sev);
tags.add(tag);
}
public boolean isMessageReceived(String message) {
for (int i = 0; i < messages.size(); i++) {
if (messages.get(i).contains(message)) {
return true;
}
}
return false;
}
public boolean isMessageReceived(String message, Severity sev, String tag) {
for (int i = 0; i < messages.size(); i++) {
if (messages.get(i).contains(message) && sevs.get(i) == sev && tags.get(i).equals(tag)) {
return true;
}
}
return false;
}
}
private final MockLoggable mockLoggable = new MockLoggable();
@Test
@SmallTest
public void testLoggableSetWithoutError() throws InterruptedException {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_INFO)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
}
@Test
@SmallTest
public void testMessageIsLoggedCorrectly() throws InterruptedException {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_INFO)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should be logged";
Logging.d(TAG, msg);
assertTrue(mockLoggable.isMessageReceived(msg, Severity.LS_INFO, TAG));
}
@Test
@SmallTest
public void testLowSeverityIsFiltered() throws InterruptedException {
// Set severity to LS_WARNING to filter out LS_INFO and below.
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_WARNING)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should NOT be logged";
Logging.d(TAG, msg);
assertFalse(mockLoggable.isMessageReceived(msg));
}
@Test
@SmallTest
public void testLoggableDoesNotReceiveMessagesAfterUnsetting() {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_INFO)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
// Reinitialize without Loggable
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should NOT be logged";
Logging.d(TAG, msg);
assertFalse(mockLoggable.isMessageReceived(msg));
}
@Test
@SmallTest
public void testNativeMessageIsLoggedCorrectly() throws InterruptedException {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_INFO)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should be logged";
nativeLogInfoTestMessage(msg);
assertTrue(mockLoggable.isMessageReceived(msg, Severity.LS_INFO, NATIVE_FILENAME_TAG));
}
@Test
@SmallTest
public void testNativeLowSeverityIsFiltered() throws InterruptedException {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_WARNING)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should NOT be logged";
nativeLogInfoTestMessage(msg);
assertFalse(mockLoggable.isMessageReceived(msg));
}
@Test
@SmallTest
public void testNativeLoggableDoesNotReceiveMessagesAfterUnsetting() {
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setInjectableLogger(mockLoggable, Severity.LS_INFO)
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
// Reinitialize without Loggable
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(InstrumentationRegistry.getTargetContext())
.setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
.createInitializationOptions());
String msg = "Message that should NOT be logged";
nativeLogInfoTestMessage(msg);
assertFalse(mockLoggable.isMessageReceived(msg));
}
private static native void nativeLogInfoTestMessage(String message);
}