aboutsummaryrefslogtreecommitdiff
path: root/webrtc
diff options
context:
space:
mode:
authorphoglund <phoglund@webrtc.org>2016-01-08 05:04:57 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-08 13:05:01 +0000
commit37ebcf0ce5ad1685bcf659ea75960beb96019647 (patch)
tree3253e50cbc9204438e139d4356e0fe1b0d38a0b1 /webrtc
parentb71b4f0c7af57ef5b676c6ed70bf945282c90e3a (diff)
downloadwebrtc-37ebcf0ce5ad1685bcf659ea75960beb96019647.tar.gz
Reland "Add APK targets to build libjingle tests for Android."
patchset #10 id:180001 of https://codereview.webrtc.org/1511633002/ This reverts commit bc14164aad254e72ce4d1e381b912b7d3acf5391. We have made more preparations downstream, so this should work now. Original CL by perkj@. BUG=webrtc:2365 The work started from the work by kjellander@ in https://codereview.webrtc.org/1413663003/ Review URL: https://codereview.webrtc.org/1570513004 Cr-Commit-Position: refs/heads/master@{#11186}
Diffstat (limited to 'webrtc')
-rwxr-xr-xwebrtc/build/android/test_runner.py2
-rw-r--r--webrtc/build/apk_test.gypi40
-rw-r--r--webrtc/build/apk_tests.gyp17
-rw-r--r--webrtc/build/apk_tests_noop.gyp4
-rw-r--r--webrtc/system_wrappers/include/field_trial_default.h2
-rw-r--r--webrtc/system_wrappers/source/field_trial_default.cc4
-rw-r--r--webrtc/test/BUILD.gn1
-rw-r--r--webrtc/test/field_trial.cc36
-rw-r--r--webrtc/test/field_trial.h3
-rw-r--r--webrtc/test/test.gyp1
10 files changed, 86 insertions, 24 deletions
diff --git a/webrtc/build/android/test_runner.py b/webrtc/build/android/test_runner.py
index 5b3f3d9e74..78a7a190b2 100755
--- a/webrtc/build/android/test_runner.py
+++ b/webrtc/build/android/test_runner.py
@@ -38,6 +38,8 @@ def main():
'webrtc/common_audio/common_audio_unittests.isolate',
'common_video_unittests':
'webrtc/common_video/common_video_unittests.isolate',
+ 'libjingle_peerconnection_unittest':
+ 'talk/libjingle_peerconnection_unittest.isolate',
'modules_tests': 'webrtc/modules/modules_tests.isolate',
'modules_unittests': 'webrtc/modules/modules_unittests.isolate',
'rtc_unittests': 'webrtc/rtc_unittests.isolate',
diff --git a/webrtc/build/apk_test.gypi b/webrtc/build/apk_test.gypi
new file mode 100644
index 0000000000..a41e436a48
--- /dev/null
+++ b/webrtc/build/apk_test.gypi
@@ -0,0 +1,40 @@
+# Copyright (c) 2015 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.
+
+# This is almost an identical copy of src/build/apk_test.gypi with minor
+# modifications to allow test executables starting with "lib".
+# See http://crbug.com/543820 for more details.
+
+{
+ 'dependencies': [
+ '<(DEPTH)/base/base.gyp:base_java',
+ '<(DEPTH)/build/android/pylib/device/commands/commands.gyp:chromium_commands',
+ '<(DEPTH)/build/android/pylib/remote/device/dummy/dummy.gyp:remote_device_dummy_apk',
+ '<(DEPTH)/testing/android/appurify_support.gyp:appurify_support_java',
+ '<(DEPTH)/testing/android/on_device_instrumentation.gyp:reporter_java',
+ '<(DEPTH)/tools/android/android_tools.gyp:android_tools',
+ ],
+ 'conditions': [
+ ['OS == "android"', {
+ 'variables': {
+ # These are used to configure java_apk.gypi included below.
+ 'test_type': 'gtest',
+ 'apk_name': '<(test_suite_name)',
+ 'intermediate_dir': '<(PRODUCT_DIR)/<(test_suite_name)_apk',
+ 'final_apk_path': '<(intermediate_dir)/<(test_suite_name)-debug.apk',
+ 'java_in_dir': '<(DEPTH)/testing/android/native_test/java',
+ 'native_lib_target': '<(test_suite_name)',
+ 'gyp_managed_install': 0,
+ },
+ 'includes': [
+ '../../build/java_apk.gypi',
+ '../../build/android/test_runner.gypi',
+ ],
+ }], # 'OS == "android"
+ ], # conditions
+}
diff --git a/webrtc/build/apk_tests.gyp b/webrtc/build/apk_tests.gyp
index fe05c0848a..02a13421f9 100644
--- a/webrtc/build/apk_tests.gyp
+++ b/webrtc/build/apk_tests.gyp
@@ -61,6 +61,23 @@
],
},
{
+ 'target_name': 'libjingle_peerconnection_unittest_apk',
+ 'type': 'none',
+ 'variables': {
+ 'test_suite_name': 'libjingle_peerconnection_unittest',
+ 'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)libjingle_peerconnection_unittest<(SHARED_LIB_SUFFIX)',
+ },
+ 'dependencies': [
+ '<(DEPTH)/talk/libjingle_tests.gyp:libjingle_peerconnection_unittest',
+ '<(DEPTH)/talk/libjingle.gyp:libjingle_peerconnection_java',
+ ],
+ 'includes': [
+ # Use webrtc copy of apk_test.gypi to allow test executables starting
+ # with "lib". See http://crbug.com/543820 for more details.
+ '../build/apk_test.gypi',
+ ],
+ },
+ {
'target_name': 'modules_tests_apk',
'type': 'none',
'variables': {
diff --git a/webrtc/build/apk_tests_noop.gyp b/webrtc/build/apk_tests_noop.gyp
index 489f2eea63..ed9249aec5 100644
--- a/webrtc/build/apk_tests_noop.gyp
+++ b/webrtc/build/apk_tests_noop.gyp
@@ -22,6 +22,10 @@
'type': 'none',
},
{
+ 'target_name': 'libjingle_peerconnection_unittest_apk',
+ 'type': 'none',
+ },
+ {
'target_name': 'modules_tests_apk',
'type': 'none',
},
diff --git a/webrtc/system_wrappers/include/field_trial_default.h b/webrtc/system_wrappers/include/field_trial_default.h
index d098ea1d91..7417ced39d 100644
--- a/webrtc/system_wrappers/include/field_trial_default.h
+++ b/webrtc/system_wrappers/include/field_trial_default.h
@@ -20,6 +20,8 @@ namespace field_trial {
// Note: trials_string must never be destroyed.
void InitFieldTrialsFromString(const char* trials_string);
+const char* GetFieldTrialString();
+
} // namespace field_trial
} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/field_trial_default.cc b/webrtc/system_wrappers/source/field_trial_default.cc
index 1a9bd6bc79..0e2c286117 100644
--- a/webrtc/system_wrappers/source/field_trial_default.cc
+++ b/webrtc/system_wrappers/source/field_trial_default.cc
@@ -58,5 +58,9 @@ void InitFieldTrialsFromString(const char* trials_string) {
trials_init_string = trials_string;
}
+const char* GetFieldTrialString() {
+ return trials_init_string;
+}
+
} // namespace field_trial
} // namespace webrtc
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index b4dba1e37f..3ecd903522 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -27,6 +27,7 @@ source_set("field_trial") {
deps = [
"..:webrtc_common",
"../system_wrappers",
+ "../system_wrappers:field_trial_default",
]
configs += [ "..:common_config" ]
diff --git a/webrtc/test/field_trial.cc b/webrtc/test/field_trial.cc
index 613fb67679..c40d0783d8 100644
--- a/webrtc/test/field_trial.cc
+++ b/webrtc/test/field_trial.cc
@@ -18,27 +18,13 @@
#include <string>
#include "webrtc/system_wrappers/include/field_trial.h"
+#include "webrtc/system_wrappers/include/field_trial_default.h"
namespace webrtc {
namespace {
-// Clients of this library have show a clear intent to setup field trials by
-// linking with it. As so try to crash if they forget to call
-// InitFieldTrialsFromString before webrtc tries to access a field trial.
bool field_trials_initiated_ = false;
-std::map<std::string, std::string> field_trials_;
} // namespace
-namespace field_trial {
-std::string FindFullName(const std::string& trial_name) {
- assert(field_trials_initiated_);
- std::map<std::string, std::string>::const_iterator it =
- field_trials_.find(trial_name);
- if (it == field_trials_.end())
- return std::string();
- return it->second;
-}
-} // namespace field_trial
-
namespace test {
// Note: this code is copied from src/base/metrics/field_trial.cc since the aim
// is to mimic chromium --force-fieldtrials.
@@ -53,6 +39,7 @@ void InitFieldTrialsFromString(const std::string& trials_string) {
return;
size_t next_item = 0;
+ std::map<std::string, std::string> field_trials;
while (next_item < trials_string.length()) {
size_t name_end = trials_string.find(kPersistentStringSeparator, next_item);
if (name_end == trials_string.npos || next_item == name_end)
@@ -67,15 +54,18 @@ void InitFieldTrialsFromString(const std::string& trials_string) {
next_item = group_name_end + 1;
// Fail if duplicate with different group name.
- if (field_trials_.find(name) != field_trials_.end() &&
- field_trials_.find(name)->second != group_name)
+ if (field_trials.find(name) != field_trials.end() &&
+ field_trials.find(name)->second != group_name) {
break;
+ }
- field_trials_[name] = group_name;
+ field_trials[name] = group_name;
// Successfully parsed all field trials from the string.
- if (next_item == trials_string.length())
+ if (next_item == trials_string.length()) {
+ webrtc::field_trial::InitFieldTrialsFromString(trials_string.c_str());
return;
+ }
}
// Using fprintf as LOG does not print when this is called early in main.
fprintf(stderr, "Invalid field trials string.\n");
@@ -85,18 +75,18 @@ void InitFieldTrialsFromString(const std::string& trials_string) {
}
ScopedFieldTrials::ScopedFieldTrials(const std::string& config)
- : previous_field_trials_(field_trials_) {
+ : previous_field_trials_(webrtc::field_trial::GetFieldTrialString()) {
assert(field_trials_initiated_);
field_trials_initiated_ = false;
- field_trials_.clear();
- InitFieldTrialsFromString(config);
+ current_field_trials_ = config;
+ InitFieldTrialsFromString(current_field_trials_);
}
ScopedFieldTrials::~ScopedFieldTrials() {
// Should still be initialized, since InitFieldTrials is called from ctor.
// That's why we don't restore the flag.
assert(field_trials_initiated_);
- field_trials_ = previous_field_trials_;
+ webrtc::field_trial::InitFieldTrialsFromString(previous_field_trials_);
}
} // namespace test
diff --git a/webrtc/test/field_trial.h b/webrtc/test/field_trial.h
index d448f3411d..735aa1f833 100644
--- a/webrtc/test/field_trial.h
+++ b/webrtc/test/field_trial.h
@@ -39,7 +39,8 @@ class ScopedFieldTrials {
explicit ScopedFieldTrials(const std::string& config);
~ScopedFieldTrials();
private:
- const std::map<std::string, std::string> previous_field_trials_;
+ std::string current_field_trials_;
+ const char* previous_field_trials_;
};
} // namespace test
diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp
index 8f04ce8fde..5bb7793842 100644
--- a/webrtc/test/test.gyp
+++ b/webrtc/test/test.gyp
@@ -97,6 +97,7 @@
],
'dependencies': [
'<(webrtc_root)/common.gyp:webrtc_common',
+ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default',
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
],
},