@@ -155,7 +155,7 @@ class Environment(testmod.Environment):
for comp in self.opts.path:
path.append(comp)
res = c.compound(c.use_obj(path))
- checklist(res, [NFS4_OK, NFS4ERR_NOENT],
+ check(res, [NFS4_OK, NFS4ERR_NOENT],
"Could not LOOKUP /%s," % '/'.join(path))
if res.status == NFS4ERR_NOENT:
res = c.create_obj(path)
@@ -163,7 +163,7 @@ class Environment(testmod.Environment):
# remove /tree/*
tree = self.opts.path[:-1] + ['tree']
res = c.compound(c.use_obj(tree))
- checklist(res, [NFS4_OK, NFS4ERR_NOENT])
+ check(res, [NFS4_OK, NFS4ERR_NOENT])
if res.status == NFS4ERR_NOENT:
res = c.create_obj(tree)
check(res, msg="Trying to create /%s," % '/'.join(tree))
@@ -233,31 +233,18 @@ class Environment(testmod.Environment):
debug_fail = False
def check(res, stat=NFS4_OK, msg=None, warnlist=[]):
- #if res.status == stat:
- # return
- if res.status == stat:
- if not (debug_fail and msg):
- return
+
if type(stat) is str:
raise "You forgot to put 'msg=' in front of check's string arg"
- desired = nfsstat4[stat]
- received = nfsstat4[res.status]
- if msg:
- failedop_name = msg
- elif res.resarray:
- failedop_name = nfs_opnum4[res.resarray[-1].resop]
- else:
- failedop_name = 'Compound'
- msg = "%s should return %s, instead got %s" % \
- (failedop_name, desired, received)
- if res.status in warnlist:
- raise testmod.WarningException(msg)
- else:
- raise testmod.FailureException(msg)
-def checklist(res, statlist, msg=None):
+ statlist = stat
+ if type(statlist) == int:
+ statlist = [stat]
+
if res.status in statlist:
- return
+ if not (debug_fail and msg):
+ return
+
statnames = [nfsstat4[stat] for stat in statlist]
desired = ' or '.join(statnames)
if not desired:
@@ -271,7 +258,10 @@ def checklist(res, statlist, msg=None):
failedop_name = 'Compound'
msg = "%s should return %s, instead got %s" % \
(failedop_name, desired, received)
- raise testmod.FailureException(msg)
+ if res.status in warnlist:
+ raise testmod.WarningException(msg)
+ else:
+ raise testmod.FailureException(msg)
def checkdict(expected, got, translate={}, failmsg=''):
if failmsg: failmsg += ': '
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
from nfs4_type import nfsace4
# assuming server will accept any small positive integer as an owner
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
_text = "Random data to write"
@@ -15,7 +15,7 @@ def _commit(t, c, offset=0, count=0, statlist=[NFS4_OK]):
res = c.write_file(fh, _text, 0, stateid, how=UNSTABLE4)
check(res, msg="WRITE with how=UNSTABLE4")
res = c.commit_file(fh, offset, count)
- checklist(res, statlist, msg="COMMIT with offset=%x, count=%x" % (offset, count))
+ check(res, statlist, msg="COMMIT with offset=%x, count=%x" % (offset, count))
def testCommitOffset0(t, env):
"""COMMIT
@@ -80,7 +80,7 @@ def testLink(t, env):
"""
c = env.c1
res = c.commit_file(env.opts.uselink)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "COMMIT with non-file object")
+ check(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "COMMIT with non-file object")
def testBlock(t, env):
"""COMMIT
@@ -1,7 +1,7 @@
from nfs4_const import *
from nfs4_type import nfs_argop4
from nfs4_pack import NFS4Packer
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
from rpc import RPCError
def testZeroOps(t, env):
@@ -100,7 +100,7 @@ def testLongCompound(t, env):
while 1:
count += step
res = c.compound(baseops * count)
- checklist(res, [NFS4_OK, NFS4ERR_RESOURCE],
+ check(res, [NFS4_OK, NFS4ERR_RESOURCE],
"COMPOUND with len=%i argarry" % (3*count))
if res.status == NFS4ERR_RESOURCE:
return
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import createtype4, specdata4
-from environment import check, checklist
+from environment import check
def getDefaultAttr(c):
attr = {}
@@ -91,7 +91,7 @@ def testDirOffLink(t, env):
"""
c = env.c1
res = c.create_obj(env.opts.uselink + [t.code])
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK])
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK])
def testDirOffBlock(t, env):
"""CREATE dir off a block device
@@ -172,7 +172,7 @@ def testZeroLengthForLNK(t, env):
objtype = createtype4(NF4LNK, **{'linkdata':''})
ops += [c.create_op(objtype, t.code, getDefaultAttr(c))]
res = c.compound(ops)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_NOENT], "CREATE with zero-length name for SYMLINK")
+ check(res, [NFS4ERR_INVAL, NFS4ERR_NOENT], "CREATE with zero-length name for SYMLINK")
def testRegularFile(t, env):
"""CREATE should fail with NFS4ERR_BADTYPE for regular files
@@ -228,10 +228,10 @@ def testDots(t, env):
"""
c = env.c1
res = c.create_obj(c.homedir + ['.'])
- checklist(res, [NFS4_OK, NFS4ERR_BADNAME],
+ check(res, [NFS4_OK, NFS4ERR_BADNAME],
"Trying to CREATE a dir named '.'")
res2 = c.create_obj(c.homedir + ['..'])
- checklist(res2, [NFS4_OK, NFS4ERR_BADNAME],
+ check(res2, [NFS4_OK, NFS4ERR_BADNAME],
"Trying to CREATE a dir named '..'")
if res.status == NFS4_OK or res2.status == NFS4_OK:
t.pass_warn("Allowed creation of dir named '.' or '..'")
@@ -258,7 +258,7 @@ def testSlash(t, env):
res = c.create_obj(c.homedir + [t.code + '/foo'])
if res.status == NFS4_OK:
t.pass_warn("Allowed creation of dir named '%s/foo'" % t.code)
- checklist(res, [NFS4ERR_BADNAME, NFS4ERR_BADCHAR],
+ check(res, [NFS4ERR_BADNAME, NFS4ERR_BADCHAR],
"Creation of dir named '%s/foo'" % t.code)
def testLongName(t, env):
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import nfs_client_id4, clientaddr4, cb_client4
-from environment import check, checklist
+from environment import check
import os
import threading
import time
@@ -54,7 +54,7 @@ def _cause_recall(t, env):
deny=OPEN4_SHARE_DENY_NONE)
_lock.release()
if res.status == NFS4_OK: break
- checklist(res, [NFS4_OK, NFS4ERR_DELAY], "Open which causes recall")
+ check(res, [NFS4_OK, NFS4ERR_DELAY], "Open which causes recall")
env.sleep(sleeptime, 'Got NFS4ERR_DELAY on open')
return c.confirm('newowner', res)
@@ -291,7 +291,7 @@ def testRenew(t, env, funct=None, response=NFS4_OK):
access=OPEN4_SHARE_ACCESS_WRITE)
env.sleep(lease / 2, "Waiting to send RENEW")
res = c.compound([c.renew_op(c.clientid)])
- checklist(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN], "RENEW")
+ check(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN], "RENEW")
if res.status != NFS4_OK:
noticed = True
break
@@ -362,7 +362,7 @@ def testDelegShare(t, env, funct=_recall, response=NFS4_OK):
access=OPEN4_SHARE_ACCESS_WRITE)
_lock.release()
if res.status in [NFS4_OK, NFS4ERR_SHARE_DENIED]: break
- checklist(res, [NFS4_OK, NFS4ERR_DELAY, NFS4ERR_SHARE_DENIED],
+ check(res, [NFS4_OK, NFS4ERR_DELAY, NFS4ERR_SHARE_DENIED],
"Open which causes recall")
env.sleep(sleeptime, 'Got NFS4ERR_DELAY on open')
sleeptime += 5
@@ -410,7 +410,7 @@ def testChangeDeleg(t, env, funct=_recall):
confirm = res.resarray[0].switch.switch.setclientid_confirm
confirmop = c.setclientid_confirm_op(c.clientid, confirm)
res = c.compound([confirmop])
- checklist(res, [NFS4_OK, NFS4ERR_RESOURCE])
+ check(res, [NFS4_OK, NFS4ERR_RESOURCE])
if res.status == NFS4ERR_RESOURCE:
# ibm workaround
res = c.compound([confirmop])
@@ -522,7 +522,7 @@ def testClaimCur(t, env):
res = c.open_file('newowner', c.homedir + [t.code],
access=OPEN4_SHARE_ACCESS_WRITE,
deny=OPEN4_SHARE_DENY_NONE)
- checklist(res, [NFS4_OK, NFS4ERR_DELAY], "Open which causes recall")
+ check(res, [NFS4_OK, NFS4ERR_DELAY], "Open which causes recall")
env.sleep(2, "Waiting for recall")
# Now send some opens
@@ -541,7 +541,7 @@ def _retry_conflicting_op(env, c, op, opname):
res = c.compound(op)
_lock.release()
if res.status == NFS4_OK: break
- checklist(res, [NFS4_OK, NFS4ERR_DELAY],
+ check(res, [NFS4_OK, NFS4ERR_DELAY],
"%s which causes recall" % opname)
env.sleep(1, 'Got NFS4ERR_DELAY on %s' % opname)
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
from nfs4lib import get_attr_name
def _try_mandatory(t, env, path):
@@ -481,7 +481,7 @@ def testFSLocations(t, env):
ops = c.use_obj(env.opts.usefile)
ops += [c.getattr([FATTR4_FS_LOCATIONS])]
res = c.compound(ops)
- checklist(res, [NFS4_OK, NFS4ERR_ATTRNOTSUPP], "GETATTR(fs_locations)")
+ check(res, [NFS4_OK, NFS4ERR_ATTRNOTSUPP], "GETATTR(fs_locations)")
if res.status == NFS4ERR_ATTRNOTSUPP:
t.fail_support("fs_locations not a supported attribute")
# print res.resarray[-1].obj_attributes
@@ -512,7 +512,7 @@ def testOwnerName(t, env):
ops = c.use_obj(env.opts.usefile)
ops += [c.getattr([FATTR4_OWNER])]
res = c.compound(ops)
- checklist(res, [NFS4_OK, NFS4ERR_ATTRNOTSUPP], "GETATTR(owner)")
+ check(res, [NFS4_OK, NFS4ERR_ATTRNOTSUPP], "GETATTR(owner)")
if res.status == NFS4ERR_ATTRNOTSUPP:
t.fail_support("owner not a supported attribute")
# print res.resarray[-1].obj_attributes
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
def _basictest(t, c, path, error=NFS4_OK):
"""Link to path, and make sure FATTR4_NUMLINKS increases by one"""
@@ -143,7 +143,7 @@ def testCfhLink(t, env):
CODE: LINK4a
"""
res = env.c1.link(env.opts.usefile, env.opts.uselink + [t.code])
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK],
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK],
"LINK with <cfh> not a directory")
def testCfhBlock(t, env):
@@ -238,10 +238,10 @@ def testDots(t, env):
res = c.create_obj(dir)
check(res)
res1 = c.link(env.opts.usefile, dir + ['.'])
- checklist(res1, [NFS4_OK, NFS4ERR_BADNAME],
+ check(res1, [NFS4_OK, NFS4ERR_BADNAME],
"Trying to make a hardlink named '.'")
res2 = c.link(env.opts.usefile, dir + ['..'])
- checklist(res2, [NFS4_OK, NFS4ERR_BADNAME],
+ check(res2, [NFS4_OK, NFS4ERR_BADNAME],
"Trying to make a hardlink named '..'")
if res1.status == NFS4_OK or res2.status == NFS4_OK:
t.pass_warn("Allowed creation of hardlink named '.' or '..'")
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import stateid4
-from environment import check, checklist, get_invalid_clientid, makeStaleId, makeBadIDganesha
+from environment import check, get_invalid_clientid, makeStaleId, makeBadIDganesha
import time
def testFile(t, env):
@@ -33,7 +33,7 @@ def testClose(t, env):
res = c.lock_test(fh)
check(res, NFS4ERR_DENIED, "Testing file %s is locked" % t.code)
res = c.close_file(t.code, fh, stateid)
- checklist(res, [NFS4_OK, NFS4ERR_LOCKS_HELD],
+ check(res, [NFS4_OK, NFS4ERR_LOCKS_HELD],
"Trying to close locked file")
if res.status == NFS4ERR_LOCKS_HELD:
t.fail_support("Can not close locked files")
@@ -74,7 +74,7 @@ def test32bitRange(t, env):
c.init_connection()
fh, stateid = c.create_confirm(t.code)
res = c.lock_file(t.code, fh, stateid, 0, 0xffffffffffff)
- checklist(res, [NFS4_OK, NFS4ERR_BAD_RANGE], "LOCK range over 32 bits")
+ check(res, [NFS4_OK, NFS4ERR_BAD_RANGE], "LOCK range over 32 bits")
if res.status == NFS4ERR_BAD_RANGE:
t.fail_support("Server does not support 64 bit lock ranges")
@@ -91,7 +91,7 @@ def testOverlap(t, env):
res1 = c.lock_file(t.code, fh, stateid, 25, 75)
check(res1)
res2 = c.relock_file(1, fh, res1.lockid, 50, 75)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "Overlapping locks")
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "Overlapping locks")
if res2.status == NFS4ERR_LOCK_RANGE:
t.fail_support("Server does not support lock consolidation")
# Test the merged lock
@@ -116,7 +116,7 @@ def testDowngrade(t, env):
check(res1)
# Lock again with read lock
res2 = c.relock_file(1, fh, res1.lockid, 25, 75, READ_LT)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_NOTSUPP], "Lock downgrade")
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_NOTSUPP], "Lock downgrade")
if res2.status == NFS4ERR_LOCK_NOTSUPP:
t.fail_support("Server does not support atomic lock downgrades")
# Test the lock has changed
@@ -140,7 +140,7 @@ def testUpgrade(t, env):
check(res1)
# Lock again with write lock
res2 = c.relock_file(1, fh, res1.lockid, 25, 75, WRITE_LT)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_NOTSUPP], "Lock upgrade")
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_NOTSUPP], "Lock upgrade")
if res2.status == NFS4ERR_LOCK_NOTSUPP:
t.fail_support("Server does not support atomic lock upgrades")
# Test the lock has changed
@@ -161,7 +161,7 @@ def testMode(t, env):
c.init_connection()
fh, stateid = c.create_confirm(t.code, access=OPEN4_SHARE_ACCESS_READ)
res = c.lock_file(t.code, fh, stateid)
- checklist(res, [NFS4_OK, NFS4ERR_OPENMODE],
+ check(res, [NFS4_OK, NFS4ERR_OPENMODE],
"Write-locking a read-mode file")
if res.status == NFS4_OK:
t.pass_warn("Allowed write-locking a read-mode file, "
@@ -409,7 +409,7 @@ def testTimedoutGrabLock(t, env):
for i in range(3):
env.sleep(sleeptime)
res = c2.compound([c2.renew_op(c2.clientid)])
- checklist(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN])
+ check(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN])
# Client 2: Lock file, should work since Client 1's lock has expired
res2 = c2.lock_file(t.code, fh2, stateid2, type=READ_LT)
check(res2, msg="Locking file after another client's lock expires")
@@ -660,7 +660,7 @@ def testBlockTimeout(t, env):
for i in range(3):
env.sleep(sleeptime, "Waiting for queued blocking lock to timeout")
res = c.compound([c.renew_op(c.clientid)])
- checklist(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN])
+ check(res, [NFS4_OK, NFS4ERR_CB_PATH_DOWN])
# Standard owner releases lock
res1 = c.unlock_file(1, fh1, res1.lockid)
check(res1)
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_clientid
+from environment import check, get_invalid_clientid
def testUnlockedFile(t, env):
"""LOCKT on a regular unlocked file
@@ -48,7 +48,7 @@ def testLink(t, env):
c = env.c1
c.init_connection()
res = c.lock_test(env.opts.uselink)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "LOCKT on non-file object")
+ check(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "LOCKT on non-file object")
def testBlock(t, env):
"""LOCKT on non-file objects)
@@ -127,7 +127,7 @@ def test32bitRange(t, env):
c.init_connection()
fh, stateid = c.create_confirm(t.code)
res = c.lock_test(fh, 0, 0xffffffffffff)
- checklist(res, [NFS4_OK, NFS4ERR_BAD_RANGE], "LOCKT range over 32 bits")
+ check(res, [NFS4_OK, NFS4ERR_BAD_RANGE], "LOCKT range over 32 bits")
if res.status == NFS4ERR_BAD_RANGE:
t.fail_support("Server does not support 64 bit lock ranges")
@@ -147,7 +147,7 @@ def testOverlap(t, env):
res = c.lock_test(fh, 100, 50, tester=lockowner)
check(res, msg="LOCKT against own exactly matching lock")
res = c.lock_test(fh, 75, 50, tester=lockowner)
- checklist(res, [NFS4_OK, NFS4ERR_LOCK_RANGE],
+ check(res, [NFS4_OK, NFS4ERR_LOCK_RANGE],
"LOCKT against own overlapping lock")
if res.status == NFS4ERR_LOCK_RANGE:
t.fail_support("Server does not support lock consolidation")
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import stateid4
-from environment import check, checklist, makeStaleId
+from environment import check, makeStaleId
def testFile(t, env):
"""LOCKU a regular file
@@ -34,7 +34,7 @@ def testUnlocked(t, env):
res1 = c.lock_file(t.code, fh, stateid, 100, 100)
check(res1, msg="Locking file %s" % t.code)
res2 = c.unlock_file(1, fh, res1.lockid, 0, 50)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "LOCKU on an unlocked area")
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "LOCKU on an unlocked area")
if res2.status == NFS4ERR_LOCK_RANGE:
t.fail_support("LOCKU on an unlocked area should return OK")
@@ -51,7 +51,7 @@ def testSplit(t, env):
res1 = c.lock_file(t.code, fh, stateid, 100, 100)
check(res1, msg="Locking file %s" % t.code)
res2 = c.unlock_file(1, fh, res1.lockid, 125, 50)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "LOCKU inside locked area")
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE], "LOCKU inside locked area")
if res2.status == NFS4ERR_LOCK_RANGE:
t.fail_support("LOCKU inside a locked area should return OK")
@@ -68,7 +68,7 @@ def testOverlap(t, env):
res1 = c.lock_file(t.code, fh, stateid, 100, 100)
check(res1, msg="Locking file %s" % t.code)
res2 = c.unlock_file(1, fh, res1.lockid, 50, 100)
- checklist(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE],
+ check(res2, [NFS4_OK, NFS4ERR_LOCK_RANGE],
"LOCKU overlapping a locked area")
if res2.status == NFS4ERR_LOCK_RANGE:
t.fail("LOCKU overlapping a locked area should return OK, "
@@ -87,7 +87,7 @@ def test32bitRange(t, env):
res1 = c.lock_file(t.code, fh, stateid)
check(res1)
res2 = c.unlock_file(1, fh, res1.lockid, 0, 0xffffffffffff)
- checklist(res2, [NFS4_OK, NFS4ERR_BAD_RANGE, NFS4ERR_LOCK_RANGE],
+ check(res2, [NFS4_OK, NFS4ERR_BAD_RANGE, NFS4ERR_LOCK_RANGE],
"LOCKU range over 32 bits")
if res2.status == NFS4ERR_BAD_RANGE:
t.fail("Allowed 64 bit LOCK range, but only 32 bit LOCKU range")
@@ -265,5 +265,5 @@ def testTimedoutUnlock(t, env):
c2.init_connection()
c2.open_confirm(t.code, access=OPEN4_SHARE_ACCESS_WRITE)
res2 = c.unlock_file(1, fh, res1.lockid)
- checklist(res2, [NFS4ERR_EXPIRED, NFS4_OK],
+ check(res2, [NFS4ERR_EXPIRED, NFS4_OK],
"Try to unlock file after timed out")
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
import rpc
def testDir(t, env):
@@ -218,7 +218,7 @@ def testNonAccessable(t, env):
check(res)
res = c.compound(c.use_obj(dir + ['foo']))
if env.opts.uid == 0:
- checklist(res, [NFS4_OK, NFS4ERR_ACCESS], "LOOKUP object in a dir with mode=000")
+ check(res, [NFS4_OK, NFS4ERR_ACCESS], "LOOKUP object in a dir with mode=000")
else:
check(res, NFS4ERR_ACCESS, "LOOKUP object in a dir with mode=000")
@@ -254,16 +254,16 @@ def testDots(t, env):
check(res)
# Run tests
res1 = c.compound(c.use_obj(dir + ['.']))
- checklist(res1, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
+ check(res1, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
"LOOKUP a nonexistant '.'")
res2 = c.compound(c.use_obj(dir + ['..']))
- checklist(res2, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
+ check(res2, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
"LOOKUP a nonexistant '..'")
res1 = c.compound(c.use_obj(dir + ['.', 'foo']))
- checklist(res1, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
+ check(res1, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
"LOOKUP a nonexistant '.'")
res2 = c.compound(c.use_obj(dir + ['..', t.code]))
- checklist(res2, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
+ check(res2, [NFS4ERR_NOENT, NFS4ERR_BADNAME],
"LOOKUP a nonexistant '..'")
def testUnaccessibleDir(t, env):
@@ -281,7 +281,7 @@ def testUnaccessibleDir(t, env):
check(res, msg="Setting mode=0 on directory %s" % t.code)
res = c.compound(c.use_obj(path + ['hidden']))
if env.opts.uid == 0:
- checklist(res, [NFS4_OK, NFS4ERR_ACCESS], "LOOKUP off of dir with mode=000")
+ check(res, [NFS4_OK, NFS4ERR_ACCESS], "LOOKUP off of dir with mode=000")
else:
check(res, NFS4ERR_ACCESS, "LOOKUP off of dir with mode=000")
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
def testDir(t, env):
"""LOOKUPP with directory (cfh)
@@ -54,7 +54,7 @@ def testLink(t, env):
c = env.c1
ops = c.use_obj(env.opts.uselink) + [c.lookupp_op()]
res = c.compound(ops)
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK],
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK],
"LOOKUPP with non-dir <cfh>")
def testBlock(t, env):
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_clientid, makeStaleId
+from environment import check, get_invalid_clientid, makeStaleId
def _try_mand(env, path):
c = env.c1
@@ -43,7 +43,7 @@ def _try_unsupported(env, path):
ops = baseops + [c.nverify_op({attr.bitnum: attr.sample})]
res = c.compound(ops)
if attr.writeonly:
- checklist(res, [NFS4ERR_ATTRNOTSUPP, NFS4ERR_INVAL],
+ check(res, [NFS4ERR_ATTRNOTSUPP, NFS4ERR_INVAL],
"VERIFY with unsupported attr %s" % attr.name)
else:
check(res, NFS4ERR_ATTRNOTSUPP,
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, checkdict, get_invalid_utf8strings
+from environment import check, checkdict, get_invalid_utf8strings
from nfs4lib import get_bitnumattr_dict
# Any test that uses create_confirm should depend on this test
@@ -79,7 +79,7 @@ def testCreatExclusiveFile(t, env):
c.init_connection()
# Create the file
res = c.create_file(t.code, mode=EXCLUSIVE4, verifier='12345678', deny=OPEN4_SHARE_DENY_NONE)
- checklist(res, [NFS4_OK, NFS4ERR_NOTSUPP],
+ check(res, [NFS4_OK, NFS4ERR_NOTSUPP],
"Trying to do exclusive create of file %s" % t.code)
if res.status == NFS4ERR_NOTSUPP:
c.fail_support("Exclusive OPEN not supported")
@@ -310,7 +310,7 @@ def testClaimPrev(t, env):
c.init_connection()
fh, stateid = c.create_confirm(t.code)
res = c.open_file(t.code, fh, claim_type=CLAIM_PREVIOUS, deleg_type=OPEN_DELEGATE_NONE)
- checklist(res, [NFS4ERR_RECLAIM_BAD, NFS4ERR_NO_GRACE],
+ check(res, [NFS4ERR_RECLAIM_BAD, NFS4ERR_NO_GRACE],
"Trying to OPEN with CLAIM_PREVIOUS")
def testModeChange(t, env):
@@ -331,7 +331,7 @@ def testModeChange(t, env):
res = c.open_file(t.code, access=OPEN4_SHARE_ACCESS_BOTH,
deny=OPEN4_SHARE_DENY_NONE)
if env.opts.uid == 0:
- checklist(res, [NFS4_OK, NFS4ERR_ACCESS], "Opening file %s with mode=000" % t.code)
+ check(res, [NFS4_OK, NFS4ERR_ACCESS], "Opening file %s with mode=000" % t.code)
else:
check(res, NFS4ERR_ACCESS, "Opening file %s with mode=000" % t.code)
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import stateid4
-from environment import check, checklist, makeStaleId
+from environment import check, makeStaleId
def _confirm(t, c, file, stateid):
ops = c.use_obj(file)
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, makeBadID, makeBadIDganesha, makeStaleId
+from environment import check, makeBadID, makeBadIDganesha, makeStaleId
import rpc
def _compare(t, res, expect, eof=True):
@@ -123,7 +123,7 @@ def testLink(t, env):
"""
c = env.c1
res = c.read_file(env.opts.uselink)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "Read of a non-file object")
+ check(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "Read of a non-file object")
def testBlock(t, env):
"""READ with non-file objects
@@ -240,4 +240,4 @@ def testStolenStateid(t, env):
c.security=rpc.SecAuthSys(0, "whatever", 3912, 2422, [])
res = c.read_file(fh, stateid=stateid)
c.security=security
- checklist(res, [NFS4ERR_ACCESS, NFS4ERR_PERM], "READ with stolen stateid")
+ check(res, [NFS4ERR_ACCESS, NFS4ERR_PERM], "READ with stolen stateid")
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4lib import get_attr_name
-from environment import check, checklist
+from environment import check
def _compare(t, entries, expect, attrlist=[]):
names = [e.name for e in entries]
@@ -107,7 +107,7 @@ def testFhLink(t, env):
ops = c.use_obj(env.opts.uselink)
ops += [c.readdir()]
res = c.compound(ops)
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "READDIR with non-dir <cfh>")
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "READDIR with non-dir <cfh>")
def testFhBlock(t, env):
"""READDIR with non-dir (cfh) should give NFS4ERR_NOTDIR
@@ -232,7 +232,7 @@ def testUnaccessibleDir(t, env):
ops = c.use_obj(path) + [c.readdir()]
res = c.compound(ops)
if env.opts.uid == 0:
- checklist(res, [NFS4_OK, NFS4ERR_ACCESS], "READDIR of directory with mode=000")
+ check(res, [NFS4_OK, NFS4ERR_ACCESS], "READDIR of directory with mode=000")
else:
check(res, NFS4ERR_ACCESS, "READDIR of directory with mode=000")
@@ -253,7 +253,7 @@ def testUnaccessibleDirAttrs(t, env):
[c.readdir(attr_request=[FATTR4_RDATTR_ERROR, FATTR4_TYPE])]
res = c.compound(ops)
if env.opts.uid == 0:
- checklist(res, [NFS4_OK, NFS4ERR_ACCESS], "READDIR of directory with mode=000")
+ check(res, [NFS4_OK, NFS4ERR_ACCESS], "READDIR of directory with mode=000")
else:
check(res, NFS4ERR_ACCESS, "READDIR of directory with mode=000")
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
import os
# NOTE - reboot tests are NOT part of the standard test suite
@@ -76,7 +76,7 @@ def testManyClaims(t, env):
c.init_connection(badid)
res = c.open_file(t.code, badfh, claim_type=CLAIM_PREVIOUS,
deleg_type=OPEN_DELEGATE_NONE)
- checklist(res, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
+ check(res, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
"Reclaim with bad clientid %s" % badid)
finally:
env.sleep(sleeptime, "Waiting for grace period to end")
@@ -144,7 +144,7 @@ def testEdge1(t, env):
c1.init_connection()
res1 = c1.open_file(t.code, fh1, claim_type=CLAIM_PREVIOUS,
deleg_type=OPEN_DELEGATE_NONE)
- checklist(res1, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
+ check(res1, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
"Reclaim lock that has been interfered with")
finally:
env.sleep(sleeptime, "Waiting for grace period to end")
@@ -190,7 +190,7 @@ def testEdge2(t, env):
c1.init_connection()
res1 = c1.open_file(t.code, fh1, claim_type=CLAIM_PREVIOUS,
deleg_type=OPEN_DELEGATE_NONE)
- checklist(res1, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
+ check(res1, [NFS4ERR_NO_GRACE, NFS4ERR_RECLAIM_BAD],
"Reclaim lock that has been interfered with")
finally:
env.sleep(sleeptime, "Waiting for grace period to end")
@@ -222,7 +222,7 @@ def testRootSquash(t, env):
c.init_connection()
while 1:
res = c.create_file(t.code, c.homedir + [t.code, 'file'])
- checklist(res, [NFS4_OK, NFS4ERR_GRACE], "Creating file")
+ check(res, [NFS4_OK, NFS4ERR_GRACE], "Creating file")
if res.status == NFS4ERR_GRACE:
env.sleep(1, "Waiting for grace period to *just* finish")
else:
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import lock_owner4
-from environment import check, checklist
+from environment import check
def testFile(t, env):
"""RELEASE_LOCKOWNER - basic test
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
def testDir(t, env):
"""REMOVE on existing, removable object
@@ -121,7 +121,7 @@ def testCfhLink(t, env):
c = env.c1
ops = c.use_obj(env.opts.uselink) + [c.remove_op(t.code)]
res = c.compound(ops)
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "REMOVE with non-dir cfh")
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "REMOVE with non-dir cfh")
def testCfhBlock(t, env):
"""REMOVE with non-dir (cfh) should give NFS4ERR_NOTDIR
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
def testValidDir(t, env):
"""RENAME : normal operation
@@ -130,7 +130,7 @@ def testSfhLink(t, env):
"""
c = env.c1
res = c.rename_obj(env.opts.uselink + [t.code], c.homedir + [t.code])
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "RENAME with non-dir <sfh>")
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "RENAME with non-dir <sfh>")
def testSfhBlock(t, env):
"""RENAME with non-dir (sfh) should return NFS4ERR_NOTDIR
@@ -200,7 +200,7 @@ def testCfhLink(t, env):
res = c.create_obj(t.code)
check(res)
res = c.rename_obj(c.homedir + [t.code], env.opts.uselink + [t.code])
- checklist(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "RENAME with non-dir <cfh>")
+ check(res, [NFS4ERR_NOTDIR, NFS4ERR_SYMLINK], "RENAME with non-dir <cfh>")
def testCfhBlock(t, env):
"""RENAME with non-dir (cfh) should return NFS4ERR_NOTDIR
@@ -386,7 +386,7 @@ def testDirToObj(t, env):
c.maketree([t.code, ['dir'], 'file'])
res = c.rename_obj(basedir + ['dir'], basedir + ['file'])
# note rfc 3530 and 1813 specify EXIST, but posix specifies NOTDIR
- checklist(res, [NFS4ERR_EXIST, NFS4ERR_NOTDIR], "RENAME dir into existing file")
+ check(res, [NFS4ERR_EXIST, NFS4ERR_NOTDIR], "RENAME dir into existing file")
def testDirToDir(t, env):
"""RENAME dir into existing, empty dir should retrun NFS4_OK
@@ -414,7 +414,7 @@ def testFileToDir(t, env):
c.maketree([t.code, ['dir'], 'file'])
res = c.rename_obj(basedir + ['file'], basedir + ['dir'])
# note rfc 3530 and 1813 specify EXIST, but posix specifies ISDIR
- checklist(res, [NFS4ERR_EXIST, NFS4ERR_ISDIR], "RENAME file into existing dir")
+ check(res, [NFS4ERR_EXIST, NFS4ERR_ISDIR], "RENAME file into existing dir")
def testFileToFile(t, env):
"""RENAME file into existing file should return NFS4_OK
@@ -441,7 +441,7 @@ def testDirToFullDir(t, env):
basedir = c.homedir + [t.code]
c.maketree([t.code, ['dir1'], ['dir2', ['foo']]])
res = c.rename_obj(basedir + ['dir1'], basedir + ['dir2'])
- checklist(res, [NFS4ERR_EXIST, NFS4ERR_NOTEMPTY], "RENAME dir1 into existing, nonempty dir2")
+ check(res, [NFS4ERR_EXIST, NFS4ERR_NOTEMPTY], "RENAME dir1 into existing, nonempty dir2")
def testFileToFullDir(t, env):
"""RENAME file into existing, nonempty dir should fail
@@ -456,7 +456,7 @@ def testFileToFullDir(t, env):
c.maketree([t.code, 'file', ['dir', ['foo']]])
res = c.rename_obj(basedir + ['file'], basedir + ['dir'])
# note rfc 3530 and 1813 specify EXIST, but posix specifies ISDIR
- checklist(res, [NFS4ERR_EXIST, NFS4ERR_ISDIR], "RENAME file into existing, nonempty dir")
+ check(res, [NFS4ERR_EXIST, NFS4ERR_ISDIR], "RENAME file into existing, nonempty dir")
def testSelfRenameDir(t, env):
"""RENAME that does nothing
@@ -1,11 +1,11 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
from nfs4_type import *
def _replay(env, c, ops, error=NFS4_OK):
# Can send in an error list, but replays must return same error as orig
if type(error) is list:
- check_funct = checklist
+ check_funct = check
else:
check_funct = check
res = c.compound(ops)
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_utf8strings
+from environment import check, get_invalid_utf8strings
from nfs4lib import bitmap2list, dict2fattr
from nfs4_type import nfstime4, settime4
@@ -39,7 +39,7 @@ def _try_readonly(t, env, path):
check(res, NFS4ERR_INVAL,
"SETATTR the supported read-only attribute %s" % attr.name)
else:
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_ATTRNOTSUPP],
+ check(res, [NFS4ERR_INVAL, NFS4ERR_ATTRNOTSUPP],
"SETATTR the unsupported read-only attribute %s" % attr.name)
def _try_unsupported(t, env, path):
@@ -571,7 +571,7 @@ def testSizeLink(t, env):
check(res)
ops = c.use_obj(path) + [c.setattr({FATTR4_SIZE: 0})]
res = c.compound(ops)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK],
+ check(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK],
"SETATTR(FATTR4_SIZE) of a symlink")
def testSizeBlock(t, env):
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist
+from environment import check
import os
import struct, time
@@ -378,5 +378,5 @@ def testNoConfirm(t, env):
ops = c.use_obj(c.homedir)
ops += [c.open(t.code, t.code, OPEN4_CREATE)]
res = c.compound(ops)
- checklist(res, [NFS4ERR_STALE_CLIENTID, NFS4ERR_EXPIRED],
+ check(res, [NFS4ERR_STALE_CLIENTID, NFS4ERR_EXPIRED],
"OPEN using clientid that was never confirmed")
@@ -1,5 +1,5 @@
from nfs4_const import *
-from environment import check, checklist, get_invalid_clientid, makeStaleId
+from environment import check, get_invalid_clientid, makeStaleId
def _try_mand(env, path):
c = env.c1
@@ -43,7 +43,7 @@ def _try_unsupported(env, path):
ops = baseops + [c.verify_op({attr.bitnum: attr.sample})]
res = c.compound(ops)
if attr.writeonly:
- checklist(res, [NFS4ERR_ATTRNOTSUPP, NFS4ERR_INVAL],
+ check(res, [NFS4ERR_ATTRNOTSUPP, NFS4ERR_INVAL],
"VERIFY with unsupported attr %s" % attr.name)
else:
check(res, NFS4ERR_ATTRNOTSUPP,
@@ -1,6 +1,6 @@
from nfs4_const import *
from nfs4_type import *
-from environment import check, checklist, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
+from environment import check, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
import struct
_text = 'write data' # len=10
@@ -175,7 +175,7 @@ def testLink(t, env):
res = c.create_obj(path, NF4LNK)
check(res)
res = c.write_file(path, _text)
- checklist(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "WRITE to a symlink")
+ check(res, [NFS4ERR_INVAL, NFS4ERR_SYMLINK], "WRITE to a symlink")
def testBlock(t, env):
"""WRITE to a non-file should return NFS4ERR_INVAL
this is a similar to 215116a change, which merges checklist and check functions into a single one. Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> --- nfs4.0/servertests/environment.py | 38 ++++++++++++------------------- nfs4.0/servertests/st_acl.py | 2 +- nfs4.0/servertests/st_commit.py | 6 ++--- nfs4.0/servertests/st_compound.py | 4 ++-- nfs4.0/servertests/st_create.py | 12 +++++----- nfs4.0/servertests/st_delegation.py | 14 ++++++------ nfs4.0/servertests/st_getattr.py | 6 ++--- nfs4.0/servertests/st_link.py | 8 +++---- nfs4.0/servertests/st_lock.py | 18 +++++++-------- nfs4.0/servertests/st_lockt.py | 8 +++---- nfs4.0/servertests/st_locku.py | 12 +++++----- nfs4.0/servertests/st_lookup.py | 14 ++++++------ nfs4.0/servertests/st_lookupp.py | 4 ++-- nfs4.0/servertests/st_nverify.py | 4 ++-- nfs4.0/servertests/st_open.py | 8 +++---- nfs4.0/servertests/st_openconfirm.py | 2 +- nfs4.0/servertests/st_read.py | 6 ++--- nfs4.0/servertests/st_readdir.py | 8 +++---- nfs4.0/servertests/st_reboot.py | 10 ++++---- nfs4.0/servertests/st_releaselockowner.py | 2 +- nfs4.0/servertests/st_remove.py | 4 ++-- nfs4.0/servertests/st_rename.py | 14 ++++++------ nfs4.0/servertests/st_replay.py | 4 ++-- nfs4.0/servertests/st_setattr.py | 6 ++--- nfs4.0/servertests/st_setclientid.py | 4 ++-- nfs4.0/servertests/st_verify.py | 4 ++-- nfs4.0/servertests/st_write.py | 4 ++-- 27 files changed, 108 insertions(+), 118 deletions(-)