| #!/bin/bash |
| |
| # Any modifications to this script may be applicable to |
| # https://github.com/flutter/flutter/blob/master/dev/bots/run_fuchsia_tests.sh |
| |
| # This expects the device to be in zedboot mode, with a zedboot that is |
| # is compatible with the Fuchsia system image provided. |
| # |
| # The first and only parameter should be the path to the Fuchsia system image |
| # tarball, e.g. `./fuchsia-test.sh generic-x64.tgz`. |
| # |
| # This script expects `pm`, `device-finder`, and `fuchsia_ctl` to all be in the |
| # same directory as the script, as well as the `flutter_aot_runner-0.far` and |
| # the `flutter_runner_tests-0.far`. It is written to be run from its own |
| # directory, and will fail if run from other directories or via sym-links. |
| # |
| # This script also expects a private key available at: |
| # "/etc/botanist/keys/id_rsa_infra". |
| |
| set -Eex |
| |
| test_timeout_seconds=300 |
| |
| # This is longer than the test timeout as dumping the |
| # logs can sometimes take longer. |
| ssh_timeout_seconds=360 |
| |
| # The nodes are named blah-blah--four-word-fuchsia-id |
| device_name=${SWARMING_BOT_ID#*--} |
| |
| # Bot key to pave and ssh the device. |
| pkey="/etc/botanist/keys/id_rsa_infra" |
| |
| if [ -z "$device_name" ] |
| then |
| echo "No device found. Aborting." |
| exit 1 |
| else |
| echo "Connecting to device $device_name" |
| fi |
| |
| # Wrapper function to pass common args to fuchsia_ctl. |
| fuchsia_ctl() { |
| ./fuchsia_ctl -d $device_name "$@" |
| } |
| |
| reboot() { |
| fuchsia_ctl ssh \ |
| --timeout-seconds $ssh_timeout_seconds \ |
| --identity-file $pkey \ |
| -c "log_listener --dump_logs yes --file /tmp/log.txt" |
| # As we are not using recipes we don't have a way to know the location |
| # to upload the log to isolated. We are saving the log to a file to avoid dart |
| # hanging when running the process and then just using printing the content to |
| # the console. |
| fuchsia_ctl ssh \ |
| --timeout-seconds $ssh_timeout_seconds \ |
| --identity-file $pkey \ |
| -c "cat /tmp/log.txt" |
| |
| |
| echo "$(date) START:REBOOT ----------------------------------------" |
| # note: this will set an exit code of 255, which we can ignore. |
| fuchsia_ctl ssh \ |
| --identity-file $pkey \ |
| -c "dm reboot-recovery" || true |
| echo "$(date) END:REBOOT ------------------------------------------" |
| } |
| |
| trap reboot EXIT |
| |
| echo "$(date) START:PAVING ------------------------------------------" |
| ssh-keygen -y -f $pkey > key.pub |
| fuchsia_ctl pave \ |
| -i $1 \ |
| --public-key "key.pub" |
| echo "$(date) END:PAVING --------------------------------------------" |
| |
| echo "$(date) START:WAIT_DEVICE_READY -------------------------------" |
| for i in {1..10}; do |
| fuchsia_ctl ssh \ |
| --identity-file $pkey \ |
| -c "echo up" && break || sleep 15; |
| done |
| echo "$(date) END:WAIT_DEVICE_READY ---------------------------------" |
| |
| echo "$(date) START:EXTRACT_PACKAGES -------------------------------" |
| mkdir -p packages |
| tar -xvzf $2 -C packages 1> /dev/null |
| echo "$(date) END:EXTRACT_PACKAGES ---------------------------------" |
| |
| echo "$(date) START:testing_tests -----------------------------------" |
| fuchsia_ctl test \ |
| -f testing_tests-0.far \ |
| -t testing_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:testing_tests ------------------------------------" |
| |
| # TODO(https://github.com/flutter/flutter/issues/61212): Re-enable ParagraphTest |
| # once it passes on Fuchsia. |
| echo "$(date) START:txt_tests ---------------------------------------" |
| fuchsia_ctl test \ |
| -f txt_tests-0.far \ |
| -t txt_tests \ |
| -a "--gtest_filter=-ParagraphTest.*" \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:txt_tests ----------------------------------------" |
| |
| # TODO(https://github.com/flutter/flutter/issues/57709): Re-enable FileTest |
| # once it passes on Fuchsia. |
| # TODO(https://github.com/flutter/flutter/issues/58211): Re-enable MessageLoop |
| # test once it passes on Fuchsia. |
| echo "$(date) START:fml_tests ---------------------------------------" |
| fuchsia_ctl test \ |
| -f fml_tests-0.far \ |
| -t fml_tests \ |
| -a "--gtest_filter=-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure" \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:fml_tests ----------------------------------------" |
| |
| |
| echo "$(date) START:flow_tests --------------------------------------" |
| fuchsia_ctl test \ |
| -f flow_tests-0.far \ |
| -t flow_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:flow_tests ---------------------------------------" |
| |
| |
| echo "$(date) START:runtime_tests -----------------------------------" |
| fuchsia_ctl test \ |
| -f runtime_tests-0.far \ |
| -t runtime_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:runtime_tests ------------------------------------" |
| |
| echo "$(date) START:ui_tests ----------------------------------------" |
| fuchsia_ctl test \ |
| -f ui_tests-0.far \ |
| -t ui_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:ui_tests -----------------------------------------" |
| |
| echo "$(date) START:shell_tests -------------------------------------" |
| fuchsia_ctl test \ |
| -f shell_tests-0.far \ |
| -t shell_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:shell_tests --------------------------------------" |
| |
| # TODO(gw280): Enable tests using JIT runner |
| echo "$(date) START:flutter_runner_tests ----------------------------" |
| fuchsia_ctl test \ |
| -f flutter_aot_runner-0.far \ |
| -f flutter_runner_tests-0.far \ |
| -t flutter_runner_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| |
| # TODO(https://github.com/flutter/flutter/issues/61768): De-flake and re-enable |
| # fuchsia_ctl test \ |
| # -f flutter_aot_runner-0.far \ |
| # -f flutter_runner_scenic_tests-0.far \ |
| # -t flutter_runner_scenic_tests \ |
| # --identity-file $pkey \ |
| # --timeout-seconds $test_timeout_seconds \ |
| # --packages-directory packages |
| |
| fuchsia_ctl test \ |
| -f flutter_aot_runner-0.far \ |
| -f flutter_runner_tzdata_tests-0.far \ |
| -t flutter_runner_tzdata_tests \ |
| --identity-file $pkey \ |
| --timeout-seconds $test_timeout_seconds \ |
| --packages-directory packages |
| echo "$(date) DONE:flutter_runner_tests -----------------------------" |