Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / media / cast / logging / logging_raw_unittest.cc
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
3 // found in the LICENSE file.
4
5 #include "media/cast/logging/logging_defines.h"
6 #include "media/cast/logging/logging_raw.h"
7 #include "media/cast/logging/simple_event_subscriber.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace media {
11 namespace cast {
12
13 class LoggingRawTest : public ::testing::Test {
14  protected:
15   LoggingRawTest() {
16     raw_.AddSubscriber(&event_subscriber_);
17   }
18
19   ~LoggingRawTest() override { raw_.RemoveSubscriber(&event_subscriber_); }
20
21   LoggingRaw raw_;
22   SimpleEventSubscriber event_subscriber_;
23   std::vector<FrameEvent> frame_events_;
24   std::vector<PacketEvent> packet_events_;
25 };
26
27 TEST_F(LoggingRawTest, FrameEvent) {
28   CastLoggingEvent event_type = FRAME_DECODED;
29   EventMediaType media_type = VIDEO_EVENT;
30   uint32 frame_id = 456u;
31   RtpTimestamp rtp_timestamp = 123u;
32   base::TimeTicks timestamp = base::TimeTicks();
33   raw_.InsertFrameEvent(timestamp, event_type, media_type,
34       rtp_timestamp, frame_id);
35
36   event_subscriber_.GetPacketEventsAndReset(&packet_events_);
37   EXPECT_TRUE(packet_events_.empty());
38
39   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
40   ASSERT_EQ(1u, frame_events_.size());
41   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
42   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
43   EXPECT_EQ(0u, frame_events_[0].size);
44   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
45   EXPECT_EQ(event_type, frame_events_[0].type);
46   EXPECT_EQ(media_type, frame_events_[0].media_type);
47   EXPECT_EQ(base::TimeDelta(), frame_events_[0].delay_delta);
48 }
49
50 TEST_F(LoggingRawTest, EncodedFrameEvent) {
51   CastLoggingEvent event_type = FRAME_ENCODED;
52   EventMediaType media_type = VIDEO_EVENT;
53   uint32 frame_id = 456u;
54   RtpTimestamp rtp_timestamp = 123u;
55   base::TimeTicks timestamp = base::TimeTicks();
56   int size = 1024;
57   bool key_frame = true;
58   int target_bitrate = 4096;
59   raw_.InsertEncodedFrameEvent(timestamp, event_type, media_type,
60       rtp_timestamp, frame_id, size, key_frame, target_bitrate);
61
62   event_subscriber_.GetPacketEventsAndReset(&packet_events_);
63   EXPECT_TRUE(packet_events_.empty());
64
65   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
66   ASSERT_EQ(1u, frame_events_.size());
67   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
68   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
69   EXPECT_EQ(size, static_cast<int>(frame_events_[0].size));
70   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
71   EXPECT_EQ(event_type, frame_events_[0].type);
72   EXPECT_EQ(media_type, frame_events_[0].media_type);
73   EXPECT_EQ(base::TimeDelta(), frame_events_[0].delay_delta);
74   EXPECT_EQ(key_frame, frame_events_[0].key_frame);
75   EXPECT_EQ(target_bitrate, frame_events_[0].target_bitrate);
76 }
77
78 TEST_F(LoggingRawTest, FrameEventWithDelay) {
79   CastLoggingEvent event_type = FRAME_PLAYOUT;
80   EventMediaType media_type = VIDEO_EVENT;
81   uint32 frame_id = 456u;
82   RtpTimestamp rtp_timestamp = 123u;
83   base::TimeTicks timestamp = base::TimeTicks();
84   base::TimeDelta delay = base::TimeDelta::FromMilliseconds(20);
85   raw_.InsertFrameEventWithDelay(timestamp, event_type, media_type,
86       rtp_timestamp, frame_id, delay);
87
88   event_subscriber_.GetPacketEventsAndReset(&packet_events_);
89   EXPECT_TRUE(packet_events_.empty());
90
91   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
92   ASSERT_EQ(1u, frame_events_.size());
93   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
94   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
95   EXPECT_EQ(0u, frame_events_[0].size);
96   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
97   EXPECT_EQ(event_type, frame_events_[0].type);
98   EXPECT_EQ(media_type, frame_events_[0].media_type);
99   EXPECT_EQ(delay, frame_events_[0].delay_delta);
100 }
101
102 TEST_F(LoggingRawTest, PacketEvent) {
103   CastLoggingEvent event_type = PACKET_RECEIVED;
104   EventMediaType media_type = VIDEO_EVENT;
105   uint32 frame_id = 456u;
106   uint16 packet_id = 1u;
107   uint16 max_packet_id = 10u;
108   RtpTimestamp rtp_timestamp = 123u;
109   base::TimeTicks timestamp = base::TimeTicks();
110   size_t size = 1024u;
111   raw_.InsertPacketEvent(timestamp, event_type, media_type,
112       rtp_timestamp, frame_id, packet_id, max_packet_id, size);
113
114   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
115   EXPECT_TRUE(frame_events_.empty());
116
117   event_subscriber_.GetPacketEventsAndReset(&packet_events_);
118   ASSERT_EQ(1u, packet_events_.size());
119
120   EXPECT_EQ(rtp_timestamp, packet_events_[0].rtp_timestamp);
121   EXPECT_EQ(frame_id, packet_events_[0].frame_id);
122   EXPECT_EQ(max_packet_id, packet_events_[0].max_packet_id);
123   EXPECT_EQ(packet_id, packet_events_[0].packet_id);
124   EXPECT_EQ(size, packet_events_[0].size);
125   EXPECT_EQ(timestamp, packet_events_[0].timestamp);
126   EXPECT_EQ(event_type, packet_events_[0].type);
127   EXPECT_EQ(media_type, packet_events_[0].media_type);
128 }
129
130 TEST_F(LoggingRawTest, MultipleSubscribers) {
131   SimpleEventSubscriber event_subscriber_2;
132
133   // Now raw_ has two subscribers.
134   raw_.AddSubscriber(&event_subscriber_2);
135
136   CastLoggingEvent event_type = FRAME_DECODED;
137   EventMediaType media_type = VIDEO_EVENT;
138   uint32 frame_id = 456u;
139   RtpTimestamp rtp_timestamp = 123u;
140   base::TimeTicks timestamp = base::TimeTicks();
141   raw_.InsertFrameEvent(timestamp, event_type, media_type,
142                         rtp_timestamp, frame_id);
143
144   event_subscriber_.GetPacketEventsAndReset(&packet_events_);
145   EXPECT_TRUE(packet_events_.empty());
146
147   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
148   ASSERT_EQ(1u, frame_events_.size());
149   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
150   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
151   EXPECT_EQ(0u, frame_events_[0].size);
152   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
153   EXPECT_EQ(event_type, frame_events_[0].type);
154   EXPECT_EQ(media_type, frame_events_[0].media_type);
155   EXPECT_EQ(base::TimeDelta(), frame_events_[0].delay_delta);
156
157   event_subscriber_2.GetPacketEventsAndReset(&packet_events_);
158   EXPECT_TRUE(packet_events_.empty());
159
160   event_subscriber_2.GetFrameEventsAndReset(&frame_events_);
161   ASSERT_EQ(1u, frame_events_.size());
162   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
163   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
164   EXPECT_EQ(0u, frame_events_[0].size);
165   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
166   EXPECT_EQ(event_type, frame_events_[0].type);
167   EXPECT_EQ(media_type, frame_events_[0].media_type);
168   EXPECT_EQ(base::TimeDelta(), frame_events_[0].delay_delta);
169
170   // Remove event_subscriber_2, so it shouldn't receive events after this.
171   raw_.RemoveSubscriber(&event_subscriber_2);
172
173   media_type = AUDIO_EVENT;
174   frame_id = 789;
175   rtp_timestamp = 456;
176   timestamp = base::TimeTicks();
177   raw_.InsertFrameEvent(timestamp, event_type, media_type,
178                         rtp_timestamp, frame_id);
179
180   // |event_subscriber_| should still receive events.
181   event_subscriber_.GetFrameEventsAndReset(&frame_events_);
182   ASSERT_EQ(1u, frame_events_.size());
183   EXPECT_EQ(rtp_timestamp, frame_events_[0].rtp_timestamp);
184   EXPECT_EQ(frame_id, frame_events_[0].frame_id);
185   EXPECT_EQ(0u, frame_events_[0].size);
186   EXPECT_EQ(timestamp, frame_events_[0].timestamp);
187   EXPECT_EQ(event_type, frame_events_[0].type);
188   EXPECT_EQ(media_type, frame_events_[0].media_type);
189   EXPECT_EQ(base::TimeDelta(), frame_events_[0].delay_delta);
190
191   event_subscriber_2.GetFrameEventsAndReset(&frame_events_);
192   EXPECT_TRUE(frame_events_.empty());
193 }
194
195 }  // namespace cast
196 }  // namespace media