From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 0C6651FF0E3 for ; Tue, 04 Aug 2026 14:35:07 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 91FE1216C6; Tue, 04 Aug 2026 14:35:06 +0200 (CEST) From: Lukas Wagner To: pdm-devel@lists.proxmox.com Subject: [PATCH datacenter-manager] tests: use tempfile instead using our own, in-tree reimplementation Date: Tue, 4 Aug 2026 14:34:52 +0200 Message-ID: <20260804123452.1077660-1-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1785846885008 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.230 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: C3DO6VH22DQVHWV4MT2L2GT3ATUOSMSI X-Message-ID-Hash: C3DO6VH22DQVHWV4MT2L2GT3ATUOSMSI X-MailFrom: l.wagner@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: PBS started using it a while ago for tests, and also the `namespaced_cache` in PDM already used it for its own test suite. Signed-off-by: Lukas Wagner --- .../remote_collection_task.rs | 6 +- server/src/metric_collection/rrd_task.rs | 10 ++-- server/src/metric_collection/state.rs | 5 +- server/src/remote_tasks/task_cache.rs | 6 +- server/src/test_support/mod.rs | 3 - server/src/test_support/temp.rs | 60 ------------------- 6 files changed, 11 insertions(+), 79 deletions(-) delete mode 100644 server/src/test_support/temp.rs diff --git a/server/src/metric_collection/remote_collection_task.rs b/server/src/metric_collection/remote_collection_task.rs index d243dcf1..e630a99d 100644 --- a/server/src/metric_collection/remote_collection_task.rs +++ b/server/src/metric_collection/remote_collection_task.rs @@ -399,7 +399,6 @@ pub(super) mod tests { connection::{ClientFactory, PveClient}, metric_collection::rrd_task::RrdStoreResult, pbs_client::PbsClient, - test_support::temp::NamedTempFile, }; use super::*; @@ -574,7 +573,7 @@ pub(super) mod tests { let config = make_remote_config(); - let state_file = NamedTempFile::new(get_create_options()).unwrap(); + let state_file = tempfile::NamedTempFile::new().unwrap(); let state = MetricCollectionState::new(state_file.path().into(), get_create_options()); let (_control_tx, control_rx) = tokio::sync::mpsc::channel(10); @@ -627,7 +626,8 @@ pub(super) mod tests { let config = make_remote_config(); - let state_file = NamedTempFile::new(get_create_options()).unwrap(); + let state_file = tempfile::NamedTempFile::new().unwrap(); + let mut state = MetricCollectionState::new(state_file.path().into(), get_create_options()); let now = proxmox_time::epoch_i64(); diff --git a/server/src/metric_collection/rrd_task.rs b/server/src/metric_collection/rrd_task.rs index b5d6c008..99474140 100644 --- a/server/src/metric_collection/rrd_task.rs +++ b/server/src/metric_collection/rrd_task.rs @@ -428,17 +428,14 @@ mod tests { use proxmox_rrd_api_types::{RrdMode, RrdTimeframe}; use pve_api_types::{ClusterMetrics, ClusterMetricsData}; - use crate::{ - metric_collection::remote_collection_task::tests::get_create_options, - test_support::temp::NamedTempDir, - }; + use crate::metric_collection::remote_collection_task::tests::get_create_options; use super::*; #[tokio::test] async fn test_rrd_task_persists_data() -> Result<(), Error> { // Arrange - let dir = NamedTempDir::new()?; + let dir = tempfile::tempdir()?; let options = get_create_options().perm(nix::sys::stat::Mode::from_bits_truncate(0o700)); let cache = Arc::new(RrdCache::new(dir.path(), options, options)?); @@ -526,7 +523,8 @@ mod tests { #[test] fn store_datapoints_drops_future_dated() -> Result<(), Error> { - let dir = NamedTempDir::new()?; + let dir = tempfile::tempdir()?; + let options = get_create_options().perm(nix::sys::stat::Mode::from_bits_truncate(0o700)); let cache = RrdCache::new(dir.path(), options, options)?; diff --git a/server/src/metric_collection/state.rs b/server/src/metric_collection/state.rs index 8d98613f..889a8443 100644 --- a/server/src/metric_collection/state.rs +++ b/server/src/metric_collection/state.rs @@ -93,13 +93,12 @@ impl MetricCollectionState { #[cfg(test)] mod tests { use crate::metric_collection::remote_collection_task::tests::get_create_options; - use crate::test_support::temp::NamedTempFile; use super::*; #[test] fn save_and_load() -> Result<(), Error> { - let file = NamedTempFile::new(get_create_options())?; + let file = tempfile::NamedTempFile::new()?; let options = get_create_options(); let mut state = MetricCollectionState::new(file.path().into(), options); @@ -123,7 +122,7 @@ mod tests { #[test] fn test_retain() -> Result<(), Error> { - let file = NamedTempFile::new(get_create_options())?; + let file = tempfile::NamedTempFile::new()?; let options = get_create_options(); let mut state = MetricCollectionState::new(file.path().into(), options); diff --git a/server/src/remote_tasks/task_cache.rs b/server/src/remote_tasks/task_cache.rs index b0b4a837..c13d9550 100644 --- a/server/src/remote_tasks/task_cache.rs +++ b/server/src/remote_tasks/task_cache.rs @@ -1255,8 +1255,6 @@ impl Iterator for JournalIterator { mod tests { use std::io::Cursor; - use crate::test_support::temp::NamedTempDir; - use super::*; #[test] @@ -1338,8 +1336,8 @@ mod tests { const DEFAULT_MAX_SIZE: u64 = 10000; - fn make_cache() -> Result<(NamedTempDir, TaskCache), Error> { - let tmp_dir = NamedTempDir::new()?; + fn make_cache() -> Result<(tempfile::TempDir, TaskCache), Error> { + let tmp_dir = tempfile::tempdir()?; let cache = TaskCache::new( tmp_dir.path(), CreateOptions::new(), diff --git a/server/src/test_support/mod.rs b/server/src/test_support/mod.rs index f026011c..5d264815 100644 --- a/server/src/test_support/mod.rs +++ b/server/src/test_support/mod.rs @@ -1,5 +1,2 @@ #[cfg(remote_config = "faked")] pub mod fake_remote; - -#[cfg(test)] -pub mod temp; diff --git a/server/src/test_support/temp.rs b/server/src/test_support/temp.rs deleted file mode 100644 index a93c914d..00000000 --- a/server/src/test_support/temp.rs +++ /dev/null @@ -1,60 +0,0 @@ -use std::path::{Path, PathBuf}; - -use anyhow::Error; - -use proxmox_sys::fs::CreateOptions; - -/// Temporary file that be cleaned up when dropped. -pub struct NamedTempFile { - path: PathBuf, -} - -impl NamedTempFile { - /// Create a new temporary file. - /// - /// The file will be created with the passed [`CreateOptions`]. - pub fn new(options: CreateOptions) -> Result { - let base = std::env::temp_dir().join("test"); - let (_, path) = proxmox_sys::fs::make_tmp_file(base, options)?; - - Ok(Self { path }) - } - - /// Return the [`Path`] to the temporary file. - pub fn path(&self) -> &Path { - &self.path - } -} - -impl Drop for NamedTempFile { - fn drop(&mut self) { - let _ = std::fs::remove_file(&self.path); - } -} - -/// Temporary directory that is cleaned up when dropped. -pub struct NamedTempDir { - path: PathBuf, -} - -impl NamedTempDir { - /// Create a new temporary directory. - /// - /// The directory will be created with `0o700` permissions. - pub fn new() -> Result { - let path = proxmox_sys::fs::make_tmp_dir("/tmp", None)?; - - Ok(Self { path }) - } - - /// Return the [`Path`] to the temporary directory. - pub fn path(&self) -> &Path { - &self.path - } -} - -impl Drop for NamedTempDir { - fn drop(&mut self) { - let _ = std::fs::remove_dir_all(&self.path); - } -} -- 2.47.3