def test_goaway_frame_NO_ERROR(self): f = GoAwayFrame(0) # Set error code to NO_ERROR f.error_code = 0; c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # Test makes sure no exception is raised; error code 0 means we are # dealing with a standard and graceful shutdown. c.receive_frame(f)
def test_goaway_frame_NO_ERROR(self): f = GoAwayFrame(0) # Set error code to NO_ERROR f.error_code = 0 c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # Test makes sure no exception is raised; error code 0 means we are # dealing with a standard and graceful shutdown. c.receive_frame(f)
def socket_handler(listener): sock = listener.accept()[0] # We should get two packets: one connection header string, one # SettingsFrame. Rather than respond to the packets, send a GOAWAY # frame with error code 0 indicating clean shutdown. first = sock.recv(65535) second = sock.recv(65535) # Now, send the shut down. f = GoAwayFrame(0) f.error_code = 1 sock.send(f.serialize()) # Wait for the message from the main thread. sock.close() recv_event.wait()
def test_goaway_frame_HTTP_1_1_REQUIRED(self): f = GoAwayFrame(0) # Set error code to HTTP_1_1_REQUIRED f.error_code = 13; c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # Validate that the spec error name and description are used to throw # the connection exception. with pytest.raises(ConnectionError) as conn_err: c.receive_frame(f) err_msg = str(conn_err) name, number, description = errors.get_data(13) assert name in err_msg assert number in err_msg assert description in err_msg
def test_goaway_frame_HTTP_1_1_REQUIRED(self): f = GoAwayFrame(0) # Set error code to HTTP_1_1_REQUIRED f.error_code = 13 c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # Validate that the spec error name and description are used to throw # the connection exception. with pytest.raises(ConnectionError) as conn_err: c.receive_frame(f) err_msg = str(conn_err) name, number, description = errors.get_data(13) assert name in err_msg assert number in err_msg assert description in err_msg
def test_goaway_frame_invalid_error_code(self): f = GoAwayFrame(0) # Set error code to non existing error f.error_code = 100; f.additional_data = 'data about non existing error code'; c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # If the error code does not exist in the spec then the additional # data is used instead. with pytest.raises(ConnectionError) as conn_err: c.receive_frame(f) err_msg = str(conn_err) with pytest.raises(ValueError): name, number, description = errors.get_data(100) assert 'data about non existing error code' in err_msg assert str(f.error_code) in err_msg
def test_goaway_frame_invalid_error_code(self): f = GoAwayFrame(0) # Set error code to non existing error f.error_code = 100 f.additional_data = 'data about non existing error code' c = HTTP20Connection('www.google.com') c._sock = DummySocket() # 'Receive' the GOAWAY frame. # If the error code does not exist in the spec then the additional # data is used instead. with pytest.raises(ConnectionError) as conn_err: c.receive_frame(f) err_msg = str(conn_err) with pytest.raises(ValueError): name, number, description = errors.get_data(100) assert 'data about non existing error code' in err_msg assert str(f.error_code) in err_msg