1 krisbash 1.1 #!/bin/sh
2
3 run_char=1
4 run_wchar=1
5 run_size=1
6 run_check=1
7
8 ##==============================================================================
9 ##
10 ## Get command line options that start with dash:
11 ##
12 ##==============================================================================
13 for opt
14 do
15
16 arg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
17
18 case $opt in
19
20 -h | --help)
21 help=1
22 krisbash 1.1 ;;
23
24 --runs=*)
25 run_char=0
26 run_wchar=0
27 run_size=0
28 run_check=0
29 runs=`echo $arg | sed 's/:/ /g'`
30 for i in $runs
31 do
32 case $i in
33 char)
34 run_char=1
35 ;;
36 wchar)
37 run_wchar=1
38 ;;
39 size)
40 run_size=1
41 ;;
42 check)
43 krisbash 1.1 run_check=1
44 ;;
45 all)
46 run_char=1
47 run_wchar=1
48 run_size=1
49 run_check=1
50 ;;
51 *)
52 echo "$0: unknown option argument for --runs: $i"
53 exit 1
54 esac
55 done
56 ;;
57
58 *)
59 echo "$0: unknown option: $opt"
60 exit 1
61 ;;
62
63 esac
64 krisbash 1.1 done
65
66 ##=============================================================================
67 ##
68 ## Handle --help option:
69 ##
70 ##==============================================================================
71
72 if [ "$help" = "1" ]; then
73
74 cat<<EOF
75
76 Usage: ./regress [OPTIONS] TESTNAME(S)
77
78 OVERVIEW:
79
80 Runs regression tests for OMI.
81
82 $ ./regress [OPTIONS] TESTNAME(S)
83
84 OPTIONS:
85 krisbash 1.1 -h, --help Print this help message.
86 --enable-ut Enable UT tests.
87 --runs=TESTNAME(S) Run only those test runs
88 TESTNAME(S):
89 char run (single byte) char tests run
90 wchar run wchar tests run
91 size run (optimized for) size tests run
92 check run check tests run
93 all run all test runs (char, wchar, size, check)
94
95 Examples:
96 ./regress
97 ./regress --runs=char:wchar
98
99 EOF
100 exit 0
101 fi
102
103 ##==============================================================================
104 ##
105 ## Determine configure and root directories:
106 krisbash 1.1 ##
107 ##==============================================================================
108
109 root=`dirname $0`
110
111 ##==============================================================================
112 ##
113 ## 'world' tests
114 ##
115 ##==============================================================================
116
117 if [ "$run_char" = "1" ]; then
118
119 rm -rf ./output1 GNUmakefile
120 $root/configure --dev --outputdirname=output1 $options
121 make world
122
123 if [ "$?" != "0" ]; then
124 echo "$0: failed 'world' tests"
125 exit 1
126 fi
127 krisbash 1.1
128 rm -rf ./output1 GNUmakefile
129
130 fi
131
132 ##==============================================================================
133 ##
134 ## 'wchar' tests:
135 ##
136 ##==============================================================================
137
138 if [ "$run_wchar" = "1" ]; then
139
140 rm -rf ./output2 GNUmakefile
141 $root/configure --dev --enable-wchar --outputdirname=output2 $options
142 make world
143
144 if [ "$?" != "0" ]; then
145 echo "$0: failed 'wchar' tests"
146 exit 1
147 fi
148 krisbash 1.1
149 rm -rf ./output2 GNUmakefile
150
151 fi
152
153 ##==============================================================================
154 ##
155 ## 'size' tests
156 ##
157 ##==============================================================================
158
159 if [ "$run_size" = "1" ]; then
160
161 rm -rf ./output3 GNUmakefile
162 $root/configure --dev --favorsize --outputdirname=output3 $options
163 make world
164
165 if [ "$?" != "0" ]; then
166 echo "$0: failed 'size' tests"
167 exit 1
168 fi
169 krisbash 1.1
170 rm -rf ./output3 GNUmakefile
171
172 fi
173
174 ##==============================================================================
175 ##
176 ## make dist + check tests
177 ##
178 ##==============================================================================
179
180 if [ "$run_check" = "1" ]; then
181
182 rm -rf ./output4 GNUmakefile
183
184 # compose omi tar package name
185 major=`cut -d. -f1 $root/VERSION`
186 minor=`cut -d. -f2 $root/VERSION`
187 revision=`cut -d. -f3 $root/VERSION`
188 version="$major.$minor.$revision"
189 omitarname=omi-$version.tar.gz
190 krisbash 1.1
191 # create tar package
192 $root/configure
193 make dist
194
195 # copy tar package to a temp directory
196 checkdir=$root/disttemp
197 echo "checkdir=$checkdir"
198 rm -rf $checkdir
199 mkdir $checkdir
200 cp $root/$omitarname $checkdir
201
202 # validate the tar package
203 cd $checkdir
204 ls $omitarname
205 gzip -d $omitarname
206 tar xf omi-$version.tar
207 cd omi-$version
208
209 ##
210 ## Create the prefix directory:
211 krisbash 1.1 ##
212
213 prefix=/tmp/OMI932E75578CAB46E4A3EB87787B9EA40F
214 rm -rf $prefix
215
216 if [ -d "$prefix" ]; then
217 echo "$0: failed: directory already exists (please remove and retry): $prefix"
218 exit 1;
219 fi
220
221 ##
222 ## configure:
223 ##
224
225 rm -rf $prefix
226 ./configure --prefix=$prefix --outputdirname=output4 $options
227
228 if [ "$?" != "0" ]; then
229 echo "$0: configure failed"
230 exit 1
231 fi
232 krisbash 1.1
233 ##
234 ## make:
235 ##
236
237 make
238
239 if [ "$?" != "0" ]; then
240 echo "$0: make failed"
241 exit 1
242 fi
243
244 ##
245 ## check:
246 ##
247
248 make check
249
250 if [ "$?" != "0" ]; then
251 echo "$0: check failed"
252 exit 1
253 krisbash 1.1 fi
254
255 ##
256 ## install:
257 ##
258
259 make install
260
261 if [ "$?" != "0" ]; then
262 echo "$0: make install failed"
263 rm -rf $prefix
264 exit 1
265 fi
266
267 ##
268 ## Generate C++ provider:
269 ##
270
271 mkdir $prefix/ocsprovider
272
273 if [ "$?" != "0" ]; then
274 krisbash 1.1 echo "$0: failed to create $prefix/oscprovider directory"
275 rm -rf $prefix
276 exit 1
277 fi
278
279 cat > $prefix/ocsprovider/schema.mof <<EOF
280 class OMI_ComputerSystem : CIM_ComputerSystem { };
281 EOF
282
283 if [ "$?" != "0" ]; then
284 echo "$0: failed to create schema.mof"
285 rm -rf $prefix
286 exit 1
287 fi
288
289 savedir=`pwd`
290
291 cd $prefix/ocsprovider
292 $prefix/bin/omigen --cpp -m oscprovider ./schema.mof OMI_ComputerSystem
293
294 if [ "$?" != "0" ]; then
295 krisbash 1.1 echo "$0: failed to generate provider"
296 rm -rf $prefix
297 exit 1
298 fi
299
300 ##
301 ## Build the C++ provider:
302 ##
303
304 make
305
306 if [ "$?" != "0" ]; then
307 echo "$0: failed to build provider"
308 rm -rf $prefix
309 exit 1
310 fi
311
312 ##
313 ## Register the C++ provider:
314 ##
315
316 krisbash 1.1 make reg
317
318 if [ "$?" != "0" ]; then
319 echo "$0: failed to register provider"
320 rm -rf $prefix
321 exit 1
322 fi
323
324 ##
325 ## Start the server with these options:
326 ## -i -- ignore authentication (allowing to run as non-root)
327 ## -d -- daemonize (run in the background)
328 ## --livetime 60 -- exit server in 60 seconds
329 ## --httpport 0 -- don't bind to an HTTP port
330 ## --httpports 0 -- don't bind to an HTTPS port
331 ##
332
333 $prefix/bin/omiserver -i -d --livetime 60 --httpport 0 --httpsport 0
334
335 if [ "$?" != "0" ]; then
336 echo "$0: failed to start server"
337 krisbash 1.1 rm -rf $prefix
338 exit 1
339 fi
340
341 sleep 3
342
343 ##
344 ## Enumerate instances of OMI_ComputerSystem (expect MI_RESULT_NOT_SUPPORTED=7)
345 ##
346
347 $prefix/bin/omicli ei root/cimv2 OMI_ComputerSystem
348
349 if [ "$?" != "7" ]; then
350 echo "$0: failed to enumerate instances of OMI_ComputerSystem"
351 rm -rf $prefix
352 exit 1
353 fi
354
355 ##
356 ## Stop the server:
357 ##
358 krisbash 1.1
359 $prefix/bin/omiserver -s
360
361 if [ "$?" != "0" ]; then
362 echo "$0: failed to stop the server"
363 rm -rf $prefix
364 exit 1
365 fi
366
367 ##
368 ## Cleanup:
369 ##
370
371 cd $savedir
372 rm -rf $prefix
373 rm -rf ./output4 GNUmakefile
374 cd ../..
375 rm -rf $root/$omitarname $root/GNUmakefile $checkdir
376
377 fi
378
379 krisbash 1.1 ##==============================================================================
380 ##
381 ## SUCCESS
382 ##
383 ##==============================================================================
384
385 echo ""
386 echo ""
387 echo "##===================##"
388 echo "## ##"
389 echo "## ALL TESTS PASSED! ##"
390 echo "## ##"
391 echo "##===================##"
392 echo ""
393 exit 0
|