pub struct PetriVmConfigOpenVmm { /* private fields */ }
Expand description
Configuration state for a test VM.
Implementations§
Source§impl PetriVmConfigOpenVmm
impl PetriVmConfigOpenVmm
Sourcepub fn new(
params: &PetriTestParams<'_>,
artifacts: PetriVmArtifactsOpenVmm,
driver: &DefaultDriver,
) -> Result<Self>
pub fn new( params: &PetriTestParams<'_>, artifacts: PetriVmArtifactsOpenVmm, driver: &DefaultDriver, ) -> Result<Self>
Create a new VM configuration.
Source§impl PetriVmConfigOpenVmm
impl PetriVmConfigOpenVmm
Sourcepub fn with_vmbus_redirect(self) -> Self
pub fn with_vmbus_redirect(self) -> Self
Enable VMBus redirection.
Sourcepub fn with_vtl0_alias_map(self) -> Self
pub fn with_vtl0_alias_map(self) -> Self
Enable the VTL0 alias map.
Sourcepub fn with_processors(self, count: u32) -> Self
pub fn with_processors(self, count: u32) -> Self
Set the VM to use the specified number of virtual processors.
Using 1 CPU is useful for heavier OpenHCL tests, as our WHP emulation layer is rather slow when dealing with cross-cpu communication.
Sourcepub fn with_secure_boot(self) -> Self
pub fn with_secure_boot(self) -> Self
Enable secure boot for the VM.
Sourcepub fn with_windows_secure_boot_template(self) -> Self
pub fn with_windows_secure_boot_template(self) -> Self
Inject Windows secure boot templates into the VM’s UEFI.
Sourcepub fn with_battery(self) -> Self
pub fn with_battery(self) -> Self
Enable the battery for the VM.
Sourcepub fn with_tpm_state_persistence(self) -> Self
pub fn with_tpm_state_persistence(self) -> Self
Enable TPM state persistence
Sourcepub fn with_nic(self) -> Self
pub fn with_nic(self) -> Self
Enable a synthnic for the VM.
Uses a mana emulator and the paravisor if a paravisor is present.
Sourcepub fn with_uefi_frontpage(self, enable_frontpage: bool) -> Self
pub fn with_uefi_frontpage(self, enable_frontpage: bool) -> Self
Specifies whether the UEFI frontpage app is enabled.
If it is disabled, then the VM will shutdown if there are no configured boot apps.
Sourcepub fn with_openhcl_command_line(self, additional_cmdline: &str) -> Self
pub fn with_openhcl_command_line(self, additional_cmdline: &str) -> Self
Add custom command line arguments to OpenHCL.
Sourcepub fn with_confidential_filtering(self) -> Self
pub fn with_confidential_filtering(self) -> Self
Enable confidential filtering, even if the VM is not confidential.
Sourcepub fn with_custom_openhcl<A: IsOpenhclIgvm>(
self,
artifact: ResolvedArtifact<A>,
) -> Self
pub fn with_custom_openhcl<A: IsOpenhclIgvm>( self, artifact: ResolvedArtifact<A>, ) -> Self
Load a custom OpenHCL firmware file.
Sourcepub fn with_custom_vtl2_settings(
self,
f: impl FnOnce(&mut Vtl2Settings),
) -> Self
pub fn with_custom_vtl2_settings( self, f: impl FnOnce(&mut Vtl2Settings), ) -> Self
Add custom VTL 2 settings.
Sourcepub fn with_vtl2_relocation_mode(self, mode: Vtl2BaseAddressType) -> Self
pub fn with_vtl2_relocation_mode(self, mode: Vtl2BaseAddressType) -> Self
Load with the specified VTL2 relocation mode.
Sourcepub fn with_custom_config(self, f: impl FnOnce(&mut Config)) -> Self
pub fn with_custom_config(self, f: impl FnOnce(&mut Config)) -> Self
This is intended for special one-off use cases. As soon as something is needed in multiple tests we should consider making it a supported pattern.
Source§impl PetriVmConfigOpenVmm
impl PetriVmConfigOpenVmm
Sourcepub async fn run_without_agent(self) -> Result<PetriVmOpenVmm>
pub async fn run_without_agent(self) -> Result<PetriVmOpenVmm>
Build and boot the requested VM. Does not configure and start pipette. Should only be used for testing platforms that pipette does not support.
Sourcepub async fn run(self) -> Result<(PetriVmOpenVmm, PipetteClient)>
pub async fn run(self) -> Result<(PetriVmOpenVmm, PipetteClient)>
Run the VM, launching pipette and returning a client to it.
Sourcepub async fn run_with_lazy_pipette(self) -> Result<PetriVmOpenVmm>
pub async fn run_with_lazy_pipette(self) -> Result<PetriVmOpenVmm>
Run the VM, configuring pipette to automatically start, but do not wait for it to connect. This is useful for tests where the first boot attempt is expected to not succeed, but pipette functionality is still desired.
Trait Implementations§
Source§impl PetriVmConfig for PetriVmConfigOpenVmm
impl PetriVmConfig for PetriVmConfigOpenVmm
Source§fn run_without_agent<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn PetriVm>>> + Send + 'async_trait>>where
Self: 'async_trait,
fn run_without_agent<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn PetriVm>>> + Send + 'async_trait>>where
Self: 'async_trait,
Source§fn run_with_lazy_pipette<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn PetriVm>>> + Send + 'async_trait>>where
Self: 'async_trait,
fn run_with_lazy_pipette<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn PetriVm>>> + Send + 'async_trait>>where
Self: 'async_trait,
Source§fn run<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn PetriVm>, PipetteClient)>> + Send + 'async_trait>>where
Self: 'async_trait,
fn run<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn PetriVm>, PipetteClient)>> + Send + 'async_trait>>where
Self: 'async_trait,
Source§fn with_windows_secure_boot_template(self: Box<Self>) -> Box<dyn PetriVmConfig>
fn with_windows_secure_boot_template(self: Box<Self>) -> Box<dyn PetriVmConfig>
Source§fn with_processors(self: Box<Self>, count: u32) -> Box<dyn PetriVmConfig>
fn with_processors(self: Box<Self>, count: u32) -> Box<dyn PetriVmConfig>
Auto Trait Implementations§
impl !Freeze for PetriVmConfigOpenVmm
impl !RefUnwindSafe for PetriVmConfigOpenVmm
impl Send for PetriVmConfigOpenVmm
impl !Sync for PetriVmConfigOpenVmm
impl Unpin for PetriVmConfigOpenVmm
impl !UnwindSafe for PetriVmConfigOpenVmm
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.