linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] 4.1 server tests: add delegation_want tests
@ 2012-02-16 18:15 Benny Halevy
  2012-02-16 18:17 ` [PATCH 1/5] 4.1 server tests: testReadDeleg recognize also OPEN_DELEGATE_NONE_EXT Benny Halevy
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:15 UTC (permalink / raw)
  To: J. Bruce Fields, NFS list

[PATCH 1/5] 4.1 server tests: testReadDeleg recognize also OPEN_DELEGATE_NONE_EXT
[PATCH 2/5] 4.1 server tests: move testReadDeleg from st_open to
[PATCH 3/5] 4.1 server tests: testWriteDeleg
	Note: this test fails against the linux server
[PATCH 4/5] 4.1 server tests: testAnyDeleg
[PATCH 5/5] 4.1 server tests: test NFS4_SHARE_WANT_NO_DELEG

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/5] 4.1 server tests: testReadDeleg recognize also OPEN_DELEGATE_NONE_EXT
  2012-02-16 18:15 [PATCH 0/5] 4.1 server tests: add delegation_want tests Benny Halevy
@ 2012-02-16 18:17 ` Benny Halevy
  2012-02-16 18:17 ` [PATCH 2/5] 4.1 server tests: move testReadDeleg from st_open to st_delegation Benny Halevy
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:17 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs, Benny Halevy

fail test if server returned no delegation, even when giving a valid reason.

Signed-off-by: Benny Halevy <bhalevy@tonian.com>
---
 nfs4.1/server41tests/st_open.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py
index 895916a..c64a7ef 100644
--- a/nfs4.1/server41tests/st_open.py
+++ b/nfs4.1/server41tests/st_open.py
@@ -141,7 +141,7 @@ def testReadDeleg(t, env):
     check(res)
     fh = res.resarray[-1].object
     deleg = res.resarray[-2].delegation
-    if deleg.delegation_type == OPEN_DELEGATE_NONE:
+    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))
-- 
1.7.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/5] 4.1 server tests: move testReadDeleg from st_open to st_delegation
  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 ` Benny Halevy
  2012-02-16 18:17 ` [PATCH 3/5] 4.1 server tests: testWriteDeleg Benny Halevy
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:17 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs, Benny Halevy

Signed-off-by: Benny Halevy <bhalevy@tonian.com>
---
 nfs4.1/server41tests/__init__.py      |    1 +
 nfs4.1/server41tests/st_delegation.py |   54 +++++++++++++++++++++++++++++++++
 nfs4.1/server41tests/st_open.py       |   45 ---------------------------
 3 files changed, 55 insertions(+), 45 deletions(-)
 create mode 100644 nfs4.1/server41tests/st_delegation.py

diff --git a/nfs4.1/server41tests/__init__.py b/nfs4.1/server41tests/__init__.py
index 2bedb57..9d260a4 100644
--- a/nfs4.1/server41tests/__init__.py
+++ b/nfs4.1/server41tests/__init__.py
@@ -9,6 +9,7 @@ __all__ = ["st_exchange_id.py", # draft 21
            "st_sequence.py",
 	   "st_trunking.py",
            "st_open.py",
+           "st_delegation.py",
            "st_verify.py",
            "st_getdevicelist.py",
            "st_lookupp.py",
diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py
new file mode 100644
index 0000000..b9f866f
--- /dev/null
+++ b/nfs4.1/server41tests/st_delegation.py
@@ -0,0 +1,54 @@
+from st_create_session import create_session
+from st_open import open_claim4
+from nfs4_const import *
+
+from environment import check, checklist, fail, create_file, open_file, close_file
+from nfs4_type import open_owner4, openflag4, createhow4, open_claim4
+from nfs4_type import creatverfattr, fattr4, stateid4, locker4, lock_owner4
+import nfs4_ops as op
+import threading
+
+def testReadDeleg(t, env):
+    """Test read delgation handout and return
+
+    FLAGS: open deleg all
+    CODE: DELEG1
+    """
+    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_READ_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])
diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py
index c64a7ef..862ec95 100644
--- a/nfs4.1/server41tests/st_open.py
+++ b/nfs4.1/server41tests/st_open.py
@@ -117,51 +117,6 @@ def xtestOpenClientid(t, env):
     res = create_file(sess1, env.testname(t), clientid=c1.clientid)
     check(res, NFS4ERR_INVAL, msg="Using non-zero clientid in open_owner")
 
-def testReadDeleg(t, env):
-    """Test read delgation handout and return
-
-    FLAGS: open all
-    CODE: OPEN20
-    """
-    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_READ_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])
-
 def testReadWrite(t, env):
     """Do a simple READ and WRITE
 
-- 
1.7.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/5] 4.1 server tests: testWriteDeleg
  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 ` Benny Halevy
  2012-02-16 18:17 ` [PATCH 4/5] 4.1 server tests: testAnyDeleg Benny Halevy
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:17 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs, Benny Halevy

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 b9f866f..1011cbc 100644
--- a/nfs4.1/server41tests/st_delegation.py
+++ b/nfs4.1/server41tests/st_delegation.py
@@ -52,3 +52,48 @@ def testReadDeleg(t, env):
     # Now get OPEN reply
     res = sess2.listen(slot)
     checklist(res, [NFS4_OK, NFS4ERR_DELAY])
+
+def testWriteDeleg(t, env):
+    """Test write delgation handout and return
+
+    FLAGS: open deleg all
+    CODE: DELEG2
+    """
+    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 - WRITE
+    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_BOTH |
+                      OPEN4_SHARE_ACCESS_WANT_WRITE_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 - READ
+    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_READ, 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


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/5] 4.1 server tests: testAnyDeleg
  2012-02-16 18:15 [PATCH 0/5] 4.1 server tests: add delegation_want tests Benny Halevy
                   ` (2 preceding siblings ...)
  2012-02-16 18:17 ` [PATCH 3/5] 4.1 server tests: testWriteDeleg Benny Halevy
@ 2012-02-16 18:17 ` Benny Halevy
  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
  5 siblings, 0 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:17 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs, Benny Halevy

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


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/5] 4.1 server tests: test NFS4_SHARE_WANT_NO_DELEG
  2012-02-16 18:15 [PATCH 0/5] 4.1 server tests: add delegation_want tests Benny Halevy
                   ` (3 preceding siblings ...)
  2012-02-16 18:17 ` [PATCH 4/5] 4.1 server tests: testAnyDeleg Benny Halevy
