* [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH @ 2011-11-17 2:16 Mi Jinlong 2011-11-22 22:26 ` J. Bruce Fields 2011-12-07 0:56 ` [PATCH v2] " Mi Jinlong 0 siblings, 2 replies; 8+ messages in thread From: Mi Jinlong @ 2011-11-17 2:16 UTC (permalink / raw) To: J. Bruce Fields; +Cc: NFS Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> --- nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-) diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py index bd995a5..87b58b3 100644 --- a/nfs4.1/server41tests/st_open.py +++ b/nfs4.1/server41tests/st_open.py @@ -1,6 +1,6 @@ from st_create_session import create_session from nfs4_const import * -from environment import check, checklist, fail, create_file, open_file +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 import nfs4_ops as op @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, verifier = "Justtest") check(res, NFS4ERR_EXIST) + +def testOPENClaimFH(t, env): + """OPEN file with claim_type is CLAIM_FH + + FLAGS: open all + CODE: OPEN7 + """ + sess1 = env.c1.new_client_session(env.testname(t)) + res = create_file(sess1, env.testname(t)) + check(res) + + fh = res.resarray[-1].object + stateid = res.resarray[-2].stateid + res = close_file(sess1, fh, stateid=stateid) + check(res) + + claim = open_claim4(CLAIM_FH) + how = openflag4(OPEN4_NOCREATE) + oowner = open_owner4(0, "My Open Owner 2") + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, + oowner, how, claim) + res = sess1.compound([op.putfh(fh), open_op]) + check(res) + + stateid = res.resarray[-1].stateid + stateid.seqid = 0 + data = "write test data" + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) + check(res) + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) + check(res) + if not res.resarray[-1].eof: + fail("EOF not set on read") + desired = "\0"*5 + data + if res.resarray[-1].data != desired: + fail("Expected %r, got %r" % (desired, res.resarray[-1].data)) -- 1.7.7 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-11-17 2:16 [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH Mi Jinlong @ 2011-11-22 22:26 ` J. Bruce Fields 2011-11-23 1:19 ` Mi Jinlong 2011-12-07 0:56 ` [PATCH v2] " Mi Jinlong 1 sibling, 1 reply; 8+ messages in thread From: J. Bruce Fields @ 2011-11-22 22:26 UTC (permalink / raw) To: Mi Jinlong; +Cc: NFS On Thu, Nov 17, 2011 at 10:16:22AM +0800, Mi Jinlong wrote: > > Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> > --- > nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- > 1 files changed, 37 insertions(+), 1 deletions(-) > > diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py > index bd995a5..87b58b3 100644 > --- a/nfs4.1/server41tests/st_open.py > +++ b/nfs4.1/server41tests/st_open.py > @@ -1,6 +1,6 @@ > from st_create_session import create_session > from nfs4_const import * > -from environment import check, checklist, fail, create_file, open_file > +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 > import nfs4_ops as op > @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): > res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, > verifier = "Justtest") > check(res, NFS4ERR_EXIST) > + > +def testOPENClaimFH(t, env): > + """OPEN file with claim_type is CLAIM_FH > + > + FLAGS: open all > + CODE: OPEN7 > + """ > + sess1 = env.c1.new_client_session(env.testname(t)) > + res = create_file(sess1, env.testname(t)) > + check(res) > + > + fh = res.resarray[-1].object > + stateid = res.resarray[-2].stateid > + res = close_file(sess1, fh, stateid=stateid) > + check(res) > + > + claim = open_claim4(CLAIM_FH) > + how = openflag4(OPEN4_NOCREATE) > + oowner = open_owner4(0, "My Open Owner 2") > + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, > + oowner, how, claim) > + res = sess1.compound([op.putfh(fh), open_op]) > + check(res) You could just stop here. But I suppose I don't see a problem with doing some IO to the file too just to make sure the open is usable. > + > + stateid = res.resarray[-1].stateid > + stateid.seqid = 0 Why are you modifying the seqid? > + data = "write test data" > + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) > + check(res) > + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) > + check(res) > + if not res.resarray[-1].eof: > + fail("EOF not set on read") > + desired = "\0"*5 + data Why the five nulls? I don't understand this code.... --b. > + if res.resarray[-1].data != desired: > + fail("Expected %r, got %r" % (desired, res.resarray[-1].data)) > -- > 1.7.7 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-11-22 22:26 ` J. Bruce Fields @ 2011-11-23 1:19 ` Mi Jinlong 2011-11-28 2:33 ` Mi Jinlong 0 siblings, 1 reply; 8+ messages in thread From: Mi Jinlong @ 2011-11-23 1:19 UTC (permalink / raw) To: J. Bruce Fields; +Cc: NFS, Fred Isaman J. Bruce Fields: > On Thu, Nov 17, 2011 at 10:16:22AM +0800, Mi Jinlong wrote: >> Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> >> --- >> nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- >> 1 files changed, 37 insertions(+), 1 deletions(-) >> >> diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py >> index bd995a5..87b58b3 100644 >> --- a/nfs4.1/server41tests/st_open.py >> +++ b/nfs4.1/server41tests/st_open.py >> @@ -1,6 +1,6 @@ >> from st_create_session import create_session >> from nfs4_const import * >> -from environment import check, checklist, fail, create_file, open_file >> +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 >> import nfs4_ops as op >> @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): >> res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, >> verifier = "Justtest") >> check(res, NFS4ERR_EXIST) >> + >> +def testOPENClaimFH(t, env): >> + """OPEN file with claim_type is CLAIM_FH >> + >> + FLAGS: open all >> + CODE: OPEN7 >> + """ >> + sess1 = env.c1.new_client_session(env.testname(t)) >> + res = create_file(sess1, env.testname(t)) >> + check(res) >> + >> + fh = res.resarray[-1].object >> + stateid = res.resarray[-2].stateid >> + res = close_file(sess1, fh, stateid=stateid) >> + check(res) >> + >> + claim = open_claim4(CLAIM_FH) >> + how = openflag4(OPEN4_NOCREATE) >> + oowner = open_owner4(0, "My Open Owner 2") >> + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, >> + oowner, how, claim) >> + res = sess1.compound([op.putfh(fh), open_op]) >> + check(res) > > You could just stop here. But I suppose I don't see a problem with > doing some IO to the file too just to make sure the open is usable. Yes, that's right. > >> + >> + stateid = res.resarray[-1].stateid >> + stateid.seqid = 0 > > Why are you modifying the seqid? > >> + data = "write test data" >> + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) >> + check(res) >> + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) >> + check(res) >> + if not res.resarray[-1].eof: >> + fail("EOF not set on read") >> + desired = "\0"*5 + data > > Why the five nulls? I don't understand this code.... I just do a simple READ and WRITE as OPEN30. I will have a check about that. Thanks for your comments. Ps: Adding Fred. thanks, Mi Jinlong ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-11-23 1:19 ` Mi Jinlong @ 2011-11-28 2:33 ` Mi Jinlong 2011-12-06 22:28 ` J. Bruce Fields 0 siblings, 1 reply; 8+ messages in thread From: Mi Jinlong @ 2011-11-28 2:33 UTC (permalink / raw) To: J. Bruce Fields; +Cc: NFS, Fred Isaman Hi Bruce, Sorry for so late replying you. Mi Jinlong : > > J. Bruce Fields: >> On Thu, Nov 17, 2011 at 10:16:22AM +0800, Mi Jinlong wrote: >>> Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> >>> --- >>> nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- >>> 1 files changed, 37 insertions(+), 1 deletions(-) >>> >>> diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py >>> index bd995a5..87b58b3 100644 >>> --- a/nfs4.1/server41tests/st_open.py >>> +++ b/nfs4.1/server41tests/st_open.py >>> @@ -1,6 +1,6 @@ >>> from st_create_session import create_session >>> from nfs4_const import * >>> -from environment import check, checklist, fail, create_file, open_file >>> +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 >>> import nfs4_ops as op >>> @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): >>> res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, >>> verifier = "Justtest") >>> check(res, NFS4ERR_EXIST) >>> + >>> +def testOPENClaimFH(t, env): >>> + """OPEN file with claim_type is CLAIM_FH >>> + >>> + FLAGS: open all >>> + CODE: OPEN7 >>> + """ >>> + sess1 = env.c1.new_client_session(env.testname(t)) >>> + res = create_file(sess1, env.testname(t)) >>> + check(res) >>> + >>> + fh = res.resarray[-1].object >>> + stateid = res.resarray[-2].stateid >>> + res = close_file(sess1, fh, stateid=stateid) >>> + check(res) >>> + >>> + claim = open_claim4(CLAIM_FH) >>> + how = openflag4(OPEN4_NOCREATE) >>> + oowner = open_owner4(0, "My Open Owner 2") >>> + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, >>> + oowner, how, claim) >>> + res = sess1.compound([op.putfh(fh), open_op]) >>> + check(res) >> You could just stop here. But I suppose I don't see a problem with >> doing some IO to the file too just to make sure the open is usable. > > Yes, that's right. > >>> + >>> + stateid = res.resarray[-1].stateid >>> + stateid.seqid = 0 >> Why are you modifying the seqid? At any date writing or reading, seqid should be zero. And, NFS client do as it. So, we set seqid = 0 here. >> >>> + data = "write test data" >>> + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) >>> + check(res) >>> + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) >>> + check(res) >>> + if not res.resarray[-1].eof: >>> + fail("EOF not set on read") >>> + desired = "\0"*5 + data >> Why the five nulls? I don't understand this code.... Because we write data at offset 5 above, so there are five nulls exist. + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) thanks, Mi Jinlong ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-11-28 2:33 ` Mi Jinlong @ 2011-12-06 22:28 ` J. Bruce Fields 2011-12-07 0:47 ` Mi Jinlong 0 siblings, 1 reply; 8+ messages in thread From: J. Bruce Fields @ 2011-12-06 22:28 UTC (permalink / raw) To: Mi Jinlong; +Cc: NFS, Fred Isaman On Mon, Nov 28, 2011 at 10:33:42AM +0800, Mi Jinlong wrote: > Hi Bruce, > > Sorry for so late replying you. > > Mi Jinlong : > > > > J. Bruce Fields: > >> On Thu, Nov 17, 2011 at 10:16:22AM +0800, Mi Jinlong wrote: > >>> Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> > >>> --- > >>> nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- > >>> 1 files changed, 37 insertions(+), 1 deletions(-) > >>> > >>> diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py > >>> index bd995a5..87b58b3 100644 > >>> --- a/nfs4.1/server41tests/st_open.py > >>> +++ b/nfs4.1/server41tests/st_open.py > >>> @@ -1,6 +1,6 @@ > >>> from st_create_session import create_session > >>> from nfs4_const import * > >>> -from environment import check, checklist, fail, create_file, open_file > >>> +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 > >>> import nfs4_ops as op > >>> @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): > >>> res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, > >>> verifier = "Justtest") > >>> check(res, NFS4ERR_EXIST) > >>> + > >>> +def testOPENClaimFH(t, env): > >>> + """OPEN file with claim_type is CLAIM_FH > >>> + > >>> + FLAGS: open all > >>> + CODE: OPEN7 > >>> + """ > >>> + sess1 = env.c1.new_client_session(env.testname(t)) > >>> + res = create_file(sess1, env.testname(t)) > >>> + check(res) > >>> + > >>> + fh = res.resarray[-1].object > >>> + stateid = res.resarray[-2].stateid > >>> + res = close_file(sess1, fh, stateid=stateid) > >>> + check(res) > >>> + > >>> + claim = open_claim4(CLAIM_FH) > >>> + how = openflag4(OPEN4_NOCREATE) > >>> + oowner = open_owner4(0, "My Open Owner 2") > >>> + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, > >>> + oowner, how, claim) > >>> + res = sess1.compound([op.putfh(fh), open_op]) > >>> + check(res) > >> You could just stop here. But I suppose I don't see a problem with > >> doing some IO to the file too just to make sure the open is usable. > > > > Yes, that's right. OK. > >>> + > >>> + stateid = res.resarray[-1].stateid > >>> + stateid.seqid = 0 > >> Why are you modifying the seqid? > > At any date writing or reading, seqid should be zero. > And, NFS client do as it. So, we set seqid = 0 here. Ugh, I guess. Seems a little ugly that every test-writer has to manually set seqid to 0 before doing IO, but OK. > >>> + data = "write test data" > >>> + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) > >>> + check(res) > >>> + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) > >>> + check(res) > >>> + if not res.resarray[-1].eof: > >>> + fail("EOF not set on read") > >>> + desired = "\0"*5 + data > >> Why the five nulls? I don't understand this code.... > > Because we write data at offset 5 above, so there are five nulls exist. > > + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) Oops, I must be blind, thanks for setting me straight! Could you resend this? (Also, is there anything else you're waiting for me to do?) --b. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-12-06 22:28 ` J. Bruce Fields @ 2011-12-07 0:47 ` Mi Jinlong 0 siblings, 0 replies; 8+ messages in thread From: Mi Jinlong @ 2011-12-07 0:47 UTC (permalink / raw) To: J. Bruce Fields; +Cc: NFS J. Bruce Fields: > On Mon, Nov 28, 2011 at 10:33:42AM +0800, Mi Jinlong wrote: >> Hi Bruce, >> >> Sorry for so late replying you. >> >> Mi Jinlong : >>> J. Bruce Fields: >>>> On Thu, Nov 17, 2011 at 10:16:22AM +0800, Mi Jinlong wrote: >>>>> Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> >>>>> --- >>>>> nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- >>>>> 1 files changed, 37 insertions(+), 1 deletions(-) >>>>> >>>>> diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py >>>>> index bd995a5..87b58b3 100644 >>>>> --- a/nfs4.1/server41tests/st_open.py >>>>> +++ b/nfs4.1/server41tests/st_open.py >>>>> @@ -1,6 +1,6 @@ >>>>> from st_create_session import create_session >>>>> from nfs4_const import * >>>>> -from environment import check, checklist, fail, create_file, open_file >>>>> +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 >>>>> import nfs4_ops as op >>>>> @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): >>>>> res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, >>>>> verifier = "Justtest") >>>>> check(res, NFS4ERR_EXIST) >>>>> + >>>>> +def testOPENClaimFH(t, env): >>>>> + """OPEN file with claim_type is CLAIM_FH >>>>> + >>>>> + FLAGS: open all >>>>> + CODE: OPEN7 >>>>> + """ >>>>> + sess1 = env.c1.new_client_session(env.testname(t)) >>>>> + res = create_file(sess1, env.testname(t)) >>>>> + check(res) >>>>> + >>>>> + fh = res.resarray[-1].object >>>>> + stateid = res.resarray[-2].stateid >>>>> + res = close_file(sess1, fh, stateid=stateid) >>>>> + check(res) >>>>> + >>>>> + claim = open_claim4(CLAIM_FH) >>>>> + how = openflag4(OPEN4_NOCREATE) >>>>> + oowner = open_owner4(0, "My Open Owner 2") >>>>> + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, >>>>> + oowner, how, claim) >>>>> + res = sess1.compound([op.putfh(fh), open_op]) >>>>> + check(res) >>>> You could just stop here. But I suppose I don't see a problem with >>>> doing some IO to the file too just to make sure the open is usable. >>> Yes, that's right. > > OK. > >>>>> + >>>>> + stateid = res.resarray[-1].stateid >>>>> + stateid.seqid = 0 >>>> Why are you modifying the seqid? >> At any date writing or reading, seqid should be zero. >> And, NFS client do as it. So, we set seqid = 0 here. > > Ugh, I guess. Seems a little ugly that every test-writer has to > manually set seqid to 0 before doing IO, but OK. > >>>>> + data = "write test data" >>>>> + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) >>>>> + check(res) >>>>> + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) >>>>> + check(res) >>>>> + if not res.resarray[-1].eof: >>>>> + fail("EOF not set on read") >>>>> + desired = "\0"*5 + data >>>> Why the five nulls? I don't understand this code.... >> Because we write data at offset 5 above, so there are five nulls exist. >> >> + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) > > Oops, I must be blind, thanks for setting me straight! > > Could you resend this? OK, will resend. > > (Also, is there anything else you're waiting for me to do?) Thanks, no. thanks, Mi Jinlong ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-11-17 2:16 [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH Mi Jinlong 2011-11-22 22:26 ` J. Bruce Fields @ 2011-12-07 0:56 ` Mi Jinlong 2011-12-08 21:09 ` J. Bruce Fields 1 sibling, 1 reply; 8+ messages in thread From: Mi Jinlong @ 2011-12-07 0:56 UTC (permalink / raw) To: J. Bruce Fields; +Cc: NFS Open NFS file with filehandle, write some data to the opened file, read and check it. Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> --- nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-) diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py index bd995a5..87b58b3 100644 --- a/nfs4.1/server41tests/st_open.py +++ b/nfs4.1/server41tests/st_open.py @@ -1,6 +1,6 @@ from st_create_session import create_session from nfs4_const import * -from environment import check, checklist, fail, create_file, open_file +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 import nfs4_ops as op @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, verifier = "Justtest") check(res, NFS4ERR_EXIST) + +def testOPENClaimFH(t, env): + """OPEN file with claim_type is CLAIM_FH + + FLAGS: open all + CODE: OPEN7 + """ + sess1 = env.c1.new_client_session(env.testname(t)) + res = create_file(sess1, env.testname(t)) + check(res) + + fh = res.resarray[-1].object + stateid = res.resarray[-2].stateid + res = close_file(sess1, fh, stateid=stateid) + check(res) + + claim = open_claim4(CLAIM_FH) + how = openflag4(OPEN4_NOCREATE) + oowner = open_owner4(0, "My Open Owner 2") + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, + oowner, how, claim) + res = sess1.compound([op.putfh(fh), open_op]) + check(res) + + stateid = res.resarray[-1].stateid + stateid.seqid = 0 + data = "write test data" + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) + check(res) + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) + check(res) + if not res.resarray[-1].eof: + fail("EOF not set on read") + desired = "\0"*5 + data + if res.resarray[-1].data != desired: + fail("Expected %r, got %r" % (desired, res.resarray[-1].data)) -- 1.7.7 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH 2011-12-07 0:56 ` [PATCH v2] " Mi Jinlong @ 2011-12-08 21:09 ` J. Bruce Fields 0 siblings, 0 replies; 8+ messages in thread From: J. Bruce Fields @ 2011-12-08 21:09 UTC (permalink / raw) To: Mi Jinlong; +Cc: NFS On Wed, Dec 07, 2011 at 08:56:07AM +0800, Mi Jinlong wrote: > Open NFS file with filehandle, write some data to the opened file, > read and check it. OK, thanks, applied.--b. > > Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> > --- > nfs4.1/server41tests/st_open.py | 38 +++++++++++++++++++++++++++++++++++++- > 1 files changed, 37 insertions(+), 1 deletions(-) > > diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py > index bd995a5..87b58b3 100644 > --- a/nfs4.1/server41tests/st_open.py > +++ b/nfs4.1/server41tests/st_open.py > @@ -1,6 +1,6 @@ > from st_create_session import create_session > from nfs4_const import * > -from environment import check, checklist, fail, create_file, open_file > +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 > import nfs4_ops as op > @@ -200,3 +200,39 @@ def testEXCLUSIVE4AtNameAttribute(t, env): > res = create_file(sess1, env.testname(t), mode=EXCLUSIVE4_1, > verifier = "Justtest") > check(res, NFS4ERR_EXIST) > + > +def testOPENClaimFH(t, env): > + """OPEN file with claim_type is CLAIM_FH > + > + FLAGS: open all > + CODE: OPEN7 > + """ > + sess1 = env.c1.new_client_session(env.testname(t)) > + res = create_file(sess1, env.testname(t)) > + check(res) > + > + fh = res.resarray[-1].object > + stateid = res.resarray[-2].stateid > + res = close_file(sess1, fh, stateid=stateid) > + check(res) > + > + claim = open_claim4(CLAIM_FH) > + how = openflag4(OPEN4_NOCREATE) > + oowner = open_owner4(0, "My Open Owner 2") > + open_op = op.open(0, OPEN4_SHARE_ACCESS_BOTH, OPEN4_SHARE_DENY_NONE, > + oowner, how, claim) > + res = sess1.compound([op.putfh(fh), open_op]) > + check(res) > + > + stateid = res.resarray[-1].stateid > + stateid.seqid = 0 > + data = "write test data" > + res = sess1.compound([op.putfh(fh), op.write(stateid, 5, FILE_SYNC4, data)]) > + check(res) > + res = sess1.compound([op.putfh(fh), op.read(stateid, 0, 1000)]) > + check(res) > + if not res.resarray[-1].eof: > + fail("EOF not set on read") > + desired = "\0"*5 + data > + if res.resarray[-1].data != desired: > + fail("Expected %r, got %r" % (desired, res.resarray[-1].data)) > -- > 1.7.7 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-12-08 21:09 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-11-17 2:16 [PATCH] 4.1 CLNT: Test Case for OPEN file with claim_type is CLAIM_FH Mi Jinlong 2011-11-22 22:26 ` J. Bruce Fields 2011-11-23 1:19 ` Mi Jinlong 2011-11-28 2:33 ` Mi Jinlong 2011-12-06 22:28 ` J. Bruce Fields 2011-12-07 0:47 ` Mi Jinlong 2011-12-07 0:56 ` [PATCH v2] " Mi Jinlong 2011-12-08 21:09 ` 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).