Remove usage of AsyncInvoker in test class FakeNetworkSocket
in favor of simpler TaskQueue protection mechanic. Bug: webrtc:12339 Change-Id: I1636139fe0d3f79bdc28132da9268dab003f3506 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204700 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33135}
This commit is contained in:

committed by
Commit Bot

parent
eee0e9e9d4
commit
7358b40f44
@ -41,6 +41,7 @@ rtc_library("emulated_network") {
|
|||||||
"../../api:array_view",
|
"../../api:array_view",
|
||||||
"../../api:network_emulation_manager_api",
|
"../../api:network_emulation_manager_api",
|
||||||
"../../api:packet_socket_factory",
|
"../../api:packet_socket_factory",
|
||||||
|
"../../api:scoped_refptr",
|
||||||
"../../api:simulated_network_api",
|
"../../api:simulated_network_api",
|
||||||
"../../api:time_controller",
|
"../../api:time_controller",
|
||||||
"../../api/numerics",
|
"../../api/numerics",
|
||||||
@ -65,7 +66,9 @@ rtc_library("emulated_network") {
|
|||||||
"../../rtc_base:threading",
|
"../../rtc_base:threading",
|
||||||
"../../rtc_base/synchronization:mutex",
|
"../../rtc_base/synchronization:mutex",
|
||||||
"../../rtc_base/synchronization:sequence_checker",
|
"../../rtc_base/synchronization:sequence_checker",
|
||||||
|
"../../rtc_base/task_utils:pending_task_safety_flag",
|
||||||
"../../rtc_base/task_utils:repeating_task",
|
"../../rtc_base/task_utils:repeating_task",
|
||||||
|
"../../rtc_base/task_utils:to_queued_task",
|
||||||
"../../rtc_base/third_party/sigslot",
|
"../../rtc_base/third_party/sigslot",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
"../scenario:column_printer",
|
"../scenario:column_printer",
|
||||||
|
@ -16,8 +16,10 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "absl/algorithm/container.h"
|
#include "absl/algorithm/container.h"
|
||||||
#include "rtc_base/async_invoker.h"
|
#include "api/scoped_refptr.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
#include "rtc_base/task_utils/pending_task_safety_flag.h"
|
||||||
|
#include "rtc_base/task_utils/to_queued_task.h"
|
||||||
#include "rtc_base/thread.h"
|
#include "rtc_base/thread.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
@ -74,7 +76,7 @@ class FakeNetworkSocket : public rtc::AsyncSocket,
|
|||||||
std::map<Option, int> options_map_ RTC_GUARDED_BY(&thread_);
|
std::map<Option, int> options_map_ RTC_GUARDED_BY(&thread_);
|
||||||
|
|
||||||
absl::optional<EmulatedIpPacket> pending_ RTC_GUARDED_BY(thread_);
|
absl::optional<EmulatedIpPacket> pending_ RTC_GUARDED_BY(thread_);
|
||||||
rtc::AsyncInvoker invoker_;
|
rtc::scoped_refptr<PendingTaskSafetyFlag> alive_;
|
||||||
};
|
};
|
||||||
|
|
||||||
FakeNetworkSocket::FakeNetworkSocket(FakeNetworkSocketServer* socket_server,
|
FakeNetworkSocket::FakeNetworkSocket(FakeNetworkSocketServer* socket_server,
|
||||||
@ -82,9 +84,13 @@ FakeNetworkSocket::FakeNetworkSocket(FakeNetworkSocketServer* socket_server,
|
|||||||
: socket_server_(socket_server),
|
: socket_server_(socket_server),
|
||||||
thread_(thread),
|
thread_(thread),
|
||||||
state_(CS_CLOSED),
|
state_(CS_CLOSED),
|
||||||
error_(0) {}
|
error_(0),
|
||||||
|
alive_(PendingTaskSafetyFlag::Create()) {}
|
||||||
|
|
||||||
FakeNetworkSocket::~FakeNetworkSocket() {
|
FakeNetworkSocket::~FakeNetworkSocket() {
|
||||||
|
// Abandon all pending packets.
|
||||||
|
alive_->SetNotAlive();
|
||||||
|
|
||||||
Close();
|
Close();
|
||||||
socket_server_->Unregister(this);
|
socket_server_->Unregister(this);
|
||||||
}
|
}
|
||||||
@ -103,7 +109,7 @@ void FakeNetworkSocket::OnPacketReceived(EmulatedIpPacket packet) {
|
|||||||
SignalReadEvent(this);
|
SignalReadEvent(this);
|
||||||
RTC_DCHECK(!pending_);
|
RTC_DCHECK(!pending_);
|
||||||
};
|
};
|
||||||
invoker_.AsyncInvoke<void>(RTC_FROM_HERE, thread_, std::move(task));
|
thread_->PostTask(ToQueuedTask(alive_, std::move(task)));
|
||||||
socket_server_->WakeUp();
|
socket_server_->WakeUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,8 +207,14 @@ TEST(NetworkEmulationManagerTest, Run) {
|
|||||||
|
|
||||||
rtc::CopyOnWriteBuffer data("Hello");
|
rtc::CopyOnWriteBuffer data("Hello");
|
||||||
for (uint64_t j = 0; j < 2; j++) {
|
for (uint64_t j = 0; j < 2; j++) {
|
||||||
auto* s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
rtc::AsyncSocket* s1 = nullptr;
|
||||||
auto* s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
rtc::AsyncSocket* s2 = nullptr;
|
||||||
|
t1->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
t2->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
|
||||||
SocketReader r1(s1, t1);
|
SocketReader r1(s1, t1);
|
||||||
SocketReader r2(s2, t2);
|
SocketReader r2(s2, t2);
|
||||||
@ -357,8 +363,14 @@ TEST(NetworkEmulationManagerTest, DebugStatsCollectedInDebugMode) {
|
|||||||
|
|
||||||
rtc::CopyOnWriteBuffer data("Hello");
|
rtc::CopyOnWriteBuffer data("Hello");
|
||||||
for (uint64_t j = 0; j < 2; j++) {
|
for (uint64_t j = 0; j < 2; j++) {
|
||||||
auto* s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
rtc::AsyncSocket* s1 = nullptr;
|
||||||
auto* s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
rtc::AsyncSocket* s2 = nullptr;
|
||||||
|
t1->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
t2->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
|
||||||
SocketReader r1(s1, t1);
|
SocketReader r1(s1, t1);
|
||||||
SocketReader r2(s2, t2);
|
SocketReader r2(s2, t2);
|
||||||
@ -454,8 +466,15 @@ TEST(NetworkEmulationManagerTest, ThroughputStats) {
|
|||||||
constexpr int64_t kUdpPayloadSize = 100;
|
constexpr int64_t kUdpPayloadSize = 100;
|
||||||
constexpr int64_t kSinglePacketSize = kUdpPayloadSize + kOverheadIpv4Udp;
|
constexpr int64_t kSinglePacketSize = kUdpPayloadSize + kOverheadIpv4Udp;
|
||||||
rtc::CopyOnWriteBuffer data(kUdpPayloadSize);
|
rtc::CopyOnWriteBuffer data(kUdpPayloadSize);
|
||||||
auto* s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
|
||||||
auto* s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
rtc::AsyncSocket* s1 = nullptr;
|
||||||
|
rtc::AsyncSocket* s2 = nullptr;
|
||||||
|
t1->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s1 = t1->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
t2->Invoke<void>(RTC_FROM_HERE, [&] {
|
||||||
|
s2 = t2->socketserver()->CreateAsyncSocket(AF_INET, SOCK_DGRAM);
|
||||||
|
});
|
||||||
|
|
||||||
SocketReader r1(s1, t1);
|
SocketReader r1(s1, t1);
|
||||||
SocketReader r2(s2, t2);
|
SocketReader r2(s2, t2);
|
||||||
|
Reference in New Issue
Block a user