Skip to main content

RecordingControls

Struct RecordingControls 

Source
pub struct RecordingControls { /* private fields */ }
Expand description

A ControlFactory that registers nothing and remembers everything.

Public rather than #[cfg(test)] on purpose. f3 builds three commands on ServiceOperations and has to be able to test them without a service manager, and a double that lived behind #[cfg(test)] here would be invisible from another crate — which would leave f3 either untested or writing a second double that drifts from this one.

It is not a simulator. It stores what it was asked to register and reports it back, which is exactly enough to exercise the logic that sits above a service manager: the lock refusal, the record, the stale-path detection, the start-mode switch, and the promise that uninstall deletes nothing else.

Implementations§

Source§

impl RecordingControls

Source

pub fn new() -> Self

A factory holding no registrations.

Source

pub fn calls(&self) -> Vec<String>

Every call made through this factory, in order, as "<operation> <name> (<mode>)".

Source

pub fn registrations(&self) -> Vec<(StartMode, String, Registration)>

Every registration currently held, with the domain it is in.

Source

pub fn definition(&self, name: &str) -> Option<ServiceDefinition>

The definition applied for a registration, if it is held.

Source

pub fn edit(&self, name: &str, edit: impl FnOnce(&mut Registration))

Edits a held registration, as something outside this product would.

This is how the divergence and start-type problems are made reachable from a test: sc config, launchctl and systemctl can all change a registration after installation, and a status command that could not be shown detecting that would be a status command nobody had tested against the case it exists for.

Does nothing when no registration of that name is held.

Trait Implementations§

Source§

impl Clone for RecordingControls

Source§

fn clone(&self) -> RecordingControls

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl ControlFactory for RecordingControls

Source§

fn control( &self, mode: StartMode, ) -> Result<Box<dyn ServiceControl>, ServiceError>

The control for one start-mode domain. Read more
Source§

impl Debug for RecordingControls

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RecordingControls

Source§

fn default() -> RecordingControls

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more