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 |