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

Side by Side Diff: media/cast/rtcp/sender_rtcp_event_subscriber_unittest.cc

Issue 145873007: Cast: Added missing DCHECKs to ThreadChecker calls and minor cleanup. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 10 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
« no previous file with comments | « media/cast/rtcp/sender_rtcp_event_subscriber.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/memory/ref_counted.h" 5 #include "base/memory/ref_counted.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/test/simple_test_tick_clock.h" 7 #include "base/test/simple_test_tick_clock.h"
8 #include "base/time/tick_clock.h" 8 #include "base/time/tick_clock.h"
9 #include "media/cast/cast_environment.h" 9 #include "media/cast/cast_environment.h"
10 #include "media/cast/logging/logging_defines.h" 10 #include "media/cast/logging/logging_defines.h"
11 #include "media/cast/rtcp/sender_rtcp_event_subscriber.h" 11 #include "media/cast/rtcp/sender_rtcp_event_subscriber.h"
12 #include "media/cast/test/fake_single_thread_task_runner.h" 12 #include "media/cast/test/fake_single_thread_task_runner.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace media { 15 namespace media {
16 namespace cast { 16 namespace cast {
17 17
18 namespace { 18 namespace {
19 19
20 const size_t kSizeThreshold = 10u; 20 const size_t kMaxEventEntries = 10u;
21 21
22 } // namespace 22 } // namespace
23 23
24 class SenderRtcpEventSubscriberTest : public ::testing::Test { 24 class SenderRtcpEventSubscriberTest : public ::testing::Test {
25 protected: 25 protected:
26 SenderRtcpEventSubscriberTest() 26 SenderRtcpEventSubscriberTest()
27 : testing_clock_(new base::SimpleTestTickClock()), 27 : testing_clock_(new base::SimpleTestTickClock()),
28 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), 28 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)),
29 cast_environment_(new CastEnvironment( 29 cast_environment_(new CastEnvironment(
30 scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_, 30 scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_,
31 task_runner_, task_runner_, task_runner_, task_runner_, 31 task_runner_, task_runner_, task_runner_, task_runner_,
32 task_runner_, GetLoggingConfigWithRawEventsAndStatsEnabled())), 32 task_runner_, GetLoggingConfigWithRawEventsAndStatsEnabled())),
33 event_subscriber_( 33 event_subscriber_(kMaxEventEntries) {
34 new SenderRtcpEventSubscriber(task_runner_, kSizeThreshold)) { 34 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber_);
35 cast_environment_->Logging()->AddRawEventSubscriber(
36 event_subscriber_.get());
37 } 35 }
38 36
39 virtual ~SenderRtcpEventSubscriberTest() { 37 virtual ~SenderRtcpEventSubscriberTest() {
40 cast_environment_->Logging()->RemoveRawEventSubscriber( 38 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber_);
41 event_subscriber_.get());
42 } 39 }
43 40
44 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 41 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
45 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 42 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
46 scoped_refptr<CastEnvironment> cast_environment_; 43 scoped_refptr<CastEnvironment> cast_environment_;
47 scoped_ptr<SenderRtcpEventSubscriber> event_subscriber_; 44 SenderRtcpEventSubscriber event_subscriber_;
48 }; 45 };
49 46
50 TEST_F(SenderRtcpEventSubscriberTest, InsertEntry) { 47 TEST_F(SenderRtcpEventSubscriberTest, InsertEntry) {
51 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), 48 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(),
52 kVideoFrameCaptured, 100u, 1u); 49 kVideoFrameCaptured, 100u, 1u);
53 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), 50 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(),
54 kVideoFrameCaptured, 200u, 2u); 51 kVideoFrameCaptured, 200u, 2u);
55 cast_environment_->Logging()->InsertFrameEvent( 52 cast_environment_->Logging()->InsertFrameEvent(
56 testing_clock_->NowTicks(), kVideoFrameSentToEncoder, 100u, 1u); 53 testing_clock_->NowTicks(), kVideoFrameSentToEncoder, 100u, 1u);
57 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), 54 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(),
58 kVideoFrameEncoded, 100u, 1u); 55 kVideoFrameEncoded, 100u, 1u);
59 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), 56 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(),
60 kVideoFrameEncoded, 300u, 3u); 57 kVideoFrameEncoded, 300u, 3u);
61 cast_environment_->Logging()->InsertFrameEvent( 58 cast_environment_->Logging()->InsertFrameEvent(
62 testing_clock_->NowTicks(), kVideoFrameSentToEncoder, 300u, 3u); 59 testing_clock_->NowTicks(), kVideoFrameSentToEncoder, 300u, 3u);
63 60
64 RtcpEventMap events; 61 RtcpEventMap events;
65 event_subscriber_->GetRtcpEventsAndReset(&events); 62 event_subscriber_.GetRtcpEventsAndReset(&events);
66 63
67 ASSERT_EQ(3u, events.size()); 64 ASSERT_EQ(3u, events.size());
68 65
69 RtcpEventMap::iterator it = events.begin(); 66 RtcpEventMap::iterator it = events.begin();
70 EXPECT_EQ(100u, it->first); 67 EXPECT_EQ(100u, it->first);
71 EXPECT_EQ(kVideoFrameEncoded, it->second.type); 68 EXPECT_EQ(kVideoFrameEncoded, it->second.type);
72 69
73 ++it; 70 ++it;
74 EXPECT_EQ(200u, it->first); 71 EXPECT_EQ(200u, it->first);
75 EXPECT_EQ(kVideoFrameCaptured, it->second.type); 72 EXPECT_EQ(kVideoFrameCaptured, it->second.type);
76 73
77 ++it; 74 ++it;
78 EXPECT_EQ(300u, it->first); 75 EXPECT_EQ(300u, it->first);
79 EXPECT_EQ(kVideoFrameEncoded, it->second.type); 76 EXPECT_EQ(kVideoFrameEncoded, it->second.type);
80 } 77 }
81 78
82 TEST_F(SenderRtcpEventSubscriberTest, MapReset) { 79 TEST_F(SenderRtcpEventSubscriberTest, MapReset) {
83 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), 80 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(),
84 kVideoFrameCaptured, 100u, 1u); 81 kVideoFrameCaptured, 100u, 1u);
85 82
86 RtcpEventMap events; 83 RtcpEventMap events;
87 event_subscriber_->GetRtcpEventsAndReset(&events); 84 event_subscriber_.GetRtcpEventsAndReset(&events);
88 EXPECT_EQ(1u, events.size()); 85 EXPECT_EQ(1u, events.size());
89 86
90 // Call again without any logging in between, should return empty map. 87 // Call again without any logging in between, should return empty map.
91 event_subscriber_->GetRtcpEventsAndReset(&events); 88 event_subscriber_.GetRtcpEventsAndReset(&events);
92 EXPECT_TRUE(events.empty()); 89 EXPECT_TRUE(events.empty());
93 } 90 }
94 91
95 TEST_F(SenderRtcpEventSubscriberTest, DropEventsWhenSizeExceeded) { 92 TEST_F(SenderRtcpEventSubscriberTest, DropEventsWhenSizeExceeded) {
96 for (uint32 i = 1u; i <= 10u; ++i) { 93 for (uint32 i = 1u; i <= 10u; ++i) {
97 cast_environment_->Logging()->InsertFrameEvent( 94 cast_environment_->Logging()->InsertFrameEvent(
98 testing_clock_->NowTicks(), kVideoFrameCaptured, i * 10, i); 95 testing_clock_->NowTicks(), kVideoFrameCaptured, i * 10, i);
99 } 96 }
100 97
101 RtcpEventMap events; 98 RtcpEventMap events;
102 event_subscriber_->GetRtcpEventsAndReset(&events); 99 event_subscriber_.GetRtcpEventsAndReset(&events);
103 100
104 ASSERT_EQ(10u, events.size()); 101 ASSERT_EQ(10u, events.size());
105 EXPECT_EQ(10u, events.begin()->first); 102 EXPECT_EQ(10u, events.begin()->first);
106 EXPECT_EQ(100u, events.rbegin()->first); 103 EXPECT_EQ(100u, events.rbegin()->first);
107 104
108 for (uint32 i = 1u; i <= 11u; ++i) { 105 for (uint32 i = 1u; i <= 11u; ++i) {
109 cast_environment_->Logging()->InsertFrameEvent( 106 cast_environment_->Logging()->InsertFrameEvent(
110 testing_clock_->NowTicks(), kVideoFrameCaptured, i * 10, i); 107 testing_clock_->NowTicks(), kVideoFrameCaptured, i * 10, i);
111 } 108 }
112 109
113 event_subscriber_->GetRtcpEventsAndReset(&events); 110 event_subscriber_.GetRtcpEventsAndReset(&events);
114 111
115 // Event with RTP timestamp 10 should have been dropped when 110 is inserted. 112 // Event with RTP timestamp 10 should have been dropped when 110 is inserted.
116 ASSERT_EQ(10u, events.size()); 113 ASSERT_EQ(10u, events.size());
117 EXPECT_EQ(20u, events.begin()->first); 114 EXPECT_EQ(20u, events.begin()->first);
118 EXPECT_EQ(110u, events.rbegin()->first); 115 EXPECT_EQ(110u, events.rbegin()->first);
119 } 116 }
120 117
121 } // namespace cast 118 } // namespace cast
122 } // namespace media 119 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/rtcp/sender_rtcp_event_subscriber.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698