# Matter RPC Verification Tool

## Overview

The Matter RPC verification tool can help verify if the Matter SDK (or Matter solution) has the required RPCs defined in the [Matter RPC guidelines document](https://docs.google.com/document/d/1uOFa_xLk7H03BnrTGNE5gV3TtiGoEfIE6Yh2fctSeMc), and offer a free stress test suite to help verify the SDK software quality and robustness.

With RPC implemented in the SDK (or the Matter solution), on-device automation testing becomes feasible, such as regression tests (ex: automatic execution every x hour) and stress tests (ex: 100 times device boot up test) can be easily enabled to catch bugs in an early stage.


## Features

1. Provides simple tests to verify if the SDK or the Matter solution contains all the required RPCs.
2. Provides stress test suites to test the quality and robustness of the SDK or the Matter solution.
3. Generates test result in compressed file for the above tests.


## Prerequisites

Make sure the host meets the following prerequisites before setting up the RPC tool.


### Host Minimum Requirements

1. Ubuntu LTS or any other Linux-based environments.
2. `Python3` installed with version `>=3.7`
3. Internet access.
4. Device debug interface (Typically UART over USB)


## Setup tool

1. Clone the repository at ```$HOME``` (or any desired place):
   ```
   $ cd $HOME
   $ git clone https://testsuite-smarthome-matter.googlesource.com/matter_rpc_verification
   ```

2. Change directory to the tool folder:
   ```
   $ cd $HOME/matter_rpc_verification/rpc_tool
   ```

3. Run the script to install packages:
   ```
   $ sh verify_rpc.sh build
   ```

   Or use the below command if you're running on Ubuntu:
   ```
   $ ./verify_rpc.sh build
   ```

## Usage

### Run verification test

To check if the SDK contains the required RPCs: `firmware_version` RPC, `reboot` RPC, `factory_reset` RPC, `descriptor cluster` RPC and `attribute_service` RPC.

1. Connect the device (flashed with the SDK you want to test) to the machine (the host where you installed this tool).

2. Inside the ```rpc_tool``` directory, run the script:
   ```
   $ sh verify_rpc.sh run
   ```

   Or use the below command if you're running on Ubuntu:
   ```
   $ ./verify_rpc.sh run
   ```

3. The tool will ask you to select the device to test, use arrow keys on the keyboard to select. (The tool only supports running 1 device at a time).

4. The tool will start testing the RPC functionality of the device, a successful test result looks like:

```
$ sh verify_rpc.sh run
[RpcTest] 06-09 11:42:34.896 INFO ==========> MatterRpcTest <==========
[RpcTest] 06-09 11:42:35.578 INFO [Test] test_rpc_attribute_service
[RpcTest] 06-09 11:42:36.624 INFO [Test] test_rpc_attribute_service PASS
[RpcTest] 06-09 11:42:36.629 INFO [Test] test_rpc_descriptor_cluster
[RpcTest] 06-09 11:42:37.657 INFO [Test] test_rpc_descriptor_cluster PASS
[RpcTest] 06-09 11:42:37.661 INFO [Test] test_rpc_factory_reset
[RpcTest] 06-09 11:42:38.686 INFO [Test] test_rpc_factory_reset PASS
[RpcTest] 06-09 11:42:38.691 INFO [Test] test_rpc_firmware_version
[RpcTest] 06-09 11:42:39.848 WARNING Failed to decode frame: frame check sequence failure; discarded 3962 bytes
[RpcTest] 06-09 11:42:40.880 INFO [Test] test_rpc_firmware_version PASS
[RpcTest] 06-09 11:42:40.884 INFO [Test] test_rpc_reboot
[RpcTest] 06-09 11:42:41.898 INFO [Test] test_rpc_reboot PASS
[RpcTest] 06-09 11:42:42.722 INFO Summary for test class MatterRpcTest: Error 0, Executed 5, Failed 0, Passed 5, Requested 5, Skipped 0
[RpcTest] 06-09 11:42:42.723 INFO Summary for test run RpcTest@06-09-2022_11-42-34-895:
Total time elapsed 7.827033718116581s
Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-09-2022_11-42-34-895"
Test results: Error 0, Executed 5, Failed 0, Passed 5, Requested 5, Skipped 0
```

A failing test result looks like (device is not responsive to some RPCs):

```
$ sh verify_rpc.sh run
[RpcTest] 06-09 11:48:32.649 INFO ==========> MatterRpcTest <==========
[RpcTest] 06-09 11:48:33.251 INFO [Test] test_rpc_attribute_service
[RpcTest] 06-09 11:48:34.318 INFO [Test] test_rpc_attribute_service PASS
[RpcTest] 06-09 11:48:34.323 INFO [Test] test_rpc_descriptor_cluster
[RpcTest] 06-09 11:48:35.354 INFO [Test] test_rpc_descriptor_cluster PASS
[RpcTest] 06-09 11:48:35.359 INFO [Test] test_rpc_factory_reset
[RpcTest] 06-09 11:48:36.373 INFO [Test] test_rpc_factory_reset PASS
[RpcTest] 06-09 11:48:36.374 INFO [Test] test_rpc_firmware_version
[RpcTest] 06-09 11:48:36.624 WARNING Failed to decode frame: frame check sequence failure; discarded 10 bytes
[RpcTest] 06-09 11:48:36.739 WARNING Failed to decode frame: frame check sequence failure; discarded 54 bytes
[RpcTest] 06-09 11:48:39.375 ERROR Exception occurred in test_rpc_firmware_version.
Traceback (most recent call last):
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 179, in _get_responses
    response = self._response_queue.get(True, timeout_s)
_queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/mobly/base_test.py", line 756, in exec_one_test
    test_method()
  File "/home/user/rainier_agent/rpc_tool/push_code/rainier-engprod/rpc_tool/./verify_rpc/rpc_tool.py", line 131, in test_rpc_firmware_version
    ack, device_info = self.dut.device_service.GetDeviceInfo()
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/impl.py", line 383, in call
    return self.invoke(
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 261, in wait
    return self._unary_wait(timeout_s)
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 142, in _unary_wait
    for _ in self._get_responses(timeout_s=timeout_s):
  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 189, in _get_responses
    raise RpcTimeout(self._rpc, timeout_s)
pw_rpc.callback_client.errors.RpcTimeout: No response received for chip.rpc.Device.GetDeviceInfo after 3 s
[RpcTest] 06-09 11:48:40.380 INFO [Test] test_rpc_firmware_version ERROR
[RpcTest] 06-09 11:48:40.382 INFO [Test] test_rpc_reboot
[RpcTest] 06-09 11:48:40.395 WARNING Failed to decode frame: frame check sequence failure; discarded 41 bytes
[RpcTest] 06-09 11:48:41.457 INFO [Test] test_rpc_reboot PASS
[RpcTest] 06-09 11:48:42.390 INFO Summary for test class MatterRpcTest: Error 1, Executed 5, Failed 0, Passed 4, Requested 5, Skipped 0
[RpcTest] 06-09 11:48:42.401 INFO Summary for test run RpcTest@06-09-2022_11-48-32-648:
Total time elapsed 9.75229246309027s
Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-09-2022_11-48-32-648"
Test results: Error 1, Executed 5, Failed 0, Passed 4, Requested 5, Skipped 0
```

5. The test result will be compressed in a zip file ```(rpc_test_result-xxxx.zip)``` under the same directory, which contains the device's logs and test framework logs during execution.

```
$ ls
'rpc_test_result-2022-06-08 14:50:26.499469.zip'   verify_rpc   verify_rpc.sh
```


### Run stress test

To run stress test suite on the SDK (or Matter solution), verifying the software quality and robustness.
The tool will run 50 iterations of each RPC tests.

1. Connect the device to the machine.

2. Inside the ```rpc_tool``` directory, run the script:
   ```
   $ sh verify_rpc.sh stress
   ```

   Or use the below command if you're running on Ubuntu:
   ```
   $ ./verify_rpc.sh stress
   ```

3. Select the device you want to test, then the tool will start stress testing. A successful test result looks like:

```
$ sh verify_rpc.sh stress
[RpcTest] 06-08 11:58:13.719 INFO ==========> MatterRpcStressTest <==========
[RpcTest] 06-08 11:58:15.136 INFO [Test] test_rpc_attribute_service
[RpcTest] 06-08 11:58:16.205 INFO [Test] test_rpc_attribute_service PASS
[RpcTest] 06-08 11:58:16.209 INFO [Test] test_rpc_descriptor_cluster
[RpcTest] 06-08 11:58:17.234 INFO [Test] test_rpc_descriptor_cluster PASS
[RpcTest] 06-08 11:58:17.238 INFO [Test] test_rpc_factory_reset
[RpcTest] 06-08 11:58:18.255 INFO [Test] test_rpc_factory_reset PASS
[RpcTest] 06-08 11:58:18.260 INFO [Test] test_rpc_firmware_version
[RpcTest] 06-08 11:58:19.428 WARNING Failed to decode frame: frame check sequence failure; discarded 3962 bytes
[RpcTest] 06-08 11:58:20.435 INFO [Test] test_rpc_firmware_version PASS
[RpcTest] 06-08 11:58:20.441 INFO [Test] test_rpc_reboot
[RpcTest] 06-08 11:58:21.458 INFO [Test] test_rpc_reboot PASS
[RpcTest] 06-08 11:58:21.464 INFO [Test] test_reboot_0
[RpcTest] 06-08 11:58:22.479 INFO [Test] test_reboot_0 PASS
[RpcTest] 06-08 11:58:22.483 INFO [Test] test_reboot_1
[RpcTest] 06-08 11:58:23.494 INFO [Test] test_reboot_1 PASS
[RpcTest] 06-08 11:58:23.498 INFO [Test] test_reboot_2
[RpcTest] 06-08 11:58:24.516 INFO [Test] test_reboot_2 PASS
[RpcTest] 06-08 11:58:24.520 INFO [Test] test_reboot_3
[RpcTest] 06-08 11:58:25.535 INFO [Test] test_reboot_3 PASS

....

[RpcTest] 06-08 12:02:43.830 INFO [Test] test_attribute_service_48
[RpcTest] 06-08 12:02:44.877 INFO [Test] test_attribute_service_48 PASS
[RpcTest] 06-08 12:02:44.881 INFO [Test] test_attribute_service_49
[RpcTest] 06-08 12:02:45.945 INFO [Test] test_attribute_service_49 PASS
[RpcTest] 06-08 12:02:47.648 INFO Summary for test class MatterRpcStressTest: Error 0, Executed 205, Failed 0, Passed 205, Requested 205, Skipped 0
[RpcTest] 06-08 12:02:47.648 INFO Summary for test run RpcTest@06-08-2022_11-58-13-700:
Total time elapsed 273.94792108098045s
Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-08-2022_11-58-13-700"
Test results: Error 0, Executed 205, Failed 0, Passed 205, Requested 205, Skipped 0
```

4. The stress test result will also be compressed as a zip file under the same directory.
