#!/bin/sh # # Obnam test: test locking with multiple clients accessing the same repo. # # Copyright 2012-2014 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . die() { echo "$@" 1>&2 exit 1 } [ "$#" = 4 ] || die "Bad usage, read source!" NCLIENTS="$1" NGENERATIONS="$2" repourl="$3" repopath="$4" tempdir="$(mktemp -d -t XXXXXX)" pids="$tempdir/pids" echo "Starting backups: $NCLIENTS clients $NGENERATIONS generations" echo "Using temporary directory $tempdir" for i in $(seq "$NCLIENTS") do ./test-many-generations "$NGENERATIONS" "$repourl" "$repopath" \ "client-$i" > "client-$i.output" 2>&1 & echo "$!" >> "$pids" done echo "Waiting for clients to finish... this may take a long time" errors=0 for pid in $(cat "$pids") do if ! wait "$pid" then if [ "$errors" = 0 ] then echo "at least one client failed" 1>&2 fi errors=1 fi done if [ "$errors" = 0 ] then rm -rf "$tempdir" fi exit $errors