# CHIP Tests on QEMU Tizen runs mostly on ARM architecture. In order to run tests on Tizen, we need to use QEMU. This document describes how to build and run CHIP tests on QEMU. ## Obtaining Tizen QEMU Docker Image All tools and dependencies required to build and run tests on Tizen on QEMU are included in the `chip-build-tizen-qemu` docker image. One can pull the docker image from hub.docker.com or build it locally using the provided Dockerfile in `integrations/docker/images/chip-build-tizen-qemu` directory. ```sh # Pull the image from hub.docker.com docker pull ghcr.io/project-chip/chip-build-tizen-qemu:50 ``` ## Building and Running Tests on QEMU All steps described below should be done inside the docker container. ```sh docker run -it --rm --name chip-tizen-qemu \ ghcr.io/project-chip/chip-build-tizen-qemu:50 /bin/bash ``` ### Clone the connectedhomeip repository ```sh git clone https://github.com/project-chip/connectedhomeip.git ``` ### Activate the environment ```sh cd connectedhomeip source scripts/activate.sh ``` ### Generate and run test target As for now, Tizen QEMU-based test driver does not support BLE. In order to disable BLE, one needs to pass `chip_config_network_layer_ble=false` to the args argument of the `gn gen` command. ```sh # Generate test target gn gen --check --fail-on-unused-args \ --root="$PWD/src/test_driver/tizen" \ --args="target_os=\"tizen\" target_cpu=\"arm\" \ tizen_sdk_root=\"$TIZEN_SDK_ROOT\" \ tizen_sdk_sysroot=\"$TIZEN_SDK_SYSROOT\" chip_config_network_layer_ble=false" \ out/tizen-check # Run Tizen QEMU-based tests ninja -C out/tizen-check check ``` ## Debugging Tests on QEMU When running tests with `ninja -C out/tizen-check check`, the test driver prints the command to run the test on QEMU. Please search for the following line in the output of the `ninja` command: `INFO:root:run: qemu-system-arm`. Make sure that your terminal does not limit the number of lines printed, or simply redirect the output to a file as follows: ```sh ninja -C out/tizen-check check > ninja-tizen-check.log 2>&1 ``` Then, use the run command and add the `rootshell` keyword to kernel arguments passed to QEMU (the string after the `-append` option). This will run QEMU, but instead of running the test, it will drop you to the shell. From there, you can run the test manually by typing `/mnt/chip/runner.sh`.