From dc4b5f5f23a7ec5230a21ae1a37125e51c364f22 Mon Sep 17 00:00:00 2001 From: anastasia Date: Fri, 2 Apr 2021 15:09:20 +0300 Subject: [PATCH] use pg_resetwal to generate pg_control in the test --- src/control_plane.rs | 13 +++++++++---- tests/test_pageserver.rs | 6 ++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/control_plane.rs b/src/control_plane.rs index d0dec8627d..2fddda4dfb 100644 --- a/src/control_plane.rs +++ b/src/control_plane.rs @@ -247,6 +247,9 @@ impl ComputeControlPlane { node } + // Init compute node without files, only datadir structure + // use initdb --compute-node flag and GUC 'computenode_mode' + // to distinguish the node pub fn new_minimal_node(&mut self) -> &PostgresNode { // allocate new node entry with generated port let node_id = self.nodes.len() + 1; @@ -386,7 +389,8 @@ impl PostgresNode { self.pgdata.to_str() } - pub fn create_controlfile(&self) + /* Create stub controlfile and respective xlog to start computenode */ + pub fn setup_controlfile(&self) { let filepath = format!("{}/global/pg_control", self.pgdata.to_str().unwrap()); @@ -396,15 +400,16 @@ impl PostgresNode { let pg_resetwal_path = self.pg_bin_dir.join("pg_resetwal"); - let initdb = Command::new(pg_resetwal_path) + let pg_resetwal = Command::new(pg_resetwal_path) .args(&["-D", self.pgdata.to_str().unwrap()]) .arg("-f") + // TODO probably we will have to modify pg_resetwal // .arg("--compute-node") .status() .expect("failed to execute pg_resetwal"); - if !initdb.success() { - panic!("initdb failed"); + if !pg_resetwal.success() { + panic!("pg_resetwal failed"); } } diff --git a/tests/test_pageserver.rs b/tests/test_pageserver.rs index 07cdb66dea..96512fe470 100644 --- a/tests/test_pageserver.rs +++ b/tests/test_pageserver.rs @@ -13,6 +13,7 @@ use pageserver::control_plane::StorageControlPlane; fn test_redo_cases() { // Allocate postgres instance, but don't start let mut compute_cplane = ComputeControlPlane::local(); + // Create compute node without files, only datadir structure let node = compute_cplane.new_minimal_node(); // Start pageserver that reads WAL directly from that postgres @@ -24,9 +25,10 @@ fn test_redo_cases() { page_server_connstring = 'host={} port={}'\n\ ", pageserver_addr.ip(), pageserver_addr.port()).as_str()); + // Request info needed to build control file storage_cplane.simple_query_storage("postgres", node.whoami().as_str(), "controlfile"); - - node.create_controlfile(); + // Setup controlfile + node.setup_controlfile(); // start postgres node.start();