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