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

Side by Side Diff: webrtc/video/report_block_stats_unittest.cc

Issue 2994633002: Renamed fields in rtp_rtcp_defines.h/RTCPReportBlock (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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/test/gtest.h" 11 #include "webrtc/test/gtest.h"
12 #include "webrtc/video/report_block_stats.h" 12 #include "webrtc/video/report_block_stats.h"
13 13
14 namespace webrtc { 14 namespace webrtc {
15 15
16 class ReportBlockStatsTest : public ::testing::Test { 16 class ReportBlockStatsTest : public ::testing::Test {
17 protected: 17 protected:
18 ReportBlockStatsTest() : kSsrc1(0x12345), kSsrc2(0x23456) {} 18 ReportBlockStatsTest() : kSsrc1(0x12345), kSsrc2(0x23456) {}
19 19
20 void SetUp() override { 20 void SetUp() override {
21 // kSsrc1: block 1-3. 21 // kSsrc1: block 1-3.
22 block1_1_.cumulativeLost = 10; 22 block1_1_.packets_lost = 10;
23 block1_1_.fractionLost = 123; 23 block1_1_.fraction_lost = 123;
24 block1_1_.extendedHighSeqNum = 24000; 24 block1_1_.extended_highest_sequence_number = 24000;
25 block1_1_.jitter = 777; 25 block1_1_.jitter = 777;
26 block1_1_.sourceSSRC = kSsrc1; 26 block1_1_.source_ssrc = kSsrc1;
27 block1_2_.cumulativeLost = 15; 27 block1_2_.packets_lost = 15;
28 block1_2_.fractionLost = 0; 28 block1_2_.fraction_lost = 0;
29 block1_2_.extendedHighSeqNum = 24100; 29 block1_2_.extended_highest_sequence_number = 24100;
30 block1_2_.jitter = 222; 30 block1_2_.jitter = 222;
31 block1_2_.sourceSSRC = kSsrc1; 31 block1_2_.source_ssrc = kSsrc1;
32 block1_3_.cumulativeLost = 50; 32 block1_3_.packets_lost = 50;
33 block1_3_.fractionLost = 0; 33 block1_3_.fraction_lost = 0;
34 block1_3_.extendedHighSeqNum = 24200; 34 block1_3_.extended_highest_sequence_number = 24200;
35 block1_3_.jitter = 333; 35 block1_3_.jitter = 333;
36 block1_3_.sourceSSRC = kSsrc1; 36 block1_3_.source_ssrc = kSsrc1;
37 // kSsrc2: block 1,2. 37 // kSsrc2: block 1,2.
38 block2_1_.cumulativeLost = 111; 38 block2_1_.packets_lost = 111;
39 block2_1_.fractionLost = 222; 39 block2_1_.fraction_lost = 222;
40 block2_1_.extendedHighSeqNum = 8500; 40 block2_1_.extended_highest_sequence_number = 8500;
41 block2_1_.jitter = 555; 41 block2_1_.jitter = 555;
42 block2_1_.sourceSSRC = kSsrc2; 42 block2_1_.source_ssrc = kSsrc2;
43 block2_2_.cumulativeLost = 136; 43 block2_2_.packets_lost = 136;
44 block2_2_.fractionLost = 0; 44 block2_2_.fraction_lost = 0;
45 block2_2_.extendedHighSeqNum = 8800; 45 block2_2_.extended_highest_sequence_number = 8800;
46 block2_2_.jitter = 888; 46 block2_2_.jitter = 888;
47 block2_2_.sourceSSRC = kSsrc2; 47 block2_2_.source_ssrc = kSsrc2;
48 48
49 ssrc1block1_.push_back(block1_1_); 49 ssrc1block1_.push_back(block1_1_);
50 ssrc1block2_.push_back(block1_2_); 50 ssrc1block2_.push_back(block1_2_);
51 ssrc12block1_.push_back(block1_1_); 51 ssrc12block1_.push_back(block1_1_);
52 ssrc12block1_.push_back(block2_1_); 52 ssrc12block1_.push_back(block2_1_);
53 ssrc12block2_.push_back(block1_2_); 53 ssrc12block2_.push_back(block1_2_);
54 ssrc12block2_.push_back(block2_2_); 54 ssrc12block2_.push_back(block2_2_);
55 } 55 }
56 56
57 RtcpStatistics RtcpReportBlockToRtcpStatistics( 57 RtcpStatistics RtcpReportBlockToRtcpStatistics(
58 const RTCPReportBlock& stats) { 58 const RTCPReportBlock& stats) {
59 RtcpStatistics block; 59 RtcpStatistics block;
60 block.packets_lost = stats.cumulativeLost; 60 block.packets_lost = stats.packets_lost;
61 block.fraction_lost = stats.fractionLost; 61 block.fraction_lost = stats.fraction_lost;
62 block.extended_highest_sequence_number = stats.extendedHighSeqNum; 62 block.extended_highest_sequence_number =
63 stats.extended_highest_sequence_number;
63 block.jitter = stats.jitter; 64 block.jitter = stats.jitter;
64 return block; 65 return block;
65 } 66 }
66 67
67 const uint32_t kSsrc1; 68 const uint32_t kSsrc1;
68 const uint32_t kSsrc2; 69 const uint32_t kSsrc2;
69 RTCPReportBlock block1_1_; 70 RTCPReportBlock block1_1_;
70 RTCPReportBlock block1_2_; 71 RTCPReportBlock block1_2_;
71 RTCPReportBlock block1_3_; 72 RTCPReportBlock block1_3_;
72 RTCPReportBlock block2_1_; 73 RTCPReportBlock block2_1_;
73 RTCPReportBlock block2_2_; 74 RTCPReportBlock block2_2_;
74 std::vector<RTCPReportBlock> ssrc1block1_; 75 std::vector<RTCPReportBlock> ssrc1block1_;
75 std::vector<RTCPReportBlock> ssrc1block2_; 76 std::vector<RTCPReportBlock> ssrc1block2_;
76 std::vector<RTCPReportBlock> ssrc12block1_; 77 std::vector<RTCPReportBlock> ssrc12block1_;
77 std::vector<RTCPReportBlock> ssrc12block2_; 78 std::vector<RTCPReportBlock> ssrc12block2_;
78 }; 79 };
79 80
80 TEST_F(ReportBlockStatsTest, AggregateAndStore_NoSsrc) { 81 TEST_F(ReportBlockStatsTest, AggregateAndStore_NoSsrc) {
81 ReportBlockStats stats; 82 ReportBlockStats stats;
82 std::vector<RTCPReportBlock> empty; 83 std::vector<RTCPReportBlock> empty;
83 RTCPReportBlock aggregated = stats.AggregateAndStore(empty); 84 RTCPReportBlock aggregated = stats.AggregateAndStore(empty);
84 EXPECT_EQ(0U, aggregated.fractionLost); 85 EXPECT_EQ(0U, aggregated.fraction_lost);
85 EXPECT_EQ(0U, aggregated.cumulativeLost); 86 EXPECT_EQ(0U, aggregated.packets_lost);
86 EXPECT_EQ(0U, aggregated.jitter); 87 EXPECT_EQ(0U, aggregated.jitter);
87 EXPECT_EQ(0U, aggregated.extendedHighSeqNum); 88 EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
88 } 89 }
89 90
90 TEST_F(ReportBlockStatsTest, AggregateAndStore_OneSsrc) { 91 TEST_F(ReportBlockStatsTest, AggregateAndStore_OneSsrc) {
91 ReportBlockStats stats; 92 ReportBlockStats stats;
92 RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc1block1_); 93 RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc1block1_);
93 // One ssrc, no aggregation done. 94 // One ssrc, no aggregation done.
94 EXPECT_EQ(123U, aggregated.fractionLost); 95 EXPECT_EQ(123U, aggregated.fraction_lost);
95 EXPECT_EQ(10U, aggregated.cumulativeLost); 96 EXPECT_EQ(10U, aggregated.packets_lost);
96 EXPECT_EQ(777U, aggregated.jitter); 97 EXPECT_EQ(777U, aggregated.jitter);
97 EXPECT_EQ(24000U, aggregated.extendedHighSeqNum); 98 EXPECT_EQ(24000U, aggregated.extended_highest_sequence_number);
98 99
99 aggregated = stats.AggregateAndStore(ssrc1block2_); 100 aggregated = stats.AggregateAndStore(ssrc1block2_);
100 EXPECT_EQ(0U, aggregated.fractionLost); 101 EXPECT_EQ(0U, aggregated.fraction_lost);
101 EXPECT_EQ(15U, aggregated.cumulativeLost); 102 EXPECT_EQ(15U, aggregated.packets_lost);
102 EXPECT_EQ(222U, aggregated.jitter); 103 EXPECT_EQ(222U, aggregated.jitter);
103 EXPECT_EQ(24100U, aggregated.extendedHighSeqNum); 104 EXPECT_EQ(24100U, aggregated.extended_highest_sequence_number);
104 105
105 // fl: 100 * (15-10) / (24100-24000) = 5% 106 // fl: 100 * (15-10) / (24100-24000) = 5%
106 EXPECT_EQ(5, stats.FractionLostInPercent()); 107 EXPECT_EQ(5, stats.FractionLostInPercent());
107 } 108 }
108 109
109 TEST_F(ReportBlockStatsTest, AggregateAndStore_TwoSsrcs) { 110 TEST_F(ReportBlockStatsTest, AggregateAndStore_TwoSsrcs) {
110 ReportBlockStats stats; 111 ReportBlockStats stats;
111 RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc12block1_); 112 RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc12block1_);
112 EXPECT_EQ(0U, aggregated.fractionLost); 113 EXPECT_EQ(0U, aggregated.fraction_lost);
113 EXPECT_EQ(10U + 111U, aggregated.cumulativeLost); 114 EXPECT_EQ(10U + 111U, aggregated.packets_lost);
114 EXPECT_EQ((777U + 555U) / 2, aggregated.jitter); 115 EXPECT_EQ((777U + 555U) / 2, aggregated.jitter);
115 EXPECT_EQ(0U, aggregated.extendedHighSeqNum); 116 EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
116 117
117 aggregated = stats.AggregateAndStore(ssrc12block2_); 118 aggregated = stats.AggregateAndStore(ssrc12block2_);
118 // fl: 255 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 19 119 // fl: 255 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 19
119 EXPECT_EQ(19U, aggregated.fractionLost); 120 EXPECT_EQ(19U, aggregated.fraction_lost);
120 EXPECT_EQ(15U + 136U, aggregated.cumulativeLost); 121 EXPECT_EQ(15U + 136U, aggregated.packets_lost);
121 EXPECT_EQ((222U + 888U) / 2, aggregated.jitter); 122 EXPECT_EQ((222U + 888U) / 2, aggregated.jitter);
122 EXPECT_EQ(0U, aggregated.extendedHighSeqNum); 123 EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
123 124
124 // fl: 100 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 7% 125 // fl: 100 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 7%
125 EXPECT_EQ(7, stats.FractionLostInPercent()); 126 EXPECT_EQ(7, stats.FractionLostInPercent());
126 } 127 }
127 128
128 TEST_F(ReportBlockStatsTest, StoreAndGetFractionLost) { 129 TEST_F(ReportBlockStatsTest, StoreAndGetFractionLost) {
129 const uint32_t kRemoteSsrc = 1; 130 const uint32_t kRemoteSsrc = 1;
130 ReportBlockStats stats; 131 ReportBlockStats stats;
131 EXPECT_EQ(-1, stats.FractionLostInPercent()); 132 EXPECT_EQ(-1, stats.FractionLostInPercent());
132 133
133 // First block. 134 // First block.
134 stats.Store(RtcpReportBlockToRtcpStatistics(block1_1_), kRemoteSsrc, kSsrc1); 135 stats.Store(RtcpReportBlockToRtcpStatistics(block1_1_), kRemoteSsrc, kSsrc1);
135 EXPECT_EQ(-1, stats.FractionLostInPercent()); 136 EXPECT_EQ(-1, stats.FractionLostInPercent());
136 // fl: 100 * (15-10) / (24100-24000) = 5% 137 // fl: 100 * (15-10) / (24100-24000) = 5%
137 stats.Store(RtcpReportBlockToRtcpStatistics(block1_2_), kRemoteSsrc, kSsrc1); 138 stats.Store(RtcpReportBlockToRtcpStatistics(block1_2_), kRemoteSsrc, kSsrc1);
138 EXPECT_EQ(5, stats.FractionLostInPercent()); 139 EXPECT_EQ(5, stats.FractionLostInPercent());
139 // fl: 100 * (50-10) / (24200-24000) = 20% 140 // fl: 100 * (50-10) / (24200-24000) = 20%
140 stats.Store(RtcpReportBlockToRtcpStatistics(block1_3_), kRemoteSsrc, kSsrc1); 141 stats.Store(RtcpReportBlockToRtcpStatistics(block1_3_), kRemoteSsrc, kSsrc1);
141 EXPECT_EQ(20, stats.FractionLostInPercent()); 142 EXPECT_EQ(20, stats.FractionLostInPercent());
142 } 143 }
143 144
144 } // namespace webrtc 145 } // namespace webrtc
145 146
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698