Reviewed on: 2020-02-04
This directory contains an example implementation of a session that instantiates a single element proposer.
The element proposer connects to the ElementManager
service offered by the session, and uses that service to add a simple_element
to the session.
The simple_element
then connects to the ElementPing
service exposed to it by the session notifies the session that it has been successfully instantiated.
The element session is configured to:
element_proposer
.ElementManagement
library.ElementManager
service.ElementPing
service.ElementManager
service to the element_proposer
child.ElementPing
service to the child collection mentioned above.Details of how this is done can be found in the element_session.cml
file.
Once the session is launched, it exposes the aforementioned services and starts handling requests.
The element proposer is configured to use the ElementManager
service. Details of how this is done can be found in the element_proposer.cml
file.
Once the element proposer is started it connects to the ElementManager
service and attempts to add an element (simple_element
) to the session.
The simple element is configured to use the ElementPing
service. Details of how this is done can be found in the simple_element.cml
file.
Once the simple element is started, it will call ElementPing::Ping()
. The session receives the ping and log a confirmation.
element_session
The example sessions are included in the build when you include //src/session
with your fx set
:
fx set <PRODUCT>.<BOARD> --with-base=//src/session,//src/session/bin/session_manager:session_manager.config
To see a list of possible products, run: fx list-products
.
To see a list of possible boards, run: fx list-boards
.
element_session
element_session
To boot into element_session
, edit the session manager cml file to set the element session's component url as the argument:
"args": [ "-s", "fuchsia-pkg://fuchsia.com/element_session#meta/element_session.cm" ],
and run
fx update
To build the relevant components and boot into the session, follow the instructions in //src/session/README.md.
element_session
from Command LineTo instruct a running session_manager
to launch the session, run:
fx shell session_control launch fuchsia-pkg://fuchsia.com/element_session#meta/element_session.cm
The last command should output a message stating that the session was launched. fx log
should show a message saying element's ping has been received:
[00016.031278][25622][25624][element_session] INFO: Element did ping session.
Add --with //src/session:tests
to your existing fx set
command will include the element_session
unit tests in the build. The resulting fx set
looks like:
fx set <PRODUCT>.<BOARD> --with-base=//src/session,//src/session/bin/session_manager:session_manager.config --with //src/session:tests
To see a list of possible products, run: fx list-products
.
To see a list of possible boards, run: fx list-boards
.
The tests are available in the element_session_tests
, element_proposer_tests
, and simple_element_tests
packages.
$ fx test element_session_tests $ fx test element_proposer_tests $ fx test simple_element_tests
The entry point and session units tests are located in src/main.rs
.