| #!/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 "$@" |