blob: 01a1273725f405e5526131b0e72aa1907a101e5e [file] [log] [blame]
#!/bin/bash
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Chrome OS Disk Firmware Update Script test harness
# Use bash to be able to source the script to test with parameters and
# use array:
# !bash -x ./scripts/chromeos-disk-firmware-test.sh > /tmp/test 2>&1
#
# Works only in the chromium chroot.
export LC_ALL=C
DISK_TEMP_TEMPLACE=test_fw.XXXXXX
DISK_TEMP=$(mktemp -d --tmpdir "${DISK_TEMP_TEMPLACE}")
# source the script to test: The test script is in bash to
# allow paramters to be taken into account.
. scripts/chromeos-disk-firmware-update.sh \
--tmp_dir "${DISK_TEMP}" \
--fw_package_dir "tests/test_mmc_dir" \
--mmc "tests/mmc" \
--test
# Overwrite funtions that call hdparm
# Read the identify for files
declare -a mmc_model
declare -a mmc_fwrev
declare -a mmc_rc
declare -i id_idx
disk_mmc_info() {
disk_model="$(echo ${mmc_model[${id_idx}]} | \
tr -d '\n' | od -t x1 -A none -v | sed 's/ //g')"
disk_fw_rev="${mmc_fwrev[${id_idx}]}"
: $(( id_idx += 1))
return 0
}
prepare_test() {
id_idx=0
find "${DISK_TEMP}" -mindepth 1 -delete
}
run_test() {
main > "${DISK_TEMP}/result"
}
check_test() {
local test_id=$1
local exp_result=$2_${test_id}
local test_exp_rc=$3
local test_rc=$4
if [ ${test_exp_rc} -ne ${test_rc} ]; then
echo "Expected ${test_exp_rc}, got ${test_rc}"
exit 1
fi
diff "${DISK_TEMP}/result" "tests/${exp_result}"
if [ $? -ne 0 ]; then
echo "test_${test_id} failed"
exit 1
fi
}
# MMC tests:
get_device_type() {
echo "MMC"
}
list_fixed_ata_disks() {
echo
}
list_fixed_mmc_disks() {
echo "mmcblk0"
}
list_fixed_nvme_disks() {
echo
}
prepare_test
mmc_fwrev=(
'0x0b00000000000000'
'0xff00000000000000'
'0xff00000000000000'
'00'
'0x0c00000000000000'
'0xfe00000000000000'
'0xfe00000000000000'
'0x3536323330613137'
'0x3739323330363138'
'0x3739323330363138'
'0x0b00000000000000'
'0xff00000000000000'
)
mmc_model=(
'MAG2GC'
'MAG2GC'
'MAG2GC'
'NO FFU'
'MAG3GC'
'MAG3GC'
'MAG3GC'
'DA4032'
'DA4032'
'DA4032'
'MAG2GC'
'MAG2GC'
)
run_test
check_test 1 mmc_upgraded 0 $?
echo MMC PASS 1
run_test
check_test 2 mmc_good 0 $?
echo MMC PASS 2
run_test
check_test 3 mmc_upgraded 0 $?
echo MMC PASS 3
run_test
check_test 4 mmc_upgraded 0 $?
echo MMC PASS 4
# set firmware upgrade to fail
disk_mmc_upgrade() {
return 1
}
run_test
check_test 5 mmc_upgrade_failed 1 $?
echo MMC PASS 5
rm -rf "${DISK_TEMP}"