Index: net/quic/quic_packet_creator_test.cc |
diff --git a/net/quic/quic_packet_creator_test.cc b/net/quic/quic_packet_creator_test.cc |
index fa4117f3d9a66555d4f8966b037df8b432fb8753..055951829caaa57eac65c57d06bae0f7d33219ec 100644 |
--- a/net/quic/quic_packet_creator_test.cc |
+++ b/net/quic/quic_packet_creator_test.cc |
@@ -1521,6 +1521,52 @@ TEST_P(QuicPacketCreatorTest, |
QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
} |
+TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) { |
+ // Current path is the default path. |
+ EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
+ EXPECT_EQ(0, creator_.packet_number()); |
+ // Add a stream frame to the creator and flush the packet. |
+ QuicFrame frame; |
+ QuicIOVector io_vector(MakeIOVector("test")); |
+ ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame, |
+ MAY_FEC_PROTECT)); |
+ ASSERT_TRUE(frame.stream_frame); |
+ size_t consumed = frame.stream_frame->frame_length; |
+ EXPECT_EQ(4u, consumed); |
+ EXPECT_TRUE(creator_.HasPendingFrames()); |
+ EXPECT_EQ(0, creator_.packet_number()); |
+ EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
+ .WillRepeatedly( |
+ Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
+ creator_.Flush(); |
+ EXPECT_FALSE(creator_.HasPendingFrames()); |
+ EXPECT_EQ(1, creator_.packet_number()); |
+ // Verify serialized data packet's path id. |
+ EXPECT_EQ(kDefaultPathId, serialized_packet_.path_id); |
+ ClearSerializedPacket(&serialized_packet_); |
+ |
+ // Change to path 1. |
+ QuicPathId kPathId1 = 1; |
+ creator_.SetCurrentPath(kPathId1, 1, 0); |
+ EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
+ EXPECT_FALSE(creator_.HasPendingFrames()); |
+ EXPECT_EQ(0, creator_.packet_number()); |
+ EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
+ QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
+ |
+ // Add a stream frame to the creator and flush the packet. |
+ ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame, |
+ MAY_FEC_PROTECT)); |
+ ASSERT_TRUE(frame.stream_frame); |
+ consumed = frame.stream_frame->frame_length; |
+ EXPECT_EQ(4u, consumed); |
+ EXPECT_TRUE(creator_.HasPendingFrames()); |
+ creator_.Flush(); |
+ // Verify serialized data packet's path id. |
+ EXPECT_EQ(kPathId1, serialized_packet_.path_id); |
+ ClearSerializedPacket(&serialized_packet_); |
+} |
+ |
} // namespace |
} // namespace test |
} // namespace net |