hash_test.sh revision a5e3929d7a155606bc541777fc84e4989389e13c
1#!/bin/bash -u
2#
3# Copyright 2016 Google Inc. All Rights Reserved.
4#
5# This script is intended to be used by binary_search_state.py. It is to
6# be used for testing/development of the binary search triage tool
7# itself.  It waits for the test setup script to build and install the
8# image, then checks the hashes in the provided file.
9# If the real hashes match the checksum hashes, then the image is 'good',
10# otherwise it is 'bad'.  This allows the rest of the bisecting tool
11# to run without requiring help from the user (as it would if we were
12# dealing with a real 'bad' image).
13#
14
15#
16# Initialize the value below before using this script!!!
17#
18# Make an md5sum of all the files you want to check. For example if you want
19# file1, file2, and file3 to be found as bad items:
20#
21#   md5sum file1 file2 file3 > checksum.out
22#
23# (Make sure you are hashing the files from your good build and that the hashes
24# from good to bad build differ)
25#
26# Then set HASHES_FILE to be the path to 'checksum.out'
27# In this example, file1, file2, file3 will be found as the bad files
28# because their hashes won't match when from the bad build tree. This is
29# assuming that the hashes between good/bad builds change. It is suggested to
30# build good and bad builds at different optimization levels to help ensure
31# each item has a different hash.
32#
33# WARNING:
34# Make sure paths to all files are absolute paths or relative to
35# binary_search_state.py
36#
37# cros_pkg bisector example:
38#   1. Build good packages with -O1, bad packages with -O2
39#   2. cros_pkg/switch_to_good.sh pkg1 pkg2 pkg3
40#   3. md5sum pkg1 pkg2 pkg3 > checksum.out.cros_pkg
41#   4. Set HASHES_FILE to be checksum.out.cros_pkg
42#   5. Run the bisector with this test script
43#
44#
45HASHES_FILE=
46
47if [[ -z "${HASHES_FILE}" || ! -f "${HASHES_FILE}" ]];
48then
49    echo "ERROR: HASHES_FILE must be intialized in common/hash_test.sh"
50    exit 3
51fi
52
53md5sum -c --status ${HASHES_FILE}
54md5_result=$?
55
56
57exit $md5_result
58