MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / postgres_control_packets_are_handled_safely

Function postgres_control_packets_are_handled_safely

tests/client_compat.rs:993–1033  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

991
992#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
993async fn postgres_control_packets_are_handled_safely() -> Result<()> {
994 let server = PgliteServer::temporary_tcp()?;
995 let addr = server.tcp_addr().context("server should use TCP")?;
996
997 let ssl_response = tokio::task::spawn_blocking(move || -> Result<u8> {
998 let mut stream = TcpStream::connect(addr).context("connect raw SSLRequest socket")?;
999 stream
1000 .write_all(&startup_control_packet(SSL_REQUEST_CODE, &[]))
1001 .context("write SSLRequest")?;
1002 let mut response = [0u8; 1];
1003 stream
1004 .read_exact(&mut response)
1005 .context("read SSLRequest response")?;
1006 Ok(response[0])
1007 })
1008 .await??;
1009 assert_eq!(ssl_response, b'N');
1010
1011 let cancel_closed = tokio::task::spawn_blocking(move || -> Result<bool> {
1012 let mut stream = TcpStream::connect(addr).context("connect raw CancelRequest socket")?;
1013 stream
1014 .write_all(&startup_control_packet(
1015 CANCEL_REQUEST_CODE,
1016 &[0, 0, 0, 1, 0, 0, 0, 2],
1017 ))
1018 .context("write CancelRequest")?;
1019 let mut response = [0u8; 1];
1020 let read = stream
1021 .read(&mut response)
1022 .context("read CancelRequest close")?;
1023 Ok(read == 0)
1024 })
1025 .await??;
1026 assert!(
1027 cancel_closed,
1028 "CancelRequest should close without backend panic"
1029 );
1030
1031 server.shutdown()?;
1032 Ok(())
1033}
1034
1035#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
1036async fn postgres_startup_identity_is_delegated_to_postgres() -> Result<()> {

Callers

nothing calls this directly

Calls 4

startup_control_packetFunction · 0.85
tcp_addrMethod · 0.80
readMethod · 0.80
shutdownMethod · 0.45

Tested by

no test coverage detected