flowey_lib_hvlite/_jobs/
local_run_nextest_vmm_tests.rs1use crate::_jobs::consume_and_test_nextest_vmm_tests_archive::TestContentConfig;
8use crate::_jobs::local_build_and_run_nextest_vmm_tests::build_test_label;
9use crate::_jobs::local_build_and_run_nextest_vmm_tests::init_artifacts_dir;
10use crate::common::CommonTriple;
11use crate::init_vmm_tests_env::PetriParams;
12use crate::install_vmm_tests_external_deps::VmmTestsExternalDeps;
13use flowey::node::prelude::*;
14use petri_artifacts_vmm_test::ErasedVmmTestImage;
15use std::num::NonZeroU64;
16
17flowey_request! {
18 pub struct Params {
19 pub target: CommonTriple,
20
21 pub test_content_dir: PathBuf,
23
24 pub filter: String,
26 pub downloaded_artifacts: Vec<ErasedVmmTestImage>,
27 pub external_deps: VmmTestsExternalDeps,
28 pub prep_steps_variants: Vec<String>,
29 pub needs_test_igvm_agent_rpc_server: bool,
30
31 pub skip_vhd_prompt: bool,
33
34 pub nextest_profile: crate::run_cargo_nextest_run::NextestProfile,
35
36 pub petri_params: PetriParams,
37
38 pub repetitions: NonZeroU64,
39
40 pub done: WriteVar<SideEffect>,
41 }
42}
43
44new_simple_flow_node!(struct Node);
45
46impl SimpleFlowNode for Node {
47 type Request = Params;
48
49 fn imports(ctx: &mut ImportCtx<'_>) {
50 ctx.import::<crate::_jobs::consume_and_test_nextest_vmm_tests_archive::Node>();
51 ctx.import::<crate::download_openvmm_vmm_tests_artifacts::Node>();
52 }
53
54 fn process_request(request: Self::Request, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
55 let Params {
56 target,
57 test_content_dir,
58 filter,
59 downloaded_artifacts,
60 external_deps,
61 prep_steps_variants,
62 needs_test_igvm_agent_rpc_server,
63 skip_vhd_prompt,
64 nextest_profile,
65 petri_params,
66 repetitions,
67 done,
68 } = request;
69
70 let test_content_dir = test_content_dir.absolute()?;
71
72 let target_triple = target.as_triple();
73 let test_label = build_test_label(&target_triple);
74
75 init_artifacts_dir(ctx, &test_content_dir, skip_vhd_prompt)?;
76
77 ctx.req(
78 crate::_jobs::consume_and_test_nextest_vmm_tests_archive::Params {
79 junit_test_label: test_label,
80 target: target_triple,
81 nextest_profile,
82 nextest_filter_expr: Some(filter),
83 test_content_config: TestContentConfig::Initialized {
84 test_content_dir: ReadVar::from_static(test_content_dir),
85 needs_test_igvm_agent_rpc_server,
86 },
87 downloaded_artifacts,
88 prep_steps_variants,
89 external_deps,
90 upload_logs_on_success: true,
91 fail_job_on_test_fail: true,
92 repetitions,
93 petri_params,
94 test_content_dir_as_repo_root: true,
95 done,
96 },
97 );
98
99 Ok(())
100 }
101}