| #!/bin/bash |
| # Copyright 2020 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| ### Test expected behavior of fx blobstats |
| |
| # To update this test, you need to copy blob.manifest and blobs.json |
| # from your build configuration, and add all necessary packages to |
| # the data folder. |
| # Then, make sure to include these files to BT_FILE_DEPS and copy them |
| # to the temp folder in BT_SET_UP to make them available to the tests. |
| |
| BT_LINKED_DEPS=( |
| "prebuilt/third_party/dart" |
| "tools/blobstats" |
| "scripts/third_party" |
| "third_party" |
| ) |
| |
| BT_FILE_DEPS=( |
| "scripts/fx" |
| "tools/devshell/contrib/blobstats" |
| "tools/devshell/lib/fx-cmd-locator.sh" |
| "tools/devshell/lib/fx-optional-features.sh" |
| "tools/devshell/lib/platform.sh" |
| "tools/devshell/lib/vars.sh" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/blob.manifest" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/blobs.csv" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/blobs.json" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/packages.csv" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/snapshot_blobs.json" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/snapshot_meta.far" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif_blobs.json" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif_meta.far" |
| "tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif.so" |
| ) |
| |
| declare fx DATA_DIR |
| |
| BT_SET_UP() { |
| source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh" |
| fx="$(btf::setup_fx)" |
| |
| DATA_DIR="${BT_TEMP_DIR}/tools/devshell/tests/subcommands/data/fx_blobstats_test" |
| cp "${DATA_DIR}/blobs.json" "${BT_TEMP_DIR}/out/default/blobs.json" |
| |
| IMAGES_DIR="${BT_TEMP_DIR}/out/default/obj/build/images" |
| mkdir -p ${IMAGES_DIR} |
| cp "${DATA_DIR}/blob.manifest" "${IMAGES_DIR}/blob.manifest" |
| |
| SNAPSHOT_DIR="${BT_TEMP_DIR}/out/default/obj/src/developer/forensics/snapshot/snapshot" |
| mkdir -p ${SNAPSHOT_DIR} |
| cp "${DATA_DIR}/snapshot_meta.far" "${SNAPSHOT_DIR}/meta.far" |
| cp "${DATA_DIR}/snapshot_blobs.json" "${SNAPSHOT_DIR}/blobs.json" |
| |
| WLANIF_DIR="${BT_TEMP_DIR}/out/default/obj/src/connectivity/wlan/drivers/wlanif/wlanif" |
| mkdir -p ${WLANIF_DIR} |
| cp "${DATA_DIR}/wlanif_meta.far" "${WLANIF_DIR}/meta.far" |
| cp "${DATA_DIR}/wlanif_blobs.json" "${WLANIF_DIR}/blobs.json" |
| |
| ARM64_SHARED_DIR="${BT_TEMP_DIR}/out/default/arm64-shared" |
| mkdir -p ${ARM64_SHARED_DIR} |
| cp "${DATA_DIR}/wlanif.so" "${ARM64_SHARED_DIR}/wlanif.so" |
| } |
| |
| # Test that "fx blobstats" generates valid csv files |
| TEST_fxblobstats_csv() { |
| local out="${BT_TEMP_DIR}/_fx_blobstats_output" |
| BT_EXPECT ${fx} blobstats > "${out}" |
| BT_ASSERT_FILE_EXISTS "${BT_TEMP_DIR}/out/default/blobs.csv" |
| BT_ASSERT_FILE_EXISTS "${BT_TEMP_DIR}/out/default/packages.csv" |
| |
| GOLDEN_DIR="${BT_TEMP_DIR}/out/default/golden" |
| mkdir -p ${GOLDEN_DIR} |
| cp "${DATA_DIR}/blobs.csv" "${GOLDEN_DIR}/blobs.csv" |
| cp "${DATA_DIR}/packages.csv" "${GOLDEN_DIR}/packages.csv" |
| |
| BT_EXPECT diff "${BT_TEMP_DIR}/out/default/blobs.csv" "${GOLDEN_DIR}/blobs.csv" |
| BT_EXPECT diff "${BT_TEMP_DIR}/out/default/packages.csv" "${GOLDEN_DIR}/packages.csv" |
| } |
| |
| BT_RUN_TESTS "$@" |