Пример #1
0
def testReuseSlotID(t, env):
    """ If client reuses a slot ID and sequence ID for a completely
        different request, server MAY treat the request as if it is
        a retry of what it has already executed. rfc5661 18.46.3

    FLAGS: sequence all
    CODE: SEQ14
    """
    c = env.c1.new_client(env.testname(t))
    # CREATE_SESSION
    sess1 = c.create_session()

    name = "%s_1" % env.testname(t)
    res = create_file(sess1, name)
    check(res)

    sid = sess1.sessionid
    seqid = nfs4lib.inc_u32(sess1.seqid)
    dir = sess1.c.homedir

    res = c.c.compound([op.sequence(sid, seqid, 0, 0, TRUE)] +
                       nfs4lib.use_obj(dir) + [op.remove(name)])
    check(res)

    # Reuses slot ID and sequence ID for different request
    res = c.c.compound([op.sequence(sid, seqid, 0, 0, TRUE)] +
                       nfs4lib.use_obj(dir) + [op.rename(name, "test")])
    check(res)
Пример #2
0
def clean_dir(sess, path):
    stateid = nfs4lib.state00
    # fh = self.do_getfh(path)
    entries = do_readdir(sess, path)
    for e in entries:
        # We separate setattr and remove to avoid an inode locking bug
        ops = use_obj(path + [e.name])
        ops += [op.setattr(stateid, {FATTR4_MODE:0755})]
        res = sess.compound(ops)
        check(res, msg="Setting mode on %s" % repr(e.name))
        ops = use_obj(path)
        ops += [op.remove(e.name)]
        res = sess.compound(ops)
        if res.status == NFS4ERR_NOTEMPTY:
            clean_dir(sess, path + [e.name])
            res = sess.compound(ops)
        check(res, msg="Trying to remove %s" % repr(e.name))