diff --git a/tests/native/utilities/firewall.cpp b/tests/native/utilities/firewall.cpp index 6e35d07efd..22f83e8ed4 100644 --- a/tests/native/utilities/firewall.cpp +++ b/tests/native/utilities/firewall.cpp @@ -28,8 +28,11 @@ Firewall::Firewall() { result = mUidOwnerMap.init(UID_OWNER_MAP_PATH); EXPECT_RESULT_OK(result) << "init mUidOwnerMap failed"; - result = mDataSaverEnabledMap.init(DATA_SAVER_ENABLED_MAP_PATH); - EXPECT_RESULT_OK(result) << "init mDataSaverEnabledMap failed"; + // Do not check whether DATA_SAVER_ENABLED_MAP_PATH init succeeded or failed since the map is + // defined in tethering module, but the user of this class may be in other modules. For example, + // DNS resolver tests statically link to this class. But when running MTS, the test infra + // installs only DNS resolver module without installing tethering module together. + mDataSaverEnabledMap.init(DATA_SAVER_ENABLED_MAP_PATH); } Firewall* Firewall::getInstance() { @@ -122,6 +125,10 @@ Result Firewall::removeUidInterfaceRules(const std::vector& uids) Result Firewall::getDataSaverSetting() { std::lock_guard guard(mMutex); + if (!mDataSaverEnabledMap.isValid()) { + return Errorf("init mDataSaverEnabledMap failed"); + } + auto dataSaverSetting = mDataSaverEnabledMap.readValue(DATA_SAVER_ENABLED_KEY); if (!dataSaverSetting.ok()) { return Errorf("Cannot read the data saver setting: {}", dataSaverSetting.error().message()); @@ -131,6 +138,10 @@ Result Firewall::getDataSaverSetting() { Result Firewall::setDataSaver(bool enabled) { std::lock_guard guard(mMutex); + if (!mDataSaverEnabledMap.isValid()) { + return Errorf("init mDataSaverEnabledMap failed"); + } + auto res = mDataSaverEnabledMap.writeValue(DATA_SAVER_ENABLED_KEY, enabled, BPF_EXIST); if (!res.ok()) return Errorf("Failed to set data saver: {}", res.error().message());