[PATCH pynfs v3 05/26] server41tests: pass_warn() when server doesn't support dir delegations
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.nfs |
|---|---|
| Message-ID | <[email protected]> |
Instead of just failing the test when GET_DIR_DELEGATION isn't supported or the server doesn't hand out a directory delegation, have it pass with a warning instead. This should make it safe to keep the directory delegation tests in the "all" group. Also, when receiving a directory delegation, vet that it got the requested notifications. Just pass_warn() if it didn't. Signed-off-by: Jeff Layton <[email protected]> --- nfs4.1/server41tests/st_dir_deleg.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/nfs4.1/server41tests/st_dir_deleg.py b/nfs4.1/server41tests/st_dir_deleg.py index f47d1f6ac053..5f46c08316e3 100644 --- a/nfs4.1/server41tests/st_dir_deleg.py +++ b/nfs4.1/server41tests/st_dir_deleg.py @@ -65,14 +65,29 @@ def _getDirDeleg(t, env, notify_mask, cb): check(res) fh = res.resarray[-1].object - ops = [ op.putfh(fh), op.get_dir_delegation(False, - nfs4lib.list2bitmap(notify_mask), + mask_bm = nfs4lib.list2bitmap(notify_mask) + ops = [ op.putfh(fh), op.get_dir_delegation(False, nfs4lib.list2bitmap(notify_mask), zerotime, zerotime, nfs4lib.list2bitmap([]), nfs4lib.list2bitmap([]))] res = sess1.compound(ops) - check(res) + check(res, [NFS4_OK, NFS4ERR_NOTSUPP]) + if (res.status == NFS4ERR_NOTSUPP): + t.pass_warn("Server doesn't support GET_DIR_DELEGATION") + + nf = res.resarray[-1].gddr_res_non_fatal4 + if nf.gddrnf_status == GDD4_UNAVAIL: + t.pass_warn("Server reported that delegation on new dir was unavailable.") + elif nf.gddrnf_status != GDD4_OK: + t.fail("Server returned unknown non-fatal status code.") + deleg = res.resarray[-1].gddrnf_resok4.gddr_stateid + if NOTIFY4_GFLAG_EXTEND in notify_mask and \ + nf.gddrnf_resok4.gddr_notification != mask_bm: + ops = [ op.putfh(fh), op.delegreturn(deleg) ] + res = sess1.compound(ops) + t.pass_warn("Server didn't offer the necessary directory notifications for this test") + return (sess1, fh, deleg) def testDirDelegSimple(t, env): -- 2.54.0