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