From a71829cdaab96e327fa1e3105c21accb42d99e21 Mon Sep 17 00:00:00 2001 From: Darren Chan <74682667+chandarrengoog@users.noreply.github.com> Date: Thu, 1 Jul 2021 16:11:01 -0400 Subject: [PATCH] Prepare for cfv2 unittests. (#27036) --- shell/platform/fuchsia/flutter/BUILD.gn | 24 +-- .../meta/flutter_runner_scenic_tests.cmx | 2 +- .../fuchsia/flutter/runner_unittest.cc | 5 + testing/fuchsia/run_tests.sh | 204 ------------------ testing/fuchsia/test_suites | 0 tools/fuchsia/compile_cml.py | 13 +- tools/fuchsia/fuchsia_archive.gni | 21 +- 7 files changed, 38 insertions(+), 231 deletions(-) delete mode 100755 testing/fuchsia/run_tests.sh create mode 100644 testing/fuchsia/test_suites diff --git a/shell/platform/fuchsia/flutter/BUILD.gn b/shell/platform/fuchsia/flutter/BUILD.gn index 706e7141b3..777e013fe0 100644 --- a/shell/platform/fuchsia/flutter/BUILD.gn +++ b/shell/platform/fuchsia/flutter/BUILD.gn @@ -513,9 +513,7 @@ executable("flutter_runner_scenic_unittests") { ] + flutter_deps } -fuchsia_archive("flutter_runner_tests") { - testonly = true - +fuchsia_test_archive("flutter_runner_tests") { deps = [ ":flutter_runner_unittests" ] binary = "$target_name" @@ -543,14 +541,10 @@ fuchsia_archive("flutter_runner_tests") { ] cmx_file = rebase_path("meta/$target_name.cmx") - - libraries = common_libs } -fuchsia_archive("flutter_runner_tzdata_tests") { - testonly = true - - deps = [ ":flutter_runner_tzdata_unittests" ] +fuchsia_test_archive("flutter_runner_scenic_tests") { + deps = [ ":flutter_runner_scenic_unittests" ] binary = "$target_name" @@ -562,14 +556,10 @@ fuchsia_archive("flutter_runner_tzdata_tests") { ] cmx_file = rebase_path("meta/$target_name.cmx") - - libraries = common_libs } -fuchsia_archive("flutter_runner_scenic_tests") { - testonly = true - - deps = [ ":flutter_runner_scenic_unittests" ] +fuchsia_test_archive("flutter_runner_tzdata_tests") { + deps = [ ":flutter_runner_tzdata_unittests" ] binary = "$target_name" @@ -579,10 +569,6 @@ fuchsia_archive("flutter_runner_scenic_tests") { dest = "icudtl.dat" }, ] - - cmx_file = rebase_path("meta/$target_name.cmx") - - libraries = common_libs } fuchsia_test_archive("fml_tests") { diff --git a/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx b/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx index 073c37f00c..24b894e8af 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx @@ -1,5 +1,5 @@ { - "program": { + "program": { "binary": "bin/app" }, "sandbox": { diff --git a/shell/platform/fuchsia/flutter/runner_unittest.cc b/shell/platform/fuchsia/flutter/runner_unittest.cc index f0ec0b7889..d21675d524 100644 --- a/shell/platform/fuchsia/flutter/runner_unittest.cc +++ b/shell/platform/fuchsia/flutter/runner_unittest.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include +#include #include "runner.h" #include "third_party/icu/source/i18n/unicode/timezone.h" @@ -10,6 +11,10 @@ namespace flutter_runner { TEST(RunnerTest, TZData) { + // TODO(fxbug.dev/69570): Move to cml file if env_vars gains supported for the + // gtest_runner. + setenv("ICU_TIMEZONE_FILES_DIR", "/pkg/data/tzdata", true); + UErrorCode err = U_ZERO_ERROR; const auto version_before = std::string(icu::TimeZone::getTZDataVersion(err)); ASSERT_EQ(U_ZERO_ERROR, err) << "unicode error: " << u_errorName(err); diff --git a/testing/fuchsia/run_tests.sh b/testing/fuchsia/run_tests.sh deleted file mode 100755 index 9408cc8fb2..0000000000 --- a/testing/fuchsia/run_tests.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/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() { - # 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. - kill -9 $PID - 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 -rm -rf /tmp/log.txt -fuchsia_ctl ssh --timeout-seconds 1800 --identity-file $pkey -c "log_listener" --log-file /tmp/log.txt & -PID=$! -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 --------------------------------------" - -echo "$(date) START:embedder_tests -------------------------------------" -fuchsia_ctl test \ - -f embedder_tests-0.far \ - -t embedder_tests \ - --identity-file $pkey \ - --timeout-seconds $test_timeout_seconds \ - --packages-directory packages -echo "$(date) DONE:embedder_tests --------------------------------------" - -echo "$(date) START:dart_utils_tests -------------------------------------" -fuchsia_ctl test \ - -f dart_utils_tests-0.far \ - -t dart_utils_tests \ - --identity-file $pkey \ - --timeout-seconds $test_timeout_seconds \ - --packages-directory packages -echo "$(date) DONE:dart_utils_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 -----------------------------" diff --git a/testing/fuchsia/test_suites b/testing/fuchsia/test_suites new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/fuchsia/compile_cml.py b/tools/fuchsia/compile_cml.py index a670b70a61..36acd818a4 100755 --- a/tools/fuchsia/compile_cml.py +++ b/tools/fuchsia/compile_cml.py @@ -14,13 +14,17 @@ import sys def main(): parser = argparse.ArgumentParser() - parser.add_argument('--cmc-bin', dest='cmc_bin', action='store', required=True) + parser.add_argument( + '--cmc-bin', dest='cmc_bin', action='store', required=True) parser.add_argument( '--output', dest='output', action='store', required=True) parser.add_argument( '--manifest-file', dest='manifest_file', action='store', required=True) parser.add_argument( - '--includepath', dest='includepath', action='store', required=True + '--includepath', + dest='includepath', + action='append', + required=True, ) args = parser.parse_args() @@ -28,16 +32,13 @@ def main(): assert os.path.exists(args.cmc_bin) assert os.path.exists(args.manifest_file) - print(args.includepath) subprocess.check_output([ args.cmc_bin, 'compile', '--output', args.output, args.manifest_file, - '--includepath', - args.includepath, - ]) + ] + (args.includepath and [ '--includepath' ] + args.includepath)) return 0 diff --git a/tools/fuchsia/fuchsia_archive.gni b/tools/fuchsia/fuchsia_archive.gni index 632de3f25e..9a17e8a040 100644 --- a/tools/fuchsia/fuchsia_archive.gni +++ b/tools/fuchsia/fuchsia_archive.gni @@ -18,6 +18,9 @@ template("_compile_cml") { script = "//flutter/tools/fuchsia/compile_cml.py" sources = [ invoker.manifest ] + if (defined(invoker.cml_includes)) { + sources += invoker.cml_includes + } inputs = [ "//fuchsia/sdk/$host_os/tools/cmc" ] @@ -30,6 +33,8 @@ template("_compile_cml") { rebase_path(invoker.output, root_build_dir), "--includepath", get_path_info(invoker.manifest, "dir"), + "--includepath", + rebase_path("//"), ] outputs = [ invoker.output ] } @@ -114,6 +119,8 @@ template("fuchsia_archive") { if (defined(invoker.cml_file)) { _compile_cml(target_name + "_compile_cml") { + forward_variables_from(invoker, [ "cml_includes" ]) + manifest = invoker.cml_file output = "$far_base_dir/meta/${pkg_target_name}.cm" } @@ -181,6 +188,18 @@ template("fuchsia_test_archive") { libraries += invoker.libraries } - cmx_file = rebase_path("//flutter/testing/fuchsia/meta/fuchsia_test.cmx") + # TODO(fxbug.dev/79873): Only cfv2 components should be allowed after + # FakeScenic is available. + if (defined(invoker.cmx_file)) { + cmx_file = invoker.cmx_file + } else { + # TODO(fxbug.dev/79691): Default to cml after soft transition. + # cml_file = + # rebase_path("//flutter/testing/fuchsia/meta/fuchsia_test.cml") + # if (defined(invoker.cml_file)) { + # cml_file = invoker.cml_file + # } + cmx_file = rebase_path("//flutter/testing/fuchsia/meta/fuchsia_test.cmx") + } } } -- GitLab