| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
| 6 | 6 |
| 7 #include "base/rand_util.h" | 7 #include "base/rand_util.h" |
| 8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
| 9 #include "base/time/tick_clock.h" | 9 #include "base/time/tick_clock.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 task_runner_ = new test::FakeTaskRunner(&testing_clock_); | 35 task_runner_ = new test::FakeTaskRunner(&testing_clock_); |
| 36 logging_.reset(new LoggingImpl(task_runner_, config_)); | 36 logging_.reset(new LoggingImpl(task_runner_, config_)); |
| 37 } | 37 } |
| 38 | 38 |
| 39 virtual ~TestLogging() {} | 39 virtual ~TestLogging() {} |
| 40 | 40 |
| 41 CastLoggingConfig config_; | 41 CastLoggingConfig config_; |
| 42 scoped_refptr<test::FakeTaskRunner> task_runner_; | 42 scoped_refptr<test::FakeTaskRunner> task_runner_; |
| 43 scoped_ptr<LoggingImpl> logging_; | 43 scoped_ptr<LoggingImpl> logging_; |
| 44 base::SimpleTestTickClock testing_clock_; | 44 base::SimpleTestTickClock testing_clock_; |
| 45 |
| 46 DISALLOW_COPY_AND_ASSIGN(TestLogging); |
| 45 }; | 47 }; |
| 46 | 48 |
| 47 TEST_F(TestLogging, BasicFrameLogging) { | 49 TEST_F(TestLogging, BasicFrameLogging) { |
| 48 base::TimeTicks start_time = testing_clock_.NowTicks(); | 50 base::TimeTicks start_time = testing_clock_.NowTicks(); |
| 49 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 51 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
| 50 uint32 rtp_timestamp = 0; | 52 uint32 rtp_timestamp = 0; |
| 51 uint32 frame_id = 0; | 53 uint32 frame_id = 0; |
| 54 base::TimeTicks now; |
| 52 do { | 55 do { |
| 53 logging_->InsertFrameEvent(testing_clock_.NowTicks(), | 56 now = testing_clock_.NowTicks(); |
| 54 kAudioFrameCaptured, rtp_timestamp, frame_id); | 57 logging_->InsertFrameEvent(now, kAudioFrameCaptured, rtp_timestamp, |
| 58 frame_id); |
| 55 testing_clock_.Advance( | 59 testing_clock_.Advance( |
| 56 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 60 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
| 57 rtp_timestamp += kFrameIntervalMs * 90; | 61 rtp_timestamp += kFrameIntervalMs * 90; |
| 58 ++frame_id; | 62 ++frame_id; |
| 59 time_interval = testing_clock_.NowTicks() - start_time; | 63 time_interval = now - start_time; |
| 60 } while (time_interval.InSeconds() < kIntervalTime1S); | 64 } while (time_interval.InSeconds() < kIntervalTime1S); |
| 65 base::TimeTicks end_time = now; |
| 61 // Get logging data. | 66 // Get logging data. |
| 62 FrameRawMap frame_map = logging_->GetFrameRawData(); | 67 FrameRawMap frame_map = logging_->GetFrameRawData(); |
| 63 // Size of map should be equal to the number of frames logged. | 68 // Size of map should be equal to the number of frames logged. |
| 64 EXPECT_EQ(frame_id, frame_map.size()); | 69 EXPECT_EQ(frame_id, frame_map.size()); |
| 65 // Verify stats. | 70 // Verify stats. |
| 66 const FrameStatsMap* frame_stats = | 71 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
| 67 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
| 68 // Size of stats equals the number of events. | 72 // Size of stats equals the number of events. |
| 69 EXPECT_EQ(1u, frame_stats->size()); | 73 EXPECT_EQ(1u, frame_stats.size()); |
| 70 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 74 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
| 71 EXPECT_TRUE(it != frame_stats->end()); | 75 EXPECT_TRUE(it != frame_stats.end()); |
| 72 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 76 EXPECT_EQ(0, it->second.max_delay.InMilliseconds()); |
| 73 EXPECT_EQ(0, it->second->bitrate_kbps); | 77 EXPECT_EQ(0, it->second.min_delay.InMilliseconds()); |
| 74 EXPECT_EQ(0, it->second->max_delay_ms); | 78 EXPECT_EQ(start_time, it->second.first_event_time); |
| 75 EXPECT_EQ(0, it->second->min_delay_ms); | 79 EXPECT_EQ(end_time, it->second.last_event_time); |
| 76 EXPECT_EQ(0, it->second->avg_delay_ms); | 80 EXPECT_EQ(0u, it->second.sum_size); |
| 81 // Number of events is equal to the number of frames. |
| 82 EXPECT_EQ(static_cast<int>(frame_id), it->second.event_counter); |
| 77 } | 83 } |
| 78 | 84 |
| 79 TEST_F(TestLogging, FrameLoggingWithSize) { | 85 TEST_F(TestLogging, FrameLoggingWithSize) { |
| 80 // Average packet size. | 86 // Average packet size. |
| 81 const int kBaseFrameSizeBytes = 25000; | 87 const int kBaseFrameSizeBytes = 25000; |
| 82 const int kRandomSizeInterval = 100; | 88 const int kRandomSizeInterval = 100; |
| 83 base::TimeTicks start_time = testing_clock_.NowTicks(); | 89 base::TimeTicks start_time = testing_clock_.NowTicks(); |
| 84 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 90 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
| 85 uint32 rtp_timestamp = 0; | 91 uint32 rtp_timestamp = 0; |
| 86 uint32 frame_id = 0; | 92 uint32 frame_id = 0; |
| 93 size_t sum_size = 0; |
| 87 do { | 94 do { |
| 88 int size = kBaseFrameSizeBytes + | 95 int size = kBaseFrameSizeBytes + |
| 89 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); | 96 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); |
| 97 sum_size += static_cast<size_t>(size); |
| 90 logging_->InsertFrameEventWithSize(testing_clock_.NowTicks(), | 98 logging_->InsertFrameEventWithSize(testing_clock_.NowTicks(), |
| 91 kAudioFrameCaptured, rtp_timestamp, frame_id, size); | 99 kAudioFrameCaptured, rtp_timestamp, frame_id, size); |
| 92 testing_clock_.Advance( | 100 testing_clock_.Advance( |
| 93 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 101 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
| 94 rtp_timestamp += kFrameIntervalMs * 90; | 102 rtp_timestamp += kFrameIntervalMs * 90; |
| 95 ++frame_id; | 103 ++frame_id; |
| 96 time_interval = testing_clock_.NowTicks() - start_time; | 104 time_interval = testing_clock_.NowTicks() - start_time; |
| 97 } while (time_interval.InSeconds() < kIntervalTime1S); | 105 } while (time_interval.InSeconds() < kIntervalTime1S); |
| 98 // Get logging data. | 106 // Get logging data. |
| 99 FrameRawMap frame_map = logging_->GetFrameRawData(); | 107 FrameRawMap frame_map = logging_->GetFrameRawData(); |
| 100 // Size of map should be equal to the number of frames logged. | 108 // Size of map should be equal to the number of frames logged. |
| 101 EXPECT_EQ(frame_id, frame_map.size()); | 109 EXPECT_EQ(frame_id, frame_map.size()); |
| 102 // Verify stats. | 110 // Verify stats. |
| 103 const FrameStatsMap* frame_stats = | 111 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
| 104 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
| 105 // Size of stats equals the number of events. | 112 // Size of stats equals the number of events. |
| 106 EXPECT_EQ(1u, frame_stats->size()); | 113 EXPECT_EQ(1u, frame_stats.size()); |
| 107 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 114 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
| 108 EXPECT_TRUE(it != frame_stats->end()); | 115 EXPECT_TRUE(it != frame_stats.end()); |
| 109 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 116 EXPECT_EQ(0, it->second.max_delay.InMilliseconds()); |
| 110 EXPECT_NEAR(8 * kBaseFrameSizeBytes / (kFrameIntervalMs * 1000), | 117 EXPECT_EQ(0, it->second.min_delay.InMilliseconds()); |
| 111 it->second->bitrate_kbps, kRandomSizeInterval); | 118 EXPECT_EQ(0, it->second.sum_delay.InMilliseconds()); |
| 112 EXPECT_EQ(0, it->second->max_delay_ms); | 119 EXPECT_EQ(sum_size, it->second.sum_size); |
| 113 EXPECT_EQ(0, it->second->min_delay_ms); | |
| 114 EXPECT_EQ(0, it->second->avg_delay_ms); | |
| 115 } | 120 } |
| 116 | 121 |
| 117 TEST_F(TestLogging, FrameLoggingWithDelay) { | 122 TEST_F(TestLogging, FrameLoggingWithDelay) { |
| 118 // Average packet size. | 123 // Average packet size. |
| 119 const int kPlayoutDelayMs = 50; | 124 const int kPlayoutDelayMs = 50; |
| 120 const int kRandomSizeInterval = 20; | 125 const int kRandomSizeInterval = 20; |
| 121 base::TimeTicks start_time = testing_clock_.NowTicks(); | 126 base::TimeTicks start_time = testing_clock_.NowTicks(); |
| 122 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 127 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
| 123 uint32 rtp_timestamp = 0; | 128 uint32 rtp_timestamp = 0; |
| 124 uint32 frame_id = 0; | 129 uint32 frame_id = 0; |
| 125 do { | 130 do { |
| 126 int delay = kPlayoutDelayMs + | 131 int delay = kPlayoutDelayMs + |
| 127 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); | 132 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); |
| 128 logging_->InsertFrameEventWithDelay(testing_clock_.NowTicks(), | 133 logging_->InsertFrameEventWithDelay(testing_clock_.NowTicks(), |
| 129 kAudioFrameCaptured, rtp_timestamp, frame_id, | 134 kAudioFrameCaptured, rtp_timestamp, frame_id, |
| 130 base::TimeDelta::FromMilliseconds(delay)); | 135 base::TimeDelta::FromMilliseconds(delay)); |
| 131 testing_clock_.Advance( | 136 testing_clock_.Advance( |
| 132 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 137 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
| 133 rtp_timestamp += kFrameIntervalMs * 90; | 138 rtp_timestamp += kFrameIntervalMs * 90; |
| 134 ++frame_id; | 139 ++frame_id; |
| 135 time_interval = testing_clock_.NowTicks() - start_time; | 140 time_interval = testing_clock_.NowTicks() - start_time; |
| 136 } while (time_interval.InSeconds() < kIntervalTime1S); | 141 } while (time_interval.InSeconds() < kIntervalTime1S); |
| 137 // Get logging data. | 142 // Get logging data. |
| 138 FrameRawMap frame_map = logging_->GetFrameRawData(); | 143 FrameRawMap frame_map = logging_->GetFrameRawData(); |
| 139 // Size of map should be equal to the number of frames logged. | 144 // Size of map should be equal to the number of frames logged. |
| 140 EXPECT_EQ(frame_id, frame_map.size()); | 145 EXPECT_EQ(frame_id, frame_map.size()); |
| 141 // Verify stats. | 146 // Verify stats. |
| 142 const FrameStatsMap* frame_stats = | 147 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
| 143 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
| 144 // Size of stats equals the number of events. | 148 // Size of stats equals the number of events. |
| 145 EXPECT_EQ(1u, frame_stats->size()); | 149 EXPECT_EQ(1u, frame_stats.size()); |
| 146 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 150 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
| 147 EXPECT_TRUE(it != frame_stats->end()); | 151 EXPECT_TRUE(it != frame_stats.end()); |
| 148 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 152 EXPECT_GE(kPlayoutDelayMs + kRandomSizeInterval, |
| 149 EXPECT_EQ(0, it->second->bitrate_kbps); | 153 it->second.max_delay.InMilliseconds()); |
| 150 EXPECT_GE(kPlayoutDelayMs + kRandomSizeInterval, it->second->max_delay_ms); | 154 EXPECT_LE(kPlayoutDelayMs - kRandomSizeInterval, |
| 151 EXPECT_LE(kPlayoutDelayMs - kRandomSizeInterval, it->second->min_delay_ms); | 155 it->second.min_delay.InMilliseconds()); |
| 152 EXPECT_NEAR(kPlayoutDelayMs, it->second->avg_delay_ms, | |
| 153 0.2 * kRandomSizeInterval); | |
| 154 } | 156 } |
| 155 | 157 |
| 156 TEST_F(TestLogging, MultipleEventFrameLogging) { | 158 TEST_F(TestLogging, MultipleEventFrameLogging) { |
| 157 base::TimeTicks start_time = testing_clock_.NowTicks(); | 159 base::TimeTicks start_time = testing_clock_.NowTicks(); |
| 158 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 160 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
| 159 uint32 rtp_timestamp = 0; | 161 uint32 rtp_timestamp = 0; |
| 160 uint32 frame_id = 0; | 162 uint32 frame_id = 0; |
| 161 do { | 163 do { |
| 162 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, | 164 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, |
| 163 rtp_timestamp, frame_id); | 165 rtp_timestamp, frame_id); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 205 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
| 204 rtp_timestamp += kFrameIntervalMs * 90; | 206 rtp_timestamp += kFrameIntervalMs * 90; |
| 205 ++frame_id; | 207 ++frame_id; |
| 206 time_interval = testing_clock_.NowTicks() - start_time; | 208 time_interval = testing_clock_.NowTicks() - start_time; |
| 207 } while (time_interval.InSeconds() < kIntervalTime1S); | 209 } while (time_interval.InSeconds() < kIntervalTime1S); |
| 208 // Get logging data. | 210 // Get logging data. |
| 209 PacketRawMap raw_map = logging_->GetPacketRawData(); | 211 PacketRawMap raw_map = logging_->GetPacketRawData(); |
| 210 // Size of map should be equal to the number of frames logged. | 212 // Size of map should be equal to the number of frames logged. |
| 211 EXPECT_EQ(frame_id, raw_map.size()); | 213 EXPECT_EQ(frame_id, raw_map.size()); |
| 212 // Verify stats. | 214 // Verify stats. |
| 213 const PacketStatsMap* stats_map = | 215 PacketStatsMap stats_map = logging_->GetPacketStatsData(); |
| 214 logging_->GetPacketStatsData(testing_clock_.NowTicks()); | |
| 215 // Size of stats equals the number of events. | 216 // Size of stats equals the number of events. |
| 216 EXPECT_EQ(1u, stats_map->size()); | 217 EXPECT_EQ(1u, stats_map.size()); |
| 217 PacketStatsMap::const_iterator it = stats_map->find(kPacketSentToPacer); | 218 PacketStatsMap::const_iterator it = stats_map.find(kPacketSentToPacer); |
| 218 EXPECT_TRUE(it != stats_map->end()); | 219 EXPECT_TRUE(it != stats_map.end()); |
| 219 // We only store the bitrate as a packet statistic. | |
| 220 EXPECT_NEAR(8 * kNumPacketsPerFrame * kBaseSize / (kFrameIntervalMs * 1000), | |
| 221 it->second, kSizeInterval); | |
| 222 } | 220 } |
| 223 | 221 |
| 224 TEST_F(TestLogging, GenericLogging) { | 222 TEST_F(TestLogging, GenericLogging) { |
| 225 // Insert multiple generic types. | 223 // Insert multiple generic types. |
| 226 const size_t kNumRuns = 1000; | 224 const size_t kNumRuns = 20;//1000; |
| 227 const int kBaseValue = 20; | 225 const int kBaseValue = 20; |
| 226 int sum_value_rtt = 0; |
| 227 int sum_value_pl = 0; |
| 228 int sum_value_jitter = 0; |
| 229 uint64 sumsq_value_rtt = 0; |
| 230 uint64 sumsq_value_pl = 0; |
| 231 uint64 sumsq_value_jitter = 0; |
| 232 int min_value, max_value; |
| 228 for (size_t i = 0; i < kNumRuns; ++i) { | 233 for (size_t i = 0; i < kNumRuns; ++i) { |
| 229 int value = kBaseValue + base::RandInt(-5, 5); | 234 int value = kBaseValue + base::RandInt(-5, 5); |
| 235 sum_value_rtt += value; |
| 236 sumsq_value_rtt += value * value; |
| 230 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kRttMs, value); | 237 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kRttMs, value); |
| 231 if (i % 2) { | 238 if (i % 2) { |
| 232 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kPacketLoss, | 239 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kPacketLoss, |
| 233 value); | 240 value); |
| 241 sum_value_pl += value; |
| 242 sumsq_value_pl += value * value; |
| 234 } | 243 } |
| 235 if (!(i % 4)) { | 244 if (!(i % 4)) { |
| 236 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kJitterMs, value); | 245 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kJitterMs, value); |
| 246 sum_value_jitter += value; |
| 247 sumsq_value_jitter += value * value; |
| 248 } |
| 249 if (i == 0) { |
| 250 min_value = value; |
| 251 max_value = value; |
| 252 } else if (min_value > value) { |
| 253 min_value = value; |
| 254 } else if (max_value < value) { |
| 255 max_value = value; |
| 237 } | 256 } |
| 238 } | 257 } |
| 239 GenericRawMap raw_map = logging_->GetGenericRawData(); | 258 GenericRawMap raw_map = logging_->GetGenericRawData(); |
| 240 const GenericStatsMap* stats_map = logging_->GetGenericStatsData(); | 259 GenericStatsMap stats_map = logging_->GetGenericStatsData(); |
| 241 // Size of generic map = number of different events. | 260 // Size of generic map = number of different events. |
| 242 EXPECT_EQ(3u, raw_map.size()); | 261 EXPECT_EQ(3u, raw_map.size()); |
| 243 EXPECT_EQ(3u, stats_map->size()); | 262 EXPECT_EQ(3u, stats_map.size()); |
| 244 // Raw events - size of internal map = number of calls. | 263 // Raw events - size of internal map = number of calls. |
| 245 GenericRawMap::iterator rit = raw_map.find(kRttMs); | 264 GenericRawMap::iterator rit = raw_map.find(kRttMs); |
| 246 EXPECT_EQ(kNumRuns, rit->second.value.size()); | 265 EXPECT_EQ(kNumRuns, rit->second.value.size()); |
| 247 EXPECT_EQ(kNumRuns, rit->second.timestamp.size()); | 266 EXPECT_EQ(kNumRuns, rit->second.timestamp.size()); |
| 248 rit = raw_map.find(kPacketLoss); | 267 rit = raw_map.find(kPacketLoss); |
| 249 EXPECT_EQ(kNumRuns / 2, rit->second.value.size()); | 268 EXPECT_EQ(kNumRuns / 2, rit->second.value.size()); |
| 250 EXPECT_EQ(kNumRuns / 2, rit->second.timestamp.size()); | 269 EXPECT_EQ(kNumRuns / 2, rit->second.timestamp.size()); |
| 251 rit = raw_map.find(kJitterMs); | 270 rit = raw_map.find(kJitterMs); |
| 252 EXPECT_EQ(kNumRuns / 4, rit->second.value.size()); | 271 EXPECT_EQ(kNumRuns / 4, rit->second.value.size()); |
| 253 EXPECT_EQ(kNumRuns / 4, rit->second.timestamp.size()); | 272 EXPECT_EQ(kNumRuns / 4, rit->second.timestamp.size()); |
| 254 // Stats - one value per event. | 273 // Stats - one value per all events. |
| 255 GenericStatsMap::const_iterator sit = stats_map->find(kRttMs); | 274 GenericStatsMap::const_iterator sit = stats_map.find(kRttMs); |
| 256 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 275 EXPECT_EQ(sum_value_rtt, sit->second.sum); |
| 257 sit = stats_map->find(kPacketLoss); | 276 EXPECT_EQ(sumsq_value_rtt, sit->second.sum_squared); |
| 258 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 277 EXPECT_LE(min_value, sit->second.min); |
| 259 sit = stats_map->find(kJitterMs); | 278 EXPECT_GE(max_value, sit->second.max); |
| 260 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 279 sit = stats_map.find(kPacketLoss); |
| 280 EXPECT_EQ(sum_value_pl, sit->second.sum); |
| 281 EXPECT_EQ(sumsq_value_pl, sit->second.sum_squared); |
| 282 EXPECT_LE(min_value, sit->second.min); |
| 283 EXPECT_GE(max_value, sit->second.max); |
| 284 sit = stats_map.find(kJitterMs); |
| 285 EXPECT_EQ(sumsq_value_jitter, sit->second.sum_squared); |
| 286 EXPECT_LE(min_value, sit->second.min); |
| 287 EXPECT_GE(max_value, sit->second.max); |
| 261 } | 288 } |
| 262 | 289 |
| 263 TEST_F(TestLogging, RtcpMultipleEventFrameLogging) { | 290 TEST_F(TestLogging, RtcpMultipleEventFrameLogging) { |
| 264 base::TimeTicks start_time = testing_clock_.NowTicks(); | 291 base::TimeTicks start_time = testing_clock_.NowTicks(); |
| 265 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 292 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
| 266 uint32 rtp_timestamp = 0; | 293 uint32 rtp_timestamp = 0; |
| 267 uint32 frame_id = 0; | 294 uint32 frame_id = 0; |
| 268 do { | 295 do { |
| 269 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, | 296 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, |
| 270 rtp_timestamp, frame_id); | 297 rtp_timestamp, frame_id); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 284 rtp_timestamp += kFrameIntervalMs * 90; | 311 rtp_timestamp += kFrameIntervalMs * 90; |
| 285 ++frame_id; | 312 ++frame_id; |
| 286 time_interval = testing_clock_.NowTicks() - start_time; | 313 time_interval = testing_clock_.NowTicks() - start_time; |
| 287 } while (time_interval.InSeconds() < kIntervalTime1S); | 314 } while (time_interval.InSeconds() < kIntervalTime1S); |
| 288 // Get logging data. | 315 // Get logging data. |
| 289 FrameRawMap frame_map = logging_->GetFrameRawData(); | 316 FrameRawMap frame_map = logging_->GetFrameRawData(); |
| 290 // Size of map should be equal to the number of frames logged. | 317 // Size of map should be equal to the number of frames logged. |
| 291 EXPECT_EQ(frame_id, frame_map.size()); | 318 EXPECT_EQ(frame_id, frame_map.size()); |
| 292 // Multiple events captured per frame. | 319 // Multiple events captured per frame. |
| 293 | 320 |
| 294 AudioRtcpRawMap audio_rtcp = logging_->GetAudioRtcpRawData(); | 321 AudioRtcpRawMap audio_rtcp = logging_->GetAndResetAudioRtcpRawData(); |
| 295 EXPECT_EQ(0u, audio_rtcp.size()); | 322 EXPECT_EQ(0u, audio_rtcp.size()); |
| 296 | 323 |
| 297 VideoRtcpRawMap video_rtcp = logging_->GetVideoRtcpRawData(); | 324 VideoRtcpRawMap video_rtcp = logging_->GetAndResetVideoRtcpRawData(); |
| 298 EXPECT_EQ((frame_id + 1) / 2, video_rtcp.size()); | 325 EXPECT_EQ((frame_id + 1) / 2, video_rtcp.size()); |
| 299 } | 326 } |
| 300 | 327 |
| 301 } // namespace cast | 328 } // namespace cast |
| 302 } // namespace media | 329 } // namespace media |
| OLD | NEW |