Skip to content

Commit 0016d09

Browse files
committed
Simplify window_size_decremented_past_zero
This helps finding the root cause of why the assertion in FlowControl::dec_send_window failed in the first place. See #692 for more details.
1 parent 3bce93e commit 0016d09

File tree

1 file changed

+11
-106
lines changed

1 file changed

+11
-106
lines changed

tests/h2-tests/tests/flow_control.rs

Lines changed: 11 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,122 +1864,27 @@ async fn window_size_decremented_past_zero() {
18641864
let (io, mut client) = mock::new();
18651865

18661866
let client = async move {
1867-
// let _ = client.assert_server_handshake().await;
1867+
let settings = client.assert_server_handshake().await;
1868+
assert_default_settings!(settings);
18681869

1869-
// preface
1870-
client.write_preface().await;
1870+
// Invalid HEADERS frame (missing mandatory fields).
1871+
client.send_bytes(&[0, 0, 0, 1, 5, 0, 0, 0, 1]).await;
18711872

1872-
// the following http 2 bytes are fuzzer-generated
1873-
client.send_bytes(&[0, 0, 0, 4, 0, 0, 0, 0, 0]).await;
1874-
client
1875-
.send_bytes(&[
1876-
0, 0, 23, 1, 1, 0, 249, 255, 191, 131, 1, 1, 1, 70, 1, 1, 1, 1, 65, 1, 1, 65, 1, 1,
1877-
65, 1, 1, 1, 1, 1, 1, 190,
1878-
])
1879-
.await;
1880-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1881-
client
1882-
.send_bytes(&[
1883-
0, 0, 9, 247, 0, 121, 255, 255, 184, 1, 65, 1, 1, 1, 1, 1, 1, 190,
1884-
])
1885-
.await;
1886-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1887-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1888-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1889-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1890-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1891-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1892-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1893-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1894-
client
1895-
.send_bytes(&[0, 0, 3, 0, 1, 0, 249, 255, 191, 1, 1, 190])
1896-
.await;
1897-
client
1898-
.send_bytes(&[0, 0, 2, 50, 107, 0, 0, 0, 1, 0, 0])
1899-
.await;
1900-
client
1901-
.send_bytes(&[0, 0, 5, 2, 0, 0, 0, 0, 1, 128, 0, 55, 0, 0])
1902-
.await;
1903-
client
1904-
.send_bytes(&[
1905-
0, 0, 12, 4, 0, 0, 0, 0, 0, 126, 4, 39, 184, 171, 125, 33, 0, 3, 107, 50, 98,
1906-
])
1907-
.await;
1908-
client
1909-
.send_bytes(&[0, 0, 6, 4, 0, 0, 0, 0, 0, 3, 4, 76, 255, 71, 131])
1910-
.await;
19111873
client
1912-
.send_bytes(&[
1913-
0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 4, 39, 184, 171, 74, 33, 0, 3, 107, 50, 98,
1914-
])
1915-
.await;
1916-
client
1917-
.send_bytes(&[
1918-
0, 0, 30, 4, 0, 0, 0, 0, 0, 0, 4, 56, 184, 171, 125, 65, 0, 35, 65, 65, 65, 61,
1919-
232, 87, 115, 89, 116, 0, 4, 0, 58, 33, 125, 33, 79, 3, 107, 49, 98,
1920-
])
1921-
.await;
1922-
client
1923-
.send_bytes(&[
1924-
0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 4, 39, 184, 171, 125, 33, 0, 3, 107, 50, 98,
1925-
])
1926-
.await;
1927-
client.send_bytes(&[0, 0, 0, 4, 0, 0, 0, 0, 0]).await;
1928-
client
1929-
.send_bytes(&[
1930-
0, 0, 12, 4, 0, 0, 0, 0, 0, 126, 4, 39, 184, 171, 125, 33, 0, 3, 107, 50, 98,
1931-
])
1932-
.await;
1933-
client
1934-
.send_bytes(&[
1935-
0, 0, 177, 1, 44, 0, 0, 0, 1, 67, 67, 67, 67, 67, 67, 131, 134, 5, 61, 67, 67, 67,
1936-
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1937-
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1938-
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 115, 102, 1, 3, 48, 43,
1939-
101, 64, 31, 37, 99, 99, 97, 97, 97, 97, 49, 97, 54, 97, 97, 97, 97, 49, 97, 54,
1940-
97, 99, 54, 53, 53, 51, 53, 99, 99, 97, 97, 99, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943-
0, 0, 0,
1944-
])
1945-
.await;
1946-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1947-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1948-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1949-
client
1950-
.send_bytes(&[
1951-
0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 4, 0, 58, 171, 125, 33, 79, 3, 107, 49, 98,
1952-
])
1953-
.await;
1954-
client
1955-
.send_bytes(&[0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 4, 87, 115, 89, 116])
1874+
.send_frame(frames::settings().initial_window_size(1329018135))
19561875
.await;
1876+
19571877
client
1958-
.send_bytes(&[
1959-
0, 0, 12, 4, 0, 0, 0, 0, 0, 126, 4, 39, 184, 171, 125, 33, 0, 3, 107, 50, 98,
1960-
])
1878+
.send_frame(frames::settings().initial_window_size(3809661))
19611879
.await;
1880+
19621881
client
1963-
.send_bytes(&[
1964-
0, 0, 129, 1, 44, 0, 0, 0, 1, 67, 67, 67, 67, 67, 67, 131, 134, 5, 18, 67, 67, 61,
1965-
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 48, 54, 53, 55, 114, 1, 4, 97, 49, 51, 116,
1966-
64, 2, 117, 115, 4, 103, 101, 110, 116, 64, 8, 57, 111, 110, 116, 101, 110, 115,
1967-
102, 7, 43, 43, 49, 48, 48, 43, 101, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970-
])
1882+
.send_frame(frames::settings().initial_window_size(1467177332))
19711883
.await;
1972-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1973-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1974-
client.send_bytes(&[0, 0, 0, 0, 0, 0, 0, 0, 1]).await;
1884+
19751885
client
1976-
.send_bytes(&[
1977-
0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 4, 0, 58, 171, 125, 33, 79, 3, 107, 49, 98,
1978-
])
1886+
.send_frame(frames::settings().initial_window_size(3844989))
19791887
.await;
1980-
1981-
// TODO: is CANCEL the right error code to expect here?
1982-
// client.recv_frame(frames::reset(1).protocol_error()).await;
19831888
};
19841889

19851890
let srv = async move {

0 commit comments

Comments
 (0)