This library contains a set of tools to streamline the creation of components that expose isolated devmgrs.
To create your own version of an isolated devmgr, you first need to define a build rule for it, which will look like:
import("//src/lib/isolated_devmgr/isolated_devmgr.gni") isolated_devmgr_component("my-devmgr") { args = [ "--svc_name=fuchsia.example.MyDevmgr", "--load_driver=/boot/driver/my_driver1.so", "--load_driver=/boot/driver/my_driver2.so", "--wait_for=sys/my_driver" ] deps = [ "//src/devices/tests/sysdev", "//path/to/my/driver:my-driver", ] }
The args
parameter configures its behavior for your own use case. You can see all the supported arguments here. The main arguments you typically will provide are svc_name
and load_driver
. svc_name
configures the name of the devfs
namespace that will be exposed to the component's directory request and load_driver
(which can be expressed multiple times) lists drivers to load when it is launched. device_vid_pid_did
is optional argument which can be used to create a device.
With this custom isolated devmgr, you can then use it in test cases by either launching it manually using the fuchsia-url for your package (in this example fuchsia-pkg://fuchsia.com/my-package#meta/my-devmgr.cmx
) or you can inject it as a service and use service injection in your test component's manifest, like so:
{ "facets": { "fuchsia.test": { "injected-services" : { "fuchsia.example.MyDevmgr": "fuchsia-pkg://fuchsia.com/my-package#meta/my-devmgr.cmx" } } }, "program": { "binary": "test/my_devmgr_test" }, "sandbox": { "services": [ "fuchsia.example.MyDevmgr" ] } }
In either case you will want to make sure to list the isolated devmgr as a dep
for your test component.
The device tree and the diagnostics are hosted in the outgoing directory of the test component. In order to view the inspect files -
fx shell
and find the hub path to the test component. E.g:find /hub -name fs-management-devmgr.cmx /hub/r/test_env_af569d6f/31969/c/fs-management-devmgr.cmx
fx iquery show-file /hub/r/test_env_af569d6f/31969/c/fs-management-devmgr.cmx/32468/out/dev/diagnostics/driver_manager/dm.inspect