Lines Matching full:chunk
33 using internal::Chunk;
97 // First transfer parameters chunk is sent. in TEST_F()
103 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
108 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
111 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
120 Chunk c1 = DecodeChunk(payloads.back()); in TEST_F()
144 // First transfer parameters chunk is sent. in TEST_F()
150 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
155 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
159 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
168 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
177 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
201 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
221 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
241 // First transfer parameters chunk is sent. in TEST_F()
246 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
251 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
260 // First transfer parameters chunk is sent. in TEST_F()
265 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
270 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
286 // First transfer parameters chunk is sent. in TEST_F()
292 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
300 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
309 // Second parameters chunk. in TEST_F()
310 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
316 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
325 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
347 // First transfer parameters chunk is sent. in TEST_F()
353 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
361 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
370 // Send a chunk with an incorrect offset. The client should resend parameters. in TEST_F()
372 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
382 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
387 // Send the correct chunk, completing the transfer. in TEST_F()
389 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
398 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
421 // First transfer parameters chunk is sent. in TEST_F()
427 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
437 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
444 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
451 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
459 // The device should resend a parameters chunk. in TEST_F()
460 Chunk c1 = DecodeChunk(payloads[3]); in TEST_F()
462 EXPECT_EQ(c1.type(), Chunk::Type::kParametersRetransmit); in TEST_F()
467 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
493 // First transfer parameters chunk is sent. in TEST_F()
499 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
509 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
516 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
524 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
532 // The device should resend a parameters chunk. in TEST_F()
533 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
535 EXPECT_EQ(c.type(), Chunk::Type::kParametersRetransmit); in TEST_F()
539 // Send one more incorrectly-sized chunk. The transfer should fail. in TEST_F()
541 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
548 Chunk error = DecodeChunk(payloads.back()); in TEST_F()
550 EXPECT_EQ(error.type(), Chunk::Type::kCompletion); in TEST_F()
569 // First transfer parameters chunk is sent. in TEST_F()
575 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
584 Chunk::Final(ProtocolVersion::kLegacy, 9, Status::NotFound()))); in TEST_F()
604 // First transfer parameters chunk is sent. in TEST_F()
610 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
620 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
628 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
639 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
646 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
655 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
676 // First transfer parameters chunk is sent. in TEST_F()
682 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
692 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
700 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
711 const Chunk last_chunk = Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
716 // Re-send the final chunk of the block. in TEST_F()
722 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
732 Chunk c3 = DecodeChunk(payloads[3]); in TEST_F()
739 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
748 Chunk c4 = DecodeChunk(payloads[4]); in TEST_F()
776 // First transfer parameters chunk is sent. in TEST_F()
782 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
787 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
790 // resend its initial parameters chunk. in TEST_F()
794 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
798 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
805 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
814 Chunk c4 = DecodeChunk(payloads.back()); in TEST_F()
837 // First transfer parameters chunk is sent. in TEST_F()
843 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
848 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
854 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
863 // send an updated parameters chunk, accounting for the data already received. in TEST_F()
867 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
871 EXPECT_EQ(c.type(), Chunk::Type::kParametersRetransmit); in TEST_F()
878 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
887 Chunk c4 = DecodeChunk(payloads.back()); in TEST_F()
908 // First transfer parameters chunk is sent. in TEST_F()
914 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
919 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
923 // resend its parameters chunk. in TEST_F()
927 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
938 // final status chunk should be sent. in TEST_F()
966 // First transfer parameters chunk is sent. in TEST_F()
972 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
983 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
994 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
1007 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
1103 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1106 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1108 // Send transfer parameters. Client should send a data chunk and the final in TEST_F()
1109 // chunk. in TEST_F()
1112 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1121 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1128 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1135 // Send the final status chunk to complete the transfer. in TEST_F()
1137 EncodeChunk(Chunk::Final(ProtocolVersion::kLegacy, 3, OkStatus()))); in TEST_F()
1164 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1167 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1169 // Send transfer parameters with a chunk size smaller than the data. in TEST_F()
1171 // Client should send two data chunks and the final chunk. in TEST_F()
1174 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1183 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1190 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1199 Chunk c3 = DecodeChunk(payloads[3]); in TEST_F()
1206 // Send the final status chunk to complete the transfer. in TEST_F()
1208 EncodeChunk(Chunk::Final(ProtocolVersion::kLegacy, 4, OkStatus()))); in TEST_F()
1235 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1238 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1241 // Client should send a data chunk and the final chunk. in TEST_F()
1244 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1253 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1262 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1269 // Send the final status chunk to complete the transfer. in TEST_F()
1271 EncodeChunk(Chunk::Final(ProtocolVersion::kLegacy, 5, OkStatus()))); in TEST_F()
1319 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1322 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1326 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1333 // Client should send a status chunk and end the transfer. in TEST_F()
1336 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1338 EXPECT_EQ(c1.type(), Chunk::Type::kCompletion); in TEST_F()
1365 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1368 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1372 Chunk::Final(ProtocolVersion::kLegacy, 7, Status::NotFound()))); in TEST_F()
1400 Chunk c0 = DecodeChunk(payloads[0]); in TEST_F()
1403 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1405 // Send an invalid transfer parameters chunk with 0 pending bytes. in TEST_F()
1407 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1414 // Client should send a status chunk and end the transfer. in TEST_F()
1417 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1444 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
1447 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1450 // resend the initial transmit chunk. in TEST_F()
1454 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
1457 EXPECT_EQ(c.type(), Chunk::Type::kStart); in TEST_F()
1485 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
1488 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1490 // Send the first parameters chunk. in TEST_F()
1493 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1503 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1510 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1520 // resend the most recently sent chunk. in TEST_F()
1524 Chunk c3 = DecodeChunk(payloads[3]); in TEST_F()
1558 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
1561 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1563 // Send the first parameters chunk, requesting all the data. The client should in TEST_F()
1564 // respond with one data chunk and a remaining_bytes = 0 chunk. in TEST_F()
1567 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1577 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1584 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1590 // resend the data chunk. in TEST_F()
1594 Chunk c3 = DecodeChunk(payloads[3]); in TEST_F()
1602 // The remaining_bytes = 0 chunk should be resent on the next parameters. in TEST_F()
1604 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1612 Chunk c4 = DecodeChunk(payloads[4]); in TEST_F()
1618 EncodeChunk(Chunk::Final(ProtocolVersion::kLegacy, 12, OkStatus()))); in TEST_F()
1643 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
1646 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1650 // resend the initial transmit chunk. in TEST_F()
1654 Chunk c = DecodeChunk(payloads.back()); in TEST_F()
1657 EXPECT_EQ(c.type(), Chunk::Type::kStart); in TEST_F()
1665 // final status chunk should be sent. in TEST_F()
1700 Chunk c0 = DecodeChunk(payloads.back()); in TEST_F()
1703 EXPECT_EQ(c0.type(), Chunk::Type::kStart); in TEST_F()
1705 // Send the first parameters chunk. in TEST_F()
1708 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1718 Chunk c1 = DecodeChunk(payloads[1]); in TEST_F()
1726 Chunk c2 = DecodeChunk(payloads[2]); in TEST_F()
1741 Chunk c3 = DecodeChunk(payloads[3]); in TEST_F()
1772 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
1773 EXPECT_EQ(chunk.session_id(), 15u); in TEST_F()
1774 EXPECT_EQ(chunk.resource_id(), 15u); in TEST_F()
1775 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
1778 // This must request a smaller chunk than the entire available write data to in TEST_F()
1779 // prevent the client from trying to send an additional finish chunk. in TEST_F()
1781 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1792 // Client should send a cancellation chunk to the server. in TEST_F()
1794 chunk = DecodeChunk(payloads.back()); in TEST_F()
1795 EXPECT_EQ(chunk.session_id(), 15u); in TEST_F()
1796 ASSERT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
1797 EXPECT_EQ(chunk.status().value(), Status::Cancelled()); in TEST_F()
1821 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
1822 EXPECT_EQ(chunk.session_id(), 15u); in TEST_F()
1823 EXPECT_EQ(chunk.resource_id(), 15u); in TEST_F()
1824 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
1826 // Cancel transfer without a server response. No final chunk should be sent. in TEST_F()
1853 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
1854 EXPECT_EQ(chunk.session_id(), 16u); in TEST_F()
1855 EXPECT_EQ(chunk.resource_id(), 16u); in TEST_F()
1856 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
1860 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
1863 .set_window_end_offset(16) // Request only a single chunk. in TEST_F()
1871 // Client should send a cancellation chunk to the server. in TEST_F()
1873 chunk = DecodeChunk(payloads.back()); in TEST_F()
1874 EXPECT_EQ(chunk.session_id(), 16u); in TEST_F()
1875 ASSERT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
1876 EXPECT_EQ(chunk.status().value(), Status::Cancelled()); in TEST_F()
1907 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
1915 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
1916 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
1917 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
1918 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
1919 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
1920 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
1921 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
1922 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
1926 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
1935 chunk = DecodeChunk(payloads.back()); in TEST_F()
1936 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
1937 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
1938 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
1939 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
1940 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
1941 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
1942 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
1943 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
1948 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
1957 chunk = DecodeChunk(payloads.back()); in TEST_F()
1958 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
1959 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
1960 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
1961 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
1962 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
1969 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
1990 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
1998 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
1999 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2000 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2001 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2002 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2003 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2004 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2005 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2008 // an immediate data chunk, indicating that it is running the legacy protocol in TEST_F()
2012 EncodeChunk(Chunk(ProtocolVersion::kLegacy, Chunk::Type::kData) in TEST_F()
2021 chunk = DecodeChunk(payloads.back()); in TEST_F()
2022 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
2023 EXPECT_EQ(chunk.session_id(), 3u); in TEST_F()
2024 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2025 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kLegacy); in TEST_F()
2026 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2027 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2051 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2059 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2060 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2061 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2062 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2063 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2064 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2065 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2066 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2069 // resend the initial chunk. in TEST_F()
2073 chunk = DecodeChunk(payloads.back()); in TEST_F()
2074 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2075 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2076 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2077 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2078 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2079 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2080 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2084 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2091 chunk = DecodeChunk(payloads.back()); in TEST_F()
2092 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2093 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2094 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2095 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2096 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2097 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2098 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2101 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2110 chunk = DecodeChunk(payloads.back()); in TEST_F()
2111 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2112 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2113 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2114 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2115 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2122 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
2143 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2151 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2152 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2153 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2154 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2155 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2156 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2157 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2158 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2163 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2172 chunk = DecodeChunk(payloads.back()); in TEST_F()
2173 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2174 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2175 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2176 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2177 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2178 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2179 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2182 // resend the confirmation chunk. in TEST_F()
2186 chunk = DecodeChunk(payloads.back()); in TEST_F()
2187 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2188 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2189 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2190 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2191 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2192 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2193 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2197 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2206 chunk = DecodeChunk(payloads.back()); in TEST_F()
2207 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2208 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2209 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2210 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2211 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2218 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
2239 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2247 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2248 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2249 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2250 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2251 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2252 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2253 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2254 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2257 context_.server().SendServerStream<Transfer::Read>(EncodeChunk(Chunk::Final( in TEST_F()
2282 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2290 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
2291 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2292 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2293 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2294 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2295 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2296 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2297 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2301 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2310 chunk = DecodeChunk(payloads.back()); in TEST_F()
2311 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2312 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2313 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2314 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2315 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2316 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2317 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2322 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2331 chunk = DecodeChunk(payloads.back()); in TEST_F()
2332 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2333 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2334 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2335 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2336 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2343 // its completion chunk. in TEST_F()
2350 chunk = DecodeChunk(payloads.back()); in TEST_F()
2351 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2352 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2353 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2354 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2355 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2358 // re-sent completion chunk. in TEST_F()
2363 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
2390 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2398 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
2399 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2400 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2401 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2402 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2403 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2404 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2405 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2410 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2419 chunk = DecodeChunk(payloads.back()); in TEST_F()
2420 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2421 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2422 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2423 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2424 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2425 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
2426 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
2431 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2440 chunk = DecodeChunk(payloads.back()); in TEST_F()
2441 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2442 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2443 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2444 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2445 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2452 // its completion chunk at first, then terminate after the maximum number of in TEST_F()
2489 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2490 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2491 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2492 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2493 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2497 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2505 chunk = DecodeChunk(payloads.back()); in TEST_F()
2506 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2507 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2508 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2509 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2512 // parameters. Client should respond with a data chunk and the final chunk. in TEST_F()
2515 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
2524 chunk = DecodeChunk(payloads[2]); in TEST_F()
2525 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2526 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2527 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2528 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2529 EXPECT_TRUE(chunk.has_payload()); in TEST_F()
2531 chunk.payload().data(), kData32.data(), chunk.payload().size()), in TEST_F()
2534 chunk = DecodeChunk(payloads[3]); in TEST_F()
2535 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2536 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2537 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2538 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
2539 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
2543 // Send the final status chunk to complete the transfer. in TEST_F()
2545 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
2551 chunk = DecodeChunk(payloads[4]); in TEST_F()
2552 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
2553 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2554 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2581 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2582 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2583 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2584 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2585 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2592 Chunk(ProtocolVersion::kLegacy, Chunk::Type::kParametersRetransmit) in TEST_F()
2601 chunk = DecodeChunk(payloads[1]); in TEST_F()
2602 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2603 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kLegacy); in TEST_F()
2604 EXPECT_EQ(chunk.session_id(), 3u); in TEST_F()
2605 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2606 EXPECT_TRUE(chunk.has_payload()); in TEST_F()
2608 chunk.payload().data(), kData32.data(), chunk.payload().size()), in TEST_F()
2611 chunk = DecodeChunk(payloads[2]); in TEST_F()
2612 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2613 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kLegacy); in TEST_F()
2614 EXPECT_EQ(chunk.session_id(), 3u); in TEST_F()
2615 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
2616 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
2620 // Send the final status chunk to complete the transfer. in TEST_F()
2622 EncodeChunk(Chunk::Final(ProtocolVersion::kLegacy, 3, OkStatus()))); in TEST_F()
2651 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2652 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2653 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2654 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2655 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2662 chunk = DecodeChunk(payloads.back()); in TEST_F()
2663 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2664 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2665 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2666 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2671 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2678 chunk = DecodeChunk(payloads.back()); in TEST_F()
2679 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2680 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2681 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2682 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2686 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
2695 chunk = DecodeChunk(payloads[3]); in TEST_F()
2696 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2697 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2698 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2699 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2700 EXPECT_TRUE(chunk.has_payload()); in TEST_F()
2702 chunk.payload().data(), kData32.data(), chunk.payload().size()), in TEST_F()
2705 chunk = DecodeChunk(payloads[4]); in TEST_F()
2706 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2707 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2708 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2709 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
2710 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
2715 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
2721 chunk = DecodeChunk(payloads[5]); in TEST_F()
2722 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
2723 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2724 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2751 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2752 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2753 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2754 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2755 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2759 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2767 chunk = DecodeChunk(payloads.back()); in TEST_F()
2768 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2769 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2770 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2771 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2778 chunk = DecodeChunk(payloads.back()); in TEST_F()
2779 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2780 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2781 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2782 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2784 // This time, respond with the first transfer parameters chunk. The transfer in TEST_F()
2788 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
2797 chunk = DecodeChunk(payloads[3]); in TEST_F()
2798 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2799 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2800 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2801 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2802 EXPECT_TRUE(chunk.has_payload()); in TEST_F()
2804 chunk.payload().data(), kData32.data(), chunk.payload().size()), in TEST_F()
2807 chunk = DecodeChunk(payloads[4]); in TEST_F()
2808 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
2809 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2810 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2811 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
2812 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
2817 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
2823 chunk = DecodeChunk(payloads[5]); in TEST_F()
2824 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
2825 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2826 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2853 Chunk chunk = DecodeChunk(payloads.back()); in TEST_F() local
2854 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2855 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2856 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2857 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2861 Chunk::Final(ProtocolVersion::kVersionTwo, 1, Status::NotFound()))); in TEST_F()
2891 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
2900 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
2901 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
2902 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2903 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
2904 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
2905 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2906 EXPECT_EQ(chunk.window_end_offset(), kExpectedMaxChunkSize); in TEST_F()
2907 EXPECT_EQ(chunk.max_chunk_size_bytes(), kExpectedMaxChunkSize); in TEST_F()
2911 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
2920 chunk = DecodeChunk(payloads.back()); in TEST_F()
2921 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
2922 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2923 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
2924 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2925 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2926 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
2927 EXPECT_EQ(chunk.window_end_offset(), kExpectedMaxChunkSize); in TEST_F()
2928 EXPECT_EQ(chunk.max_chunk_size_bytes(), kExpectedMaxChunkSize); in TEST_F()
2931 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2940 chunk = DecodeChunk(payloads.back()); in TEST_F()
2941 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersContinue); in TEST_F()
2942 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2943 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
2944 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2945 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2946 EXPECT_EQ(chunk.offset(), kExpectedMaxChunkSize); in TEST_F()
2947 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
2948 chunk.offset() + 2 * kExpectedMaxChunkSize); in TEST_F()
2950 // Send the next chunk. in TEST_F()
2952 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2954 .set_offset(chunk.offset()) in TEST_F()
2956 chunk.offset(), kExpectedMaxChunkSize)))); in TEST_F()
2962 chunk = DecodeChunk(payloads.back()); in TEST_F()
2963 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersContinue); in TEST_F()
2964 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2965 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
2966 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2967 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
2968 EXPECT_EQ(chunk.offset(), 2 * kExpectedMaxChunkSize); in TEST_F()
2969 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
2970 chunk.offset() + 4 * kExpectedMaxChunkSize); in TEST_F()
2974 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
2976 .set_offset(chunk.offset()) in TEST_F()
2978 chunk.offset(), kExpectedMaxChunkSize)) in TEST_F()
2984 chunk = DecodeChunk(payloads.back()); in TEST_F()
2985 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
2986 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
2987 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
2988 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
2989 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
2996 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
3019 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
3027 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
3028 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
3029 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3030 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
3031 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
3032 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3033 EXPECT_EQ(chunk.window_end_offset(), kExpectedMaxChunkSize); in TEST_F()
3034 EXPECT_EQ(chunk.max_chunk_size_bytes(), kExpectedMaxChunkSize); in TEST_F()
3038 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
3047 chunk = DecodeChunk(payloads.back()); in TEST_F()
3048 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
3049 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3050 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
3051 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3052 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3053 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3054 EXPECT_EQ(chunk.window_end_offset(), kExpectedMaxChunkSize); in TEST_F()
3055 EXPECT_EQ(chunk.max_chunk_size_bytes(), kExpectedMaxChunkSize); in TEST_F()
3058 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
3067 chunk = DecodeChunk(payloads.back()); in TEST_F()
3068 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersContinue); in TEST_F()
3069 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3070 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
3071 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3072 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3073 EXPECT_EQ(chunk.offset(), kExpectedMaxChunkSize); in TEST_F()
3074 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
3075 chunk.offset() + 2 * kExpectedMaxChunkSize); in TEST_F()
3077 // Send the next chunk. in TEST_F()
3079 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
3081 .set_offset(chunk.offset()) in TEST_F()
3083 chunk.offset(), kExpectedMaxChunkSize)))); in TEST_F()
3089 chunk = DecodeChunk(payloads.back()); in TEST_F()
3090 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersContinue); in TEST_F()
3091 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3092 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
3093 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3094 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3095 EXPECT_EQ(chunk.offset(), 2 * kExpectedMaxChunkSize); in TEST_F()
3096 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
3097 chunk.offset() + 4 * kExpectedMaxChunkSize); in TEST_F()
3099 // Time out instead of sending another chunk. in TEST_F()
3105 chunk = DecodeChunk(payloads.back()); in TEST_F()
3106 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersRetransmit); in TEST_F()
3107 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3108 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
3109 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3110 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3111 EXPECT_EQ(chunk.offset(), 2 * kExpectedMaxChunkSize); in TEST_F()
3112 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
3113 chunk.offset() + 2 * (kExpectedMaxChunkSize - 1)); in TEST_F()
3115 // Send another chunk. in TEST_F()
3117 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
3119 .set_offset(chunk.offset()) in TEST_F()
3121 chunk.offset(), kExpectedMaxChunkSize - 1)))); in TEST_F()
3127 chunk = DecodeChunk(payloads.back()); in TEST_F()
3128 EXPECT_EQ(chunk.type(), Chunk::Type::kParametersContinue); in TEST_F()
3129 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3130 EXPECT_FALSE(chunk.desired_session_id().has_value()); in TEST_F()
3131 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3132 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3133 EXPECT_EQ(chunk.offset(), 3 * kExpectedMaxChunkSize - 1); in TEST_F()
3134 EXPECT_EQ(chunk.window_end_offset(), in TEST_F()
3135 chunk.offset() + 3 * (kExpectedMaxChunkSize - 1)); in TEST_F()
3139 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kData) in TEST_F()
3141 .set_offset(chunk.offset()) in TEST_F()
3143 chunk.offset(), kExpectedMaxChunkSize - 1)) in TEST_F()
3149 chunk = DecodeChunk(payloads.back()); in TEST_F()
3150 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3151 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
3152 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3153 ASSERT_TRUE(chunk.status().has_value()); in TEST_F()
3154 EXPECT_EQ(chunk.status().value(), OkStatus()); in TEST_F()
3161 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kCompletionAck) in TEST_F()
3181 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
3189 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
3190 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
3191 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3192 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
3193 EXPECT_EQ(chunk.resource_id(), 91u); in TEST_F()
3194 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3198 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
3206 chunk = DecodeChunk(payloads.back()); in TEST_F()
3207 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
3208 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3209 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3210 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3216 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
3225 // Each 8-byte chunk of the 32-byte transfer should have an appropriate in TEST_F()
3227 chunk = DecodeChunk(payloads[2]); in TEST_F()
3228 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3229 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3230 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3231 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3232 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3233 EXPECT_EQ(chunk.remaining_bytes().value(), 24u); in TEST_F()
3235 chunk = DecodeChunk(payloads[3]); in TEST_F()
3236 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3237 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3238 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3239 EXPECT_EQ(chunk.offset(), 8u); in TEST_F()
3240 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3241 EXPECT_EQ(chunk.remaining_bytes().value(), 16u); in TEST_F()
3243 chunk = DecodeChunk(payloads[4]); in TEST_F()
3244 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3245 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3246 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3247 EXPECT_EQ(chunk.offset(), 16u); in TEST_F()
3248 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3249 EXPECT_EQ(chunk.remaining_bytes().value(), 8u); in TEST_F()
3251 chunk = DecodeChunk(payloads[5]); in TEST_F()
3252 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3253 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3254 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3255 EXPECT_EQ(chunk.offset(), 24u); in TEST_F()
3256 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3257 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
3261 // Send the final status chunk to complete the transfer. in TEST_F()
3263 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
3269 chunk = DecodeChunk(payloads[6]); in TEST_F()
3270 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
3271 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3272 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3299 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
3307 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
3308 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
3309 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3310 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
3311 EXPECT_EQ(chunk.resource_id(), 91u); in TEST_F()
3312 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3316 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
3324 chunk = DecodeChunk(payloads.back()); in TEST_F()
3325 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
3326 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3327 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3328 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3334 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
3337 .set_window_end_offset(64) // Only request one chunk. in TEST_F()
3345 chunk = DecodeChunk(payloads[2]); in TEST_F()
3346 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3347 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3348 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3349 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3350 EXPECT_EQ(chunk.payload().size_bytes(), 48u); in TEST_F()
3351 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3352 EXPECT_EQ(chunk.remaining_bytes().value(), in TEST_F()
3353 kLargeRemainingBytes - chunk.payload().size_bytes()); in TEST_F()
3357 // Send the final status chunk to complete the transfer. in TEST_F()
3359 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
3365 chunk = DecodeChunk(payloads[4]); in TEST_F()
3366 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
3367 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3368 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3395 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
3403 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
3404 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
3405 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3406 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
3407 EXPECT_EQ(chunk.resource_id(), 92u); in TEST_F()
3408 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3412 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
3420 chunk = DecodeChunk(payloads.back()); in TEST_F()
3421 EXPECT_EQ(chunk.type(), Chunk::Type::kStartAckConfirmation); in TEST_F()
3422 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3423 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3424 EXPECT_FALSE(chunk.resource_id().has_value()); in TEST_F()
3430 Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kParametersRetransmit) in TEST_F()
3439 // Each 8-byte chunk of the transfer should have an appropriate in TEST_F()
3441 chunk = DecodeChunk(payloads[2]); in TEST_F()
3442 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3443 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3444 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3445 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3446 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3447 EXPECT_EQ(chunk.remaining_bytes().value(), 8u); in TEST_F()
3449 chunk = DecodeChunk(payloads[3]); in TEST_F()
3450 EXPECT_EQ(chunk.type(), Chunk::Type::kData); in TEST_F()
3451 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3452 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3453 EXPECT_EQ(chunk.offset(), 8u); in TEST_F()
3454 ASSERT_TRUE(chunk.remaining_bytes().has_value()); in TEST_F()
3455 EXPECT_EQ(chunk.remaining_bytes().value(), 0u); in TEST_F()
3459 // Send the final status chunk to complete the transfer. in TEST_F()
3461 EncodeChunk(Chunk::Final(ProtocolVersion::kVersionTwo, 1, OkStatus()))); in TEST_F()
3467 chunk = DecodeChunk(payloads[4]); in TEST_F()
3468 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletionAck); in TEST_F()
3469 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3470 EXPECT_EQ(chunk.session_id(), 1u); in TEST_F()
3493 // Initial chunk of the transfer is sent. This chunk should contain all the in TEST_F()
3501 Chunk chunk = DecodeChunk(payloads[0]); in TEST_F() local
3502 EXPECT_EQ(chunk.type(), Chunk::Type::kStart); in TEST_F()
3503 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3504 EXPECT_EQ(chunk.desired_session_id(), 1u); in TEST_F()
3505 EXPECT_EQ(chunk.resource_id(), 3u); in TEST_F()
3506 EXPECT_EQ(chunk.offset(), 0u); in TEST_F()
3507 EXPECT_EQ(chunk.window_end_offset(), 37u); in TEST_F()
3508 EXPECT_EQ(chunk.max_chunk_size_bytes(), 37u); in TEST_F()
3511 // no cancellation chunk should be sent. in TEST_F()
3520 EncodeChunk(Chunk(ProtocolVersion::kVersionTwo, Chunk::Type::kStartAck) in TEST_F()
3525 chunk = DecodeChunk(payloads.back()); in TEST_F()
3526 EXPECT_EQ(chunk.type(), Chunk::Type::kCompletion); in TEST_F()
3527 EXPECT_EQ(chunk.protocol_version(), ProtocolVersion::kVersionTwo); in TEST_F()
3528 EXPECT_EQ(chunk.status(), Status::Cancelled()); in TEST_F()