Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1224)

Unified Diff: webrtc/pc/rtcstats_integrationtest.cc

Issue 2986453002: Trace the stats report as JSON instead of each stat separately. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/pc/rtcstatscollector.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/pc/rtcstats_integrationtest.cc
diff --git a/webrtc/pc/rtcstats_integrationtest.cc b/webrtc/pc/rtcstats_integrationtest.cc
index 56a4ef11edae0c74339569cd760b1cc530986a6c..1847c4077df69aa62316af79d6caade69c830b61 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,64 @@ 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*>("\0");
hbos 2017/08/14 13:15:39 All string literals are null-terminated, should th
ehmaldonado_webrtc 2017/08/14 13:43:24 Right, thanks.
+ }
+ 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 RTCStatsTracedReport {
+ public:
+ static RTCStatsTracedReport* Get() {
+ static RTCStatsTracedReport* traced_report = nullptr;
+ if (!traced_report)
+ traced_report = new RTCStatsTracedReport();
+ return traced_report;
+ }
+
+ 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) {
+ RTCStatsTracedReport* traced_report = RTCStatsTracedReport::Get();
+ EXPECT_FALSE(traced_report->report_received_);
+ 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->report_received_ = true;
+ traced_report->traced_report_ =
+ reinterpret_cast<const char*>(arg_values[0]);
+ }
+
+ void Reset() { report_received_ = false; }
+
+ const std::string& GetTracedReport() const {
+ EXPECT_TRUE(report_received_);
+ return traced_report_;
+ }
+
+ private:
+ std::string traced_report_;
+ bool report_received_;
hbos 2017/08/14 13:15:39 Add a constructor that default-initializes this to
ehmaldonado_webrtc 2017/08/14 13:43:24 Done.
+};
class RTCStatsIntegrationTest : public testing::Test {
public:
RTCStatsIntegrationTest()
: network_thread_(new rtc::Thread(&virtual_socket_server_)),
worker_thread_(rtc::Thread::Create()) {
- SetupEventTracer(&GetCategoryEnabledHandler, &AddTraceEventHandler);
+ RTCStatsTracedReport::Get()->Reset();
+ SetupEventTracer(&GetCategoryEnabledHandler,
+ &RTCStatsTracedReport::AddTraceEventHandler);
hbos 2017/08/14 13:15:39 Because of the usage of a global variable, it is w
ehmaldonado_webrtc 2017/08/14 13:43:24 Done.
RTC_CHECK(network_thread_->Start());
RTC_CHECK(worker_thread_->Start());
@@ -650,6 +688,7 @@ TEST_F(RTCStatsIntegrationTest, GetStatsFromCaller) {
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsFromCaller();
RTCStatsReportVerifier(report.get()).VerifyReport();
+ EXPECT_EQ(report->ToJson(), RTCStatsTracedReport::Get()->GetTracedReport());
}
TEST_F(RTCStatsIntegrationTest, GetStatsFromCallee) {
@@ -657,6 +696,7 @@ TEST_F(RTCStatsIntegrationTest, GetStatsFromCallee) {
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsFromCallee();
RTCStatsReportVerifier(report.get()).VerifyReport();
+ EXPECT_EQ(report->ToJson(), RTCStatsTracedReport::Get()->GetTracedReport());
}
TEST_F(RTCStatsIntegrationTest, GetsStatsWhileDestroyingPeerConnections) {
@@ -670,6 +710,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(),
+ RTCStatsTracedReport::Get()->GetTracedReport());
}
#endif // HAVE_SCTP
« no previous file with comments | « no previous file | webrtc/pc/rtcstatscollector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698