]>
git.scottworley.com Git - annex-ec/blob - annex-ec-test
5 die
() { echo "$*" >&2; exit 1; }
7 vol_name
() { echo "${1% *}"; }
8 vol_dir
() { echo "${1#* }"; }
13 for (( i
=0; i
<$1; i
++ ));do
18 git
-C "$vol" commit
--allow-empty -m "Begin"
20 git clone
"$(vol_dir "${vols[0]}")" "$vol"
21 git
-C "$vol" remote remove origin
23 git
-C "$vol" annex init
"$name"
24 vols
+=( "$name $vol" )
26 for vol
in "${vols[@]}";do
27 for r
in "${vols[@]}";do
28 if [[ "$vol" != "$r" ]];then
29 git
-C "$(vol_dir "$vol")" remote add
"$(vol_name "$r")" "$(vol_dir "$r")"
37 for vol
in "${vols[@]}";do
38 for already_deleted
in "${deleted_vols[@]}";do
39 if [[ "$vol" == "$already_deleted" ]];then continue 2; fi
41 git
-C "$(vol_dir "$vol")" annex sync
46 for vol
in "${vols[@]}";do
47 for already_deleted
in "${deleted_vols[@]}";do
48 if [[ "$vol" == "$already_deleted" ]];then continue 2; fi
50 git
-C "$(vol_dir "$vol")" annex fsck
55 for already_deleted
in "${deleted_vols[@]}";do
56 if [[ "$1" == "$already_deleted" ]];then return; fi
59 if [[ -d "$d/.git/annex/objects" ]];then
60 chmod -R +w
"$d/.git/annex/objects"
63 deleted_vols
+=( "$1" )
65 # Find a not-yet-deleted volume (if there is one) and report the deleted volume as dead
66 for vol
in "${vols[@]}";do
67 for already_deleted
in "${deleted_vols[@]}";do
68 if [[ "$vol" == "$already_deleted" ]];then continue 2; fi
70 git
-C "$(vol_dir "$vol")" annex dead
"$(vol_name "$1")"
75 delete_some_test_vols
() {
77 delete_test_vol
"$vol"
78 done < <(for vol
in "${vols[@]}";do
80 done | shuf
| head -n "$1")
83 delete_all_test_vols
() {
84 for vol
in "${vols[@]}";do
85 delete_test_vol
"$vol"
92 name
=$
(tr -cd 0-9a-f
< /dev
/urandom
| head -c 32)
93 size
=$
((RANDOM
+ RANDOM
))
96 openssl aes-128-cbc
-nosalt -iv 0 -K "$name" < /dev
/zero
| head -c "$size" > "$1/$f"
98 git
-C "$1" annex add
"$f" >&2
103 x
=$
(for vol
in "${vols[@]}";do
105 done | shuf
| head -n "$1" | tr \\n
,)
110 MIN_FILES
=2 # If you only have one file in a group, you'd just make copies of it, no need for annex-ec
111 MIN_VOLUMES
=$
((MIN_REDUNDANCY
+ MIN_FILES
))
113 for (( num_vols
=MIN_VOLUMES
; num_vols
<= 10; num_vols
++ ));do
114 for (( redundancy
=1; redundancy
< num_vols-2
; redundancy
++ ));do
115 max_files
=$
(( num_vols
- redundancy
))
116 for (( num_files
=MIN_FILES
; num_files
<= max_files
; num_files
++ ));do
117 make_test_vols
"$num_vols"
119 for (( i
=0; i
< num_files
; i
++ )); do
120 files
[i
]=$
(make_test_file
"$(vol_dir "${vols[i]}")")
124 pushd "$(vol_dir "${vols[$RANDOM % $num_vols]}")"
125 cmd
=(annex-ec
-r "$redundancy" -v "$(choose_volumes $((num_files+redundancy)))" "${files[@]}")
126 echo "In $PWD , running ${cmd[*]}" >&2
131 delete_some_test_vols
"$redundancy"
134 # fsck_everything # Skip this check until recovery is implemented