#!/bin/bash # Copyright 2022 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. set +x if [ $# -ne 2 ]; then echo "Usage: $0 " exit 1 fi target=$1 pattern=$2 zmake build --clobber "${target}" || exit 1 echo "Searching for '${pattern}'..." found_errors=0 loop_count=100 start_time=$(date +%Y-%m-%d_%H.%M.%S) log_dir="/tmp" EXECUTABLE=./build/zephyr/${target}/build-singleimage/zephyr/zephyr.exe while [ "${loop_count}" -gt 0 ]; do seed=${RANDOM} log_file_prefix="${log_dir}"/shuffle_"${start_time}"_"${seed}" echo "[$((100 - loop_count))] Using seed=${seed}" error_count=$(timeout 150s "${EXECUTABLE}" -seed="${seed}" 2>&1 | tee "${log_file_prefix}".log | grep -c "${pattern}") status=$? result="0-matches" if [ "${status}" -eq 124 ]; then echo " Timeout" result="timed-out" elif [ "${status}" -eq 0 ]; then echo " Error/timeout" result="exit-code-${status}" fi if [ "${error_count}" -gt 0 ]; then echo " Found ${error_count} errors matching '${pattern}'" result="${error_count}-matches" fi # Rename the log file to include the outcome mv \ "${log_file_prefix}".log \ "${log_file_prefix}"_"${result}".log found_errors=$((found_errors + error_count)) loop_count=$((loop_count - 1)) done if [ "${found_errors}" -ne 0 ]; then exit 1 fi