Refactor rampup tests:
- Cleanup test done condition (should be the same but with less code). - Split up functions blocks inside methods that were large. R=stefan@webrtc.org BUG=3065 Review URL: https://webrtc-codereview.appspot.com/10029004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5708 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
44eb87e6dd
commit
a714eafb83
@ -44,12 +44,11 @@ class StreamObserver : public newapi::Transport, public RemoteBitrateObserver {
|
|||||||
public:
|
public:
|
||||||
typedef std::map<uint32_t, int> BytesSentMap;
|
typedef std::map<uint32_t, int> BytesSentMap;
|
||||||
typedef std::map<uint32_t, uint32_t> SsrcMap;
|
typedef std::map<uint32_t, uint32_t> SsrcMap;
|
||||||
StreamObserver(int num_expected_ssrcs,
|
StreamObserver(const SsrcMap& rtx_media_ssrcs,
|
||||||
const SsrcMap& rtx_media_ssrcs,
|
|
||||||
newapi::Transport* feedback_transport,
|
newapi::Transport* feedback_transport,
|
||||||
Clock* clock)
|
Clock* clock)
|
||||||
: critical_section_(CriticalSectionWrapper::CreateCriticalSection()),
|
: critical_section_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||||
all_ssrcs_sent_(EventWrapper::Create()),
|
test_done_(EventWrapper::Create()),
|
||||||
rtp_parser_(RtpHeaderParser::Create()),
|
rtp_parser_(RtpHeaderParser::Create()),
|
||||||
feedback_transport_(feedback_transport),
|
feedback_transport_(feedback_transport),
|
||||||
receive_stats_(ReceiveStatistics::Create(clock)),
|
receive_stats_(ReceiveStatistics::Create(clock)),
|
||||||
@ -57,7 +56,6 @@ class StreamObserver : public newapi::Transport, public RemoteBitrateObserver {
|
|||||||
new RTPPayloadRegistry(-1,
|
new RTPPayloadRegistry(-1,
|
||||||
RTPPayloadStrategy::CreateStrategy(false))),
|
RTPPayloadStrategy::CreateStrategy(false))),
|
||||||
clock_(clock),
|
clock_(clock),
|
||||||
num_expected_ssrcs_(num_expected_ssrcs),
|
|
||||||
rtx_media_ssrcs_(rtx_media_ssrcs),
|
rtx_media_ssrcs_(rtx_media_ssrcs),
|
||||||
total_sent_(0),
|
total_sent_(0),
|
||||||
padding_sent_(0),
|
padding_sent_(0),
|
||||||
@ -87,43 +85,10 @@ class StreamObserver : public newapi::Transport, public RemoteBitrateObserver {
|
|||||||
virtual void OnReceiveBitrateChanged(const std::vector<unsigned int>& ssrcs,
|
virtual void OnReceiveBitrateChanged(const std::vector<unsigned int>& ssrcs,
|
||||||
unsigned int bitrate) {
|
unsigned int bitrate) {
|
||||||
CriticalSectionScoped lock(critical_section_.get());
|
CriticalSectionScoped lock(critical_section_.get());
|
||||||
if (ssrcs.size() == num_expected_ssrcs_ && bitrate >= kExpectedBitrateBps) {
|
if (bitrate >= kExpectedBitrateBps) {
|
||||||
|
// Just trigger if there was any rtx padding packet.
|
||||||
if (rtx_media_ssrcs_.empty() || rtx_media_sent_ > 0) {
|
if (rtx_media_ssrcs_.empty() || rtx_media_sent_ > 0) {
|
||||||
const ::testing::TestInfo* const test_info =
|
TriggerTestDone();
|
||||||
::testing::UnitTest::GetInstance()->current_test_info();
|
|
||||||
webrtc::test::PrintResult(
|
|
||||||
"total-sent", "", test_info->name(), total_sent_, "bytes", false);
|
|
||||||
webrtc::test::PrintResult("padding-sent",
|
|
||||||
"",
|
|
||||||
test_info->name(),
|
|
||||||
padding_sent_,
|
|
||||||
"bytes",
|
|
||||||
false);
|
|
||||||
webrtc::test::PrintResult("rtx-media-sent",
|
|
||||||
"",
|
|
||||||
test_info->name(),
|
|
||||||
rtx_media_sent_,
|
|
||||||
"bytes",
|
|
||||||
false);
|
|
||||||
webrtc::test::PrintResult("total-packets-sent",
|
|
||||||
"",
|
|
||||||
test_info->name(),
|
|
||||||
total_packets_sent_,
|
|
||||||
"packets",
|
|
||||||
false);
|
|
||||||
webrtc::test::PrintResult("padding-packets-sent",
|
|
||||||
"",
|
|
||||||
test_info->name(),
|
|
||||||
padding_packets_sent_,
|
|
||||||
"packets",
|
|
||||||
false);
|
|
||||||
webrtc::test::PrintResult("rtx-packets-sent",
|
|
||||||
"",
|
|
||||||
test_info->name(),
|
|
||||||
rtx_media_packets_sent_,
|
|
||||||
"packets",
|
|
||||||
false);
|
|
||||||
all_ssrcs_sent_->Set();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rtp_rtcp_->SetREMBData(
|
rtp_rtcp_->SetREMBData(
|
||||||
@ -172,13 +137,32 @@ class StreamObserver : public newapi::Transport, public RemoteBitrateObserver {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
EventTypeWrapper Wait() { return all_ssrcs_sent_->Wait(120 * 1000); }
|
EventTypeWrapper Wait() { return test_done_->Wait(120 * 1000); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const unsigned int kExpectedBitrateBps = 1200000;
|
static const unsigned int kExpectedBitrateBps = 1200000;
|
||||||
|
|
||||||
|
void ReportResult(const std::string& measurement,
|
||||||
|
size_t value,
|
||||||
|
const std::string& units) {
|
||||||
|
webrtc::test::PrintResult(
|
||||||
|
measurement, "",
|
||||||
|
::testing::UnitTest::GetInstance()->current_test_info()->name(),
|
||||||
|
value, units, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TriggerTestDone() {
|
||||||
|
ReportResult("total-sent", total_sent_, "bytes");
|
||||||
|
ReportResult("padding-sent", padding_sent_, "bytes");
|
||||||
|
ReportResult("rtx-media-sent", rtx_media_sent_, "bytes");
|
||||||
|
ReportResult("total-packets-sent", total_packets_sent_, "packets");
|
||||||
|
ReportResult("padding-packets-sent", padding_packets_sent_, "packets");
|
||||||
|
ReportResult("rtx-packets-sent", rtx_media_packets_sent_, "packets");
|
||||||
|
test_done_->Set();
|
||||||
|
}
|
||||||
|
|
||||||
scoped_ptr<CriticalSectionWrapper> critical_section_;
|
scoped_ptr<CriticalSectionWrapper> critical_section_;
|
||||||
scoped_ptr<EventWrapper> all_ssrcs_sent_;
|
scoped_ptr<EventWrapper> test_done_;
|
||||||
scoped_ptr<RtpHeaderParser> rtp_parser_;
|
scoped_ptr<RtpHeaderParser> rtp_parser_;
|
||||||
scoped_ptr<RtpRtcp> rtp_rtcp_;
|
scoped_ptr<RtpRtcp> rtp_rtcp_;
|
||||||
internal::TransportAdapter feedback_transport_;
|
internal::TransportAdapter feedback_transport_;
|
||||||
@ -186,7 +170,6 @@ class StreamObserver : public newapi::Transport, public RemoteBitrateObserver {
|
|||||||
scoped_ptr<RTPPayloadRegistry> payload_registry_;
|
scoped_ptr<RTPPayloadRegistry> payload_registry_;
|
||||||
scoped_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_;
|
scoped_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_;
|
||||||
Clock* clock_;
|
Clock* clock_;
|
||||||
const size_t num_expected_ssrcs_;
|
|
||||||
SsrcMap rtx_media_ssrcs_;
|
SsrcMap rtx_media_ssrcs_;
|
||||||
size_t total_sent_;
|
size_t total_sent_;
|
||||||
size_t padding_sent_;
|
size_t padding_sent_;
|
||||||
@ -413,19 +396,15 @@ class RampUpTest : public ::testing::Test {
|
|||||||
protected:
|
protected:
|
||||||
void RunRampUpTest(bool pacing, bool rtx) {
|
void RunRampUpTest(bool pacing, bool rtx) {
|
||||||
const size_t kNumberOfStreams = 3;
|
const size_t kNumberOfStreams = 3;
|
||||||
std::vector<uint32_t> ssrcs;
|
std::vector<uint32_t> ssrcs(GenerateSsrcs(kNumberOfStreams, 100));
|
||||||
for (size_t i = 0; i < kNumberOfStreams; ++i)
|
std::vector<uint32_t> rtx_ssrcs(GenerateSsrcs(kNumberOfStreams, 200));
|
||||||
ssrcs.push_back(static_cast<uint32_t>(i + 1));
|
|
||||||
uint32_t kRtxSsrcs[kNumberOfStreams] = {111, 112, 113};
|
|
||||||
StreamObserver::SsrcMap rtx_ssrc_map;
|
StreamObserver::SsrcMap rtx_ssrc_map;
|
||||||
if (rtx) {
|
if (rtx) {
|
||||||
for (size_t i = 0; i < ssrcs.size(); ++i)
|
for (size_t i = 0; i < ssrcs.size(); ++i)
|
||||||
rtx_ssrc_map[kRtxSsrcs[i]] = ssrcs[i];
|
rtx_ssrc_map[rtx_ssrcs[i]] = ssrcs[i];
|
||||||
}
|
}
|
||||||
test::DirectTransport receiver_transport;
|
test::DirectTransport receiver_transport;
|
||||||
int num_expected_ssrcs = kNumberOfStreams + (rtx ? 1 : 0);
|
StreamObserver stream_observer(rtx_ssrc_map,
|
||||||
StreamObserver stream_observer(num_expected_ssrcs,
|
|
||||||
rtx_ssrc_map,
|
|
||||||
&receiver_transport,
|
&receiver_transport,
|
||||||
Clock::GetRealTimeClock());
|
Clock::GetRealTimeClock());
|
||||||
|
|
||||||
@ -445,13 +424,10 @@ class RampUpTest : public ::testing::Test {
|
|||||||
send_config.codec.plType = 125;
|
send_config.codec.plType = 125;
|
||||||
send_config.pacing = pacing;
|
send_config.pacing = pacing;
|
||||||
send_config.rtp.nack.rtp_history_ms = 1000;
|
send_config.rtp.nack.rtp_history_ms = 1000;
|
||||||
send_config.rtp.ssrcs.insert(
|
send_config.rtp.ssrcs = ssrcs;
|
||||||
send_config.rtp.ssrcs.begin(), ssrcs.begin(), ssrcs.end());
|
|
||||||
if (rtx) {
|
if (rtx) {
|
||||||
send_config.rtp.rtx.payload_type = 96;
|
send_config.rtp.rtx.payload_type = 96;
|
||||||
send_config.rtp.rtx.ssrcs.insert(send_config.rtp.rtx.ssrcs.begin(),
|
send_config.rtp.rtx.ssrcs = rtx_ssrcs;
|
||||||
kRtxSsrcs,
|
|
||||||
kRtxSsrcs + kNumberOfStreams);
|
|
||||||
}
|
}
|
||||||
send_config.rtp.extensions.push_back(
|
send_config.rtp.extensions.push_back(
|
||||||
RtpExtension(RtpExtension::kAbsSendTime, kAbsoluteSendTimeExtensionId));
|
RtpExtension(RtpExtension::kAbsSendTime, kAbsoluteSendTimeExtensionId));
|
||||||
@ -530,6 +506,15 @@ class RampUpTest : public ::testing::Test {
|
|||||||
call->DestroyVideoSendStream(send_stream);
|
call->DestroyVideoSendStream(send_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<uint32_t> GenerateSsrcs(size_t num_streams,
|
||||||
|
uint32_t ssrc_offset) {
|
||||||
|
std::vector<uint32_t> ssrcs;
|
||||||
|
for (size_t i = 0; i != num_streams; ++i)
|
||||||
|
ssrcs.push_back(static_cast<uint32_t>(ssrc_offset + i));
|
||||||
|
return ssrcs;
|
||||||
|
}
|
||||||
|
|
||||||
std::map<uint32_t, bool> reserved_ssrcs_;
|
std::map<uint32_t, bool> reserved_ssrcs_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user