Struct holochain::sweettest::SweetConductor [−][src]
pub struct SweetConductor { /* fields omitted */ }
Expand description
A useful Conductor abstraction for testing, allowing startup and shutdown as well as easy installation of apps across multiple Conductors and Agents.
This is intentionally NOT Clone
, because the drop handle triggers a shutdown of
the conductor handle, which would render all other cloned instances useless.
If you need multiple references to a SweetConductor, put it in an Arc
Implementations
pub async fn new(
handle: ConductorHandle,
envs: TestEnvs,
config: ConductorConfig
) -> SweetConductor
pub async fn new(
handle: ConductorHandle,
envs: TestEnvs,
config: ConductorConfig
) -> SweetConductor
Create a SweetConductor from an already-built ConductorHandle and environments DnaStore The conductor will be supplied with a single test AppInterface named “sweet-interface” so that signals may be emitted
Create a SweetConductor with a new set of TestEnvs from the given config
pub async fn from_builder<DS: DnaStore + 'static>(
builder: ConductorBuilder<DS>
) -> SweetConductor
pub async fn from_builder<DS: DnaStore + 'static>(
builder: ConductorBuilder<DS>
) -> SweetConductor
Create a SweetConductor from a partially-configured ConductorBuilder
pub async fn handle_from_existing(
envs: &TestEnvs,
config: &ConductorConfig,
extra_dnas: &[DnaFile]
) -> ConductorHandle
pub async fn handle_from_existing(
envs: &TestEnvs,
config: &ConductorConfig,
extra_dnas: &[DnaFile]
) -> ConductorHandle
Create a handle from an existing environment and config
Create a SweetConductor with a new set of TestEnvs from the given config
Access the KeystoreSender for this conductor
pub async fn enable_app(
&self,
id: InstalledAppId
) -> ConductorResult<(InstalledApp, Vec<(CellId, CellError)>)>
pub async fn enable_app(
&self,
id: InstalledAppId
) -> ConductorResult<(InstalledApp, Vec<(CellId, CellError)>)>
Convenience function that uses the internal handle to enable an app
pub async fn disable_app(
&self,
id: InstalledAppId,
reason: DisabledAppReason
) -> ConductorResult<InstalledApp>
pub async fn disable_app(
&self,
id: InstalledAppId,
reason: DisabledAppReason
) -> ConductorResult<InstalledApp>
Convenience function that uses the internal handle to disable an app
Convenience function that uses the internal handle to start an app
pub async fn pause_app(
&self,
id: InstalledAppId,
reason: PausedAppReason
) -> ConductorResult<InstalledApp>
pub async fn pause_app(
&self,
id: InstalledAppId,
reason: PausedAppReason
) -> ConductorResult<InstalledApp>
Convenience function that uses the internal handle to pause an app
pub async fn setup_app_for_agent(
&mut self,
installed_app_id: &str,
agent: AgentPubKey,
dna_files: &[DnaFile]
) -> ConductorApiResult<SweetApp>
pub async fn setup_app_for_agent(
&mut self,
installed_app_id: &str,
agent: AgentPubKey,
dna_files: &[DnaFile]
) -> ConductorApiResult<SweetApp>
Opinionated app setup. Creates an app for the given agent, using the given DnaFiles, with no extra configuration.
Opinionated app setup. Creates an app using the given DnaFiles, with no extra configuration. An AgentPubKey will be generated, and is accessible via the returned SweetApp.
pub async fn setup_app_for_agents(
&mut self,
app_id_prefix: &str,
agents: &[AgentPubKey],
dna_files: &[DnaFile]
) -> ConductorApiResult<SweetAppBatch>
pub async fn setup_app_for_agents(
&mut self,
app_id_prefix: &str,
agents: &[AgentPubKey],
dna_files: &[DnaFile]
) -> ConductorApiResult<SweetAppBatch>
Opinionated app setup. Creates one app per agent, using the given DnaFiles.
All InstalledAppIds and CellNicks are auto-generated. In tests driven directly by Rust, you typically won’t care what these values are set to, but in case you do, they are set as so:
- InstalledAppId: {app_id_prefix}-{agent_pub_key}
- CellNick: {dna_hash}
Returns a batch of SweetApps, sorted in the same order as Agents passed in.
Get a stream of all Signals emitted on the “sweet-interface” AppInterface.
This is designed to crash if called more than once, because as currently implemented, creating multiple signal streams would simply cause multiple consumers of the same underlying streams, not a fresh subscription
Get a new websocket client which can send requests over the admin interface. It presupposes that an admin interface has been configured. (The standard_config includes an admin interface at port 0.)
Shutdown this conductor. This will wait for the conductor to shutdown but keep the inner state to restart it.
Attempting to use this conductor without starting it up again will cause a panic.
Check if this conductor is running
Get the ConductorHandle within this Conductor. Be careful when using this, because this leaks out handles, which may make it harder to shut down the conductor during tests.
Force trigger all dht ops that haven’t received enough validation receipts yet.
Methods from Deref<Target = SweetConductorHandle>
Handle accessor.
pub async fn call<I, O, F>(&self, zome: &SweetZome, fn_name: F, payload: I) -> O where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
pub async fn call<I, O, F>(&self, zome: &SweetZome, fn_name: F, payload: I) -> O where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
Make a zome call to a Cell, as if that Cell were the caller. Most common case. No capability is necessary, since the authorship capability is automatically granted.
pub async fn call_fallible<I, O, F>(
&self,
zome: &SweetZome,
fn_name: F,
payload: I
) -> ConductorApiResult<O> where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
pub async fn call_fallible<I, O, F>(
&self,
zome: &SweetZome,
fn_name: F,
payload: I
) -> ConductorApiResult<O> where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
Like call
, but without the unwrap
pub async fn call_from<I, O, F>(
&self,
provenance: &AgentPubKey,
cap: Option<CapSecret>,
zome: &SweetZome,
fn_name: F,
payload: I
) -> O where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
pub async fn call_from<I, O, F>(
&self,
provenance: &AgentPubKey,
cap: Option<CapSecret>,
zome: &SweetZome,
fn_name: F,
payload: I
) -> O where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
Make a zome call to a Cell, as if some other Cell were the caller. More general case. Can optionally provide a capability.
pub async fn call_from_fallible<I, O, F>(
&self,
provenance: &AgentPubKey,
cap: Option<CapSecret>,
zome: &SweetZome,
fn_name: F,
payload: I
) -> ConductorApiResult<O> where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
pub async fn call_from_fallible<I, O, F>(
&self,
provenance: &AgentPubKey,
cap: Option<CapSecret>,
zome: &SweetZome,
fn_name: F,
payload: I
) -> ConductorApiResult<O> where
FunctionName: From<F>,
I: Serialize + Debug,
O: DeserializeOwned + Debug,
Like call_from
, but without the unwrap
Manually await shutting down the conductor. Conductors are already cleaned up on drop but this is useful if you need to know when it’s finished cleaning up.
Trait Implementations
Performs the conversion.
Immutably borrows from an owned value. Read more
type Target = SweetConductorHandle
type Target = SweetConductorHandle
The resulting type after dereferencing.
fn from(
original: (Option<SweetConductorHandle>, TestEnvs, ConductorConfig, Vec<DnaFile>, Option<SignalStream>)
) -> SweetConductor
fn from(
original: (Option<SweetConductorHandle>, TestEnvs, ConductorConfig, Vec<DnaFile>, Option<SignalStream>)
) -> SweetConductor
Performs the conversion.
Auto Trait Implementations
impl !RefUnwindSafe for SweetConductor
impl Send for SweetConductor
impl Sync for SweetConductor
impl Unpin for SweetConductor
impl !UnwindSafe for SweetConductor
Blanket Implementations
fn type_id_compat(&self) -> TypeId
fn type_id_compat(&self) -> TypeId
TODO: once 1.33.0 is the minimum supported compiler version, remove Any::type_id_compat and use StdAny::type_id instead. https://github.com/rust-lang/rust/issues/27745 Read more
type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
pub fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
pub fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Mutably borrows from an owned value. Read more
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more