Struct fuchsia_component_test::RealmBuilder
source · pub struct RealmBuilder { /* private fields */ }
Expand description
The RealmBuilder
struct can be used to assemble and create a component realm at runtime.
For more information on what can be done with this struct, please see the documentation on
fuchsia.dev
Implementations§
source§impl RealmBuilder
impl RealmBuilder
pub async fn with_params(params: RealmBuilderParams) -> Result<Self, Error>
sourcepub async fn initialize(self) -> Result<(String, Task<()>), Error>
pub async fn initialize(self) -> Result<(String, Task<()>), Error>
Initializes the realm, but doesn’t create it. Returns the root URL and the task managing
local component implementations. The caller should pass the URL into
fuchsia.component.Realm#CreateChild
, and keep the task alive until after
fuchsia.component.Realm#DestroyChild
has been called.
sourcepub async fn build(self) -> Result<RealmInstance, Error>
pub async fn build(self) -> Result<RealmInstance, Error>
Creates this realm in a child component collection, using an autogenerated name for the
instance. By default this happens in the DEFAULT_COLLECTION_NAME
collection.
After creation it connects to the fuchsia.component.Binder protocol exposed from the root realm, which gets added automatically by the server.
sourcepub async fn build_with_name(
self,
child_name: impl Into<String>
) -> Result<RealmInstance, Error>
pub async fn build_with_name( self, child_name: impl Into<String> ) -> Result<RealmInstance, Error>
Creates this realm in a child component collection. By default this happens in the
DEFAULT_COLLECTION_NAME
collection.
sourcepub async fn with_nested_component_manager(
self,
component_manager_fragment_only_url: &str
) -> Result<(RealmBuilder, Task<()>), Error>
pub async fn with_nested_component_manager( self, component_manager_fragment_only_url: &str ) -> Result<(RealmBuilder, Task<()>), Error>
Initializes the created realm under an instance of component manager, specified by the given fragment-only URL. Returns the realm containing component manager.
This function should be used to modify the component manager realm. Otherwise, to directly
build the created realm under an instance of component manager, use
build_in_nested_component_manager()
.
Note that any routes with a source of parent
in the root realm will need to also be used
in component manager’s manifest and listed as a namespace capability in its config.
Note that any routes with a target of parent
from the root realm will result in exposing
the capability to component manager, which is rather useless by itself. Component manager
does expose the hub though, which could be traversed to find an exposed capability.
Note that the returned fuchsia_async::Task
must be kept alive until realm teardown.
sourcepub async fn build_in_nested_component_manager(
self,
component_manager_fragment_only_url: &str
) -> Result<RealmInstance, Error>
pub async fn build_in_nested_component_manager( self, component_manager_fragment_only_url: &str ) -> Result<RealmInstance, Error>
Launches a nested component manager which will run the created realm (along with any local components in the realm). This component manager must be referenced by a fragment-only URL.
Note that any routes with a source of parent
in the root realm will need to also be used
in component manager’s manifest and listed as a namespace capability in its config.
Note that any routes with a target of parent
from the root realm will result in exposing
the capability to component manager, which is rather useless by itself. Component manager
does expose the hub though, which could be traversed to find an exposed capability.
pub async fn add_child_realm( &self, name: impl Into<String>, options: ChildOptions ) -> Result<SubRealmBuilder, Error>
sourcepub async fn add_local_child(
&self,
name: impl Into<String>,
local_component_implementation: impl Fn(LocalComponentHandles) -> BoxFuture<'static, Result<(), Error>> + Sync + Send + 'static,
options: ChildOptions
) -> Result<ChildRef, Error>
pub async fn add_local_child( &self, name: impl Into<String>, local_component_implementation: impl Fn(LocalComponentHandles) -> BoxFuture<'static, Result<(), Error>> + Sync + Send + 'static, options: ChildOptions ) -> Result<ChildRef, Error>
Adds a new component with a local implementation to the realm
sourcepub async fn add_child(
&self,
name: impl Into<String>,
url: impl Into<String>,
options: ChildOptions
) -> Result<ChildRef, Error>
pub async fn add_child( &self, name: impl Into<String>, url: impl Into<String>, options: ChildOptions ) -> Result<ChildRef, Error>
Adds a new component to the realm by URL
sourcepub async fn add_child_from_decl(
&self,
name: impl Into<String>,
decl: ComponentDecl,
options: ChildOptions
) -> Result<ChildRef, Error>
pub async fn add_child_from_decl( &self, name: impl Into<String>, decl: ComponentDecl, options: ChildOptions ) -> Result<ChildRef, Error>
Adds a new component to the realm with the given component declaration
sourcepub async fn get_component_decl(
&self,
name: impl Into<ChildRef>
) -> Result<ComponentDecl, Error>
pub async fn get_component_decl( &self, name: impl Into<ChildRef> ) -> Result<ComponentDecl, Error>
Returns a copy of the decl for a child in this realm. This operation is only supported for:
- A component with a local implementation
- A component added with a fragment-only component URL (typically,
components bundled in the same package as the realm builder client,
sharing the same
/pkg
directory, for example,#meta/other-component.cm
; see https://fuchsia.dev/fuchsia-src/reference/components/url#relative-fragment-only). - An automatically generated realm (such as the root)
sourcepub async fn replace_component_decl(
&self,
name: impl Into<ChildRef>,
decl: ComponentDecl
) -> Result<(), Error>
pub async fn replace_component_decl( &self, name: impl Into<ChildRef>, decl: ComponentDecl ) -> Result<(), Error>
Replaces the decl for a child of this realm. This operation is only supported for:
- A component with a local implementation
- A component added with a fragment-only component URL (typically,
components bundled in the same package as the realm builder client,
sharing the same
/pkg
directory, for example,#meta/other-component.cm
; see https://fuchsia.dev/fuchsia-src/reference/components/url#relative-fragment-only). - An automatically generated realm (such as the root)
sourcepub async fn get_realm_decl(&self) -> Result<ComponentDecl, Error>
pub async fn get_realm_decl(&self) -> Result<ComponentDecl, Error>
Returns a copy the decl for this realm
sourcepub async fn replace_realm_decl(&self, decl: ComponentDecl) -> Result<(), Error>
pub async fn replace_realm_decl(&self, decl: ComponentDecl) -> Result<(), Error>
Replaces the decl for this realm
sourcepub async fn add_route(&self, route: Route) -> Result<(), Error>
pub async fn add_route(&self, route: Route) -> Result<(), Error>
Adds a route between components within the realm
sourcepub async fn init_mutable_config_from_package(
&self,
name: impl Into<ChildRef>
) -> Result<(), Error>
pub async fn init_mutable_config_from_package( &self, name: impl Into<ChildRef> ) -> Result<(), Error>
Load the component’s structured config values from its package before applying overrides.
sourcepub async fn init_mutable_config_to_empty(
&self,
name: impl Into<ChildRef>
) -> Result<(), Error>
pub async fn init_mutable_config_to_empty( &self, name: impl Into<ChildRef> ) -> Result<(), Error>
Allow setting config values without loading any packaged values first.
sourcepub async fn set_config_value(
&self,
name: impl Into<ChildRef>,
key: &str,
value: ConfigValueSpec
) -> Result<(), Error>
pub async fn set_config_value( &self, name: impl Into<ChildRef>, key: &str, value: ConfigValueSpec ) -> Result<(), Error>
Replaces a value of a given configuration field
sourcepub async fn set_config_value_bool(
&self,
name: impl Into<ChildRef>,
key: &str,
value: bool
) -> Result<(), Error>
pub async fn set_config_value_bool( &self, name: impl Into<ChildRef>, key: &str, value: bool ) -> Result<(), Error>
Replaces a boolean value of a given configuration field
sourcepub async fn set_config_value_uint8(
&self,
name: impl Into<ChildRef>,
key: &str,
value: u8
) -> Result<(), Error>
pub async fn set_config_value_uint8( &self, name: impl Into<ChildRef>, key: &str, value: u8 ) -> Result<(), Error>
Replaces a uint8 value of a given configuration field
sourcepub async fn set_config_value_uint16(
&self,
name: impl Into<ChildRef>,
key: &str,
value: u16
) -> Result<(), Error>
pub async fn set_config_value_uint16( &self, name: impl Into<ChildRef>, key: &str, value: u16 ) -> Result<(), Error>
Replaces a uint16 value of a given configuration field
sourcepub async fn set_config_value_uint32(
&self,
name: impl Into<ChildRef>,
key: &str,
value: u32
) -> Result<(), Error>
pub async fn set_config_value_uint32( &self, name: impl Into<ChildRef>, key: &str, value: u32 ) -> Result<(), Error>
Replaces a uint32 value of a given configuration field
sourcepub async fn set_config_value_uint64(
&self,
name: impl Into<ChildRef>,
key: &str,
value: u64
) -> Result<(), Error>
pub async fn set_config_value_uint64( &self, name: impl Into<ChildRef>, key: &str, value: u64 ) -> Result<(), Error>
Replaces a uint64 value of a given configuration field
sourcepub async fn set_config_value_int8(
&self,
name: impl Into<ChildRef>,
key: &str,
value: i8
) -> Result<(), Error>
pub async fn set_config_value_int8( &self, name: impl Into<ChildRef>, key: &str, value: i8 ) -> Result<(), Error>
Replaces a int8 value of a given configuration field
sourcepub async fn set_config_value_int16(
&self,
name: impl Into<ChildRef>,
key: &str,
value: i16
) -> Result<(), Error>
pub async fn set_config_value_int16( &self, name: impl Into<ChildRef>, key: &str, value: i16 ) -> Result<(), Error>
Replaces a int16 value of a given configuration field
sourcepub async fn set_config_value_int32(
&self,
name: impl Into<ChildRef>,
key: &str,
value: i32
) -> Result<(), Error>
pub async fn set_config_value_int32( &self, name: impl Into<ChildRef>, key: &str, value: i32 ) -> Result<(), Error>
Replaces a int32 value of a given configuration field
sourcepub async fn set_config_value_int64(
&self,
name: impl Into<ChildRef>,
key: &str,
value: i64
) -> Result<(), Error>
pub async fn set_config_value_int64( &self, name: impl Into<ChildRef>, key: &str, value: i64 ) -> Result<(), Error>
Replaces a int64 value of a given configuration field
sourcepub async fn set_config_value_string(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl ToString
) -> Result<(), Error>
pub async fn set_config_value_string( &self, name: impl Into<ChildRef>, key: &str, value: impl ToString ) -> Result<(), Error>
Replaces a string value of a given configuration field
sourcepub async fn set_config_value_bool_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = bool>
) -> Result<(), Error>
pub async fn set_config_value_bool_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = bool> ) -> Result<(), Error>
Replaces a boolean vector value of a given configuration field
sourcepub async fn set_config_value_uint8_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = u8>
) -> Result<(), Error>
pub async fn set_config_value_uint8_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = u8> ) -> Result<(), Error>
Replaces a uint8 vector value of a given configuration field
sourcepub async fn set_config_value_uint16_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = u16>
) -> Result<(), Error>
pub async fn set_config_value_uint16_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = u16> ) -> Result<(), Error>
Replaces a uint16 vector value of a given configuration field
sourcepub async fn set_config_value_uint32_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = u32>
) -> Result<(), Error>
pub async fn set_config_value_uint32_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = u32> ) -> Result<(), Error>
Replaces a uint32 vector value of a given configuration field
sourcepub async fn set_config_value_uint64_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = u64>
) -> Result<(), Error>
pub async fn set_config_value_uint64_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = u64> ) -> Result<(), Error>
Replaces a uint64 vector value of a given configuration field
sourcepub async fn set_config_value_int8_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = i8>
) -> Result<(), Error>
pub async fn set_config_value_int8_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = i8> ) -> Result<(), Error>
Replaces a int8 vector value of a given configuration field
sourcepub async fn set_config_value_int16_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = i16>
) -> Result<(), Error>
pub async fn set_config_value_int16_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = i16> ) -> Result<(), Error>
Replaces a int16 vector value of a given configuration field
sourcepub async fn set_config_value_int32_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = i32>
) -> Result<(), Error>
pub async fn set_config_value_int32_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = i32> ) -> Result<(), Error>
Replaces a int32 vector value of a given configuration field
sourcepub async fn set_config_value_int64_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = i64>
) -> Result<(), Error>
pub async fn set_config_value_int64_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = i64> ) -> Result<(), Error>
Replaces a int64 vector value of a given configuration field
sourcepub async fn set_config_value_string_vector(
&self,
name: impl Into<ChildRef>,
key: &str,
value: impl IntoIterator<Item = impl ToString>
) -> Result<(), Error>
pub async fn set_config_value_string_vector( &self, name: impl Into<ChildRef>, key: &str, value: impl IntoIterator<Item = impl ToString> ) -> Result<(), Error>
Replaces a string vector value of a given configuration field
sourcepub async fn read_only_directory(
&self,
directory_name: impl Into<String>,
to: Vec<impl Into<Ref>>,
directory_contents: DirectoryContents
) -> Result<(), Error>
pub async fn read_only_directory( &self, directory_name: impl Into<String>, to: Vec<impl Into<Ref>>, directory_contents: DirectoryContents ) -> Result<(), Error>
Creates and routes a read-only directory capability to the given targets. The directory capability will have the given name, and anyone accessing the directory will see the given contents.