1
1
#! /bin/sh
2
2
3
- #
3
+ #
4
4
# basic map-reduce test
5
5
#
6
6
7
- RACE=
7
+ RACE=
8
8
9
9
# uncomment this to run the tests with the Go race detector.
10
10
# RACE=-race
@@ -26,6 +26,8 @@ rm -f mr-*
26
26
(cd .. && go build $RACE mrworker.go) || exit 1
27
27
(cd .. && go build $RACE mrsequential.go) || exit 1
28
28
29
+ failed_any=0
30
+
29
31
# first word-count
30
32
31
33
# generate the correct output
@@ -35,15 +37,15 @@ rm -f mr-out*
35
37
36
38
echo ' ***' Starting wc test.
37
39
38
- ../mrmaster ../pg* txt &
40
+ timeout -k 2s 180s ../mrmaster ../pg* txt &
39
41
40
42
# give the master time to create the sockets.
41
43
sleep 1
42
44
43
45
# start multiple workers.
44
- ../mrworker ../../mrapps/wc.so &
45
- ../mrworker ../../mrapps/wc.so &
46
- ../mrworker ../../mrapps/wc.so &
46
+ timeout -k 2s 180s ../mrworker ../../mrapps/wc.so &
47
+ timeout -k 2s 180s ../mrworker ../../mrapps/wc.so &
48
+ timeout -k 2s 180s ../mrworker ../../mrapps/wc.so &
47
49
48
50
# wait for one of the processes to exit.
49
51
# under bash, this waits for all processes,
61
63
else
62
64
echo ' ---' wc output is not the same as mr-correct-wc.txt
63
65
echo ' ---' wc test: FAIL
64
- exit 1
66
+ failed_any= 1
65
67
fi
66
68
67
69
# wait for remaining workers and master to exit.
@@ -77,12 +79,12 @@ rm -f mr-out*
77
79
78
80
echo ' ***' Starting indexer test.
79
81
80
- ../mrmaster ../pg* txt &
82
+ timeout -k 2s 180s ../mrmaster ../pg* txt &
81
83
sleep 1
82
84
83
85
# start multiple workers
84
- ../mrworker ../../mrapps/indexer.so &
85
- ../mrworker ../../mrapps/indexer.so
86
+ timeout -k 2s 180s ../mrworker ../../mrapps/indexer.so &
87
+ timeout -k 2s 180s ../mrworker ../../mrapps/indexer.so
86
88
87
89
sort mr-out* | grep . > mr-indexer-all
88
90
if cmp mr-indexer-all mr-correct-indexer.txt
91
93
else
92
94
echo ' ---' indexer output is not the same as mr-correct-indexer.txt
93
95
echo ' ---' indexer test: FAIL
94
- exit 1
96
+ failed_any= 1
95
97
fi
96
98
97
99
wait ; wait
@@ -101,18 +103,18 @@ echo '***' Starting map parallelism test.
101
103
102
104
rm -f mr-out* mr-worker*
103
105
104
- ../mrmaster ../pg* txt &
106
+ timeout -k 2s 180s ../mrmaster ../pg* txt &
105
107
sleep 1
106
108
107
- ../mrworker ../../mrapps/mtiming.so &
108
- ../mrworker ../../mrapps/mtiming.so
109
+ timeout -k 2s 180s ../mrworker ../../mrapps/mtiming.so &
110
+ timeout -k 2s 180s ../mrworker ../../mrapps/mtiming.so
109
111
110
112
NT=` cat mr-out* | grep ' ^times-' | wc -l | sed ' s/ //g' `
111
113
if [ " $NT " != " 2" ]
112
114
then
113
115
echo ' ---' saw " $NT " workers rather than 2
114
116
echo ' ---' map parallelism test: FAIL
115
- exit 1
117
+ failed_any= 1
116
118
fi
117
119
118
120
if cat mr-out* | grep ' ^parallel.* 2' > /dev/null
121
123
else
122
124
echo ' ---' map workers did not run in parallel
123
125
echo ' ---' map parallelism test: FAIL
124
- exit 1
126
+ failed_any= 1
125
127
fi
126
128
127
129
wait ; wait
@@ -131,18 +133,18 @@ echo '***' Starting reduce parallelism test.
131
133
132
134
rm -f mr-out* mr-worker*
133
135
134
- ../mrmaster ../pg* txt &
136
+ timeout -k 2s 180s ../mrmaster ../pg* txt &
135
137
sleep 1
136
138
137
- ../mrworker ../../mrapps/rtiming.so &
138
- ../mrworker ../../mrapps/rtiming.so
139
+ timeout -k 2s 180s ../mrworker ../../mrapps/rtiming.so &
140
+ timeout -k 2s 180s ../mrworker ../../mrapps/rtiming.so
139
141
140
142
NT=` cat mr-out* | grep ' ^[a-z] 2' | wc -l | sed ' s/ //g' `
141
143
if [ " $NT " -lt " 2" ]
142
144
then
143
145
echo ' ---' too few parallel reduces.
144
146
echo ' ---' reduce parallelism test: FAIL
145
- exit 1
147
+ failed_any= 1
146
148
else
147
149
echo ' ---' reduce parallelism test: PASS
148
150
fi
@@ -158,30 +160,30 @@ rm -f mr-out*
158
160
echo ' ***' Starting crash test.
159
161
160
162
rm -f mr-done
161
- (../mrmaster ../pg* txt ; touch mr-done ) &
163
+ (timeout -k 2s 180s ../mrmaster ../pg* txt ; touch mr-done ) &
162
164
sleep 1
163
165
164
166
# start multiple workers
165
- ../mrworker ../../mrapps/crash.so &
167
+ timeout -k 2s 180s ../mrworker ../../mrapps/crash.so &
166
168
167
169
# mimic rpc.go's masterSock()
168
170
SOCKNAME=/var/tmp/824-mr-` id -u`
169
171
170
172
( while [ -e $SOCKNAME -a ! -f mr-done ]
171
173
do
172
- ../mrworker ../../mrapps/crash.so
174
+ timeout -k 2s 180s ../mrworker ../../mrapps/crash.so
173
175
sleep 1
174
176
done ) &
175
177
176
178
( while [ -e $SOCKNAME -a ! -f mr-done ]
177
179
do
178
- ../mrworker ../../mrapps/crash.so
180
+ timeout -k 2s 180s ../mrworker ../../mrapps/crash.so
179
181
sleep 1
180
182
done ) &
181
183
182
184
while [ -e $SOCKNAME -a ! -f mr-done ]
183
185
do
184
- ../mrworker ../../mrapps/crash.so
186
+ timeout -k 2s 180s ../mrworker ../../mrapps/crash.so
185
187
sleep 1
186
188
done
187
189
@@ -197,7 +199,12 @@ then
197
199
else
198
200
echo ' ---' crash output is not the same as mr-correct-crash.txt
199
201
echo ' ---' crash test: FAIL
200
- exit 1
202
+ failed_any= 1
201
203
fi
202
204
203
- echo ' ***' PASSED ALL TESTS
205
+ if [ $failed_any -eq 0 ]; then
206
+ echo ' ***' PASSED ALL TESTS
207
+ else
208
+ echo ' ***' FAILED SOME TESTS
209
+ exit 1
210
+ fi
0 commit comments