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

source

pub async fn new() -> Result<Self, Error>

Creates a new, empty Realm Builder.

source

pub async fn with_params(params: RealmBuilderParams) -> Result<Self, Error>

source

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.

source

pub async fn build(self) -> Result<RealmInstance, Error>

Creates this realm in a child component collection. By default this happens in the DEFAULT_COLLECTION_NAME collection with an autogenerated name for the instance.

Also by default, after creation it starts the child component by connecting to the fuchsia.component.Binder protocol exposed from the root realm, which gets added automatically by the server.

source

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: Any routes passed through from the parent need to be routed to “#realm_builder” in the test component’s CML file.

NOTE: The returned fuchsia_async::Task must be kept alive until realm teardown.

source

pub async fn with_nested_component_manager_etc( self, component_manager_fragment_only_url: &str, passthrough_from_parent_exempt: &[&str], ) -> Result<(RealmBuilder, Task<()>), Error>

source

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.

This function checks for any protocol routes from parent and arranges for them to be passed through component_manager.

NOTE: Currently, passthrough only supports protocol capabilities.

source

pub async fn add_child_realm( &self, name: impl Into<String>, options: ChildOptions, ) -> Result<SubRealmBuilder, Error>

source

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

source

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

source

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

source

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)
source

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)
source

pub async fn get_realm_decl(&self) -> Result<ComponentDecl, Error>

Returns a copy the decl for this realm

source

pub async fn replace_realm_decl(&self, decl: ComponentDecl) -> Result<(), Error>

Replaces the decl for this realm

source

pub async fn add_route(&self, route: Route) -> Result<(), Error>

Adds a route between components within the realm

source

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.

source

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.

source

pub async fn set_config_value( &self, name: impl Into<ChildRef>, key: &str, value: ConfigValue, ) -> Result<(), Error>

Replaces a value of a given configuration field

source

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.

source

pub async fn add_capability( &self, capability: CapabilityDecl, ) -> Result<(), Error>

Adds a Capability to the root realm.

source

pub async fn add_collection( &self, collection: CollectionDecl, ) -> Result<CollectionRef, Error>

Adds a Collection to the root realm.

source

pub async fn add_environment( &self, environment: EnvironmentDecl, ) -> Result<(), Error>

Adds a Environment to the root realm.

Trait Implementations§

source§

impl Debug for RealmBuilder

source§

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

Formats the value using the given formatter. 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, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

§

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

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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