1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
25 #
26 # Open_confirm testing.
27
28 # TESTROOT directory; must be set in the environment already
29 set TESTROOT $env(TESTROOT)
30
31 source [file join ${TESTROOT} tcl.init]
32 source [file join ${TESTROOT} testproc]
33 source [file join ${TESTROOT} lcltools]
34
35 # setting local variables
36 set TNAME $argv0
37
38 # connect to the test server
39 Connect
40
41
42 # set clientid with server
43 set tag $TNAME.setup
44 set clientid ""
45 set res ""
46 set cverf ""
47 if {[setclient [clock clicks] "o.[pid]" clientid cverf res] == "OK"} {
48 if {[setclientconf $clientid $cverf res] != "OK"} {
49 putmsg stdout 0 "ERROR: cannot setclientid"
50 return $UNINITIATED
51 }
52 } else {
53 return $UNINITIATED
54 }
55
56 # XXX add catch here later
57 set dfh [get_fh $BASEDIRS]
58
59 proc setparms {} {
60 uplevel 1 {set stateid ""}
61 uplevel 1 {set seqid ""}
62 uplevel 1 {set rflags ""}
63 uplevel 1 {set res ""}
64 uplevel 1 {set st ""}
65 uplevel 1 {set fh ""}
66 uplevel 1 {set xfh ""}
67 }
68
69
70 # Start testing
71 # --------------------------------------------------------------
72
73 # a: directory filehandle
74 set tag $TNAME{a}
75 set expct "ISDIR|BAD_STATEID"
76 set ASSERTION "directory filehandle, expect $expct"
77 putmsg stdout 0 "$tag: $ASSERTION"
78 set filename $tag
79 set TESTFILE [file join $BASEDIR $tag]
80 setparms
81 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
82 if {$fh == $NULL} {
83 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
84 } else {
85 set st [openconf4 $dfh $rflags stateid seqid res]
86 ckres "Open_confirm" $st $expct $res $PASS
87 closev4 $TESTFILE $fh $stateid $seqid
88 }
89
90
91 # b: using open_sid from a closed file
92 set tag $TNAME{b}
93 set expct "BAD_STATEID|OLD_STATEID"
94 set ASSERTION "using open_sid from a closed file,\n\texpect $expct"
95 putmsg stdout 0 "$tag: $ASSERTION"
96 set filename $tag
97 set TESTFILE [file join $BASEDIR $tag]
98 setparms
99 set fh [openv4 $TESTFILE clientid stateid seqid]
100 if {$fh == $NULL} {
101 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
102 } else {
103 set st [closetst $fh $stateid $seqid res]
104 if {$st != "OK"} {
105 putmsg stderr 0 "\t Test UNRESOLVED: failed to close the file."
106 } else {
107 set stateid [lindex [lindex $res 1] 2]
108 # re-open the file and try to confirm w/previous stateid
109 set fh2 [opencnftst $dfh $filename $clientid nsid seqid rflags]
110 if {$fh2 == $NULL} {
111 putmsg stderr 0 "\t Test UNRESOLVED: failed to open file again."
112 } else {
113 set st [openconf4 $fh2 $rflags stateid seqid res]
114 ckres "Open_confirm" $st $expct $res $PASS
115 }
116 }
117 removev4 $TESTFILE
118 }
119
120
121 # c: removed file
122 #set tag $TNAME{c}
123 #set expct "STALE"
124 #set ASSERTION "removed file, open_confirm retransmit, expect $expct"
125 #putmsg stdout 0 "$tag: $ASSERTION"
126 #putmsg stdout 0 "\tTest UNTESTED need a thread to set directly <cfh>"
127 #set filename $tag
128 #set TESTFILE [file join $BASEDIR $tag]
129 #setparms
130 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
131 #if {$fh == $NULL} {
132 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
133 #} else {
134 # closev4 $TESTFILE $fh $stateid $seqid
135 # set st [openconf4 $fh $rflags stateid seqid res]
136 # ckres "Open_confirm" $st $expct $res $PASS
137 #}
138
139
140 # d: symlink to dir filehandle
141 set tag $TNAME{d}
142 set expct "BAD_STATEID"
143 set ASSERTION "symlink to dir filehandle, expect $expct"
144 putmsg stdout 0 "$tag: $ASSERTION"
145 set filename $tag
146 set TESTFILE [file join $BASEDIR $tag]
147 setparms
148 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
149 if {$fh == $NULL} {
150 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
151 } else {
152 # XXX add catch here later
153 set xfh [get_fh [env2path SYMLDIR]]
154 set st [openconf4 $xfh $rflags stateid seqid res]
155 ckres "Open_confirm" $st $expct $res $PASS
156 closev4 $TESTFILE $fh $stateid $seqid
157 }
158
159
160 # e: block file filehandle
161 set tag $TNAME{e}
162 set expct "BAD_STATEID"
163 set ASSERTION "block file filehandle, expect $expct"
164 putmsg stdout 0 "$tag: $ASSERTION"
165 set filename $tag
166 set TESTFILE [file join $BASEDIR $tag]
167 setparms
168 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
169 if {$fh == $NULL} {
170 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
171 } else {
172 # XXX add catch here later
173 set xfh [get_fh [env2path BLKFILE]]
174 set st [openconf4 $xfh $rflags stateid seqid res]
175 ckres "Open_confirm" $st $expct $res $PASS
176 closev4 $TESTFILE $fh $stateid $seqid
177 }
178
179
180 # f: char file filehandle
181 set tag $TNAME{f}
182 set expct "BAD_STATEID"
183 set ASSERTION "char file filehandle, expect $expct"
184 putmsg stdout 0 "$tag: $ASSERTION"
185 set filename $tag
186 set TESTFILE [file join $BASEDIR $tag]
187 setparms
188 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
189 if {$fh == $NULL} {
190 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
191 } else {
192 # XXX add catch here later
193 set xfh [get_fh [env2path CHARFILE]]
194 set st [openconf4 $xfh $rflags stateid seqid res]
195 ckres "Open_confirm" $st $expct $res $PASS
196 closev4 $TESTFILE $fh $stateid $seqid
197 }
198
199
200 # g: fifo file filehandle
201 set tag $TNAME{g}
202 set expct "BAD_STATEID"
203 set ASSERTION "fifo file filehandle, expect $expct"
204 putmsg stdout 0 "$tag: $ASSERTION"
205 set filename $tag
206 set TESTFILE [file join $BASEDIR $tag]
207 setparms
208 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
209 if {$fh == $NULL} {
210 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
211 } else {
212 # XXX add catch here later
213 set xfh [get_fh [env2path FIFOFILE]]
214 set st [openconf4 $xfh $rflags stateid seqid res]
215 ckres "Open_confirm" $st $expct $res $PASS
216 closev4 $TESTFILE $fh $stateid $seqid
217 }
218
219
220 # h: wrong file filehandle
221 set tag $TNAME{h}
222 set expct "BAD_STATEID|BADHANDLE"
223 set ASSERTION "wrong file filehandle, expect $expct"
224 putmsg stdout 0 "$tag: $ASSERTION"
225 set filename $tag
226 set TESTFILE [file join $BASEDIR $tag]
227 setparms
228 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
229 if {$fh == $NULL} {
230 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
231 } else {
232 # XXX add catch here later
233 set xfh [get_fh [env2path ROFILE]]
234 set st [openconf4 $xfh $rflags stateid seqid res]
235 ckres "Open_confirm" $st $expct $res $PASS
236 closev4 $TESTFILE $fh $stateid $seqid
237 }
238
239
240 # i: corrupted filehandle
241 #set tag $TNAME{i}
242 #set expct "BADHANDLE"
243 #set ASSERTION "corrupted filehandle, expect $expct"
244 #putmsg stdout 0 "$tag: $ASSERTION"
245 #putmsg stdout 0 "\tTest UNTESTED need a thread to set directly <cfh>"
246 #set filename $tag
247 #set TESTFILE [file join $BASEDIR $tag]
248 #setparms
249 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
250 #if {$fh == $NULL} {
251 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
252 #} else {
253 # set xfh [string replace $fh end-7 end "DEADBEEF"]
254 # set st [openconf4 $xfh $rflags stateid seqid res]
255 # ckres "Open_confirm" $st $expct $res $PASS
256 # closev4 $TESTFILE $fh $stateid $seqid
257 #}
258
259
260 # j: filehandle set to 0s
261 #set tag $TNAME{j}
262 #set expct "BADHANDLE"
263 #set ASSERTION "filehandle set to 0s, expect $expct"
264 #putmsg stdout 0 "$tag: $ASSERTION"
265 #putmsg stdout 0 "\tTest UNTESTED need a thread to set directly <cfh>"
266 #set filename $tag
267 #set TESTFILE [file join $BASEDIR $tag]
268 #setparms
269 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
270 #if {$fh == $NULL} {
271 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
272 #} else {
273 # set xfh [binary format "S4" {0 0 0 0}]
274 # set st [openconf4 $xfh $rflags stateid seqid res]
275 # ckres "Open_confirm" $st $expct $res $PASS
276 # closev4 $TESTFILE $fh $stateid $seqid
277 #}
278
279
280 # k: filehandle set to 1s
281 #set tag $TNAME{k}
282 #set expct "BADHANDLE"
283 #set ASSERTION "filehandle set to 1s, expect $expct"
284 #putmsg stdout 0 "$tag: $ASSERTION"
285 #putmsg stdout 0 "\tTest UNTESTED need a thread to set directly <cfh>"
286 #set filename $tag
287 #set TESTFILE [file join $BASEDIR $tag]
288 #setparms
289 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
290 #if {$fh == $NULL} {
291 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
292 #} else {
293 # set xfh [binary format "S4" {65535 65535 65535 65535}]
294 # set st [openconf4 $xfh $rflags stateid seqid res]
295 # ckres "Open_confirm" $st $expct $res $PASS
296 # closev4 $TESTFILE $fh $stateid $seqid
297 #}
298
299
300 # l: filehandle set to NULL
301 set tag $TNAME{l}
302 set expct "NOFILEHANDLE"
303 set ASSERTION "no filehandle set, expect $expct"
304 putmsg stdout 0 "$tag: $ASSERTION"
305 set filename $tag
306 set TESTFILE [file join $BASEDIR $tag]
307 setparms
308 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
309 if {$fh == $NULL} {
310 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
311 } else {
312 set st [openconf4 "" $rflags stateid seqid res]
313 ckres "Open_confirm" $st $expct $res $PASS
314 closev4 $TESTFILE $fh $stateid $seqid
315 }
316
317
318 # m: wrong file stateid
319 set tag $TNAME{m}
320 set expct "BAD_STATEID"
321 set ASSERTION "wrong file stateid, expect $expct"
322 putmsg stdout 0 "$tag: $ASSERTION"
323 set filename $tag
324 set TESTFILE [file join $BASEDIR $tag]
325 setparms
326 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
327 if {$fh == $NULL} {
328 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
329 } else {
330 set fil2 "opencf2[clock clicks]"
331 set TSTF2 [file join $BASEDIR $fil2]
332 set ste2 ""
333 set sq2 ""
334 set rf2 ""
335 set fh2 [opencnftst $dfh $fil2 $clientid ste2 sq2 rf2]
336 if {$fh2 == $NULL} {
337 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TSTF2."
338 } else {
339 set st [openconf4 $fh $rflags ste2 seqid res]
340 ckres "Open_confirm" $st $expct $res $PASS
341 closev4 $TESTFILE $fh $stateid $seqid
342 closev4 $TSTF2 $fh2 $ste2 $sq2
343 unset fil2 TSTF2 sq2 rf2
344 }
345 }
346
347
348 # n1: corrupted stateid (stateid/seqid + 1)
349 set tag $TNAME{n1}
350 set expct "BAD_STATEID"
351 set ASSERTION "corrupted stateid (stateid/seqid + 1), expect $expct"
352 putmsg stdout 0 "$tag: $ASSERTION"
353 set filename $tag
354 set TESTFILE [file join $BASEDIR $tag]
355 setparms
356 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
357 if {$fh == $NULL} {
358 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
359 } else {
360 set bseqid [expr [lindex $stateid 0] + 1]
361 set bad_osid "$bseqid [lindex $stateid 1]"
362 set st [openconf4 $fh $rflags bad_osid seqid res]
363 ckres "Open_confirm" $st $expct $res $PASS
364 closev4 $TESTFILE $fh $stateid $seqid
365 }
366
367 # n2: corrupted stateid (trashed-other)
368 set tag $TNAME{n2}
369 set expct "BAD_STATEID|STALE_STATEID"
370 set ASSERTION "corrupted stateid (trashed-other), expect $expct"
371 putmsg stdout 0 "$tag: $ASSERTION"
372 set filename $tag
373 set TESTFILE [file join $BASEDIR $tag]
374 setparms
375 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
376 if {$fh == $NULL} {
377 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
378 } else {
379 set newS ""
380 set oldS [lindex $stateid 1]
381 set l [string length $oldS]
382 for {set i 0} {$i < $l} {incr i} {
383 append newS [string index $oldS end-$i]
384 }
385 set bad_osid "[lindex $stateid 0] $newS"
386 set st [openconf4 $fh $rflags bad_osid seqid res]
387 ckres "Open_confirm" $st $expct $res $PASS
388 closev4 $TESTFILE $fh $stateid $seqid
389 }
390
391 # o: stateid set to 0-special-stateid
392 set tag $TNAME{o}
393 set expct "BAD_STATEID"
394 set ASSERTION "Openconfirm w/0-special-stateid, expect $expct"
395 putmsg stdout 0 "$tag: $ASSERTION"
396 putmsg stdout 0 "\t Test UNTESTED"
397 putmsg stdout 0 "\t Temporary commented out due to 4811769 (p4)"
398 #set filename $tag
399 #set TESTFILE [file join $BASEDIR $tag]
400 #setparms
401 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
402 #if {$fh == $NULL} {
403 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
404 #} else {
405 # set ste2 "0 0"
406 # set st [openconf4 $fh $rflags ste2 seqid res]
407 # ckres "Open_confirm" $st $expct $res $PASS
408 # closev4 $TESTFILE $fh $stateid $seqid
409 #}
410
411
412 # p: stateid set to 1-special-stateid
413 set tag $TNAME{p}
414 set expct "BAD_STATEID"
415 set ASSERTION "Openconfirm w/1-special-stateid, expect $expct"
416 putmsg stdout 0 "$tag: $ASSERTION"
417 set filename $tag
418 set TESTFILE [file join $BASEDIR $tag]
419 setparms
420 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
421 if {$fh == $NULL} {
422 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
423 } else {
424 set ste2 "1 1"
425 set st [openconf4 $fh $rflags ste2 seqid res]
426 ckres "Open_confirm" $st $expct $res $PASS
427 closev4 $TESTFILE $fh $stateid $seqid
428 }
429
430
431 # s: retransmitted after success w/previous seqid
432 set tag $TNAME{s}
433 set expct "BAD_SEQID"
434 set ASSERTION "retransmitted after success w/previous seqid,\n\texpect $expct"
435 putmsg stdout 0 "$tag: $ASSERTION"
436 set filename $tag
437 set TESTFILE [file join $BASEDIR $tag]
438 setparms
439 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
440 if {$fh == $NULL} {
441 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
442 } else {
443 set st [openconf4 $fh $rflags stateid seqid res]
444 incr seqid -2
445 set st [openconf4 $fh $rflags stateid seqid res]
446 ckres "Open_confirm" $st $expct $res $PASS
447 closev4 $TESTFILE $fh $stateid $seqid
448 }
449
450
451 # t: seqid old (set to 1)
452 set tag $TNAME{t}
453 set expct "BAD_SEQID"
454 set ASSERTION "seqid old (set to 1), expect $expct"
455 putmsg stdout 0 "$tag: $ASSERTION"
456 set filename $tag
457 set TESTFILE [file join $BASEDIR $tag]
458 setparms
459 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
460 if {$fh == $NULL} {
461 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
462 } else {
463 set sq2 1
464 set st [openconf4 $fh $rflags stateid sq2 res]
465 ckres "Open_confirm" $st $expct $res $PASS
466 closev4 $TESTFILE $fh $stateid $seqid
467 }
468
469
470 # u: seqid set to 0
471 set tag $TNAME{u}
472 set expct "BAD_SEQID"
473 set ASSERTION "seqid set to 0, expect $expct"
474 putmsg stdout 0 "$tag: $ASSERTION"
475 set filename $tag
476 set TESTFILE [file join $BASEDIR $tag]
477 setparms
478 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
479 if {$fh == $NULL} {
480 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
481 } else {
482 set sq2 0
483 set st [openconf4 $fh $rflags stateid sq2 res]
484 ckres "Open_confirm" $st $expct $res $PASS
485 closev4 $TESTFILE $fh $stateid $seqid
486 }
487
488
489 # v: seqid set to NULL
490 #set tag $TNAME{v}
491 #set expct "BAD_SEQID"
492 #set ASSERTION "seqid set to NULL, expect $expct"
493 #putmsg stdout 0 "$tag: $ASSERTION"
494 #putmsg stdout 0 "Test Untested: nfsh unable to take NULL as input"
495 #set filename $tag
496 #set TESTFILE [file join $BASEDIR $filename]
497 #setparms
498 #set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
499 #if {$fh == $NULL} {
500 # putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
501 #} else {
502 # set sq2 ""
503 # set st [openconf4 $fh $rflags stateid sq2 res]
504 # ckres "Open_confirm" $st $expct $res $PASS
505 # closev4 $TESTFILE $fh $stateid $seqid
506 #}
507
508
509 # w: seqid corrupted (set to 1234567890)
510 set tag $TNAME{w}
511 set expct "BAD_SEQID"
512 set ASSERTION "seqid corrupted, expect $expct"
513 putmsg stdout 0 "$tag: $ASSERTION"
514 set filename $tag
515 set TESTFILE [file join $BASEDIR $tag]
516 setparms
517 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
518 if {$fh == $NULL} {
519 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
520 } else {
521 set sq2 1234567890
522 set st [openconf4 $fh $rflags stateid sq2 res]
523 ckres "Open_confirm" $st $expct $res $PASS
524 closev4 $TESTFILE $fh $stateid $seqid
525 }
526
527
528 # x: normal file, seqid increased & send 2nd openconfirm
529 set tag $TNAME{x}
530 set expct "BAD_SEQID"
531 set ASSERTION \
532 "normal file, seqid increased & send 2nd openconfirm,\n\texpect $expct"
533 putmsg stdout 0 "$tag: $ASSERTION"
534 set filename $tag
535 set TESTFILE [file join $BASEDIR $tag]
536 setparms
537 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
538 if {$fh == $NULL} {
539 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
540 exit $UNINITIATED
541 }
542 set ste2 $stateid
543 set st [openconf4 $fh $rflags ste2 seqid res]
544 set st [openconf4 $fh $rflags stateid seqid res]
545 ckres "Open_confirm" $st $expct $res $PASS
546 closev4 $TESTFILE $fh $stateid $seqid
547
548
549 # y: openconfirm when not requested
550 set tag $TNAME{y}
551 set expct "BAD_STATEID"
552 set ASSERTION "openconfirm when not requested, expect $expct"
553 putmsg stdout 0 "$tag: $ASSERTION"
554 set filename "$tag[clock seconds]"
555 set TESTFILE [file join $BASEDIR $filename]
556 setparms
557 set owner 1720
558 set fh [basic_open $dfh $filename 1 "$clientid $owner" stateid seqid \
559 status 1 1 644 1 2 0 1]
560 if {$fh < 0} {
561 putmsg stderr 0 "\t Test UNINITIATED: unable to create $TESTFILE."
562 } else {
563 incr seqid
564 set res [compound {Putfh $dfh; Open $seqid 1 0 \
565 {$clientid $owner} {0 0 {{mode 644}}} {0 $filename}; \
566 Getfh}]
567 putmsg stdout 1 "compound {Putfh $dfh;"
568 putmsg stdout 1 "\tOpen $seqid 1 0 {$clientid $owner}"
569 putmsg stdout 1 "\t{0 0 {{mode 0644}}} {0 $filename}; Getfh}"
570 if {$status != "OK"} {
571 putmsg stdout 1 "Cannot open ($filename)."
572 putmsg stdout 1 "Res: $res"
573 set fh $NULL
574 } else {
575 incr seqid
576 set stateid [lindex [lindex $res 1] 2]
577 set rflags [lindex [lindex $res 1] 4]
578 set fh [lindex [lindex $res 2] 2]
579 putmsg stdout 1 \
580 "stateid = $stateid\nrflags = $rflags\nseqid = $seqid"
581 }
582 if {$fh == $NULL} {
583 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
584 } else {
585 # make sure open_confirm was not requested
586 if {[expr $rflags & $OPEN4_RESULT_CONFIRM] == \
587 $OPEN4_RESULT_CONFIRM} {
588 putmsg stderr 0 \
589 "\tTest NOTINUSE: open_confirm requested for $TESTFILE."
590 removev4 $TESTFILE
591 } else {
592 # XXX add catch here later
593 set st [openconf4 $fh $rflags stateid seqid res]
594 ckres "Open_confirm" $st $expct $res $PASS
595 closev4 $TESTFILE $fh $stateid $seqid
596 }
597 }
598 }
599
600
601 # z: openconfirm after lease expired
602 set tag $TNAME{z}
603 set expct "EXPIRED|BAD_STATEID"
604 set ASSERTION "openconfirm after lease expired, expect $expct"
605 putmsg stdout 0 "$tag: $ASSERTION"
606 set filename $tag
607 set TESTFILE [file join $BASEDIR $tag]
608 set SERVER $env(SERVER)
609 set CLIENT $env(CLIENT)
610 set ret true
611 setparms
612 set fh [opencnftst $dfh $filename $clientid stateid seqid rflags]
613 if {$fh == $NULL} {
614 putmsg stderr 0 "\t Test UNINITIATED: unable to open $TESTFILE."
615 } else {
616 # Wait until lease time expires
617 set Delay [expr ($LEASE_TIME + 5) * 1000]
618 putmsg stdout 1 "after $Delay"
619 set tmstr [get_sctime $SERVER $CLIENT]
620 after $Delay
621 set st [openconf4 $fh $rflags stateid seqid res]
622 set tmstr "$tmstr\nafter $Delay and openconf4 are done, \
623 get system time again"
624 set tmstr "$tmstr\n[get_sctime $SERVER $CLIENT]"
625 set ret [ckres "Open_confirm" $st $expct $res $PASS]
626 if {!$ret} {
627 # if fail, puts related time info on server and client
628 # and cpu info as well
629 puts $tmstr
630 set cpucmd "/usr/sbin/psrinfo -pv"
631 puts "\nCPU info of server: $SERVER"
632 puts [exec rsh -n -l root $SERVER "$cpucmd"]
633 puts "\nCPU info of client: $CLIENT"
634 puts [exec sh -c "$cpucmd"]
635
636 }
637
638 # since LEASE has expired (can't close the file), just remove tmp file
639 removev4 $TESTFILE
640 }
641
642 # --------------------------------------------------------------
643 # disconnect and exit
644
645 Disconnect
646 exit $PASS
647