From 462f04d3779d2399cebd4af8ef9087ec6de88f45 Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Tue, 14 Nov 2023 19:04:34 +0200 Subject: [PATCH] Smaller test addition and change (#5858) - trivial serialization roundtrip test for `pageserver::repository::Value` - add missing `start_paused = true` to 15s test making it <0s test - completely unrelated future clippy lint avoidance (helps beta channel users) --- compute_tools/src/extension_server.rs | 78 +++++++++++++-------------- pageserver/src/repository.rs | 65 ++++++++++++++++++++++ pageserver/src/tenant/mgr.rs | 2 +- 3 files changed, 105 insertions(+), 40 deletions(-) diff --git a/compute_tools/src/extension_server.rs b/compute_tools/src/extension_server.rs index 2278509c1f..9732d8adea 100644 --- a/compute_tools/src/extension_server.rs +++ b/compute_tools/src/extension_server.rs @@ -133,45 +133,6 @@ fn parse_pg_version(human_version: &str) -> &str { panic!("Unsuported postgres version {human_version}"); } -#[cfg(test)] -mod tests { - use super::parse_pg_version; - - #[test] - fn test_parse_pg_version() { - assert_eq!(parse_pg_version("PostgreSQL 15.4"), "v15"); - assert_eq!(parse_pg_version("PostgreSQL 15.14"), "v15"); - assert_eq!( - parse_pg_version("PostgreSQL 15.4 (Ubuntu 15.4-0ubuntu0.23.04.1)"), - "v15" - ); - - assert_eq!(parse_pg_version("PostgreSQL 14.15"), "v14"); - assert_eq!(parse_pg_version("PostgreSQL 14.0"), "v14"); - assert_eq!( - parse_pg_version("PostgreSQL 14.9 (Debian 14.9-1.pgdg120+1"), - "v14" - ); - - assert_eq!(parse_pg_version("PostgreSQL 16devel"), "v16"); - assert_eq!(parse_pg_version("PostgreSQL 16beta1"), "v16"); - assert_eq!(parse_pg_version("PostgreSQL 16rc2"), "v16"); - assert_eq!(parse_pg_version("PostgreSQL 16extra"), "v16"); - } - - #[test] - #[should_panic] - fn test_parse_pg_unsupported_version() { - parse_pg_version("PostgreSQL 13.14"); - } - - #[test] - #[should_panic] - fn test_parse_pg_incorrect_version_format() { - parse_pg_version("PostgreSQL 14"); - } -} - // download the archive for a given extension, // unzip it, and place files in the appropriate locations (share/lib) pub async fn download_extension( @@ -285,3 +246,42 @@ pub fn init_remote_storage(remote_ext_config: &str) -> anyhow::Result {{ + let orig: Value = $orig; + + let actual = Value::ser(&orig).unwrap(); + let expected: &[u8] = &$expected; + + assert_eq!(utils::Hex(&actual), utils::Hex(expected)); + + let deser = Value::des(&actual).unwrap(); + + assert_eq!(orig, deser); + }}; + } + + #[test] + fn image_roundtrip() { + let image = Bytes::from_static(b"foobar"); + let image = Value::Image(image); + + #[rustfmt::skip] + let expected = [ + // top level discriminator of 4 bytes + 0x00, 0x00, 0x00, 0x00, + // 8 byte length + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + // foobar + 0x66, 0x6f, 0x6f, 0x62, 0x61, 0x72 + ]; + + roundtrip!(image, expected); + } + + #[test] + fn walrecord_postgres_roundtrip() { + let rec = NeonWalRecord::Postgres { + will_init: true, + rec: Bytes::from_static(b"foobar"), + }; + let rec = Value::WalRecord(rec); + + #[rustfmt::skip] + let expected = [ + // flattened discriminator of total 8 bytes + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + // will_init + 0x01, + // 8 byte length + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + // foobar + 0x66, 0x6f, 0x6f, 0x62, 0x61, 0x72 + ]; + + roundtrip!(rec, expected); + } +} + /// /// Result of performing GC /// diff --git a/pageserver/src/tenant/mgr.rs b/pageserver/src/tenant/mgr.rs index c71eac0672..4363dab375 100644 --- a/pageserver/src/tenant/mgr.rs +++ b/pageserver/src/tenant/mgr.rs @@ -1875,7 +1875,7 @@ mod tests { use super::{super::harness::TenantHarness, TenantsMap}; - #[tokio::test] + #[tokio::test(start_paused = true)] async fn shutdown_awaits_in_progress_tenant() { // Test that if an InProgress tenant is in the map during shutdown, the shutdown will gracefully // wait for it to complete before proceeding.