OLD | NEW |
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 "media/cast/logging/simple_event_subscriber.h" |
| 6 |
| 7 #include <utility> |
| 8 |
5 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
6 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
7 #include "base/test/simple_test_tick_clock.h" | 11 #include "base/test/simple_test_tick_clock.h" |
8 #include "base/time/tick_clock.h" | 12 #include "base/time/tick_clock.h" |
9 #include "media/cast/cast_environment.h" | 13 #include "media/cast/cast_environment.h" |
10 #include "media/cast/logging/logging_defines.h" | 14 #include "media/cast/logging/logging_defines.h" |
11 #include "media/cast/logging/simple_event_subscriber.h" | |
12 #include "media/cast/test/fake_single_thread_task_runner.h" | 15 #include "media/cast/test/fake_single_thread_task_runner.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
14 | 17 |
15 namespace media { | 18 namespace media { |
16 namespace cast { | 19 namespace cast { |
17 | 20 |
18 class SimpleEventSubscriberTest : public ::testing::Test { | 21 class SimpleEventSubscriberTest : public ::testing::Test { |
19 protected: | 22 protected: |
20 SimpleEventSubscriberTest() | 23 SimpleEventSubscriberTest() |
21 : testing_clock_(new base::SimpleTestTickClock()), | 24 : testing_clock_(new base::SimpleTestTickClock()), |
22 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 25 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
23 cast_environment_(new CastEnvironment( | 26 cast_environment_( |
24 scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 27 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_), |
25 task_runner_, | 28 task_runner_, |
26 task_runner_, | 29 task_runner_, |
27 task_runner_)) { | 30 task_runner_)) { |
28 cast_environment_->logger()->Subscribe(&event_subscriber_); | 31 cast_environment_->logger()->Subscribe(&event_subscriber_); |
29 } | 32 } |
30 | 33 |
31 ~SimpleEventSubscriberTest() override { | 34 ~SimpleEventSubscriberTest() override { |
32 cast_environment_->logger()->Unsubscribe(&event_subscriber_); | 35 cast_environment_->logger()->Unsubscribe(&event_subscriber_); |
33 } | 36 } |
34 | 37 |
35 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 38 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
36 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 39 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
37 scoped_refptr<CastEnvironment> cast_environment_; | 40 scoped_refptr<CastEnvironment> cast_environment_; |
38 SimpleEventSubscriber event_subscriber_; | 41 SimpleEventSubscriber event_subscriber_; |
39 }; | 42 }; |
40 | 43 |
41 TEST_F(SimpleEventSubscriberTest, GetAndResetEvents) { | 44 TEST_F(SimpleEventSubscriberTest, GetAndResetEvents) { |
42 // Log some frame events. | 45 // Log some frame events. |
43 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); | 46 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); |
44 encode_event->timestamp = testing_clock_->NowTicks(); | 47 encode_event->timestamp = testing_clock_->NowTicks(); |
45 encode_event->type = FRAME_ENCODED; | 48 encode_event->type = FRAME_ENCODED; |
46 encode_event->media_type = AUDIO_EVENT; | 49 encode_event->media_type = AUDIO_EVENT; |
47 encode_event->rtp_timestamp = 100u; | 50 encode_event->rtp_timestamp = 100u; |
48 encode_event->frame_id = 0u; | 51 encode_event->frame_id = 0u; |
49 encode_event->size = 1234; | 52 encode_event->size = 1234; |
50 encode_event->key_frame = true; | 53 encode_event->key_frame = true; |
51 encode_event->target_bitrate = 128u; | 54 encode_event->target_bitrate = 128u; |
52 encode_event->encoder_cpu_utilization = 0.01; | 55 encode_event->encoder_cpu_utilization = 0.01; |
53 encode_event->idealized_bitrate_utilization = 0.02; | 56 encode_event->idealized_bitrate_utilization = 0.02; |
54 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); | 57 cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event)); |
55 | 58 |
56 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); | 59 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); |
57 playout_event->timestamp = testing_clock_->NowTicks(); | 60 playout_event->timestamp = testing_clock_->NowTicks(); |
58 playout_event->type = FRAME_PLAYOUT; | 61 playout_event->type = FRAME_PLAYOUT; |
59 playout_event->media_type = AUDIO_EVENT; | 62 playout_event->media_type = AUDIO_EVENT; |
60 playout_event->rtp_timestamp = 100u; | 63 playout_event->rtp_timestamp = 100u; |
61 playout_event->frame_id = 0u; | 64 playout_event->frame_id = 0u; |
62 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100); | 65 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100); |
63 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); | 66 cast_environment_->logger()->DispatchFrameEvent(std::move(playout_event)); |
64 | 67 |
65 scoped_ptr<FrameEvent> decode_event(new FrameEvent()); | 68 scoped_ptr<FrameEvent> decode_event(new FrameEvent()); |
66 decode_event->timestamp = testing_clock_->NowTicks(); | 69 decode_event->timestamp = testing_clock_->NowTicks(); |
67 decode_event->type = FRAME_DECODED; | 70 decode_event->type = FRAME_DECODED; |
68 decode_event->media_type = AUDIO_EVENT; | 71 decode_event->media_type = AUDIO_EVENT; |
69 decode_event->rtp_timestamp = 200u; | 72 decode_event->rtp_timestamp = 200u; |
70 decode_event->frame_id = 0u; | 73 decode_event->frame_id = 0u; |
71 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); | 74 cast_environment_->logger()->DispatchFrameEvent(std::move(decode_event)); |
72 | 75 |
73 // Log some packet events. | 76 // Log some packet events. |
74 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); | 77 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); |
75 receive_event->timestamp = testing_clock_->NowTicks(); | 78 receive_event->timestamp = testing_clock_->NowTicks(); |
76 receive_event->type = PACKET_RECEIVED; | 79 receive_event->type = PACKET_RECEIVED; |
77 receive_event->media_type = AUDIO_EVENT; | 80 receive_event->media_type = AUDIO_EVENT; |
78 receive_event->rtp_timestamp = 200u; | 81 receive_event->rtp_timestamp = 200u; |
79 receive_event->frame_id = 0u; | 82 receive_event->frame_id = 0u; |
80 receive_event->packet_id = 1u; | 83 receive_event->packet_id = 1u; |
81 receive_event->max_packet_id = 5u; | 84 receive_event->max_packet_id = 5u; |
82 receive_event->size = 100u; | 85 receive_event->size = 100u; |
83 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); | 86 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event)); |
84 | 87 |
85 receive_event.reset(new PacketEvent()); | 88 receive_event.reset(new PacketEvent()); |
86 receive_event->timestamp = testing_clock_->NowTicks(); | 89 receive_event->timestamp = testing_clock_->NowTicks(); |
87 receive_event->type = PACKET_RECEIVED; | 90 receive_event->type = PACKET_RECEIVED; |
88 receive_event->media_type = VIDEO_EVENT; | 91 receive_event->media_type = VIDEO_EVENT; |
89 receive_event->rtp_timestamp = 200u; | 92 receive_event->rtp_timestamp = 200u; |
90 receive_event->frame_id = 0u; | 93 receive_event->frame_id = 0u; |
91 receive_event->packet_id = 1u; | 94 receive_event->packet_id = 1u; |
92 receive_event->max_packet_id = 10u; | 95 receive_event->max_packet_id = 10u; |
93 receive_event->size = 1024u; | 96 receive_event->size = 1024u; |
94 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); | 97 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event)); |
95 | 98 |
96 std::vector<FrameEvent> frame_events; | 99 std::vector<FrameEvent> frame_events; |
97 event_subscriber_.GetFrameEventsAndReset(&frame_events); | 100 event_subscriber_.GetFrameEventsAndReset(&frame_events); |
98 EXPECT_EQ(3u, frame_events.size()); | 101 EXPECT_EQ(3u, frame_events.size()); |
99 | 102 |
100 std::vector<PacketEvent> packet_events; | 103 std::vector<PacketEvent> packet_events; |
101 event_subscriber_.GetPacketEventsAndReset(&packet_events); | 104 event_subscriber_.GetPacketEventsAndReset(&packet_events); |
102 EXPECT_EQ(2u, packet_events.size()); | 105 EXPECT_EQ(2u, packet_events.size()); |
103 | 106 |
104 // Calling this function again should result in empty vector because no events | 107 // Calling this function again should result in empty vector because no events |
105 // were logged since last call. | 108 // were logged since last call. |
106 event_subscriber_.GetFrameEventsAndReset(&frame_events); | 109 event_subscriber_.GetFrameEventsAndReset(&frame_events); |
107 event_subscriber_.GetPacketEventsAndReset(&packet_events); | 110 event_subscriber_.GetPacketEventsAndReset(&packet_events); |
108 EXPECT_TRUE(frame_events.empty()); | 111 EXPECT_TRUE(frame_events.empty()); |
109 EXPECT_TRUE(packet_events.empty()); | 112 EXPECT_TRUE(packet_events.empty()); |
110 } | 113 } |
111 | 114 |
112 } // namespace cast | 115 } // namespace cast |
113 } // namespace media | 116 } // namespace media |
OLD | NEW |