blob: ef0c6d93238083a291cf8a2b137a432340e166af [file] [log] [blame]
#!/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/fuchsia/fuchsia"
mkdir -p ${IMAGES_DIR}
cp "${DATA_DIR}/blob.manifest" "${IMAGES_DIR}/gen/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 "$@"