Skip to main content

FakeHost

Struct FakeHost 

Source
pub struct FakeHost {
    pub world: Arc<Mutex<World>>,
    pub store: MemStore,
}

Fields§

§world: Arc<Mutex<World>>§store: MemStore

Implementations§

Source§

impl FakeHost

Source

pub fn new(world: Arc<Mutex<World>>, store: MemStore) -> FakeHost

Source

pub fn w(&self) -> MutexGuard<'_, World>

Source

fn admit(&self, w: &mut World, op: &OpId, call: &str) -> bool

Fence and log a mutating call. Returns false if the call must be refused.

Trait Implementations§

Source§

impl Clone for FakeHost

Source§

fn clone(&self) -> FakeHost

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FakeHost

Source§

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

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

impl GenerationBackend for FakeHost

Source§

fn current(&self) -> Result<GenerationId, Outcome>

Source§

fn boot_entries(&self) -> Result<Vec<GenerationId>, Outcome>

Source§

fn boot_default(&self) -> Result<GenerationId, Outcome>

Source§

fn last_booted(&self) -> Result<GenerationId, Outcome>

Source§

fn stage( &self, _owner: &PinnedSource, _overrides: &OverrideSet, ) -> Result<StagedSource, Outcome>

Source§

fn source_hash(&self, _owner: &PinnedSource) -> Result<Hash, Outcome>

Recompute the NAR hash of the owner’s Nix-visible source now (stale check, §9 step 6).
Source§

fn evaluate(&self, _src: &StagedSource) -> Result<EvaluatedGeneration, Outcome>

Source§

fn build(&self, _eval: &EvaluatedGeneration) -> Result<Built, Outcome>

Store-only; roots its own output.
Source§

fn verify_candidate( &self, path: &StorePath, _nar: Option<&Hash>, ) -> Result<bool, Outcome>

The path is a whole system, its contents still hash to what the store recorded, and, when nar is given (the transaction built it), that is the NAR hash recorded at build (§9 step 3, C6).
Source§

fn pending_jobs(&self) -> Result<Vec<JobId>, Outcome>

Source§

fn jobs_tagged(&self, op: &OpId) -> Result<Option<Vec<JobId>>, Outcome>

None: the backend cannot say whether work tagged with op exists.
Source§

fn override_hash(&self) -> Result<Hash, Outcome>

The override file’s current content hash (promotion compares against it, §9 step 4).
Source§

fn activate_live(&self, g: GenerationId, op: &OpId) -> Outcome

switch-to-configuration test.
Source§

fn publish_boot(&self, g: GenerationId, op: &OpId) -> Outcome

Boot entry only; no re-activation.
Source§

fn protect(&self, g: GenerationId, op: &OpId) -> Outcome

Source§

fn cancel(&self, job: &JobId, op: &OpId) -> Outcome

Source§

fn swap_override(&self, from: &Hash, to: &Hash, op: &OpId) -> Outcome

Atomically replace the live override file with the content whose hash is to, but only if its current hash is from. Idempotent: if it already hashes to to, succeed without writing.
Source§

fn path_of(&self, g: GenerationId) -> Result<StorePath, Outcome>

The system store path of a known generation.
Source§

fn evaluate_built( &self, _path: &StorePath, ) -> Result<EvaluatedGeneration, Outcome>

Evaluate an already-built generation from its store path (its exported manifest), for SwitchGeneration / Revert / Rollback.
Source§

fn read_overrides(&self) -> Result<(OverrideSet, Hash), Outcome>

The live override set and its content hash.
Source§

fn remember_override(&self, set: &OverrideSet) -> Result<Hash, Outcome>

Keep override content addressable by hash, so swap_override can write it.
Source§

fn override_for(&self, _g: GenerationId) -> Result<Option<Hash>, Outcome>

The override content recorded for a generation when it was committed.
Source§

fn record_override(&self, _g: GenerationId, _hash: &Hash) -> Result<(), Outcome>

Source§

fn release_root(&self, root: &str) -> bool

Remove a GC root symlink this backend created.
Source§

fn collect_garbage( &self, _protect: &[GenerationId], _emergency: bool, op: &OpId, ) -> Outcome

