This repository has been archived on 2025-03-16. You can view files and clone it, but cannot push or open issues or pull requests.
bitrot/tests/test_helper.bash

62 lines
1.8 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# LC_ALL=en_US.UTF-8
# LANGUAGE=en_US.UTF-8
LANG=C
check_fail() {
local temp=/tmp/bats.log
> $temp
for line; do
echo "$line" >> $temp
done
# cat /tmp/.bitrot.log >> $temp
}
generate_bitrot() {
local dest=$1 temp=/tmp/temp-base
local -i count=$(($2*100)) percent=${3:-5}
local cmd=$4
mkdir -p "${dest%/*}"
local dir_base=${dest%%/*}
touch "$dest" $temp
#let's make sure they shared the same timestamp
touch "$dest" -r $temp
dd if=/dev/zero of="$dest" bs=1k count=$count &>/dev/null
run $cmd
#modify it and change modify date to base-file, simulate real bitrot so
dd seek=1k if=/dev/urandom of="$dest" bs=1k count=$((count*percent/100)) conv=notrunc &>/dev/null
touch "$dest" -r $temp
\rm -f $tmp
run $cmd
}
generate_bitrots() {
local dest=$1 dest2=$2 temp=/tmp/temp-base
local -i count=$(($3*100)) percent=${4:-5}
mkdir -p "${dest%/*}"
mkdir -p "${dest2%/*}"
local dir_base=${dest%/*}
local dir_base2=${dest2%/*}
touch "$dest2" "$dest" $temp
#let's make sure they shared the same timestamp
touch "$dest" -r $temp
touch "$dest2" -r $temp
dd if=/dev/zero of="$dest" bs=1k count=$count &>/dev/null
dd if=/dev/zero of="$dest2" bs=1k count=$count &>/dev/null
run $r "$dir_base" "$dir_base2"
#modify it and change modify date to base-file, simulate bitrot so
dd seek=1k if=/dev/urandom of="$dest" bs=1k count=$((count*percent/100)) conv=notrunc &>/dev/null
dd seek=1k if=/dev/urandom of="$dest2" bs=1k count=$((count*percent/100)) conv=notrunc &>/dev/null
touch "$dest" -r $temp
touch "$dest2" -r $temp
\rm -f $tmp
echo $status > /tmp/status
run $r "$dir_base" "$dir_base2"
echo $status >> /tmp/status
}