added HSM corruption tool
[tridge/junkcode.git] / check_corruption.sh
1 #!/bin/bash
2 # check for data corruption on migrate/recall with TSM/HSM
3 # tridge@samba.org June 2008
4
5 # do 10k files by default
6 N=10000
7
8 if [ $# -ge 1 ]; then
9     N="$1"
10 fi
11
12
13 [ -d rand1M ] && {
14     echo "Cleaning up from old run"
15     rm -rf rand1M
16 }
17
18 mkdir rand1M || exit 1
19 cd rand1M || exit 1
20 echo "Creating $N files"
21 for i in `seq 1 $N`; do echo $i; dd if=/dev/urandom of=rand$i.dat bs=1M count=1; done
22
23 echo "Syncing and sleeping 10 seconds"
24 sync
25 sleep 10
26 sync
27
28 echo "Checking sizes"
29 for i in `seq 1 $N`; do 
30     [ `stat -c '%b' rand$i.dat` = 2048 ] || {
31         echo "ERROR: rand$i.dat is not blocks 2048 in size"
32         stat rand$i.dat
33         exit 1
34     }
35 done
36
37
38 echo "Checksumming $N files with md5sum"
39 md5sum rand*.dat | tee ../rand1Msum.dat
40
41 echo "Waiting 2 minutes for files to be migratable"
42 sleep 120
43
44 echo "Migrating $N files"
45 dsmmigrate rand*dat
46
47 echo "Checking sizes"
48 for i in `seq 1 $N`; do 
49     [ `stat -c '%b' rand$i.dat` = 0 ] || {
50         echo "ERROR: rand$i.dat is not fully migrated"
51         stat rand$i.dat
52         exit 1
53     }
54 done
55
56 echo "Checksumming again"
57 md5sum rand*.dat | tee ../rand1Msum_after_migration.dat
58
59 count=`comm -23 ../rand1Msum.dat ../rand1Msum_after_migration.dat | wc -l`
60
61 if [ $count -ne 0 ]; then
62     echo "ERROR: These $count files were CORRUPTED"
63     comm -23 ../rand1Msum.dat ../rand1Msum_after_migration.dat
64     exit 1
65 fi
66
67 echo "No files were corrupted on recall"
68
69 exit 0