From 4e41bd3e560024905460b1293245cad84c2604c9 Mon Sep 17 00:00:00 2001 From: Linghong Date: Tue, 22 Sep 2026 00:53:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A2=84=E8=A7=88=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E6=B5=8B=E8=AF=95=E7=8A=B6=E6=80=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E7=AB=9E=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy_and_uninstall 测试在断言状态文件恢复前,改为轮询等待持久化状态到达 Stopped 新增 wait_for_persisted_status 辅助函数,经 load_deployments 真实加载路径校验状态文件 --- .../preview-deployer-server/src/tests.rs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server-rs/crates/preview-deployer-server/src/tests.rs b/server-rs/crates/preview-deployer-server/src/tests.rs index 7874d5169..078a21468 100644 --- a/server-rs/crates/preview-deployer-server/src/tests.rs +++ b/server-rs/crates/preview-deployer-server/src/tests.rs @@ -461,6 +461,9 @@ async fn deploy_and_uninstall_use_fixed_job_and_apply_owned_artifacts() { .to_bytes(); let list: Value = serde_json::from_slice(&list_body).unwrap(); assert_eq!(list["deployments"], json!([])); + wait_for_persisted_status(&state.config, &id, super::DeploymentStatus::Stopped) + .await + .expect("persisted deployment reaches stopped"); let state_file = state.config.state_file.clone(); let mut recovered_config = test_config(state.config.jenkins_root_url.clone()); recovered_config.state_file = state_file.clone(); @@ -659,6 +662,24 @@ async fn wait_for_status( Err(()) } +async fn wait_for_persisted_status( + config: &Config, + id: &str, + expected: super::DeploymentStatus, +) -> Result<(), ()> { + for _ in 0..100 { + if super::load_deployments(config) + .ok() + .and_then(|deployments| deployments.get(id).map(|record| record.public.status)) + .is_some_and(|status| status == expected) + { + return Ok(()); + } + tokio::time::sleep(Duration::from_millis(5)).await; + } + Err(()) +} + #[test] fn public_web_url_is_derived_from_instance_id_and_configured_domain() { assert_eq!(