-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun_repair.sh
executable file
·173 lines (160 loc) · 5.77 KB
/
run_repair.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#!/bin/bash
rm -rf build
./compile.sh
mkdir build
mv time_check build/
mv evenodd build/
cd build
file_size=104857600
prime=7
mkdir ./test_data
dd if=/dev/urandom of=./test_data/data bs=$file_size count=1 iflag=fullblock
./time_check write ./test_data/data $prime
#############################################################################
let "index_1=prime-2"
mv disk_$index_1 _disk_$index_1
./evenodd repair 1 $index_1
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing one data column ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
mv _disk_$index_1 disk_$index_1
#############################################################################
let "index_1=prime-1"
mv disk_$index_1 _disk_$index_1
./evenodd repair 1 $index_1
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing one data column(p-1) ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
mv _disk_$index_1 disk_$index_1
#############################################################################
let "index_1=prime"
mv disk_$index_1 _disk_$index_1
./evenodd repair 1 $index_1
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing row parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
mv _disk_$index_1 disk_$index_1
#############################################################################
let "index_1=prime+1"
mv disk_$index_1 _disk_$index_1
./evenodd repair 1 $index_1
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing diagonal parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
mv _disk_$index_1 disk_$index_1
#############################################################################
let "index_1=prime-1"
let "index_2=prime"
mv disk_$index_1 _disk_$index_1
mv disk_$index_2 _disk_$index_2
./evenodd repair 2 $index_1 $index_2
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing data column and row parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
result=`diff ./disk_$index_2/data.0 ./_disk_$index_2/data.0`
if [ -n "$result" ]
then
echo "======== test repairing data column and row parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
rm -rf disk_$index_2
mv _disk_$index_1 disk_$index_1
mv _disk_$index_2 disk_$index_2
#############################################################################
let "index_1=prime-1"
let "index_2=prime+1"
mv disk_$index_1 _disk_$index_1
mv disk_$index_2 _disk_$index_2
./evenodd repair 2 $index_1 $index_2
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing data column and diagonal parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
result=`diff ./disk_$index_2/data.0 ./_disk_$index_2/data.0`
if [ -n "$result" ]
then
echo "======== test repairing data column and diagonal parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
rm -rf disk_$index_2
mv _disk_$index_1 disk_$index_1
mv _disk_$index_2 disk_$index_2
# #############################################################################
let "index_1=prime"
let "index_2=prime+1"
mv disk_$index_1 _disk_$index_1
mv disk_$index_2 _disk_$index_2
./evenodd repair 2 $index_1 $index_2
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0`
if [ -n "$result" ]
then
echo "======== test repairing row and diagonal parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
result=`diff ./disk_$index_2/data.0 ./_disk_$index_2/data.0`
if [ -n "$result" ]
then
echo "======== test repairing row and diagonal parity ========" >> error_log.txt
echo "$result" >> error_log.txt
echo "=================================================" >> error_log.txt
fi
rm -rf disk_$index_1
rm -rf disk_$index_2
mv _disk_$index_1 disk_$index_1
mv _disk_$index_2 disk_$index_2
# #############################################################################
let "index_1=prime-2"
let "index_2=prime-1"
mv disk_$index_1 _disk_$index_1
mv disk_$index_2 _disk_$index_2
./evenodd repair 2 $index_1 $index_2
result=`diff ./disk_$index_1/data.0 ./_disk_$index_1/data.0` #TODO: 测试不充分
if [ -n "$result" ]
then
echo "========= test repairing two data columns =========" >> error_log.txt
echo "$result" >> error_log.txt
echo "===================================================" >> error_log.txt
fi
result=`diff ./disk_$index_2/data.0 ./_disk_$index_2/data.0`
if [ -n "$result" ]
then
echo "========= test repairing two data columns =========" >> error_log.txt
echo "$result" >> error_log.txt
echo "===================================================" >> error_log.txt
fi
rm -rf disk_$index_1
rm -rf disk_$index_2
mv _disk_$index_1 disk_$index_1
mv _disk_$index_2 disk_$index_2