aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool/common/hash_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'binary_search_tool/common/hash_test.sh')
-rwxr-xr-xbinary_search_tool/common/hash_test.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/binary_search_tool/common/hash_test.sh b/binary_search_tool/common/hash_test.sh
new file mode 100755
index 00000000..5450988e
--- /dev/null
+++ b/binary_search_tool/common/hash_test.sh
@@ -0,0 +1,57 @@
+#!/bin/bash -u
+#
+# Copyright 2016 Google Inc. All Rights Reserved.
+#
+# This script is intended to be used by binary_search_state.py. It is to
+# be used for testing/development of the binary search triage tool
+# itself. It waits for the test setup script to build and install the
+# image, then checks the hashes in the provided file.
+# If the real hashes match the checksum hashes, then the image is 'good',
+# otherwise it is 'bad'. This allows the rest of the bisecting tool
+# to run without requiring help from the user (as it would if we were
+# dealing with a real 'bad' image).
+#
+
+#
+# Initialize the value below before using this script!!!
+#
+# Make an md5sum of all the files you want to check. For example if you want
+# file1, file2, and file3 to be found as bad items:
+#
+# md5sum file1 file2 file3 > checksum.out
+#
+# (Make sure you are hashing the files from your good build and that the hashes
+# from good to bad build differ)
+#
+# Then set HASHES_FILE to be the path to 'checksum.out'
+# In this example, file1, file2, file3 will be found as the bad files
+# because their hashes won't match when from the bad build tree. This is
+# assuming that the hashes between good/bad builds change. It is suggested to
+# build good and bad builds at different optimization levels to help ensure
+# each item has a different hash.
+#
+# WARNING:
+# Make sure paths to all files are absolute paths or relative to
+# binary_search_state.py
+#
+# cros_pkg bisector example:
+# 1. Build good packages with -O1, bad packages with -O2
+# 2. cros_pkg/switch_to_good.sh pkg1 pkg2 pkg3
+# 3. md5sum pkg1 pkg2 pkg3 > checksum.out.cros_pkg
+# 4. Set HASHES_FILE to be checksum.out.cros_pkg
+# 5. Run the bisector with this test script
+#
+#
+HASHES_FILE=
+
+if [[ -z "${HASHES_FILE}" || ! -f "${HASHES_FILE}" ]];
+then
+ echo "ERROR: HASHES_FILE must be intialized in common/hash_test.sh"
+ exit 3
+fi
+
+md5sum -c --status ${HASHES_FILE}
+md5_result=$?
+
+
+exit $md5_result