Allow background networking for test uids am: b7574d4e63
Original change: https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/2966043
Change-Id: I2d14840c95228172990ad151a189b82c5115b842
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/tests/Android.bp b/tests/Android.bp
index 7f10d37..7cb4a2a 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -285,6 +285,7 @@
"netd_aidl_interface-lateststable-ndk",
"netd_event_listener_interface-lateststable-ndk",
"libcrypto_static",
+ "libconnectivity_native_test_utils",
"libcutils",
"libdoh_ffi_for_test",
"libgmock",
diff --git a/tests/resolv_callback_unit_test.cpp b/tests/resolv_callback_unit_test.cpp
index 6814697..391951b 100644
--- a/tests/resolv_callback_unit_test.cpp
+++ b/tests/resolv_callback_unit_test.cpp
@@ -108,6 +108,7 @@
initDnsResolverCallbacks();
// Create cache for test
android::net::gDnsResolv->resolverCtrl.createNetworkCache(TEST_NETID);
+ AllowNetworkInBackground(TEST_UID, true);
}
void TearDown() override {
@@ -116,6 +117,7 @@
resetDnsResolverCallbacks();
// Delete cache for test
android::net::gDnsResolv->resolverCtrl.destroyNetworkCache(TEST_NETID);
+ AllowNetworkInBackground(TEST_UID, false);
}
int SetResolvers() {
diff --git a/tests/resolv_integration_test.cpp b/tests/resolv_integration_test.cpp
index d3e0c59..a7cc7a8 100644
--- a/tests/resolv_integration_test.cpp
+++ b/tests/resolv_integration_test.cpp
@@ -221,8 +221,14 @@
// Start the binder thread pool for listening DNS metrics events and receiving death
// recipient.
ABinderProcess_startThreadPool();
+ AllowNetworkInBackground(TEST_UID, true);
+ AllowNetworkInBackground(TEST_UID2, true);
}
- static void TearDownTestSuite() { AIBinder_DeathRecipient_delete(sResolvDeathRecipient); }
+ static void TearDownTestSuite() {
+ AIBinder_DeathRecipient_delete(sResolvDeathRecipient);
+ AllowNetworkInBackground(TEST_UID, false);
+ AllowNetworkInBackground(TEST_UID2, false);
+ }
protected:
void SetUp() {
diff --git a/tests/resolv_test_utils.cpp b/tests/resolv_test_utils.cpp
index 4b09b21..a1a9e4e 100644
--- a/tests/resolv_test_utils.cpp
+++ b/tests/resolv_test_utils.cpp
@@ -21,6 +21,7 @@
#include <android-base/chrono_utils.h>
#include <android-base/logging.h>
+#include <firewall.h>
using android::netdutils::ScopedAddrinfo;
@@ -230,6 +231,18 @@
EXPECT_EQ(0, ForkAndRun(args_v6));
}
+void AllowNetworkInBackground(int uid, bool allow) {
+ if (android::modules::sdklevel::IsAtLeastV()) {
+ // Background networking is always allowed on earlier versions.
+ Firewall* firewall = Firewall::getInstance();
+ if (allow) {
+ firewall->addRule(uid, BACKGROUND_MATCH);
+ } else {
+ firewall->removeRule(uid, BACKGROUND_MATCH);
+ }
+ }
+}
+
bool is64bitAbi() {
return android::base::GetProperty("ro.product.cpu.abi", "").find("64") != std::string::npos;
}
diff --git a/tests/resolv_test_utils.h b/tests/resolv_test_utils.h
index e3f744c..7dc1c99 100644
--- a/tests/resolv_test_utils.h
+++ b/tests/resolv_test_utils.h
@@ -431,6 +431,7 @@
void SetMdnsRoute();
void RemoveMdnsRoute();
+void AllowNetworkInBackground(int uid, bool allow);
#define SKIP_IF_BEFORE_T \
do { \