Reviewed on: 2021-10-01
session_manager
is the component that runs and manages session components.
Add the session_manager
component to builds by including --with-base //src/session/bin/session_manager
in the fx set
invocation followed by rebuilding and re-paving the device.
Product configurations built on Session Framework (such as fx set workstation_eng.x64
) include //src/session/bin/session_manager
by default.
session_manager
is launched in one of two ways: manually or automatically on system boot.
In general, running manually is useful during development, while running on boot is desirable for a production configuration.
Use the [ffx session
]((/docs/development/tools/ffx/getting-started.md) tool to launch a specific session:
ffx session launch fuchsia-pkg://fuchsia.com/your_session#meta/your_session.cm
session_manager
attempts to launch a session on boot based on the contents of its session_url
configuration parameter.
To boot into a session, include session_manager
and the session component in the base package set and assign the URL of the session component to the product configuration:
fx set core.qemu-x64 \ --with-base //src/session/bin/session_manager \ --with-base //path/to/your_session \ --args=product_config.session_url="fuchsia-pkg://fuchsia.com/your_package#meta/your_session.cm"
This can also be configured directly in a product's definition *.gni
files or via fx args
.
Re-build, re-pave, and restart your device and it will boot into session_manager
and launch your session.
TODO(fxbug.dev/126266): Update this documentation once we move this functionality to only rely on structured config.
If your development device runs a product that specifies product_config.session_url
, you may nonetheless want to stop the session from launching (e.g., to avoid log spam from the session, or make changes to the device's state before the session launches).
You can disable autolaunching without reflashing or OTAing your device by creating an empty file at /data/session-manager/noautolaunch
.
To prevent your device from autolaunching the session, run:
fx shell 'mkdir -p /data/session-manager && echo "" > /data/session-manager/noautolaunch'
To re-enable autolaunching, run:
fx shell 'rm /data/session-manager/noautolaunch'
The setting will take effect the next time session-manager
restarts.
Unit tests for session_manager
are included in the session_manager_tests
package, and integration tests are included in the session_manager_integration_tests
package.
Both can be included in your build by adding --with //src/session:tests
to your fx set
.
fx test session_manager_tests fx test session_manager_integration_tests
The entry point for session_manager
is in src/main.rs
with implementation details in other files within src/
.
Unit tests are co-located with the code, while integration tests are in //src/session/tests
.