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

Unified Diff: media/cast/logging/serialize_deserialize_test.cc

Issue 189583004: Cast: Implement log compression and (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/cast/logging/log_serializer.cc ('k') | media/cast/test/sender.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/logging/serialize_deserialize_test.cc
diff --git a/media/cast/logging/serialize_deserialize_test.cc b/media/cast/logging/serialize_deserialize_test.cc
index 759968deb2b786cb923d15452972494f8dfef777..9be6ff0f7f0d1056403025e9030eced889896412 100644
--- a/media/cast/logging/serialize_deserialize_test.cc
+++ b/media/cast/logging/serialize_deserialize_test.cc
@@ -14,6 +14,7 @@
using media::cast::proto::AggregatedFrameEvent;
using media::cast::proto::AggregatedPacketEvent;
using media::cast::proto::BasePacketEvent;
+using media::cast::proto::LogMetadata;
namespace {
@@ -29,6 +30,8 @@ const media::cast::CastLoggingEvent kVideoPacketEvents[] = {
// The frame event fields cycle through these numbers.
const int kEncodedFrameSize[] = {512, 425, 399, 400, 237};
const int kDelayMillis[] = {15, 4, 8, 42, 23, 16};
+
+const int kMaxSerializedBytes = 10000;
}
namespace media {
@@ -36,109 +39,186 @@ namespace cast {
class SerializeDeserializeTest : public ::testing::Test {
protected:
- SerializeDeserializeTest() : serializer_(kMaxSerializedLogBytes) {}
+ SerializeDeserializeTest()
+ : serialized_(new char[kMaxSerializedBytes]), output_bytes_(0) {}
virtual ~SerializeDeserializeTest() {}
- LogSerializer serializer_;
-};
+ void Init() {
+ metadata_.set_first_rtp_timestamp(12345678 * 90);
+ metadata_.set_is_audio(false);
+ metadata_.set_num_frame_events(10);
+ metadata_.set_num_packet_events(10);
+
+ int64 event_time_micros = 0;
+ // Insert frame and packet events with RTP timestamps 0, 90, 180, ...
+ for (int i = 0; i < metadata_.num_frame_events(); i++) {
+ linked_ptr<AggregatedFrameEvent> frame_event(new AggregatedFrameEvent);
+ frame_event->set_relative_rtp_timestamp(i * 90);
+ for (uint32 event_index = 0; event_index < arraysize(kVideoFrameEvents);
+ ++event_index) {
+ frame_event->add_event_type(
+ ToProtoEventType(kVideoFrameEvents[event_index]));
+ frame_event->add_event_timestamp_micros(event_time_micros);
+ event_time_micros += 1024;
+ }
+ frame_event->set_encoded_frame_size(
+ kEncodedFrameSize[i % arraysize(kEncodedFrameSize)]);
+ frame_event->set_delay_millis(kDelayMillis[i % arraysize(kDelayMillis)]);
-TEST_F(SerializeDeserializeTest, Basic) {
- RtpTimestamp first_rtp_timestamp = 12345678 * 90;
- FrameEventMap frame_event_map;
- PacketEventMap packet_event_map;
-
- int64 event_time_micros = 0;
- // Insert frame and packet events with RTP timestamps 0, 90, 180, ...
- for (int i = 0; i < 10; i++) {
- linked_ptr<AggregatedFrameEvent> frame_event(new AggregatedFrameEvent);
- frame_event->set_relative_rtp_timestamp(i * 90);
- for (uint32 event_index = 0; event_index < arraysize(kVideoFrameEvents);
- ++event_index) {
- frame_event->add_event_type(
- ToProtoEventType(kVideoFrameEvents[event_index]));
- frame_event->add_event_timestamp_micros(event_time_micros);
- event_time_micros += 1024;
+ frame_event_map_.insert(
+ std::make_pair(frame_event->relative_rtp_timestamp(), frame_event));
}
- frame_event->set_encoded_frame_size(
- kEncodedFrameSize[i % arraysize(kEncodedFrameSize)]);
- frame_event->set_delay_millis(kDelayMillis[i % arraysize(kDelayMillis)]);
- frame_event_map.insert(
- std::make_pair(frame_event->relative_rtp_timestamp(), frame_event));
+ event_time_micros = 0;
+ int packet_id = 0;
+ for (int i = 0; i < metadata_.num_packet_events(); i++) {
+ linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent);
+ packet_event->set_relative_rtp_timestamp(i * 90);
+ for (int j = 0; j < 10; j++) {
+ BasePacketEvent* base_event = packet_event->add_base_packet_event();
+ base_event->set_packet_id(packet_id);
+ packet_id++;
+ for (uint32 event_index = 0;
+ event_index < arraysize(kVideoPacketEvents);
+ ++event_index) {
+ base_event->add_event_type(
+ ToProtoEventType(kVideoPacketEvents[event_index]));
+ base_event->add_event_timestamp_micros(event_time_micros);
+ event_time_micros += 256;
+ }
+ }
+ packet_event_map_.insert(
+ std::make_pair(packet_event->relative_rtp_timestamp(), packet_event));
+ }
}
- event_time_micros = 0;
- int packet_id = 0;
- for (int i = 0; i < 10; i++) {
- linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent);
- packet_event->set_relative_rtp_timestamp(i * 90);
- for (int j = 0; j < 10; j++) {
- BasePacketEvent* base_event = packet_event->add_base_packet_event();
- base_event->set_packet_id(packet_id);
- packet_id++;
- for (uint32 event_index = 0; event_index < arraysize(kVideoPacketEvents);
- ++event_index) {
- base_event->add_event_type(
- ToProtoEventType(kVideoPacketEvents[event_index]));
- base_event->add_event_timestamp_micros(event_time_micros);
- event_time_micros += 256;
- }
+ void Verify(const LogMetadata& returned_metadata,
+ const FrameEventMap& returned_frame_events,
+ const PacketEventMap& returned_packet_events) {
+ EXPECT_EQ(metadata_.SerializeAsString(),
+ returned_metadata.SerializeAsString());
+
+ // Check that the returned map is equal to the original map.
+ EXPECT_EQ(frame_event_map_.size(), returned_frame_events.size());
+ for (FrameEventMap::const_iterator frame_it = returned_frame_events.begin();
+ frame_it != returned_frame_events.end();
+ ++frame_it) {
+ FrameEventMap::iterator original_it =
+ frame_event_map_.find(frame_it->first);
+ ASSERT_NE(frame_event_map_.end(), original_it);
+ // Compare protos by serializing and checking the bytes.
+ EXPECT_EQ(original_it->second->SerializeAsString(),
+ frame_it->second->SerializeAsString());
+ frame_event_map_.erase(original_it);
+ }
+ EXPECT_TRUE(frame_event_map_.empty());
+
+ EXPECT_EQ(packet_event_map_.size(), returned_packet_events.size());
+ for (PacketEventMap::const_iterator packet_it =
+ returned_packet_events.begin();
+ packet_it != returned_packet_events.end();
+ ++packet_it) {
+ PacketEventMap::iterator original_it =
+ packet_event_map_.find(packet_it->first);
+ ASSERT_NE(packet_event_map_.end(), original_it);
+ // Compare protos by serializing and checking the bytes.
+ EXPECT_EQ(original_it->second->SerializeAsString(),
+ packet_it->second->SerializeAsString());
+ packet_event_map_.erase(original_it);
}
- packet_event_map.insert(
- std::make_pair(packet_event->relative_rtp_timestamp(), packet_event));
+ EXPECT_TRUE(packet_event_map_.empty());
}
- media::cast::proto::LogMetadata metadata;
- metadata.set_is_audio(false);
- metadata.set_first_rtp_timestamp(first_rtp_timestamp);
- metadata.set_num_frame_events(frame_event_map.size());
- metadata.set_num_packet_events(packet_event_map.size());
- bool success = serializer_.SerializeEventsForStream(
- metadata, frame_event_map, packet_event_map);
- uint32 length = serializer_.GetSerializedLength();
- scoped_ptr<std::string> serialized = serializer_.GetSerializedLogAndReset();
+ LogMetadata metadata_;
+ FrameEventMap frame_event_map_;
+ PacketEventMap packet_event_map_;
+ scoped_ptr<char[]> serialized_;
+ int output_bytes_;
+};
+
+TEST_F(SerializeDeserializeTest, Uncompressed) {
+ bool compressed = false;
+ Init();
+
+ bool success = SerializeEvents(metadata_,
+ frame_event_map_,
+ packet_event_map_,
+ compressed,
+ kMaxSerializedBytes,
+ serialized_.get(),
+ &output_bytes_);
ASSERT_TRUE(success);
- ASSERT_EQ(length, serialized->size());
+ ASSERT_GT(output_bytes_, 0);
FrameEventMap returned_frame_events;
PacketEventMap returned_packet_events;
- media::cast::proto::LogMetadata returned_metadata;
- success = DeserializeEvents(*serialized,
+ LogMetadata returned_metadata;
+ success = DeserializeEvents(serialized_.get(),
+ output_bytes_,
+ compressed,
&returned_metadata,
&returned_frame_events,
&returned_packet_events);
ASSERT_TRUE(success);
- EXPECT_FALSE(returned_metadata.is_audio());
- EXPECT_EQ(first_rtp_timestamp, returned_metadata.first_rtp_timestamp());
-
- // Check that the returned map is equal to the original map.
- EXPECT_EQ(frame_event_map.size(), returned_frame_events.size());
- for (FrameEventMap::iterator frame_it = returned_frame_events.begin();
- frame_it != returned_frame_events.end();
- ++frame_it) {
- FrameEventMap::iterator original_it = frame_event_map.find(frame_it->first);
- ASSERT_NE(frame_event_map.end(), original_it);
- // Compare protos by serializing and checking the bytes.
- EXPECT_EQ(original_it->second->SerializeAsString(),
- frame_it->second->SerializeAsString());
- frame_event_map.erase(original_it);
- }
- EXPECT_TRUE(frame_event_map.empty());
-
- EXPECT_EQ(packet_event_map.size(), returned_packet_events.size());
- for (PacketEventMap::iterator packet_it = returned_packet_events.begin();
- packet_it != returned_packet_events.end();
- ++packet_it) {
- PacketEventMap::iterator original_it =
- packet_event_map.find(packet_it->first);
- ASSERT_NE(packet_event_map.end(), original_it);
- // Compare protos by serializing and checking the bytes.
- EXPECT_EQ(original_it->second->SerializeAsString(),
- packet_it->second->SerializeAsString());
- packet_event_map.erase(original_it);
- }
- EXPECT_TRUE(packet_event_map.empty());
+
+ Verify(returned_metadata, returned_frame_events, returned_packet_events);
+}
+
+TEST_F(SerializeDeserializeTest, UncompressedInsufficientSpace) {
+ bool compressed = false;
+ Init();
+ serialized_.reset(new char[100]);
+ bool success = SerializeEvents(metadata_,
+ frame_event_map_,
+ packet_event_map_,
+ compressed,
+ 100,
+ serialized_.get(),
+ &output_bytes_);
+ EXPECT_FALSE(success);
+ EXPECT_EQ(0, output_bytes_);
+}
+
+TEST_F(SerializeDeserializeTest, Compressed) {
+ bool compressed = true;
+ Init();
+ bool success = SerializeEvents(metadata_,
+ frame_event_map_,
+ packet_event_map_,
+ compressed,
+ kMaxSerializedBytes,
+ serialized_.get(),
+ &output_bytes_);
+ ASSERT_TRUE(success);
+ ASSERT_GT(output_bytes_, 0);
+
+ FrameEventMap returned_frame_events;
+ PacketEventMap returned_packet_events;
+ LogMetadata returned_metadata;
+ success = DeserializeEvents(serialized_.get(),
+ output_bytes_,
+ compressed,
+ &returned_metadata,
+ &returned_frame_events,
+ &returned_packet_events);
+ ASSERT_TRUE(success);
+ Verify(returned_metadata, returned_frame_events, returned_packet_events);
+}
+
+TEST_F(SerializeDeserializeTest, CompressedInsufficientSpace) {
+ bool compressed = true;
+ Init();
+ serialized_.reset(new char[100]);
+ bool success = SerializeEvents(metadata_,
+ frame_event_map_,
+ packet_event_map_,
+ compressed,
+ 100,
+ serialized_.get(),
+ &output_bytes_);
+ EXPECT_FALSE(success);
+ EXPECT_EQ(0, output_bytes_);
}
} // namespace cast
« no previous file with comments | « media/cast/logging/log_serializer.cc ('k') | media/cast/test/sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698