All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.