|
|
2 年之前 | |
|---|---|---|
| .. | ||
| linux | 2 年之前 | |
| rvc-common | 2 年之前 | |
| README.md | 2 年之前 | |
| RVC_app_state_diagram.png | 2 年之前 | |
| RVC_app_state_diagram_drawio.xml | 2 年之前 | |
| run_all_yaml_tests.sh | 2 年之前 | |
This example app is meant to demonstrate an implementation of a Matter Robotic Vacuum Cleaner device.
Below is a diagram describing the state machine for this app.
This app can support most of the tests in the test plans.
Out-of-band messages are available to simulate typical device behaviors and
allow the app to navigate to all the states. To send an out-of-band message,
echo the JSON message to the /tmp/chip_rvc_fifo_<PID> file. The JSON message
must have a "Name" key that contains the command name. This name is shown in
the state machine diagram above. Example
echo '{"Name": "Charged"}' > /tmp/chip_rvc_fifo_42.
ErrorEvent messageThe error event message requires the additional key "Error" which specifies
the error state ID. This can be one of UnableToStartOrResume,
UnableToCompleteOperation, CommandInvalidInState,
FailedToFindChargingDock, Stuck, DustBinMissing, DustBinFull,
WaterTankEmpty, WaterTankMissing, WaterTankLidOpen,
MopCleaningPadMissing.
A PICS file that details what this app supports testing is available in the
pics directory as a txt file. After building the RVC example app, chip-tool,
and setting up the testing environment, python tests can be executed with
./scripts/tests/run_python_test.py --script src/python_testing/<script_name>.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg <PIXIT_Definitions:1>"
Note: If the testing environment has not been commissioned with the RVC app,
use chip-tool to switch on the commissioning window
chip-tool pairing open-commissioning-window, and add the following flags to
the --script-args above.
--commissioning-method on-network --discriminator XXXX --passcode XXXX.
Below are the PIXIT definitions required for the different python tests.
PIXIT: PIXIT_ENDPOINT:1
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCCLEANM_1_2.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1"
PIXIT:
PIXIT_ENDPOINT:1 PIXIT.RVCCLEANM.MODE_CHANGE_FAIL:1 PIXIT.RVCCLEANM.MODE_CHANGE_OK:2
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCCLEANM_2_1.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1 PIXIT.RVCCLEANM.MODE_CHANGE_FAIL:1 PIXIT.RVCCLEANM.MODE_CHANGE_OK:2"
When asked "Manually put the device in a state from which it will FAIL to
transition to mode 1", set the RvcRunMode to 1.
chip-tool rvcrunmode change-to-mode 1
When asked "Manually put the device in a state from which it will SUCCESSFULLY
transition to mode 2", set the RvcRunMode to 0.
chip-tool rvcrunmode change-to-mode 0
PIXIT: PIXIT_ENDPOINT:1
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCCLEANM_3_2.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1"
When asked "Physically power cycle the device", do so.
PIXIT: PIXIT_ENDPOINT:1 Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCRUNM_1_2.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1"
PIXIT:
PIXIT_ENDPOINT:1 PIXIT.RVCRUNM.MODE_CHANGE_FAIL:2 PIXIT.RVCRUNM.MODE_CHANGE_OK:0
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCRUNM_2_1.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1 PIXIT.RVCRUNM.MODE_CHANGE_FAIL:2 PIXIT.RVCRUNM.MODE_CHANGE_OK:0"
When asked "Manually put the device in a state from which it will FAIL to
transition to mode 2", set the RvcRunMode to 1.
chip-tool rvcrunmode change-to-mode 1
When asked "Manually put the device in a state from which it will SUCCESSFULLY transition to mode 0", do nothing.
This is not applicable because this RVC device does not support the
StartUpMode attribute.
PIXIT: PIXIT_ENDPOINT:1
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCOPSTATE_2_1.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1"
Use the out-of-band messages, chip-tool messages and the state machine diagram to navigate to the required states.
PIXIT: PIXIT_ENDPOINT:1
Example command:
./scripts/tests/run_python_test.py --script src/python_testing/TC_RVCOPSTATE_2_3.py --script-args "--storage-path admin_storage.json --PICS examples/rvc-app/rvc-common/pics/RVC_App_Test_Plan.txt --int-arg PIXIT_ENDPOINT:1"
Use the out-of-band messages, chip-tool messages and the state machine diagram to transition to the required states.
After commissioning the device, all the yaml tests can be run by running the
run_all_yaml_tests.sh script from the root dir with the node ID that the
device was commissioned with.