Reviewed on: 2021-10-01
session_manager is the component that runs and manages sessions. For more information on what sessions are and what roles they play in products built on Fuchsia, see Session Framework
Add the session_manager component to builds by including --with-base //src/session in the fx set invocation followed by rebuilding and re-paving the device.
Product configurations built on Session Framework (such as fx set workstation.x64) include //src/session 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 will launch a session on boot if the build contains a session_config configuration.
To boot into session, create a configuration file that specifies which session to launch on boot:
{ "session_url": "fuchsia-pkg://fuchsia.com/your_package#meta/your_session.cm" }
Add to your BUILD.gn file:
import("//src/session/build/session_config.gni")
session_config("your_session_config") {
config = "path/to/config.json"
}
Then, ensure that the target :your_session_config is included in the base image (for example, using --with-base, or as a direct dependency of a product build group).
Re-build, re-pave, and restart your device and it will boot into session_manager and launch your session.
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.