Bash程序  |  65行  |  1.86 KB

#!/bin/bash

# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

iterations=150
failures=0
i=0
LOGDIR="$HOME/backup_tests"
LOGFILE="$LOGDIR/backup_stress.`date +%s`.log"
export BUGREPORT_DIR="$LOGDIR/bugreports"

# make sure that we have a place to put logs and bugreports
mkdir -p $LOGDIR $BUGREPORT_DIR

echo "logfile is $LOGFILE"

(while (sleep 10); do
    failed=0
    
    echo
    echo "Iteration $i at `date`"
    echo

    ./test_backup.sh "$@" 2>&1

    sleep 10
    echo "Restore at `date`"
    echo

    ./test_restore.sh "$@" 2>&1 || failed=1
    
    if [ "$failed" -ne 0 ]; then
        failures=$(($failures+1))
        # Long and verbose so it sticks out
        echo "FAILED iteration $i of $iterations; $failures failures so far"
        echo "FAILED iteration $i of $iterations; $failures failures so far" > /dev/stderr
    else
        printf "Iteration %d:\tPASS; remaining: %d\n" $i $(($iterations - $i - 1))
        printf "Iteration %d:\tPASS; remaining: %d\n" $i $(($iterations - $i - 1)) > /dev/stderr
    fi

    echo "End $i at `date`"
    
    i=$(($i+1))
    if [ $i -eq $iterations ]; then
        echo "DONE: $iterations iterations with $failures failures."
        echo "DONE: $iterations iterations with $failures failures." > /dev/stderr
        [ "$failures" -eq 0 ] && exit 0
        exit 1
    fi
done) > "$LOGFILE"