Index: content/browser/renderer_host/p2p/socket_host_udp_unittest.cc |
diff --git a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc |
index 5d67a24fc3327563c21773cc973ae8ba7084e7b0..bcde983836fa3f654786b1c1aa33b90719877be5 100644 |
--- a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc |
+++ b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc |
@@ -373,4 +373,40 @@ TEST_F(P2PSocketHostUdpTest, ThrottleAfterLimitAfterReceive) { |
ASSERT_EQ(sent_packets_.size(), 4U); |
} |
+TEST_F(P2PSocketHostUdpTest, PackUnpackCallRecord) { |
+ uint64 packet_id_result; |
+ uint64 ticks_diff; |
+ uint64 random_prefix = 0xabcd1234uLL << 32; |
+ ASSERT_EQ(random_prefix & ((1uLL << 32) - 1), 0uL); |
+ |
+ uint64 packet_id = 12; |
+ uint64 ticks_now = 12345; |
+ uint64 call_record = |
+ P2PSocketHostUdp::PackCallRecord(random_prefix + packet_id, ticks_now); |
+ EXPECT_EQ(call_record, (ticks_now << 32) + packet_id); |
+ |
+ // Increment the tick by 2. |
+ P2PSocketHostUdp::UnpackCallRecord(call_record, |
+ random_prefix, |
+ ticks_now + 2, |
+ &packet_id_result, |
+ &ticks_diff); |
+ EXPECT_EQ(packet_id_result, random_prefix + packet_id); |
+ EXPECT_EQ(ticks_diff, 2uL); |
+ |
+ // Try a large packet id and the tick is rounding over 2^32. |
+ packet_id = 0xffffffff; |
+ ticks_now = 0xffffff00; |
+ call_record = |
+ P2PSocketHostUdp::PackCallRecord(random_prefix + packet_id, ticks_now); |
+ EXPECT_EQ(call_record, (ticks_now << 32) + 0xffffffff); |
+ P2PSocketHostUdp::UnpackCallRecord(call_record, |
+ random_prefix, |
+ ticks_now + 0x150, |
+ &packet_id_result, |
+ &ticks_diff); |
+ EXPECT_EQ(packet_id_result, random_prefix + packet_id); |
+ EXPECT_EQ(ticks_diff, 0x150uL); |
+} |
+ |
} // namespace content |