From: Benny Halevy <benny@tonian.com>
To: bfields@redhat.com
Cc: linux-nfs@vger.kernel.org, Benny Halevy <bhalevy@tonian.com>
Subject: [PATCH 4/5] 4.1 server tests: testAnyDeleg
Date: Thu, 16 Feb 2012 20:17:31 +0200 [thread overview]
Message-ID: <1329416251-21225-1-git-send-email-bhalevy@tonian.com> (raw)
In-Reply-To: <4F3D47B3.1090708@tonian.com>
Signed-off-by: Benny Halevy <bhalevy@tonian.com>
---
nfs4.1/server41tests/st_delegation.py | 45 +++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py
index 1011cbc..3b32c74 100644
--- a/nfs4.1/server41tests/st_delegation.py
+++ b/nfs4.1/server41tests/st_delegation.py
@@ -97,3 +97,48 @@ def testWriteDeleg(t, env):
# Now get OPEN reply
res = sess2.listen(slot)
checklist(res, [NFS4_OK, NFS4ERR_DELAY])
+
+def testAnyDeleg(t, env):
+ """Test any delgation handout and return
+
+ FLAGS: open deleg all
+ CODE: DELEG3
+ """
+ recall = threading.Event()
+ def pre_hook(arg, env):
+ recall.stateid = arg.stateid # NOTE this must be done before set()
+ env.notify = recall.set # This is called after compound sent to queue
+ def post_hook(arg, env, res):
+ return res
+ # c1 - OPEN - READ
+ c1 = env.c1.new_client("%s_1" % env.testname(t))
+ c1.cb_pre_hook(OP_CB_RECALL, pre_hook)
+ c1.cb_post_hook(OP_CB_RECALL, post_hook)
+ sess1 = c1.create_session()
+ sess1.compound([op.reclaim_complete(FALSE)])
+ res = create_file(sess1, env.testname(t),
+ access=OPEN4_SHARE_ACCESS_READ |
+ OPEN4_SHARE_ACCESS_WANT_ANY_DELEG)
+ check(res)
+ fh = res.resarray[-1].object
+ deleg = res.resarray[-2].delegation
+ if deleg.delegation_type == OPEN_DELEGATE_NONE or deleg.delegation_type == OPEN_DELEGATE_NONE_EXT:
+ fail("Could not get delegation")
+ # c2 - OPEN - WRITE
+ sess2 = env.c1.new_client_session("%s_2" % env.testname(t))
+ claim = open_claim4(CLAIM_NULL, env.testname(t))
+ owner = open_owner4(0, "My Open Owner 2")
+ how = openflag4(OPEN4_NOCREATE)
+ open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE,
+ owner, how, claim)
+ slot = sess2.compound_async(env.home + [open_op])
+ # Wait for recall, and return delegation
+ recall.wait() # STUB - deal with timeout
+ # Getting here means CB_RECALL reply is in the send queue.
+ # Give it a moment to actually be sent
+ env.sleep(1)
+ res = sess1.compound([op.putfh(fh), op.delegreturn(recall.stateid)])
+ check(res)
+ # Now get OPEN reply
+ res = sess2.listen(slot)
+ checklist(res, [NFS4_OK, NFS4ERR_DELAY])
--
1.7.6.5
next prev parent reply other threads:[~2012-02-16 18:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-16 18:15 [PATCH 0/5] 4.1 server tests: add delegation_want tests Benny Halevy
2012-02-16 18:17 ` [PATCH 1/5] 4.1 server tests: testReadDeleg recognize also OPEN_DELEGATE_NONE_EXT Benny Halevy
2012-02-16 18:17 ` [PATCH 2/5] 4.1 server tests: move testReadDeleg from st_open to st_delegation Benny Halevy
2012-02-16 18:17 ` [PATCH 3/5] 4.1 server tests: testWriteDeleg Benny Halevy
2012-02-16 18:17 ` Benny Halevy [this message]
2012-02-16 18:17 ` [PATCH 5/5] 4.1 server tests: test NFS4_SHARE_WANT_NO_DELEG Benny Halevy
2012-02-17 21:38 ` [PATCH 0/5] 4.1 server tests: add delegation_want tests J. Bruce Fields
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1329416251-21225-1-git-send-email-bhalevy@tonian.com \
--to=benny@tonian.com \
--cc=bfields@redhat.com \
--cc=bhalevy@tonian.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).