class EnclosedGuest

Defined at line 43 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

zx_status_t BuildLaunchInfo (GuestLaunchInfo * launch_info)

Provides guest specific launch info, called by Start.

void EnclosedGuest (async_dispatcher_t * dispatcher, RunLoopUntilFunc run_loop_until)

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

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

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

uint32_t GetGuestCid ()

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

FakeNetstack * GetNetstack ()

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

FakeMemoryPressureProvider * GetMemoryPressureProvider ()

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

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 128 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

std::optional<GuestConsole> & GetConsole ()

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

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 ()
void ~EnclosedGuest ()

Defined at line 194 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 213 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

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

Defined at line 241 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 303 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

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 526 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 421 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 534 of file ../../src/virtualization/tests/lib/enclosed_guest.cc

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

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

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

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

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

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

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

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

DisplayInfo WaitForDisplay ()

Defined at line 553 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 158 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