Fix AndroidNetworkMonitorTests crash due to DCHECK failure

AndroidNetworkMonitor::SetNetworkInfos assumes this method is called
only once, but unittests calls it twice.
One is called by the startMonitoring Java method, and the other is
called by each test.
Because of this, these tests will not succeed if dcheck_always_on is true.

To solve this problem, use OnNetworkConnected_n
instead of SetNetworkInfos in each test.

Bug: None
Change-Id: I027706ad5ccd597a91e3a66f15e181ee22d4aaa9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/285861
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/main@{#38798}
This commit is contained in:
Byoungchan Lee
2022-12-02 19:52:08 +09:00
committed by WebRTC LUCI CQ
parent c8157c33b4
commit a639528a43
2 changed files with 14 additions and 9 deletions

View File

@ -121,7 +121,7 @@ TEST_F(AndroidNetworkMonitorTest,
jni::NetworkInformation net_info =
CreateNetworkInformation("wlan0", ipv6_handle, ipv6_address1);
std::vector<jni::NetworkInformation> net_infos(1, net_info);
network_monitor_->SetNetworkInfos(net_infos);
network_monitor_->OnNetworkConnected_n(net_info);
auto network_handle1 =
network_monitor_->FindNetworkHandleFromAddressOrName(ipv6_address1, "");
@ -144,7 +144,7 @@ TEST_F(AndroidNetworkMonitorTest, TestFindNetworkHandleUsingIfName) {
jni::NetworkInformation net_info =
CreateNetworkInformation("wlan0", ipv6_handle, ipv6_address1);
std::vector<jni::NetworkInformation> net_infos(1, net_info);
network_monitor_->SetNetworkInfos(net_infos);
network_monitor_->OnNetworkConnected_n(net_info);
rtc::IPAddress ipv4_address(kTestIpv4Address);
@ -170,7 +170,7 @@ TEST_F(AndroidNetworkMonitorTest, TestUnderlyingVpnType) {
CreateNetworkInformation("wlan0", ipv4_handle, ipv4_address);
net_info.type = jni::NETWORK_VPN;
net_info.underlying_type_for_vpn = jni::NETWORK_WIFI;
network_monitor_->SetNetworkInfos({net_info});
network_monitor_->OnNetworkConnected_n(net_info);
EXPECT_EQ(
rtc::ADAPTER_TYPE_WIFI,
@ -186,7 +186,7 @@ TEST_F(AndroidNetworkMonitorTest, Disconnect) {
jni::NetworkInformation net_info =
CreateNetworkInformation("wlan0", ipv4_handle, ipv4_address);
net_info.type = jni::NETWORK_WIFI;
network_monitor_->SetNetworkInfos({net_info});
network_monitor_->OnNetworkConnected_n(net_info);
EXPECT_TRUE(network_monitor_->GetInterfaceInfo("wlan0").available);
EXPECT_TRUE(network_monitor_
@ -215,7 +215,7 @@ TEST_F(AndroidNetworkMonitorTest, Reset) {
jni::NetworkInformation net_info =
CreateNetworkInformation("wlan0", ipv4_handle, ipv4_address);
net_info.type = jni::NETWORK_WIFI;
network_monitor_->SetNetworkInfos({net_info});
network_monitor_->OnNetworkConnected_n(net_info);
EXPECT_TRUE(network_monitor_->GetInterfaceInfo("wlan0").available);
EXPECT_TRUE(network_monitor_
@ -250,7 +250,8 @@ TEST_F(AndroidNetworkMonitorTest, DuplicateIfname) {
CreateNetworkInformation("wlan0", ipv6_handle, ipv6_address);
net_info2.type = jni::NETWORK_UNKNOWN_CELLULAR;
network_monitor_->SetNetworkInfos({net_info1, net_info2});
network_monitor_->OnNetworkConnected_n(net_info1);
network_monitor_->OnNetworkConnected_n(net_info2);
// The last added.
EXPECT_TRUE(network_monitor_->GetInterfaceInfo("wlan0").available);
@ -281,7 +282,8 @@ TEST_F(AndroidNetworkMonitorTest, DuplicateIfnameDisconnectOwner) {
CreateNetworkInformation("wlan0", ipv6_handle, ipv6_address);
net_info2.type = jni::NETWORK_UNKNOWN_CELLULAR;
network_monitor_->SetNetworkInfos({net_info1, net_info2});
network_monitor_->OnNetworkConnected_n(net_info1);
network_monitor_->OnNetworkConnected_n(net_info2);
// The last added.
EXPECT_TRUE(network_monitor_->GetInterfaceInfo("wlan0").available);
@ -311,7 +313,8 @@ TEST_F(AndroidNetworkMonitorTest, DuplicateIfnameDisconnectNonOwner) {
CreateNetworkInformation("wlan0", ipv6_handle, ipv6_address);
net_info2.type = jni::NETWORK_UNKNOWN_CELLULAR;
network_monitor_->SetNetworkInfos({net_info1, net_info2});
network_monitor_->OnNetworkConnected_n(net_info1);
network_monitor_->OnNetworkConnected_n(net_info2);
// The last added.
EXPECT_TRUE(network_monitor_->GetInterfaceInfo("wlan0").available);

View File

@ -114,6 +114,9 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorInterface {
const JavaRef<jobject>& j_connection_type,
jint preference);
// Visible for testing.
void OnNetworkConnected_n(const NetworkInformation& network_info);
// Visible for testing.
absl::optional<NetworkHandle> FindNetworkHandleFromAddressOrName(
const rtc::IPAddress& address,
@ -121,7 +124,6 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorInterface {
private:
void reset();
void OnNetworkConnected_n(const NetworkInformation& network_info);
void OnNetworkDisconnected_n(NetworkHandle network_handle);
void OnNetworkPreference_n(NetworkType type,
rtc::NetworkPreference preference);