summaryrefslogtreecommitdiff
path: root/tests/apply_verify_multiple_overlay.sh
blob: 7b748b2b6d63b5d39cc05ad969966dbf55753ecb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

if [ -z "${ANDROID_HOST_OUT}" ]; then
  echo 'ANDROID_HOST_OUT not set. Please run lunch'
  exit 1
fi

# Global variables
BASE_DT_NAME="apply_fragment-base"
OVERLAY_DT_1="multiple_overlay_1"
OVERLAY_DT_2="multiple_overlay_2"
OVERLAY_DT_3="multiple_overlay_3"
OVERLAY_DT_4="multiple_overlay_4"
ANDROID_HOST_BIN_LOCATION=${ANDROID_HOST_OUT}/bin
IN_DATA_DIR="testdata"

tmpdir=$(mktemp -d)
trap 'rm -rf ${tmpdir};' EXIT

dtc -@ -qq -O dtb -o "${tmpdir}/${BASE_DT_NAME}.dtb" "${IN_DATA_DIR}/${BASE_DT_NAME}.dts"
dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_1}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_1}.dts"
dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_2}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_2}.dts"
dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_3}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_3}.dts"
dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_4}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_4}.dts"

cd $tmpdir

apply_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_apply_overlay_host"
$apply_bin_path "${BASE_DT_NAME}.dtb" "${OVERLAY_DT_1}.dtb" final_dt.dtb > /dev/null
$apply_bin_path final_dt.dtb "${OVERLAY_DT_2}.dtb" final_dt.dtb > /dev/null
$apply_bin_path final_dt.dtb "${OVERLAY_DT_3}.dtb" final_dt.dtb > /dev/null

#verify that the overlay was correctly applied

verify_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_verify_overlay_host"

overlay_sets=(
                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_4}.dtb"
                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb"
                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
                "${OVERLAY_DT_1}.dtb"
                "${OVERLAY_DT_2}.dtb"
                "${OVERLAY_DT_3}.dtb"
                "${OVERLAY_DT_4}.dtb"
                ""
              )

expected_out=(0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1)

for((i=0;i<${#overlay_sets[@]};i++))
do
  $verify_bin_path final_dt.dtb ${overlay_sets[$i]} >& /dev/null
  result=$?
  if [[ "$result" -ne "${expected_out[$i]}" ]]
  then
    echo "Incorrect overlay application/verification for"  ${overlay_sets[$i]}
    exit 1
  fi
done

echo "Overlays Verified Successfully"
exit 0