summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHridya Valsaraju <hridya@google.com>2018-01-30 10:54:10 -0800
committerHridya Valsaraju <hridya@google.com>2018-02-07 19:21:16 +0000
commitd698d0eb90c446bc5f8deb8583a1fc33d42e9b2d (patch)
treecd61dbb1b6dc7e86d87440a00e7cc480f0b85aed /tests
parent4c7735ac0173b71aceb489470fca15b56e64c4d4 (diff)
downloadlibufdt-d698d0eb90c446bc5f8deb8583a1fc33d42e9b2d.tar.gz
Add a test to verify application of multiple overlays
Bug: 67779848 Test: sh apply_verify_multiple_overlay.sh Change-Id: I1eef35a9e4469eaffe240e71fa849183f9c1c90d
Diffstat (limited to 'tests')
-rw-r--r--tests/apply_verify_multiple_overlay.sh71
-rw-r--r--tests/testdata/multiple_overlay_1.dts9
-rw-r--r--tests/testdata/multiple_overlay_2.dts5
-rw-r--r--tests/testdata/multiple_overlay_3.dts4
-rw-r--r--tests/testdata/multiple_overlay_4.dts4
5 files changed, 93 insertions, 0 deletions
diff --git a/tests/apply_verify_multiple_overlay.sh b/tests/apply_verify_multiple_overlay.sh
new file mode 100644
index 0000000..7b748b2
--- /dev/null
+++ b/tests/apply_verify_multiple_overlay.sh
@@ -0,0 +1,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
diff --git a/tests/testdata/multiple_overlay_1.dts b/tests/testdata/multiple_overlay_1.dts
new file mode 100644
index 0000000..6003ecf
--- /dev/null
+++ b/tests/testdata/multiple_overlay_1.dts
@@ -0,0 +1,9 @@
+/dts-v1/;
+/plugin/;
+
+&a { prop1 = <0x01>; };
+&b { ref1 = <&a>;
+ e {
+ phandle = <0x04>;
+ };
+};
diff --git a/tests/testdata/multiple_overlay_2.dts b/tests/testdata/multiple_overlay_2.dts
new file mode 100644
index 0000000..f3566b4
--- /dev/null
+++ b/tests/testdata/multiple_overlay_2.dts
@@ -0,0 +1,5 @@
+/dts-v1/;
+/plugin/;
+
+&a { prop1 = <0x02>; };
+&c { prop2 = <&a 0x02>; };
diff --git a/tests/testdata/multiple_overlay_3.dts b/tests/testdata/multiple_overlay_3.dts
new file mode 100644
index 0000000..af676b1
--- /dev/null
+++ b/tests/testdata/multiple_overlay_3.dts
@@ -0,0 +1,4 @@
+/dts-v1/;
+/plugin/;
+
+&c { prop2 = <&b 0xfe>; };
diff --git a/tests/testdata/multiple_overlay_4.dts b/tests/testdata/multiple_overlay_4.dts
new file mode 100644
index 0000000..3b0c274
--- /dev/null
+++ b/tests/testdata/multiple_overlay_4.dts
@@ -0,0 +1,4 @@
+/dts-v1/;
+/plugin/;
+
+&c { prop2 = <&b 0xff>; };