| import("//build/python/python_binary.gni") |
| import("//build/rust/rustc_binary.gni") |
| import("//build/testing/host_test.gni") |
| import("//build/testing/host_test_data.gni") |
| |
| # Declares a host-side antlion test. |
| # |
| # Examples |
| # |
| # ``` |
| # antlion_host_test("sl4f_sanity_test") { |
| # main_source = "Sl4fSanityTest.py" |
| # } |
| # |
| # antlion_host_test("wlan_rvr_test_2g") { |
| # main_source = "WlanRvrTest.py" |
| # test_params = "rvr_settings.yaml" |
| # test_cases = [ "test_rvr_11n_2g_*" ] |
| # } |
| # ``` |
| # |
| # Parameters |
| # |
| # main_source |
| # The .py file defining the antlion test. |
| # Type: path |
| # |
| # sources (optional) |
| # Other files that are used in the test. |
| # Type: list(path) |
| # Default: empty list |
| # |
| # test_params (optional) |
| # Path to a YAML file with additional test parameters. This will be provided |
| # to the test in the antlion config under the "test_params" key. |
| # Type: string |
| # |
| # test_cases (optional) |
| # List of test cases to run. Defaults to running all test cases. |
| # Type: list(string) |
| # |
| # deps |
| # environments |
| # visibility |
| template("antlion_host_test") { |
| assert(defined(invoker.main_source), "main_source is required") |
| |
| # |
| # Define antlion test python_binary(). |
| # |
| _python_binary_name = "${target_name}.pyz" |
| _python_binary_target = "${target_name}_python_binary" |
| python_binary(_python_binary_target) { |
| forward_variables_from(invoker, |
| [ |
| "main_source", |
| "sources", |
| ]) |
| output_name = _python_binary_name |
| main_callable = "test_runner.main" # Mobly-specific entry point. |
| deps = [ "//third_party/antlion" ] |
| testonly = true |
| visibility = [ ":*" ] |
| } |
| |
| _test_dir = "${root_out_dir}/test_data/" + get_label_info(target_name, "dir") |
| |
| # |
| # Define antlion test host_test_data(). |
| # |
| _host_test_data_target = "${target_name}_test_data" |
| host_test_data(_host_test_data_target) { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ get_label_info(":${_python_binary_target}", "target_out_dir") + |
| "/${_python_binary_name}" ] |
| outputs = [ "${_test_dir}/${_python_binary_name}" ] |
| deps = [ ":${_python_binary_target}" ] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| |
| # |
| # Define SSH binary host_test_data(). |
| # |
| _host_test_data_ssh = "${target_name}_test_data_ssh" |
| host_test_data(_host_test_data_ssh) { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ "//prebuilt/third_party/openssh-portable/${host_os}-${host_cpu}/bin/ssh" ] |
| outputs = [ "${_test_dir}/ssh" ] |
| } |
| |
| # |
| # Define Mobly test params YAML host_test_data(). |
| # |
| if (defined(invoker.test_params)) { |
| _host_test_data_test_params = "${target_name}_test_data_test_params" |
| host_test_data(_host_test_data_test_params) { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ invoker.test_params ] |
| outputs = [ "${_test_dir}/${invoker.test_params}" ] |
| } |
| } |
| |
| # |
| # Define FFX binary host_test_data(). |
| # |
| _host_test_data_ffx = "${target_name}_test_data_ffx" |
| host_test_data(_host_test_data_ffx) { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ get_label_info("//src/developer/ffx", "root_out_dir") + "/ffx" ] |
| outputs = [ "${_test_dir}/ffx" ] |
| deps = [ "//src/developer/ffx:ffx_bin($host_toolchain)" ] |
| } |
| |
| # |
| # Define the antlion host_test() using antlion-runner. |
| # |
| host_test(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "environments", |
| "visibility", |
| ]) |
| |
| binary_path = "${root_out_dir}/antlion-runner" |
| |
| args = [ |
| "--python-bin", |
| rebase_path(python_exe_src, root_build_dir), |
| "--antlion-pyz", |
| rebase_path("${_test_dir}/${_python_binary_name}", root_build_dir), |
| "--out-dir", |
| rebase_path("${_test_dir}", root_build_dir), |
| "--ffx-binary", |
| rebase_path("${_test_dir}/ffx", root_build_dir), |
| "--ssh-binary", |
| rebase_path("${_test_dir}/ssh", root_build_dir), |
| ] |
| |
| if (defined(invoker.test_cases)) { |
| args += invoker.test_cases |
| } |
| |
| deps = [ |
| ":${_host_test_data_ffx}", |
| ":${_host_test_data_ssh}", |
| ":${_host_test_data_target}", |
| "//build/python:interpreter", |
| "//third_party/antlion/runner", |
| ] |
| |
| if (defined(invoker.test_params)) { |
| args += [ |
| "--test-params", |
| rebase_path("${_test_dir}/${invoker.test_params}", root_build_dir), |
| ] |
| deps += [ ":${_host_test_data_test_params}" ] |
| } |
| } |
| } |