blob: 72b72da8e7be982a20dcf234467126b95aae8823 [file] [log] [blame] [view]
# Multi-device local testing guide
This README will document the steps needed to setup multiple Fuchsia devices for
Lacewing testing. We will be using two VIM3 devices running `core.vim3` build
and run a Lacewing test that uses both these devices.
Before proceeding further please ensure you have completed the
[Lacewing Getting Started Guide] guide.
## Steps
1. Connect the two VIM3 devices to the host machine.
2. If needed, [build and flash Fuchsia on VIM3s](https://fuchsia.dev/fuchsia-src/development/hardware/khadas-vim3).
3. Stabilize the connection for multi-device setup. For each device, follow the
below steps
1. Navigate to Network Settings menu of your Linux host
([screenshot](../images/multi_device_4a.png))
2. Find the USB Ethernet Interface, then click the + (Plus) symbol
([screenshot](../images/multi_device_4b.png))
3. In the New Profile window, in the "Identity" section, Create an unique name; i.e. FuchsiaDevice1
([screenshot](../images/multi_device_4c.png))
4. Switch to "IPv4" tab and select "Disable"
([screenshot](../images/multi_device_4d.png))
5. Switch to "IPv6" tab and select "Link-Local Only"
([screenshot](../images/multi_device_4e.png))
6. Then click Add on the top right.
If this was done correctly, you will see the newly created profile under
"USB Ethernet".
Click on the name of the profile you created. If done correctly, a Checkmark
will appear next to the new name profile.
4. Afterwards, ensure that this stable connection is complete via
```sh
$ ffx target list
NAME SERIAL TYPE STATE ADDRS/IP RCS
fuchsia-f80f-f96b-6f59 04140YCABZZ25M core.vim3 Product [fe80::4a9c:d65:1e95:999e%enxf80ff96b6f58] Y
fuchsia-201f-3b62-e9d3* 1C281F4ABZZ07Z core.vim3 Product [fe80::f02f:c160:bfbf:3690%enx201f3b62e9d2] Y
```
5. Finally, determine if you need to provide a local Mobly config yaml file.
1. If any combination of the connected devices can be used during the test,
skip this step.
2. If only specific subsets of connected devices can be used for testing,
provide a handcrafted local Mobly config YAML file.
See example below of a local Mobly config YAML.
```sh
Bluetooth_Test.yaml
```
to point our testbeds to those devices.
```yaml
TestBeds:
- Name: Testbed-One-BT
Controllers:
FuchsiaDevice:
- name: fuchsia-201f-3b62-e9d3
- name: fuchsia-f80f-f96b-6f59
```
Save this file inside the same folder as the test.
Finally, update the BUILD.gn that you had created in
[Lacewing Getting Started Guide]. Below is an example of an updated
BUILD.gn with the local_config_source for this multi device test
```sh
python_mobly_test("test_multi_device") {
main_source = "test_multi_device.py"
# The library below provides device interaction APIs.
libraries = [
"//src/testing/end_to_end/honeydew",
"//src/testing/end_to_end/mobly_base_tests:fuchsia_base_test",
]
local_config_source = "Bluetooth_Test.yaml"
params_source = "params.yaml"
}
```
## Execution
Finally, let's run the test!
```sh
$ fx set core.vim3 \
--args=core_realm_shards+="[\"//src/testing/sl4f:sl4f_core_shard\"]" \
--with //src/testing/end_to_end/examples
$ fx test //src/testing/end_to_end/examples/test_multi_device:multi_device_test_sl4f --e2e --output
```
[Lacewing Getting Started Guide]: ../../README.md#getting-started-30-mins