| Index: webrtc/pc/rtcstats_integrationtest.cc
|
| diff --git a/webrtc/pc/rtcstats_integrationtest.cc b/webrtc/pc/rtcstats_integrationtest.cc
|
| index 56a4ef11edae0c74339569cd760b1cc530986a6c..d6326f6beaa4f8f7540a4b44f3701687cb3be4a9 100644
|
| --- a/webrtc/pc/rtcstats_integrationtest.cc
|
| +++ b/webrtc/pc/rtcstats_integrationtest.cc
|
| @@ -24,6 +24,7 @@
|
| #include "webrtc/rtc_base/gunit.h"
|
| #include "webrtc/rtc_base/refcountedobject.h"
|
| #include "webrtc/rtc_base/scoped_ref_ptr.h"
|
| +#include "webrtc/rtc_base/trace_event.h"
|
| #include "webrtc/rtc_base/virtualsocketserver.h"
|
|
|
| namespace webrtc {
|
| @@ -33,27 +34,62 @@ namespace {
|
| const int64_t kGetStatsTimeoutMs = 10000;
|
|
|
| const unsigned char* GetCategoryEnabledHandler(const char* name) {
|
| - return reinterpret_cast<const unsigned char*>("webrtc_stats");
|
| + if (strcmp("webrtc_stats", name) != 0) {
|
| + return reinterpret_cast<const unsigned char*>("");
|
| + }
|
| + return reinterpret_cast<const unsigned char*>(name);
|
| }
|
|
|
| -void AddTraceEventHandler(char phase,
|
| - const unsigned char* category_enabled,
|
| - const char* name,
|
| - unsigned long long id,
|
| - int num_args,
|
| - const char** arg_names,
|
| - const unsigned char* arg_types,
|
| - const unsigned long long* arg_values,
|
| - unsigned char flags) {
|
| - // Do nothing
|
| -}
|
| +class RTCStatsReportTraceListener {
|
| + public:
|
| + static void SetUp() {
|
| + if (!traced_report_)
|
| + traced_report_ = new RTCStatsReportTraceListener();
|
| + traced_report_->last_trace_ = "";
|
| + SetupEventTracer(&GetCategoryEnabledHandler,
|
| + &RTCStatsReportTraceListener::AddTraceEventHandler);
|
| + }
|
| +
|
| + static const std::string& last_trace() {
|
| + RTC_DCHECK(traced_report_);
|
| + return traced_report_->last_trace_;
|
| + }
|
| +
|
| + private:
|
| + static void AddTraceEventHandler(char phase,
|
| + const unsigned char* category_enabled,
|
| + const char* name,
|
| + unsigned long long id,
|
| + int num_args,
|
| + const char** arg_names,
|
| + const unsigned char* arg_types,
|
| + const unsigned long long* arg_values,
|
| + unsigned char flags) {
|
| + RTC_DCHECK(traced_report_);
|
| + EXPECT_EQ(traced_report_->last_trace_, "");
|
| + EXPECT_STREQ("webrtc_stats",
|
| + reinterpret_cast<const char*>(category_enabled));
|
| + EXPECT_STREQ("webrtc_stats", name);
|
| + EXPECT_EQ(1, num_args);
|
| + EXPECT_STREQ("report", arg_names[0]);
|
| + EXPECT_EQ(TRACE_VALUE_TYPE_COPY_STRING, arg_types[0]);
|
| +
|
| + traced_report_->last_trace_ = reinterpret_cast<const char*>(arg_values[0]);
|
| + }
|
| +
|
| + static RTCStatsReportTraceListener* traced_report_;
|
| + std::string last_trace_;
|
| +};
|
| +
|
| +RTCStatsReportTraceListener* RTCStatsReportTraceListener::traced_report_ =
|
| + nullptr;
|
|
|
| class RTCStatsIntegrationTest : public testing::Test {
|
| public:
|
| RTCStatsIntegrationTest()
|
| : network_thread_(new rtc::Thread(&virtual_socket_server_)),
|
| worker_thread_(rtc::Thread::Create()) {
|
| - SetupEventTracer(&GetCategoryEnabledHandler, &AddTraceEventHandler);
|
| + RTCStatsReportTraceListener::SetUp();
|
|
|
| RTC_CHECK(network_thread_->Start());
|
| RTC_CHECK(worker_thread_->Start());
|
| @@ -650,6 +686,7 @@ TEST_F(RTCStatsIntegrationTest, GetStatsFromCaller) {
|
|
|
| rtc::scoped_refptr<const RTCStatsReport> report = GetStatsFromCaller();
|
| RTCStatsReportVerifier(report.get()).VerifyReport();
|
| + EXPECT_EQ(report->ToJson(), RTCStatsReportTraceListener::last_trace());
|
| }
|
|
|
| TEST_F(RTCStatsIntegrationTest, GetStatsFromCallee) {
|
| @@ -657,6 +694,7 @@ TEST_F(RTCStatsIntegrationTest, GetStatsFromCallee) {
|
|
|
| rtc::scoped_refptr<const RTCStatsReport> report = GetStatsFromCallee();
|
| RTCStatsReportVerifier(report.get()).VerifyReport();
|
| + EXPECT_EQ(report->ToJson(), RTCStatsReportTraceListener::last_trace());
|
| }
|
|
|
| TEST_F(RTCStatsIntegrationTest, GetsStatsWhileDestroyingPeerConnections) {
|
| @@ -670,6 +708,8 @@ TEST_F(RTCStatsIntegrationTest, GetsStatsWhileDestroyingPeerConnections) {
|
| // Any pending stats requests should have completed in the act of destroying
|
| // the peer connection.
|
| EXPECT_TRUE(stats_obtainer->report());
|
| + EXPECT_EQ(stats_obtainer->report()->ToJson(),
|
| + RTCStatsReportTraceListener::last_trace());
|
| }
|
| #endif // HAVE_SCTP
|
|
|
|
|