diff --git a/pageserver/src/deletion_queue.rs b/pageserver/src/deletion_queue.rs index 1d508f5fe9..fc05650a33 100644 --- a/pageserver/src/deletion_queue.rs +++ b/pageserver/src/deletion_queue.rs @@ -703,7 +703,7 @@ mod test { use crate::{ controller_upcall_client::RetryForeverError, - tenant::{harness::TenantHarness, storage_layer::DeltaLayerName}, + tenant::{harness::TenantShardHarness, storage_layer::DeltaLayerName}, }; use super::*; @@ -722,7 +722,7 @@ mod test { }); struct TestSetup { - harness: TenantHarness, + harness: TenantShardHarness, remote_fs_dir: Utf8PathBuf, storage: GenericRemoteStorage, mock_control_plane: MockControlPlane, @@ -825,7 +825,7 @@ mod test { async fn setup(test_name: &str) -> anyhow::Result { let test_name = Box::leak(Box::new(format!("deletion_queue__{test_name}"))); - let harness = TenantHarness::create(test_name).await?; + let harness = TenantShardHarness::create(test_name).await?; // We do not load() the harness: we only need its config and remote_storage diff --git a/pageserver/src/pgdatadir_mapping.rs b/pageserver/src/pgdatadir_mapping.rs index b65fe6cf7c..10b3a92d17 100644 --- a/pageserver/src/pgdatadir_mapping.rs +++ b/pageserver/src/pgdatadir_mapping.rs @@ -2404,13 +2404,13 @@ mod tests { use super::*; - use crate::{tenant::harness::TenantHarness, DEFAULT_PG_VERSION}; + use crate::{tenant::harness::TenantShardHarness, DEFAULT_PG_VERSION}; /// Test a round trip of aux file updates, from DatadirModification to reading back from the Timeline #[tokio::test] async fn aux_files_round_trip() -> anyhow::Result<()> { let name = "aux_files_round_trip"; - let harness = TenantHarness::create(name).await?; + let harness = TenantShardHarness::create(name).await?; pub const TIMELINE_ID: TimelineId = TimelineId::from_array(hex!("11223344556677881122334455667788")); diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index 771f2a7b89..de6a917d87 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -5467,7 +5467,7 @@ pub(crate) mod harness { } } - pub struct TenantHarness { + pub struct TenantShardHarness { pub conf: &'static PageServerConf, pub tenant_conf: TenantConf, pub tenant_shard_id: TenantShardId, @@ -5493,7 +5493,7 @@ pub(crate) mod harness { }); } - impl TenantHarness { + impl TenantShardHarness { pub async fn create_custom( test_name: &'static str, tenant_conf: TenantConf, @@ -5716,7 +5716,7 @@ mod tests { #[tokio::test] async fn test_basic() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_basic").await?.load().await; + let (tenant, ctx) = TenantShardHarness::create("test_basic").await?.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x08), DEFAULT_PG_VERSION, &ctx) .await?; @@ -5763,7 +5763,7 @@ mod tests { #[tokio::test] async fn no_duplicate_timelines() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("no_duplicate_timelines") + let (tenant, ctx) = TenantShardHarness::create("no_duplicate_timelines") .await? .load() .await; @@ -5799,7 +5799,10 @@ mod tests { async fn test_branch() -> anyhow::Result<()> { use std::str::from_utf8; - let (tenant, ctx) = TenantHarness::create("test_branch").await?.load().await; + let (tenant, ctx) = TenantShardHarness::create("test_branch") + .await? + .load() + .await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) .await?; @@ -5921,7 +5924,7 @@ mod tests { #[tokio::test(start_paused = true)] async fn test_prohibit_branch_creation_on_garbage_collected_data() -> anyhow::Result<()> { let (tenant, ctx) = - TenantHarness::create("test_prohibit_branch_creation_on_garbage_collected_data") + TenantShardHarness::create("test_prohibit_branch_creation_on_garbage_collected_data") .await? .load() .await; @@ -5973,7 +5976,7 @@ mod tests { #[tokio::test] async fn test_prohibit_branch_creation_on_pre_initdb_lsn() -> anyhow::Result<()> { let (tenant, ctx) = - TenantHarness::create("test_prohibit_branch_creation_on_pre_initdb_lsn") + TenantShardHarness::create("test_prohibit_branch_creation_on_pre_initdb_lsn") .await? .load() .await; @@ -6029,7 +6032,7 @@ mod tests { #[tokio::test] async fn test_get_branchpoints_from_an_inactive_timeline() -> anyhow::Result<()> { let (tenant, ctx) = - TenantHarness::create("test_get_branchpoints_from_an_inactive_timeline") + TenantShardHarness::create("test_get_branchpoints_from_an_inactive_timeline") .await? .load() .await; @@ -6093,7 +6096,7 @@ mod tests { #[tokio::test] async fn test_retain_data_in_parent_which_is_needed_for_child() -> anyhow::Result<()> { let (tenant, ctx) = - TenantHarness::create("test_retain_data_in_parent_which_is_needed_for_child") + TenantShardHarness::create("test_retain_data_in_parent_which_is_needed_for_child") .await? .load() .await; @@ -6124,10 +6127,11 @@ mod tests { } #[tokio::test] async fn test_parent_keeps_data_forever_after_branching() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_parent_keeps_data_forever_after_branching") - .await? - .load() - .await; + let (tenant, ctx) = + TenantShardHarness::create("test_parent_keeps_data_forever_after_branching") + .await? + .load() + .await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) .await?; @@ -6165,7 +6169,7 @@ mod tests { #[tokio::test] async fn timeline_load() -> anyhow::Result<()> { const TEST_NAME: &str = "timeline_load"; - let harness = TenantHarness::create(TEST_NAME).await?; + let harness = TenantShardHarness::create(TEST_NAME).await?; { let (tenant, ctx) = harness.load().await; let tline = tenant @@ -6192,7 +6196,7 @@ mod tests { #[tokio::test] async fn timeline_load_with_ancestor() -> anyhow::Result<()> { const TEST_NAME: &str = "timeline_load_with_ancestor"; - let harness = TenantHarness::create(TEST_NAME).await?; + let harness = TenantShardHarness::create(TEST_NAME).await?; // create two timelines { let (tenant, ctx) = harness.load().await; @@ -6240,7 +6244,7 @@ mod tests { #[tokio::test] async fn delta_layer_dumping() -> anyhow::Result<()> { use storage_layer::AsLayerDesc; - let (tenant, ctx) = TenantHarness::create("test_layer_dumping") + let (tenant, ctx) = TenantShardHarness::create("test_layer_dumping") .await? .load() .await; @@ -6270,7 +6274,10 @@ mod tests { #[tokio::test] async fn test_images() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_images").await?.load().await; + let (tenant, ctx) = TenantShardHarness::create("test_images") + .await? + .load() + .await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x08), DEFAULT_PG_VERSION, &ctx) .await?; @@ -6444,7 +6451,7 @@ mod tests { // #[tokio::test] async fn test_bulk_insert() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_bulk_insert").await?; + let harness = TenantShardHarness::create("test_bulk_insert").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x08), DEFAULT_PG_VERSION, &ctx) @@ -6475,7 +6482,7 @@ mod tests { // so the search can stop at the first delta layer and doesn't traverse any deeper. #[tokio::test] async fn test_get_vectored() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_get_vectored").await?; + let harness = TenantShardHarness::create("test_get_vectored").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x08), DEFAULT_PG_VERSION, &ctx) @@ -6585,7 +6592,7 @@ mod tests { #[tokio::test] async fn test_get_vectored_aux_files() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_get_vectored_aux_files").await?; + let harness = TenantShardHarness::create("test_get_vectored_aux_files").await?; let (tenant, ctx) = harness.load().await; let tline = tenant @@ -6661,7 +6668,7 @@ mod tests { ..TenantConf::default() }; - let harness = TenantHarness::create_custom( + let harness = TenantShardHarness::create_custom( "test_get_vectored_key_gap", tenant_conf, TenantId::generate(), @@ -6811,7 +6818,7 @@ mod tests { // ``` #[tokio::test] async fn test_get_vectored_ancestor_descent() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_get_vectored_on_lsn_axis").await?; + let harness = TenantShardHarness::create("test_get_vectored_on_lsn_axis").await?; let (tenant, ctx) = harness.load().await; let start_key = Key::from_hex("010000000033333333444444445500000000").unwrap(); @@ -6960,7 +6967,7 @@ mod tests { name: &'static str, compaction_algorithm: CompactionAlgorithm, ) -> anyhow::Result<()> { - let mut harness = TenantHarness::create(name).await?; + let mut harness = TenantShardHarness::create(name).await?; harness.tenant_conf.compaction_algorithm = CompactionAlgorithmSettings { kind: compaction_algorithm, }; @@ -7044,7 +7051,7 @@ mod tests { #[tokio::test] async fn test_traverse_branches() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_traverse_branches") + let (tenant, ctx) = TenantShardHarness::create("test_traverse_branches") .await? .load() .await; @@ -7135,7 +7142,7 @@ mod tests { #[tokio::test] async fn test_traverse_ancestors() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_traverse_ancestors") + let (tenant, ctx) = TenantShardHarness::create("test_traverse_ancestors") .await? .load() .await; @@ -7202,7 +7209,7 @@ mod tests { #[tokio::test] async fn test_write_at_initdb_lsn_takes_optimization_code_path() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_empty_test_timeline_is_usable") + let (tenant, ctx) = TenantShardHarness::create("test_empty_test_timeline_is_usable") .await? .load() .await; @@ -7272,7 +7279,7 @@ mod tests { #[tokio::test] async fn test_create_guard_crash() -> anyhow::Result<()> { let name = "test_create_guard_crash"; - let harness = TenantHarness::create(name).await?; + let harness = TenantShardHarness::create(name).await?; { let (tenant, ctx) = harness.load().await; let tline = tenant @@ -7325,7 +7332,7 @@ mod tests { name: &'static str, compaction_algorithm: CompactionAlgorithm, ) -> anyhow::Result<()> { - let mut harness = TenantHarness::create(name).await?; + let mut harness = TenantShardHarness::create(name).await?; harness.tenant_conf.compaction_algorithm = CompactionAlgorithmSettings { kind: compaction_algorithm, }; @@ -7349,7 +7356,7 @@ mod tests { #[tokio::test] async fn test_metadata_scan() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_metadata_scan").await?; + let harness = TenantShardHarness::create("test_metadata_scan").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) @@ -7468,7 +7475,7 @@ mod tests { #[tokio::test] async fn test_metadata_compaction_trigger() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_metadata_compaction_trigger").await?; + let harness = TenantShardHarness::create("test_metadata_compaction_trigger").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) @@ -7516,7 +7523,9 @@ mod tests { #[tokio::test] async fn test_aux_file_e2e() { - let harness = TenantHarness::create("test_aux_file_e2e").await.unwrap(); + let harness = TenantShardHarness::create("test_aux_file_e2e") + .await + .unwrap(); let (tenant, ctx) = harness.load().await; @@ -7572,7 +7581,7 @@ mod tests { #[tokio::test] async fn test_metadata_image_creation() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_metadata_image_creation").await?; + let harness = TenantShardHarness::create("test_metadata_image_creation").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) @@ -7671,7 +7680,7 @@ mod tests { #[tokio::test] async fn test_vectored_missing_data_key_reads() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_vectored_missing_data_key_reads").await?; + let harness = TenantShardHarness::create("test_vectored_missing_data_key_reads").await?; let (tenant, ctx) = harness.load().await; let base_key = Key::from_hex("000000000033333333444444445500000000").unwrap(); @@ -7743,7 +7752,8 @@ mod tests { #[tokio::test] async fn test_vectored_missing_metadata_key_reads() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_vectored_missing_metadata_key_reads").await?; + let harness = + TenantShardHarness::create("test_vectored_missing_metadata_key_reads").await?; let (tenant, ctx) = harness.load().await; let base_key = Key::from_hex("620000000033333333444444445500000000").unwrap(); @@ -7964,7 +7974,7 @@ mod tests { #[tokio::test] async fn test_metadata_tombstone_reads() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_metadata_tombstone_reads").await?; + let harness = TenantShardHarness::create("test_metadata_tombstone_reads").await?; let (tenant, ctx) = harness.load().await; let key0 = Key::from_hex("620000000033333333444444445500000000").unwrap(); let key1 = Key::from_hex("620000000033333333444444445500000001").unwrap(); @@ -8044,7 +8054,7 @@ mod tests { #[tokio::test] async fn test_metadata_tombstone_image_creation() { - let harness = TenantHarness::create("test_metadata_tombstone_image_creation") + let harness = TenantShardHarness::create("test_metadata_tombstone_image_creation") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -8118,7 +8128,7 @@ mod tests { #[tokio::test] async fn test_metadata_tombstone_empty_image_creation() { - let harness = TenantHarness::create("test_metadata_tombstone_empty_image_creation") + let harness = TenantShardHarness::create("test_metadata_tombstone_empty_image_creation") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -8183,7 +8193,8 @@ mod tests { #[tokio::test] async fn test_simple_bottom_most_compaction_images() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_simple_bottom_most_compaction_images").await?; + let harness = + TenantShardHarness::create("test_simple_bottom_most_compaction_images").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -8403,7 +8414,7 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_neon_test_record() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_neon_test_record").await?; + let harness = TenantShardHarness::create("test_neon_test_record").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -8484,7 +8495,7 @@ mod tests { #[tokio::test(start_paused = true)] async fn test_lsn_lease() -> anyhow::Result<()> { - let (tenant, ctx) = TenantHarness::create("test_lsn_lease") + let (tenant, ctx) = TenantShardHarness::create("test_lsn_lease") .await .unwrap() .load() @@ -8617,7 +8628,7 @@ mod tests { test_name: &'static str, use_delta_bottom_layer: bool, ) -> anyhow::Result<()> { - let harness = TenantHarness::create(test_name).await?; + let harness = TenantShardHarness::create(test_name).await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -8876,7 +8887,7 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_generate_key_retention() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_generate_key_retention").await?; + let harness = TenantShardHarness::create("test_generate_key_retention").await?; let (tenant, ctx) = harness.load().await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x10), DEFAULT_PG_VERSION, &ctx) @@ -9225,7 +9236,8 @@ mod tests { #[tokio::test] async fn test_simple_bottom_most_compaction_with_retain_lsns() -> anyhow::Result<()> { let harness = - TenantHarness::create("test_simple_bottom_most_compaction_with_retain_lsns").await?; + TenantShardHarness::create("test_simple_bottom_most_compaction_with_retain_lsns") + .await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -9485,9 +9497,10 @@ mod tests { #[tokio::test] async fn test_simple_bottom_most_compaction_with_retain_lsns_single_key() -> anyhow::Result<()> { - let harness = - TenantHarness::create("test_simple_bottom_most_compaction_with_retain_lsns_single_key") - .await?; + let harness = TenantShardHarness::create( + "test_simple_bottom_most_compaction_with_retain_lsns_single_key", + ) + .await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -9708,7 +9721,8 @@ mod tests { async fn test_simple_bottom_most_compaction_on_branch() -> anyhow::Result<()> { use models::CompactLsnRange; - let harness = TenantHarness::create("test_simple_bottom_most_compaction_on_branch").await?; + let harness = + TenantShardHarness::create("test_simple_bottom_most_compaction_on_branch").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -9938,7 +9952,8 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_vectored_read_with_nested_image_layer() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_vectored_read_with_nested_image_layer").await?; + let harness = + TenantShardHarness::create("test_vectored_read_with_nested_image_layer").await?; let (tenant, ctx) = harness.load().await; let will_init_keys = [2, 6]; @@ -10103,7 +10118,8 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_simple_partial_bottom_most_compaction() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_simple_partial_bottom_most_compaction").await?; + let harness = + TenantShardHarness::create("test_simple_partial_bottom_most_compaction").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -10445,7 +10461,7 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_timeline_offload_retain_lsn() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_timeline_offload_retain_lsn") + let harness = TenantShardHarness::create("test_timeline_offload_retain_lsn") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -10495,7 +10511,8 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_simple_bottom_most_compaction_above_lsn() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_simple_bottom_most_compaction_above_lsn").await?; + let harness = + TenantShardHarness::create("test_simple_bottom_most_compaction_above_lsn").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { @@ -10746,7 +10763,8 @@ mod tests { #[cfg(feature = "testing")] #[tokio::test] async fn test_simple_bottom_most_compaction_rectangle() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_simple_bottom_most_compaction_rectangle").await?; + let harness = + TenantShardHarness::create("test_simple_bottom_most_compaction_rectangle").await?; let (tenant, ctx) = harness.load().await; fn get_key(id: u32) -> Key { diff --git a/pageserver/src/tenant/mgr.rs b/pageserver/src/tenant/mgr.rs index 82b82e7ae9..407db3a577 100644 --- a/pageserver/src/tenant/mgr.rs +++ b/pageserver/src/tenant/mgr.rs @@ -2838,14 +2838,14 @@ mod tests { use crate::tenant::mgr::TenantSlot; - use super::{super::harness::TenantHarness, TenantsMap}; + use super::{super::harness::TenantShardHarness, TenantsMap}; #[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. - let h = TenantHarness::create("shutdown_awaits_in_progress_tenant") + let h = TenantShardHarness::create("shutdown_awaits_in_progress_tenant") .await .unwrap(); let (t, _ctx) = h.load().await; diff --git a/pageserver/src/tenant/remote_timeline_client.rs b/pageserver/src/tenant/remote_timeline_client.rs index 2f279f0236..9fae6ca5a7 100644 --- a/pageserver/src/tenant/remote_timeline_client.rs +++ b/pageserver/src/tenant/remote_timeline_client.rs @@ -2638,7 +2638,7 @@ mod tests { context::RequestContext, tenant::{ config::AttachmentMode, - harness::{TenantHarness, TIMELINE_ID}, + harness::{TenantShardHarness, TIMELINE_ID}, storage_layer::layer::local_layer_path, TenantShard, Timeline, }, @@ -2697,7 +2697,7 @@ mod tests { } struct TestSetup { - harness: TenantHarness, + harness: TenantShardHarness, tenant: Arc, timeline: Arc, tenant_ctx: RequestContext, @@ -2706,7 +2706,7 @@ mod tests { impl TestSetup { async fn new(test_name: &str) -> anyhow::Result { let test_name = Box::leak(Box::new(format!("remote_timeline_client__{test_name}"))); - let harness = TenantHarness::create(test_name).await?; + let harness = TenantShardHarness::create(test_name).await?; let (tenant, ctx) = harness.load().await; let timeline = tenant diff --git a/pageserver/src/tenant/storage_layer/batch_split_writer.rs b/pageserver/src/tenant/storage_layer/batch_split_writer.rs index 8a397ceb7a..cf33d8d172 100644 --- a/pageserver/src/tenant/storage_layer/batch_split_writer.rs +++ b/pageserver/src/tenant/storage_layer/batch_split_writer.rs @@ -404,7 +404,7 @@ mod tests { use crate::{ tenant::{ - harness::{TenantHarness, TIMELINE_ID}, + harness::{TenantShardHarness, TIMELINE_ID}, storage_layer::AsLayerDesc, }, DEFAULT_PG_VERSION, @@ -431,7 +431,7 @@ mod tests { #[tokio::test] async fn write_one_image() { - let harness = TenantHarness::create("split_writer_write_one_image") + let harness = TenantShardHarness::create("split_writer_write_one_image") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -510,7 +510,7 @@ mod tests { /// Test the image+delta writer by writing a large number of images and deltas. If discard is /// set to true, all layers will be discarded. async fn write_split_helper(harness_name: &'static str, discard: bool) { - let harness = TenantHarness::create(harness_name).await.unwrap(); + let harness = TenantShardHarness::create(harness_name).await.unwrap(); let (tenant, ctx) = harness.load().await; let tline = tenant @@ -605,7 +605,7 @@ mod tests { #[tokio::test] async fn write_large_img() { - let harness = TenantHarness::create("split_writer_write_large_img") + let harness = TenantShardHarness::create("split_writer_write_large_img") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -692,7 +692,7 @@ mod tests { #[tokio::test] async fn write_split_single_key() { - let harness = TenantHarness::create("split_writer_write_split_single_key") + let harness = TenantShardHarness::create("split_writer_write_split_single_key") .await .unwrap(); let (tenant, ctx) = harness.load().await; diff --git a/pageserver/src/tenant/storage_layer/delta_layer.rs b/pageserver/src/tenant/storage_layer/delta_layer.rs index a1d8d77a48..edf6a0a284 100644 --- a/pageserver/src/tenant/storage_layer/delta_layer.rs +++ b/pageserver/src/tenant/storage_layer/delta_layer.rs @@ -1622,7 +1622,7 @@ pub(crate) mod test { use crate::{ context::DownloadBehavior, task_mgr::TaskKind, - tenant::{disk_btree::tests::TestDisk, harness::TenantHarness}, + tenant::{disk_btree::tests::TestDisk, harness::TenantShardHarness}, DEFAULT_PG_VERSION, }; use bytes::Bytes; @@ -1879,7 +1879,8 @@ pub(crate) mod test { #[tokio::test] async fn test_delta_layer_vectored_read_end_to_end() -> anyhow::Result<()> { - let harness = TenantHarness::create("test_delta_layer_oversized_vectored_read").await?; + let harness = + TenantShardHarness::create("test_delta_layer_oversized_vectored_read").await?; let (tenant, ctx) = harness.load().await; let timeline_id = TimelineId::generate(); @@ -1982,7 +1983,7 @@ pub(crate) mod test { use bytes::Bytes; use pageserver_api::record::NeonWalRecord; - let h = crate::tenant::harness::TenantHarness::create("truncate_delta_smoke") + let h = crate::tenant::harness::TenantShardHarness::create("truncate_delta_smoke") .await .unwrap(); let (tenant, ctx) = h.load().await; @@ -2268,7 +2269,9 @@ pub(crate) mod test { #[tokio::test] async fn delta_layer_iterator() { - let harness = TenantHarness::create("delta_layer_iterator").await.unwrap(); + let harness = TenantShardHarness::create("delta_layer_iterator") + .await + .unwrap(); let (tenant, ctx) = harness.load().await; let tline = tenant diff --git a/pageserver/src/tenant/storage_layer/filter_iterator.rs b/pageserver/src/tenant/storage_layer/filter_iterator.rs index 8660be1fcc..121472062d 100644 --- a/pageserver/src/tenant/storage_layer/filter_iterator.rs +++ b/pageserver/src/tenant/storage_layer/filter_iterator.rs @@ -106,7 +106,7 @@ mod tests { use crate::{ tenant::{ - harness::{TenantHarness, TIMELINE_ID}, + harness::{TenantShardHarness, TIMELINE_ID}, storage_layer::delta_layer::test::produce_delta_layer, }, DEFAULT_PG_VERSION, @@ -137,7 +137,7 @@ mod tests { use bytes::Bytes; use pageserver_api::value::Value; - let harness = TenantHarness::create("filter_iterator_filter_keyspace_iterator") + let harness = TenantShardHarness::create("filter_iterator_filter_keyspace_iterator") .await .unwrap(); let (tenant, ctx) = harness.load().await; diff --git a/pageserver/src/tenant/storage_layer/image_layer.rs b/pageserver/src/tenant/storage_layer/image_layer.rs index 3098d04d83..5470fad83a 100644 --- a/pageserver/src/tenant/storage_layer/image_layer.rs +++ b/pageserver/src/tenant/storage_layer/image_layer.rs @@ -1138,7 +1138,7 @@ mod test { context::RequestContext, tenant::{ config::TenantConf, - harness::{TenantHarness, TIMELINE_ID}, + harness::{TenantShardHarness, TIMELINE_ID}, storage_layer::{Layer, ResidentLayer}, vectored_blob_io::StreamingVectoredReadPlanner, TenantShard, Timeline, @@ -1170,7 +1170,7 @@ mod test { // Create an unsharded parent with a layer. // - let harness = TenantHarness::create_custom( + let harness = TenantShardHarness::create_custom( "test_image_layer_rewrite--parent", tenant_conf.clone(), tenant_id, @@ -1233,7 +1233,7 @@ mod test { ShardStripeSize(0x8000), ) .unwrap(); - let harness = TenantHarness::create_custom( + let harness = TenantShardHarness::create_custom( Box::leak(Box::new(format!( "test_image_layer_rewrite--child{}", shard_identity.shard_slug() @@ -1380,7 +1380,9 @@ mod test { #[tokio::test] async fn image_layer_iterator() { - let harness = TenantHarness::create("image_layer_iterator").await.unwrap(); + let harness = TenantShardHarness::create("image_layer_iterator") + .await + .unwrap(); let (tenant, ctx) = harness.load().await; let tline = tenant diff --git a/pageserver/src/tenant/storage_layer/layer/tests.rs b/pageserver/src/tenant/storage_layer/layer/tests.rs index 36dcc8d805..dded72f3d5 100644 --- a/pageserver/src/tenant/storage_layer/layer/tests.rs +++ b/pageserver/src/tenant/storage_layer/layer/tests.rs @@ -10,7 +10,7 @@ use utils::{ use super::failpoints::{Failpoint, FailpointKind}; use super::*; use crate::{context::DownloadBehavior, tenant::storage_layer::LayerVisibilityHint}; -use crate::{task_mgr::TaskKind, tenant::harness::TenantHarness}; +use crate::{task_mgr::TaskKind, tenant::harness::TenantShardHarness}; /// Used in tests to advance a future to wanted await point, and not futher. const ADVANCE: std::time::Duration = std::time::Duration::from_secs(3600); @@ -24,7 +24,7 @@ const FOREVER: std::time::Duration = std::time::Duration::from_secs(ADVANCE.as_s async fn smoke_test() { let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("smoke_test").await.unwrap(); + let h = TenantShardHarness::create("smoke_test").await.unwrap(); let span = h.span(); let download_span = span.in_scope(|| tracing::info_span!("downloading", timeline_id = 1)); let (tenant, _) = h.load().await; @@ -202,7 +202,7 @@ async fn evict_and_wait_on_wanted_deleted() { // this is the runtime on which Layer spawns the blocking tasks on let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("evict_and_wait_on_wanted_deleted") + let h = TenantShardHarness::create("evict_and_wait_on_wanted_deleted") .await .unwrap(); utils::logging::replace_panic_hook_with_tracing_panic_hook().forget(); @@ -286,7 +286,7 @@ fn read_wins_pending_eviction() { rt.block_on(async move { // this is the runtime on which Layer spawns the blocking tasks on let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("read_wins_pending_eviction") + let h = TenantShardHarness::create("read_wins_pending_eviction") .await .unwrap(); let (tenant, ctx) = h.load().await; @@ -420,7 +420,7 @@ fn multiple_pending_evictions_scenario(name: &'static str, in_order: bool) { rt.block_on(async move { // this is the runtime on which Layer spawns the blocking tasks on let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create(name).await.unwrap(); + let h = TenantShardHarness::create(name).await.unwrap(); let (tenant, ctx) = h.load().await; let span = h.span(); let download_span = span.in_scope(|| tracing::info_span!("downloading", timeline_id = 1)); @@ -589,7 +589,7 @@ fn multiple_pending_evictions_scenario(name: &'static str, in_order: bool) { #[tokio::test(start_paused = true)] async fn cancelled_get_or_maybe_download_does_not_cancel_eviction() { let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("cancelled_get_or_maybe_download_does_not_cancel_eviction") + let h = TenantShardHarness::create("cancelled_get_or_maybe_download_does_not_cancel_eviction") .await .unwrap(); let (tenant, ctx) = h.load().await; @@ -667,7 +667,7 @@ async fn cancelled_get_or_maybe_download_does_not_cancel_eviction() { #[tokio::test(start_paused = true)] async fn evict_and_wait_does_not_wait_for_download() { // let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("evict_and_wait_does_not_wait_for_download") + let h = TenantShardHarness::create("evict_and_wait_does_not_wait_for_download") .await .unwrap(); let (tenant, ctx) = h.load().await; @@ -766,7 +766,7 @@ async fn eviction_cancellation_on_drop() { // this is the runtime on which Layer spawns the blocking tasks on let handle = tokio::runtime::Handle::current(); - let h = TenantHarness::create("eviction_cancellation_on_drop") + let h = TenantShardHarness::create("eviction_cancellation_on_drop") .await .unwrap(); utils::logging::replace_panic_hook_with_tracing_panic_hook().forget(); diff --git a/pageserver/src/tenant/storage_layer/merge_iterator.rs b/pageserver/src/tenant/storage_layer/merge_iterator.rs index 19cfcb0867..8eb81f567f 100644 --- a/pageserver/src/tenant/storage_layer/merge_iterator.rs +++ b/pageserver/src/tenant/storage_layer/merge_iterator.rs @@ -357,7 +357,7 @@ mod tests { use crate::{ tenant::{ - harness::{TenantHarness, TIMELINE_ID}, + harness::{TenantShardHarness, TIMELINE_ID}, storage_layer::delta_layer::test::{produce_delta_layer, sort_delta}, }, DEFAULT_PG_VERSION, @@ -393,7 +393,7 @@ mod tests { use bytes::Bytes; use pageserver_api::value::Value; - let harness = TenantHarness::create("merge_iterator_merge_in_between") + let harness = TenantShardHarness::create("merge_iterator_merge_in_between") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -458,7 +458,7 @@ mod tests { use bytes::Bytes; use pageserver_api::value::Value; - let harness = TenantHarness::create("merge_iterator_delta_merge") + let harness = TenantShardHarness::create("merge_iterator_delta_merge") .await .unwrap(); let (tenant, ctx) = harness.load().await; @@ -535,7 +535,7 @@ mod tests { use bytes::Bytes; use pageserver_api::value::Value; - let harness = TenantHarness::create("merge_iterator_delta_image_mixed_merge") + let harness = TenantShardHarness::create("merge_iterator_delta_image_mixed_merge") .await .unwrap(); let (tenant, ctx) = harness.load().await; diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index ad638bdc95..b44afd1ed7 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -6064,7 +6064,7 @@ mod tests { use utils::{id::TimelineId, lsn::Lsn}; use crate::tenant::{ - harness::{test_img, TenantHarness}, + harness::{test_img, TenantShardHarness}, layer_map::LayerMap, storage_layer::{Layer, LayerName}, timeline::{DeltaLayerTestDesc, EvictionError}, @@ -6073,7 +6073,9 @@ mod tests { #[tokio::test] async fn test_heatmap_generation() { - let harness = TenantHarness::create("heatmap_generation").await.unwrap(); + let harness = TenantShardHarness::create("heatmap_generation") + .await + .unwrap(); let covered_delta = DeltaLayerTestDesc::new_with_inferred_key_range( Lsn(0x10)..Lsn(0x20), @@ -6163,7 +6165,7 @@ mod tests { #[tokio::test] async fn two_layer_eviction_attempts_at_the_same_time() { - let harness = TenantHarness::create("two_layer_eviction_attempts_at_the_same_time") + let harness = TenantShardHarness::create("two_layer_eviction_attempts_at_the_same_time") .await .unwrap(); diff --git a/pageserver/src/tenant/timeline/walreceiver/connection_manager.rs b/pageserver/src/tenant/timeline/walreceiver/connection_manager.rs index 583d6309ab..088525ac53 100644 --- a/pageserver/src/tenant/timeline/walreceiver/connection_manager.rs +++ b/pageserver/src/tenant/timeline/walreceiver/connection_manager.rs @@ -1117,7 +1117,7 @@ impl ReconnectReason { #[cfg(test)] mod tests { use super::*; - use crate::tenant::harness::{TenantHarness, TIMELINE_ID}; + use crate::tenant::harness::{TenantShardHarness, TIMELINE_ID}; use pageserver_api::config::defaults::DEFAULT_WAL_RECEIVER_PROTOCOL; use url::Host; @@ -1141,7 +1141,7 @@ mod tests { #[tokio::test] async fn no_connection_no_candidate() -> anyhow::Result<()> { - let harness = TenantHarness::create("no_connection_no_candidate").await?; + let harness = TenantShardHarness::create("no_connection_no_candidate").await?; let mut state = dummy_state(&harness).await; let now = Utc::now().naive_utc(); @@ -1174,7 +1174,7 @@ mod tests { #[tokio::test] async fn connection_no_candidate() -> anyhow::Result<()> { - let harness = TenantHarness::create("connection_no_candidate").await?; + let harness = TenantShardHarness::create("connection_no_candidate").await?; let mut state = dummy_state(&harness).await; let now = Utc::now().naive_utc(); @@ -1239,7 +1239,7 @@ mod tests { #[tokio::test] async fn no_connection_candidate() -> anyhow::Result<()> { - let harness = TenantHarness::create("no_connection_candidate").await?; + let harness = TenantShardHarness::create("no_connection_candidate").await?; let mut state = dummy_state(&harness).await; let now = Utc::now().naive_utc(); @@ -1302,7 +1302,7 @@ mod tests { #[tokio::test] async fn candidate_with_many_connection_failures() -> anyhow::Result<()> { - let harness = TenantHarness::create("candidate_with_many_connection_failures").await?; + let harness = TenantShardHarness::create("candidate_with_many_connection_failures").await?; let mut state = dummy_state(&harness).await; let now = Utc::now().naive_utc(); @@ -1342,7 +1342,7 @@ mod tests { #[tokio::test] async fn lsn_wal_over_threshold_current_candidate() -> anyhow::Result<()> { - let harness = TenantHarness::create("lsn_wal_over_threshcurrent_candidate").await?; + let harness = TenantShardHarness::create("lsn_wal_over_threshcurrent_candidate").await?; let mut state = dummy_state(&harness).await; let current_lsn = Lsn(100_000).align(); let now = Utc::now().naive_utc(); @@ -1409,7 +1409,7 @@ mod tests { #[tokio::test] async fn timeout_connection_threshold_current_candidate() -> anyhow::Result<()> { let harness = - TenantHarness::create("timeout_connection_threshold_current_candidate").await?; + TenantShardHarness::create("timeout_connection_threshold_current_candidate").await?; let mut state = dummy_state(&harness).await; let current_lsn = Lsn(100_000).align(); let now = Utc::now().naive_utc(); @@ -1472,7 +1472,8 @@ mod tests { #[tokio::test] async fn timeout_wal_over_threshold_current_candidate() -> anyhow::Result<()> { - let harness = TenantHarness::create("timeout_wal_over_threshold_current_candidate").await?; + let harness = + TenantShardHarness::create("timeout_wal_over_threshold_current_candidate").await?; let mut state = dummy_state(&harness).await; let current_lsn = Lsn(100_000).align(); let new_lsn = Lsn(100_100).align(); @@ -1540,7 +1541,7 @@ mod tests { const DUMMY_SAFEKEEPER_HOST: &str = "safekeeper_connstr"; - async fn dummy_state(harness: &TenantHarness) -> ConnectionManagerState { + async fn dummy_state(harness: &TenantShardHarness) -> ConnectionManagerState { let (tenant, ctx) = harness.load().await; let timeline = tenant .create_test_timeline(TIMELINE_ID, Lsn(0x8), crate::DEFAULT_PG_VERSION, &ctx) @@ -1575,7 +1576,7 @@ mod tests { // and pageserver should prefer to connect to it. let test_az = Some("test_az".to_owned()); - let harness = TenantHarness::create("switch_to_same_availability_zone").await?; + let harness = TenantShardHarness::create("switch_to_same_availability_zone").await?; let mut state = dummy_state(&harness).await; state.conf.availability_zone.clone_from(&test_az); let current_lsn = Lsn(100_000).align(); diff --git a/pageserver/src/tenant/upload_queue.rs b/pageserver/src/tenant/upload_queue.rs index d302205ffe..44c8c918a9 100644 --- a/pageserver/src/tenant/upload_queue.rs +++ b/pageserver/src/tenant/upload_queue.rs @@ -563,7 +563,7 @@ impl UploadOp { #[cfg(test)] mod tests { use super::*; - use crate::tenant::harness::{TenantHarness, TIMELINE_ID}; + use crate::tenant::harness::{TenantShardHarness, TIMELINE_ID}; use crate::tenant::storage_layer::layer::local_layer_path; use crate::tenant::storage_layer::Layer; use crate::tenant::Timeline; @@ -621,7 +621,7 @@ mod tests { runtime .block_on(async { - let harness = TenantHarness::create(test_name).await?; + let harness = TenantShardHarness::create(test_name).await?; let (tenant, ctx) = harness.load().await; tenant .create_test_timeline(TIMELINE_ID, Lsn(8), DEFAULT_PG_VERSION, &ctx) diff --git a/pageserver/src/walingest.rs b/pageserver/src/walingest.rs index ad7bcc0714..5a11ce2287 100644 --- a/pageserver/src/walingest.rs +++ b/pageserver/src/walingest.rs @@ -1531,7 +1531,10 @@ mod tests { #[tokio::test] async fn test_relsize() -> Result<()> { - let (tenant, ctx) = TenantHarness::create("test_relsize").await?.load().await; + let (tenant, ctx) = TenantShardHarness::create("test_relsize") + .await? + .load() + .await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(8), DEFAULT_PG_VERSION, &ctx) .await?; @@ -1771,7 +1774,7 @@ mod tests { // and then created it again within the same layer. #[tokio::test] async fn test_drop_extend() -> Result<()> { - let (tenant, ctx) = TenantHarness::create("test_drop_extend") + let (tenant, ctx) = TenantShardHarness::create("test_drop_extend") .await? .load() .await; @@ -1847,7 +1850,7 @@ mod tests { // and then extended it again within the same layer. #[tokio::test] async fn test_truncate_extend() -> Result<()> { - let (tenant, ctx) = TenantHarness::create("test_truncate_extend") + let (tenant, ctx) = TenantShardHarness::create("test_truncate_extend") .await? .load() .await; @@ -2001,7 +2004,10 @@ mod tests { /// split into multiple 1 GB segments in Postgres. #[tokio::test] async fn test_large_rel() -> Result<()> { - let (tenant, ctx) = TenantHarness::create("test_large_rel").await?.load().await; + let (tenant, ctx) = TenantShardHarness::create("test_large_rel") + .await? + .load() + .await; let tline = tenant .create_test_timeline(TIMELINE_ID, Lsn(8), DEFAULT_PG_VERSION, &ctx) .await?; @@ -2109,7 +2115,9 @@ mod tests { let startpoint = Lsn::from_hex("14AEC08").unwrap(); let _endpoint = Lsn::from_hex("1FFFF98").unwrap(); - let harness = TenantHarness::create("test_ingest_real_wal").await.unwrap(); + let harness = TenantShardHarness::create("test_ingest_real_wal") + .await + .unwrap(); let span = harness .span() .in_scope(|| info_span!("timeline_span", timeline_id=%TIMELINE_ID));