@ 2012-02-16 18:17 ` Benny Halevy
  2012-02-17 21:38 ` [PATCH 0/5] 4.1 server tests: add delegation_want tests J. Bruce Fields
  5 siblings, 0 replies; 7+ messages in thread
From: Benny Halevy @ 2012-02-16 18:17 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs, Benny Halevy

Signed-off-by: Benny Halevy <bhalevy@tonian.com>
---
 nfs4.1/server41tests/st_delegation.py |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py
index 3b32c74..ac425dc 100644
--- a/nfs4.1/server41tests/st_delegation.py
+++ b/nfs4.1/server41tests/st_delegation.py
@@ -142,3 +142,25 @@ def testAnyDeleg(t, env):
     # Now get OPEN reply
     res = sess2.listen(slot)
     checklist(res, [NFS4_OK, NFS4ERR_DELAY])
+
+def testNoDeleg(t, env):
+    """Test no delgation handout
+
+    FLAGS: open deleg all
+    CODE: DELEG4
+    """
+    c1 = env.c1.new_client("%s_1" % env.testname(t))
+    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_NO_DELEG)
+    check(res)
+    fh = res.resarray[-1].object
+    deleg = res.resarray[-2].delegation
+    if deleg.delegation_type == OPEN_DELEGATE_NONE:
+        fail("Got no delegation, expected OPEN_DELEGATE_NONE_EXT")
+    if deleg.delegation_type != OPEN_DELEGATE_NONE_EXT:
+        fail("Got a delegation (type "+str(deleg.delegation_type)+") despite asking for none")
+    if deleg.ond_why != WND4_NOT_WANTED:
+        fail("Wrong reason ("+str(deleg.ond_why)+") for giving no delegation")
-- 
1.7.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/5] 4.1 server tests: add delegation_want tests
  2012-02-16 18:15 [PATCH 0/5] 4.1 server tests: add delegation_want tests Benny Halevy
                   ` (4 preceding siblings ...)
  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 ` J. Bruce Fields
  5 siblings, 0 replies; 7+ messages in thread
From: J. Bruce Fields @ 2012-02-17 21:38 UTC (permalink / raw)
  To: Benny Halevy; +Cc: NFS list

On Thu, Feb 16, 2012 at 08:15:15PM +0200, Benny Halevy wrote:
> [PATCH 1/5] 4.1 server tests: testReadDeleg recognize also OPEN_DELEGATE_NONE_EXT
> [PATCH 2/5] 4.1 server tests: move testReadDeleg from st_open to
> [PATCH 3/5] 4.1 server tests: testWriteDeleg
> 	Note: this test fails against the linux server

Yeah.  That might take a while, and our behavior is really legal, so it
might be better to turn that one off by default.  Anyway, for now...

> [PATCH 4/5] 4.1 server tests: testAnyDeleg
> [PATCH 5/5] 4.1 server tests: test NFS4_SHARE_WANT_NO_DELEG

... all applied.  Thanks!

--b.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-02-17 21:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH 4/5] 4.1 server tests: testAnyDeleg Benny Halevy
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

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).