use http2::{ Flags,
FrameType,
Parser,
ParserState };
use http2::test::*;
#[test]
fn go_away_with_debug_data() {
let mut v = Vec::new();
pack_u32!(
v,
(21 << 8) | 0x7
);
pack_u8!(v, 0);
pack_u32!(v, 0x7FFFFFFF);
pack_u32!(
v,
0x7FFFFFFF
);
pack_u32!(
v,
0xBBEEBBEE
);
pack_bytes!(
v,
b"Hello, world!"
);
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_empty());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::GoAway
);
assert_eq!(
h.go_away_stream_id,
0x7FFFFFFF
);
assert_eq!(
h.go_away_error_code,
0xBBEEBBEE
);
assert_eq!(
h.go_away_debug_data,
b"Hello, world!"
);
assert!(h.go_away_debug_data_finished);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}
#[test]
fn go_away_without_debug_data() {
let mut v = Vec::new();
pack_u32!(
v,
(8 << 8) | 0x7
);
pack_u8!(v, 0);
pack_u32!(v, 0x7FFFFFFF);
pack_u32!(
v,
0x7FFFFFFF
);
pack_u32!(
v,
0xBBEEBBEE
);
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_empty());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::GoAway
);
assert_eq!(
h.go_away_stream_id,
0x7FFFFFFF
);
assert_eq!(
h.go_away_error_code,
0xBBEEBBEE
);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}