Below is the file 'lib/nfs4/servertests/st_readlink.py' from this revision. You can also download the file.

from nfs4.nfs4_const import *
from environment import check

def testReadlink(t, env):
    """READLINK on link

    FLAGS: readlink symlink all
    DEPEND: LOOKLINK
    CODE: RDLK1
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.uselink) + [c.readlink_op()])
    check(res)
    data = res.resarray[-1].arm.arm.link
    if data != env.linkdata:
        t.fail("link data was '%s', expected '%s'" % (data, env.linkdata))

def testFile(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink file all
    DEPEND: LOOKFILE
    CODE: RDLK2r
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.usefile) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testBlock(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink block all
    DEPEND: LOOKBLK
    CODE: RDLK2b
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.useblock) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testChar(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink char all
    DEPEND: LOOKCHAR
    CODE: RDLK2c
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.usechar) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testDir(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink dir all
    DEPEND: LOOKDIR
    CODE: RDLK2d
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.usedir) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testFifo(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink fifo all
    DEPEND: LOOKFIFO
    CODE: RDLK2f
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.usefifo) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testSocket(t, env):
    """READLINK on non-symlink objects should return NFS4ERR_INVAL

    FLAGS: readlink socket all
    DEPEND: LOOKSOCK
    CODE: RDLK2s
    """
    c = env.c1
    res = c.compound(c.use_obj(env.opts.usesocket) + [c.readlink_op()])
    check(res, NFS4ERR_INVAL, "READLINK on non-symlink objects")

def testNoFh(t, env):
    """READLINK without (cfh) should return NFS4ERR_NOFILEHANDLE

    FLAGS: readlink emptyfh all
    CODE: RDLK3
    """
    c = env.c1
    res = c.compound([c.readlink_op()])
    check(res, NFS4ERR_NOFILEHANDLE, "READLINK with no <cfh>")
#####################################