Use wub's new test features in QuicBufferedPacketStoreTest:SimpleEnqueueAckSent PiperOrigin-RevId: 700345169
diff --git a/quiche/quic/core/quic_buffered_packet_store_test.cc b/quiche/quic/core/quic_buffered_packet_store_test.cc index d3400f0..d540521 100644 --- a/quiche/quic/core/quic_buffered_packet_store_test.cc +++ b/quiche/quic/core/quic_buffered_packet_store_test.cc
@@ -210,69 +210,43 @@ TEST_F(QuicBufferedPacketStoreTest, SimpleEnqueueAckSent) { SetQuicReloadableFlag(quic_ecn_in_first_ack, true); - QuicConnectionId connection_id = TestConnectionId(1); - MockPacketWriter writer; - store_.set_writer(&writer); - // Build a decryptable Initial packet with PADDING. - QuicFramer client_framer(ParsedQuicVersionVector{ParsedQuicVersion::RFCv1()}, - QuicTime::Zero(), Perspective::IS_CLIENT, 8); - client_framer.SetInitialObfuscators(connection_id); - QuicPacketHeader header; - header.destination_connection_id = connection_id; - header.version_flag = true; - header.packet_number = QuicPacketNumber(1); - header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; - header.long_packet_type = INITIAL; - header.length_length = quiche::VARIABLE_LENGTH_INTEGER_LENGTH_2; - header.retry_token_length_length = quiche::VARIABLE_LENGTH_INTEGER_LENGTH_1; - QuicFrames frames = {QuicFrame(QuicPaddingFrame(1200))}; + const QuicConnectionId kDCID = TestConnectionId(1); + const std::string crypto_data = "crypto_data"; + ParsedQuicVersionVector versions = {ParsedQuicVersion::RFCv1()}; + std::unique_ptr<QuicEncryptedPacket> client_initial_packet( + ConstructEncryptedPacket( + kDCID, QuicConnectionId(), /*version_flag=*/true, + /*reset_flag=*/false, /*packet_number=*/1, crypto_data, + /*full_padding=*/true, CONNECTION_ID_PRESENT, CONNECTION_ID_PRESENT, + PACKET_4BYTE_PACKET_NUMBER, &versions, Perspective::IS_CLIENT)); + QuicReceivedPacket received_client_initial( + client_initial_packet->data(), client_initial_packet->length(), + QuicTime::Zero(), false, 0, true, nullptr, 0, false, ECN_ECT1); + ReceivedPacketInfo packet_info(self_address_, peer_address_, + received_client_initial); + std::string detailed_error; + ASSERT_EQ(QuicFramer::ParsePublicHeaderDispatcherShortHeaderLengthUnknown( + received_client_initial, &packet_info.form, + &packet_info.long_packet_type, &packet_info.version_flag, + &packet_info.use_length_prefix, &packet_info.version_label, + &packet_info.version, &packet_info.destination_connection_id, + &packet_info.source_connection_id, &packet_info.retry_token, + &detailed_error, connection_id_generator_), + QUIC_NO_ERROR) + << detailed_error; + store_.EnqueuePacket(packet_info, kNoParsedChlo, connection_id_generator_); - char* buffer = new char[1500]; - EncryptionLevel level = HeaderToEncryptionLevel(header); - size_t length = - client_framer.BuildDataPacket(header, frames, buffer, 1500, level); - - ASSERT_GT(length, 0); - - // Re-construct the data packet with data ownership. - auto data = std::make_unique<QuicPacket>( - buffer, length, /* owns_buffer */ true, - GetIncludedDestinationConnectionIdLength(header), - GetIncludedSourceConnectionIdLength(header), header.version_flag, - header.nonce != nullptr, header.packet_number_length, - header.retry_token_length_length, header.retry_token.length(), - header.length_length); - unsigned char raw[1500] = {}; - size_t final_size = client_framer.EncryptPayload( - ENCRYPTION_INITIAL, header.packet_number, *data, (char*)raw, 1500); - QuicReceivedPacket packet((char*)raw, final_size, QuicTime::Zero(), false, 0, - true, nullptr, 0, false, ECN_ECT1); - - EXPECT_CALL(writer, IsWriteBlocked()).WillOnce(Return(false)); - std::unique_ptr<QuicEncryptedPacket> ack_packet; - EXPECT_CALL(writer, WritePacket(_, _, _, _, _, _)) - .WillOnce(Invoke([&](const char* buffer, size_t buf_len, - const QuicIpAddress& /*self_address*/, - const QuicSocketAddress& /*peer_address*/, - PerPacketOptions* /*options*/, - const QuicPacketWriterParams& /*params*/) { - auto tmp_packet = - std::make_unique<QuicEncryptedPacket>(buffer, buf_len); - ack_packet = tmp_packet->Clone(); - return WriteResult(WRITE_STATUS_OK, 1); - })); - EXPECT_CALL(writer, Flush()); - EnqueuePacketToStore(store_, connection_id, IETF_QUIC_LONG_HEADER_PACKET, - INITIAL, packet, self_address_, peer_address_, - ParsedQuicVersion::RFCv1(), kNoParsedChlo, - connection_id_generator_); - const BufferedPacketList* buffered_list = store_.GetPacketList(connection_id); + const BufferedPacketList* buffered_list = store_.GetPacketList(kDCID); ASSERT_NE(buffered_list, nullptr); ASSERT_EQ(buffered_list->dispatcher_sent_packets.size(), 1); EXPECT_EQ(buffered_list->dispatcher_sent_packets[0].largest_acked, QuicPacketNumber(1)); + ASSERT_EQ(client_received_packets_.size(), 1u); // Decrypt the packet, and verify it reports ECN. + QuicFramer client_framer(ParsedQuicVersionVector{ParsedQuicVersion::RFCv1()}, + QuicTime::Zero(), Perspective::IS_CLIENT, 8); + client_framer.SetInitialObfuscators(kDCID); MockFramerVisitor mock_framer_visitor; client_framer.set_visitor(&mock_framer_visitor); EXPECT_CALL(mock_framer_visitor, OnPacket()).Times(1); @@ -282,7 +256,7 @@ std::optional<QuicEcnCounts> counts = QuicEcnCounts(0, 1, 0); EXPECT_CALL(mock_framer_visitor, OnAckFrameEnd(_, counts)) .WillOnce(Return(true)); - client_framer.ProcessPacket(*ack_packet); + client_framer.ProcessPacket(*client_received_packets_[0]->packet); } TEST_F(QuicBufferedPacketStoreTest, DifferentPacketAddressOnOneConnection) {