This is an integration test using peerconnectiontestwrapper.h to set up and end to end test using a real PeerConnection implementation. These tests will complement rtcstatscollector_unittest.cc which collects all stats using mocks. The integration test is set up so that all stats types are returned by GetStats and verifies that expected dictionary members are defined. The test could in the future be updated to include sanity checks for the values of members. There is a sanity check that references to other stats dictionaries yield existing stats of the appropriate type, but other than that members are only tested for if they are defined not. StatsCallback of rtcstatscollector_unittest.cc is moved so that it can be reused and renamed to RTCStatsObtainer. TODO: Audio stream track stats members are missing in the test. Find out if this is because of a real problem or because of testing without real devices. Do this before closing crbug.com/627816. BUG=chromium:627816 Review-Url: https://codereview.webrtc.org/2521663002 Cr-Commit-Position: refs/heads/master@{#15287}
54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
/*
|
|
* Copyright 2016 The WebRTC Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef WEBRTC_API_TEST_RTCSTATSOBTAINER_H_
|
|
#define WEBRTC_API_TEST_RTCSTATSOBTAINER_H_
|
|
|
|
#include "webrtc/api/stats/rtcstatsreport.h"
|
|
#include "webrtc/base/gunit.h"
|
|
|
|
namespace webrtc {
|
|
|
|
class RTCStatsObtainer : public RTCStatsCollectorCallback {
|
|
public:
|
|
static rtc::scoped_refptr<RTCStatsObtainer> Create(
|
|
rtc::scoped_refptr<const RTCStatsReport>* report_ptr = nullptr) {
|
|
return rtc::scoped_refptr<RTCStatsObtainer>(
|
|
new rtc::RefCountedObject<RTCStatsObtainer>(report_ptr));
|
|
}
|
|
|
|
void OnStatsDelivered(
|
|
const rtc::scoped_refptr<const RTCStatsReport>& report) override {
|
|
EXPECT_TRUE(thread_checker_.CalledOnValidThread());
|
|
report_ = report;
|
|
if (report_ptr_)
|
|
*report_ptr_ = report_;
|
|
}
|
|
|
|
rtc::scoped_refptr<const RTCStatsReport> report() const {
|
|
EXPECT_TRUE(thread_checker_.CalledOnValidThread());
|
|
return report_;
|
|
}
|
|
|
|
protected:
|
|
explicit RTCStatsObtainer(
|
|
rtc::scoped_refptr<const RTCStatsReport>* report_ptr)
|
|
: report_ptr_(report_ptr) {}
|
|
|
|
private:
|
|
rtc::ThreadChecker thread_checker_;
|
|
rtc::scoped_refptr<const RTCStatsReport> report_;
|
|
rtc::scoped_refptr<const RTCStatsReport>* report_ptr_;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_API_TEST_RTCSTATSOBTAINER_H_
|