Collect generations under the §12b bounds (gc::plan), never touching protect (I3), then collect store garbage. Mutating.
Source§

fn gc_plan( &self, _protect: &[GenerationId], _emergency: bool, ) -> Result<GcPlan, Outcome>

What collect_garbage would delete now. Read-only.
Source§

fn space_report(&self) -> Option<SpaceReport>

The last collection’s result.
Source§

fn untracked(&self, _owner: &PinnedSource) -> Vec<String>

The owner’s files Nix cannot see now (untracked in a git flake), to report with the stale check: one added during the build was not there at staging (§9 step 1).
Source§

fn dry_activation(&self, _path: &StorePath) -> Result<ActivationPlan, Outcome>

What switching from the running generation to an existing one would start, stop, restart and reload (its dry activation), for SwitchGeneration / Revert / Rollback (§11, R04). An activation that failed, timed out or was cut short is an error, never a smaller plan.
Source§

fn publish_boot_once( &self, _g: GenerationId, _keep: GenerationId, _op: &OpId, ) -> Outcome

The boot-only path (§12 step 7, §12f): g boots once, at the next boot; keep stays the default. All or nothing.
Source§

fn created_by(&self, _g: GenerationId) -> Option<(u32, Timestamp)>

Who created generation g and when (its profile link’s owner and time): the provenance of a rebuild made outside Planarian (§15).
Source§

fn one_shot_pending(&self) -> Result<Option<GenerationId>, Outcome>

The generation a one-shot entry will boot next, if one is pending.
Source§

fn override_content(&self, _h: &Hash) -> Result<OverrideSet, Outcome>

The override content remember_override kept under this hash.
Source§

fn age_out_build_roots(&self) -> Vec<String>

Remove build roots no transaction can still use: older than the longest a candidate may wait (§12f), a crashed build’s included. At startup and before every collection (§9 step 5, C4). Returns them.
Source§

impl Host for FakeHost

Source§

type Gen = FakeHost

Source§

type Inv = FakeHost

Source§

fn generations(&self) -> &FakeHost

Source§

fn inventory(&self) -> &FakeHost

Source§

fn execute_runtime(&self, t: &Transition, op: &OpId) -> Outcome

Perform a ReobserveOnly transition’s backend effect (restart, stop, runtime option, GC). Override bookkeeping is the kernel’s job, not this.
Source§

fn reobserve(&self, _txn: &Transaction) -> Outcome

Settle, then observe and compare against the expectation; the outcome is recorded, never acted on (§12 step 7, UnitOp).
Source§

fn check(&self, _txn: &Transaction, _phase: CheckPhase) -> Verdict

Run the applicable Readiness probes from the candidate’s UnitDefs and the installed core, plus the expectation and executor-owned requirements.
Source§

fn release_gc_root(&self, path: &str) -> bool

Remove a GC root (I3). Returns false if it could not be removed.
Source§

fn now(&self) -> Timestamp

Source§

fn boot_now(&self) -> Timestamp

The boot clock (CLOCK_BOOTTIME): leases, deadlines and waits (§12h).
Source§

fn sleep(&self, d: Millis)

Source§

fn kill_worker(&self, pid: u32) -> bool

SIGTERM then SIGKILL the process group via pidfd; true once confirmed dead.
Source§

fn pid_alive(&self, pid: u32) -> bool

Source§

fn floor_fixes( &self, _txn: &Transaction, _floor: Option<GenerationId>, ) -> Result<Vec<String>, Outcome>

§12e, I25: the security fixes txn’s candidate brings, absent from the floor generation and every generation between it and the candidate (every earlier one, with no floor). Part of the commit: an error here means the transaction does not commit yet.
Source§

impl InventoryBackend for FakeHost

Source§

fn devices(&self) -> Result<Vec<DeviceInfo>, Outcome>

Source§

fn resources(&self) -> Result<Resources, Outcome>

Source§

fn bound_driver(&self, device: &UnitId) -> Result<Option<DriverRef>, Outcome>

Source§

fn bind(&self, device: &UnitId, driver: &DriverRef, op: &OpId) -> Outcome

Source§

fn unbind(&self, device: &UnitId, op: &OpId) -> Outcome

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, 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.