class EnclosedGuest

Defined at line 42 of file ../../src/virtualization/tests/lib/enclosed_guest.h

EnclosedGuest is a base class that defines an guest environment and instance

encapsulated in an EnclosingEnvironment. A derived class must define the

|LaunchInfo| to send to the guest environment controller, as well as methods

for waiting for the guest to be ready and running test utilities. Most tests

will derive from either ZirconEnclosedGuest or DebianEnclosedGuest below and

override LaunchInfo only. EnclosedGuest is designed to be used with

GuestTest.

Protected Members

InterfacePtr guest_
InterfacePtr vsock_

Public Methods

void EnclosedGuest (async_dispatcher_t * dispatcher, RunLoopUntilFunc run_loop_until)

Defined at line 47 of file ../../src/virtualization/tests/lib/enclosed_guest.h

template <typename Interface>
fidl::InterfacePtr<Interface> ConnectToService (const std::string & interface_name)

Defined at line 119 of file ../../src/virtualization/tests/lib/enclosed_guest.h

uint32_t GetGuestCid ()

Defined at line 124 of file ../../src/virtualization/tests/lib/enclosed_guest.h

FakeNetstack * GetNetstack ()

Defined at line 126 of file ../../src/virtualization/tests/lib/enclosed_guest.h

FakeMemoryPressureProvider * GetMemoryPressureProvider ()

Defined at line 127 of file ../../src/virtualization/tests/lib/enclosed_guest.h

std::optional<GuestConsole> & GetConsole ()

Defined at line 131 of file ../../src/virtualization/tests/lib/enclosed_guest.h

void ~EnclosedGuest ()

Defined at line 192 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t Start (zx::time deadline)

Start the guest. `Start` is the preferred way to start the guest. If the realm

needs to be customized, `Start` can be replaced by a call to `InstallInRealm`

followed by a call to `LaunchInRealm`. This should follow a pattern like:

```

GuestLaunchInfo guest_launch_info;

realm_builder = RealmBuilder::Create();

InstallInRealm(realm_builder, guest_launch_info);

...

... // customize realm_builder

...

RealmRoot realm_root(realm_builder.Build(dispatcher));

LaunchInRealm(realm_root, guest_launch_info, deadline);

```

Abort with ZX_ERR_TIMED_OUT if we reach `deadline` before the guest has started.

Defined at line 211 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

void InstallInRealm (component_testing::Realm & realm, GuestLaunchInfo & guest_launch_info)

Defined at line 239 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t LaunchInRealm (std::unique_ptr<sys::ServiceDirectory> services, GuestLaunchInfo & guest_launch_info, zx::time deadline)

Defined at line 301 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t BuildLaunchInfo (GuestLaunchInfo * launch_info)

Provides guest specific launch info, called by Start.

zx_status_t Stop (zx::time deadline)

Attempt to gracefully stop the guest.

Abort with ZX_ERR_TIMED_OUT if we reach `deadline` first.

Defined at line 524 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t ForceRestart (GuestLaunchInfo & guest_launch_info, zx::time deadline)

Force stop the guest, and restart it. This can be used to ensure that devices are cleanly

brought down and up without needing to destroy the VMM component.

Aborts with ZX_ERR_TIMED_OUT if we reach `deadline` first.

Defined at line 419 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t Execute (const std::vector<std::string> & argv, const std::unordered_map<std::string, std::string> & env, zx::time deadline, std::string * result, int32_t * return_code)

Execute |command| on the guest serial and wait for the |result|.

Defined at line 126 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

zx_status_t RunUtil (const std::string & util, const std::vector<std::string> & argv, zx::time deadline, std::string * result)

Run a test util named |util| with |argv| in the guest and wait for the

|result|.

Defined at line 532 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

bool RunLoopUntil (fit::function<bool ()> condition, zx::time deadline)

Defined at line 537 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

std::vector<std::string> GetTestUtilCommand (const std::string & util, const std::vector<std::string> & argv)

Return a shell command for a test utility named |util| with the given

|argv| in the guest. The result may be passed directly to |Execute|

to actually run the command.

GuestKernel GetGuestKernel ()
fit::result< ::fuchsia::virtualization::GuestError> ConnectToBalloon (::fidl::InterfaceRequest< ::fuchsia::virtualization::BalloonController> controller)

Defined at line 440 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

fit::result< ::fuchsia::virtualization::GuestError> GetHostVsockEndpoint (::fidl::InterfaceRequest< ::fuchsia::virtualization::HostVsockEndpoint> endpoint)

Defined at line 496 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

fit::result< ::fuchsia::virtualization::GuestError> ConnectToMem (::fidl::InterfaceRequest< ::fuchsia::virtualization::MemController> controller)

Defined at line 468 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

DisplayInfo WaitForDisplay ()

Defined at line 551 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

Protected Methods

zx_status_t SetupVsockServices (zx::time deadline, GuestLaunchInfo & guest_launch_info)

Invoked after the guest |Realm| has been created but before the guest

has been launched.

Any vsock ports that are listened on here are guaranteed to be ready to

accept connections before the guest attempts to connect to them.

Defined at line 157 of file ../../src/virtualization/tests/lib/enclosed_guest.h

zx_status_t WaitForSystemReady (zx::time deadline)

Waits until the guest is ready to run test utilities, called by Start.

zx_status_t ShutdownAndWait (zx::time deadline)

Waits for the guest to perform a graceful shutdown.

std::string ShellPrompt ()

Records