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.

  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)
    2. Find the USB Ethernet Interface, then click the + (Plus) symbol (screenshot)
    3. In the New Profile window, in the “Identity” section, Create an unique name; i.e. FuchsiaDevice1 (screenshot)
    4. Switch to “IPv4” tab and select “Disable” (screenshot)
    5. Switch to “IPv6” tab and select “Link-Local Only” (screenshot)
    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

    $ 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.
      Bluetooth_Test.yaml
      
      to point our testbeds to those devices.
      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
      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!

$ 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