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

Side by Side Diff: media/cast/logging/serialize_deserialize_test.cc

Issue 241833002: Cast: Limit number of events/packets in EncodingEventSubscriber protos. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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 // 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 // Joint LogSerializer and LogDeserializer testing to make sure they stay in 5 // Joint LogSerializer and LogDeserializer testing to make sure they stay in
6 // sync. 6 // sync.
7 7
8 #include "base/memory/scoped_ptr.h"
8 #include "media/cast/logging/log_deserializer.h" 9 #include "media/cast/logging/log_deserializer.h"
9 #include "media/cast/logging/log_serializer.h" 10 #include "media/cast/logging/log_serializer.h"
10 #include "media/cast/logging/logging_defines.h" 11 #include "media/cast/logging/logging_defines.h"
11 #include "media/cast/logging/proto/proto_utils.h" 12 #include "media/cast/logging/proto/proto_utils.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 using media::cast::proto::AggregatedFrameEvent; 15 using media::cast::proto::AggregatedFrameEvent;
15 using media::cast::proto::AggregatedPacketEvent; 16 using media::cast::proto::AggregatedPacketEvent;
16 using media::cast::proto::BasePacketEvent; 17 using media::cast::proto::BasePacketEvent;
17 using media::cast::proto::LogMetadata; 18 using media::cast::proto::LogMetadata;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 ++event_index) { 60 ++event_index) {
60 frame_event->add_event_type( 61 frame_event->add_event_type(
61 ToProtoEventType(kVideoFrameEvents[event_index])); 62 ToProtoEventType(kVideoFrameEvents[event_index]));
62 frame_event->add_event_timestamp_ms(event_time_ms); 63 frame_event->add_event_timestamp_ms(event_time_ms);
63 event_time_ms += 1024; 64 event_time_ms += 1024;
64 } 65 }
65 frame_event->set_encoded_frame_size( 66 frame_event->set_encoded_frame_size(
66 kEncodedFrameSize[i % arraysize(kEncodedFrameSize)]); 67 kEncodedFrameSize[i % arraysize(kEncodedFrameSize)]);
67 frame_event->set_delay_millis(kDelayMillis[i % arraysize(kDelayMillis)]); 68 frame_event->set_delay_millis(kDelayMillis[i % arraysize(kDelayMillis)]);
68 69
69 frame_event_map_.insert( 70 frame_event_list_.push_back(frame_event);
70 std::make_pair(frame_event->relative_rtp_timestamp(), frame_event));
71 } 71 }
72 72
73 event_time_ms = 0; 73 event_time_ms = 0;
74 int packet_id = 0; 74 int packet_id = 0;
75 for (int i = 0; i < metadata_.num_packet_events(); i++) { 75 for (int i = 0; i < metadata_.num_packet_events(); i++) {
76 linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent); 76 linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent);
77 packet_event->set_relative_rtp_timestamp(i * 90); 77 packet_event->set_relative_rtp_timestamp(i * 90);
78 for (int j = 0; j < 10; j++) { 78 for (int j = 0; j < 10; j++) {
79 BasePacketEvent* base_event = packet_event->add_base_packet_event(); 79 BasePacketEvent* base_event = packet_event->add_base_packet_event();
80 base_event->set_packet_id(packet_id); 80 base_event->set_packet_id(packet_id);
81 packet_id++; 81 packet_id++;
82 for (uint32 event_index = 0; 82 for (uint32 event_index = 0;
83 event_index < arraysize(kVideoPacketEvents); 83 event_index < arraysize(kVideoPacketEvents);
84 ++event_index) { 84 ++event_index) {
85 base_event->add_event_type( 85 base_event->add_event_type(
86 ToProtoEventType(kVideoPacketEvents[event_index])); 86 ToProtoEventType(kVideoPacketEvents[event_index]));
87 base_event->add_event_timestamp_ms(event_time_ms); 87 base_event->add_event_timestamp_ms(event_time_ms);
88 event_time_ms += 256; 88 event_time_ms += 256;
89 } 89 }
90 } 90 }
91 packet_event_map_.insert( 91 packet_event_list_.push_back(packet_event);
92 std::make_pair(packet_event->relative_rtp_timestamp(), packet_event));
93 } 92 }
94 } 93 }
95 94
96 void Verify(const DeserializedLog& video_log) { 95 void Verify(const DeserializedLog& video_log) {
97 const LogMetadata& returned_metadata = video_log.metadata; 96 const LogMetadata& returned_metadata = video_log.metadata;
98 const FrameEventMap& returned_frame_events = video_log.frame_events; 97 const FrameEventMap& returned_frame_events = video_log.frame_events;
99 const PacketEventMap& returned_packet_events = video_log.packet_events; 98 const PacketEventMap& returned_packet_events = video_log.packet_events;
100 99
101 EXPECT_EQ(metadata_.SerializeAsString(), 100 EXPECT_EQ(metadata_.SerializeAsString(),
102 returned_metadata.SerializeAsString()); 101 returned_metadata.SerializeAsString());
103 102
104 // Check that the returned map is equal to the original map. 103 // Check that the returned map is equal to the original map.
105 EXPECT_EQ(frame_event_map_.size(), returned_frame_events.size()); 104 EXPECT_EQ(frame_event_list_.size(), returned_frame_events.size());
106 for (FrameEventMap::const_iterator frame_it = returned_frame_events.begin(); 105 for (FrameEventMap::const_iterator frame_it = returned_frame_events.begin();
107 frame_it != returned_frame_events.end(); 106 frame_it != returned_frame_events.end();
108 ++frame_it) { 107 ++frame_it) {
109 FrameEventMap::iterator original_it = 108 FrameEventList::iterator original_it = frame_event_list_.begin();
110 frame_event_map_.find(frame_it->first); 109 ASSERT_NE(frame_event_list_.end(), original_it);
111 ASSERT_NE(frame_event_map_.end(), original_it);
112 // Compare protos by serializing and checking the bytes. 110 // Compare protos by serializing and checking the bytes.
113 EXPECT_EQ(original_it->second->SerializeAsString(), 111 EXPECT_EQ((*original_it)->SerializeAsString(),
114 frame_it->second->SerializeAsString()); 112 frame_it->second->SerializeAsString());
115 frame_event_map_.erase(original_it); 113 frame_event_list_.erase(frame_event_list_.begin());
116 } 114 }
117 EXPECT_TRUE(frame_event_map_.empty()); 115 EXPECT_TRUE(frame_event_list_.empty());
118 116
119 EXPECT_EQ(packet_event_map_.size(), returned_packet_events.size()); 117 EXPECT_EQ(packet_event_list_.size(), returned_packet_events.size());
120 for (PacketEventMap::const_iterator packet_it = 118 for (PacketEventMap::const_iterator packet_it =
121 returned_packet_events.begin(); 119 returned_packet_events.begin();
122 packet_it != returned_packet_events.end(); 120 packet_it != returned_packet_events.end();
123 ++packet_it) { 121 ++packet_it) {
124 PacketEventMap::iterator original_it = 122 PacketEventList::iterator original_it = packet_event_list_.begin();
125 packet_event_map_.find(packet_it->first); 123 ASSERT_NE(packet_event_list_.end(), original_it);
126 ASSERT_NE(packet_event_map_.end(), original_it);
127 // Compare protos by serializing and checking the bytes. 124 // Compare protos by serializing and checking the bytes.
128 EXPECT_EQ(original_it->second->SerializeAsString(), 125 EXPECT_EQ((*original_it)->SerializeAsString(),
129 packet_it->second->SerializeAsString()); 126 packet_it->second->SerializeAsString());
130 packet_event_map_.erase(original_it); 127 packet_event_list_.erase(packet_event_list_.begin());
131 } 128 }
132 EXPECT_TRUE(packet_event_map_.empty()); 129 EXPECT_TRUE(packet_event_list_.empty());
133 } 130 }
134 131
135 LogMetadata metadata_; 132 LogMetadata metadata_;
136 FrameEventMap frame_event_map_; 133 FrameEventList frame_event_list_;
137 PacketEventMap packet_event_map_; 134 PacketEventList packet_event_list_;
138 scoped_ptr<char[]> serialized_; 135 scoped_ptr<char[]> serialized_;
139 int output_bytes_; 136 int output_bytes_;
140 }; 137 };
141 138
142 TEST_F(SerializeDeserializeTest, Uncompressed) { 139 TEST_F(SerializeDeserializeTest, Uncompressed) {
143 bool compressed = false; 140 bool compressed = false;
144 Init(); 141 Init();
145 142
146 bool success = SerializeEvents(metadata_, 143 bool success = SerializeEvents(metadata_,
147 frame_event_map_, 144 frame_event_list_,
148 packet_event_map_, 145 packet_event_list_,
149 compressed, 146 compressed,
150 kMaxSerializedBytes, 147 kMaxSerializedBytes,
151 serialized_.get(), 148 serialized_.get(),
152 &output_bytes_); 149 &output_bytes_);
153 ASSERT_TRUE(success); 150 ASSERT_TRUE(success);
154 ASSERT_GT(output_bytes_, 0); 151 ASSERT_GT(output_bytes_, 0);
155 152
156 DeserializedLog audio_log; 153 DeserializedLog audio_log;
157 DeserializedLog video_log; 154 DeserializedLog video_log;
158 success = DeserializeEvents( 155 success = DeserializeEvents(
159 serialized_.get(), output_bytes_, compressed, &audio_log, &video_log); 156 serialized_.get(), output_bytes_, compressed, &audio_log, &video_log);
160 ASSERT_TRUE(success); 157 ASSERT_TRUE(success);
161 158
162 Verify(video_log); 159 Verify(video_log);
163 } 160 }
164 161
165 TEST_F(SerializeDeserializeTest, UncompressedInsufficientSpace) { 162 TEST_F(SerializeDeserializeTest, UncompressedInsufficientSpace) {
166 bool compressed = false; 163 bool compressed = false;
167 Init(); 164 Init();
168 serialized_.reset(new char[100]); 165 serialized_.reset(new char[100]);
169 bool success = SerializeEvents(metadata_, 166 bool success = SerializeEvents(metadata_,
170 frame_event_map_, 167 frame_event_list_,
171 packet_event_map_, 168 packet_event_list_,
172 compressed, 169 compressed,
173 100, 170 100,
174 serialized_.get(), 171 serialized_.get(),
175 &output_bytes_); 172 &output_bytes_);
176 EXPECT_FALSE(success); 173 EXPECT_FALSE(success);
177 EXPECT_EQ(0, output_bytes_); 174 EXPECT_EQ(0, output_bytes_);
178 } 175 }
179 176
180 TEST_F(SerializeDeserializeTest, Compressed) { 177 TEST_F(SerializeDeserializeTest, Compressed) {
181 bool compressed = true; 178 bool compressed = true;
182 Init(); 179 Init();
183 bool success = SerializeEvents(metadata_, 180 bool success = SerializeEvents(metadata_,
184 frame_event_map_, 181 frame_event_list_,
185 packet_event_map_, 182 packet_event_list_,
186 compressed, 183 compressed,
187 kMaxSerializedBytes, 184 kMaxSerializedBytes,
188 serialized_.get(), 185 serialized_.get(),
189 &output_bytes_); 186 &output_bytes_);
190 ASSERT_TRUE(success); 187 ASSERT_TRUE(success);
191 ASSERT_GT(output_bytes_, 0); 188 ASSERT_GT(output_bytes_, 0);
192 189
193 DeserializedLog audio_log; 190 DeserializedLog audio_log;
194 DeserializedLog video_log; 191 DeserializedLog video_log;
195 success = DeserializeEvents( 192 success = DeserializeEvents(
196 serialized_.get(), output_bytes_, compressed, &audio_log, &video_log); 193 serialized_.get(), output_bytes_, compressed, &audio_log, &video_log);
197 ASSERT_TRUE(success); 194 ASSERT_TRUE(success);
198 Verify(video_log); 195 Verify(video_log);
199 } 196 }
200 197
201 TEST_F(SerializeDeserializeTest, CompressedInsufficientSpace) { 198 TEST_F(SerializeDeserializeTest, CompressedInsufficientSpace) {
202 bool compressed = true; 199 bool compressed = true;
203 Init(); 200 Init();
204 serialized_.reset(new char[100]); 201 serialized_.reset(new char[100]);
205 bool success = SerializeEvents(metadata_, 202 bool success = SerializeEvents(metadata_,
206 frame_event_map_, 203 frame_event_list_,
207 packet_event_map_, 204 packet_event_list_,
208 compressed, 205 compressed,
209 100, 206 100,
210 serialized_.get(), 207 serialized_.get(),
211 &output_bytes_); 208 &output_bytes_);
212 EXPECT_FALSE(success); 209 EXPECT_FALSE(success);
213 EXPECT_EQ(0, output_bytes_); 210 EXPECT_EQ(0, output_bytes_);
214 } 211 }
215 212
216 } // namespace cast 213 } // namespace cast
217 } // namespace media 214 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698