Skip to contentSkip to conversation

NFS4.1: try to clean sessions after testing

PATCH Superseded Kinglong Mee 2 participants 9 messages Jun 10, 2014 – Jun 18, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 NFS4.1: try to clean sessions after testing

There are many sessions left after testing, they hold drc memory at server. This patch tries to clean session after each testcase.

---
 nfs4.1/server41tests/environment.py | 7 ++++++-
 nfs4.1/testmod.py                   | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)
nfs4.1/server41tests/environment.py +6 -1
index b2df732..7632655 100644
@@ -248,7 +248,12 @@ class Environment(testmod.Environment):
     def testname(self, t):
         """Returns a name for the test that is unique between runs"""
         return "%s_%i" % (t.code, self.timestamp)
-    
+
+    def clean_sessions(self):
+        """Destroy client name env.c1"""
+        for sessionid in self.c1.sessions.keys():
+            self.c1.compound([op.destroy_session(sessionid)])
+
 #########################################
 debug_fail = False
 
nfs4.1/testmod.py +1 -0
index 5908066..661aed0 100644
@@ -220,6 +220,7 @@ class Test(object):
             environment.startUp()
             self.runtest(self, environment)
             self.result = self._pass_result
+	    environment.clean_sessions()
         except KeyboardInterrupt:
             raise
         except TestException, e:
Signature · 1 line
1.9.3
#1 lore raw

PATCH v2 1/1 NFS4.1: try to clean sessions after testing

There are many sessions left after testing, they hold drc memory at server. This patch tries to clean session after each testcase.

v2,
adds empty function of clean_sessions for nfs4.0,
because they are using the same testmod.py

---
 nfs4.0/servertests/environment.py   | 3 +++
 nfs4.1/server41tests/environment.py | 7 ++++++-
 nfs4.1/testmod.py                   | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)
nfs4.0/servertests/environment.py +3 -0
index 993320d..9852178 100644
@@ -226,6 +226,9 @@ class Environment(testmod.Environment):
             cmd += ' ' + args
             os.system(cmd);
 
+    def clean_sessions(self):
+        return
+
 #########################################
 debug_fail = False
 
nfs4.1/server41tests/environment.py +6 -1
index b2df732..7632655 100644
@@ -248,7 +248,12 @@ class Environment(testmod.Environment):
     def testname(self, t):
         """Returns a name for the test that is unique between runs"""
         return "%s_%i" % (t.code, self.timestamp)
-    
+
+    def clean_sessions(self):
+        """Destroy client name env.c1"""
+        for sessionid in self.c1.sessions.keys():
+            self.c1.compound([op.destroy_session(sessionid)])
+
 #########################################
 debug_fail = False
 
nfs4.1/testmod.py +1 -0
index 5908066..661aed0 100644
@@ -220,6 +220,7 @@ class Test(object):
             environment.startUp()
             self.runtest(self, environment)
             self.result = self._pass_result
+	    environment.clean_sessions()
         except KeyboardInterrupt:
             raise
         except TestException, e:
Signature · 1 line
1.9.3
#2 lore raw

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Could you look into those and resend your pynfs patches? Thanks!

--b.

Quoted 61 lines · Kinglong Mee

There are many sessions left after testing, they hold drc memory at server. This patch tries to clean session after each testcase.

v2,
adds empty function of clean_sessions for nfs4.0,
because they are using the same testmod.py

---
 nfs4.0/servertests/environment.py   | 3 +++
 nfs4.1/server41tests/environment.py | 7 ++++++-
 nfs4.1/testmod.py                   | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)
nfs4.0/servertests/environment.py +3 -0
index 993320d..9852178 100644
@@ -226,6 +226,9 @@ class Environment(testmod.Environment):
             cmd += ' ' + args
             os.system(cmd);
 
+    def clean_sessions(self):
+        return
+
 #########################################
 debug_fail = False
 
nfs4.1/server41tests/environment.py +6 -1
index b2df732..7632655 100644
@@ -248,7 +248,12 @@ class Environment(testmod.Environment):
     def testname(self, t):
         """Returns a name for the test that is unique between runs"""
         return "%s_%i" % (t.code, self.timestamp)
-    
+
+    def clean_sessions(self):
+        """Destroy client name env.c1"""
+        for sessionid in self.c1.sessions.keys():
+            self.c1.compound([op.destroy_session(sessionid)])
+
 #########################################
 debug_fail = False
 
nfs4.1/testmod.py +1 -0
index 5908066..661aed0 100644
@@ -220,6 +220,7 @@ class Test(object):
             environment.startUp()
             self.runtest(self, environment)
             self.result = self._pass_result
+	    environment.clean_sessions()
         except KeyboardInterrupt:
             raise
         except TestException, e:
Signature · 1 line
1.9.3
#3 lore raw
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

Quoted 8 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Could you look into those and resend your pynfs patches? Thanks!

Yes, I will check those patch and resend them.

thanks,
Kinglong Mee

Quoted 67 lines

--b.

Quoted 61 lines · Kinglong Mee

There are many sessions left after testing, they hold drc memory at server. This patch tries to clean session after each testcase.

v2,
adds empty function of clean_sessions for nfs4.0,
because they are using the same testmod.py

---
 nfs4.0/servertests/environment.py   | 3 +++
 nfs4.1/server41tests/environment.py | 7 ++++++-
 nfs4.1/testmod.py                   | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)
nfs4.0/servertests/environment.py +3 -0
index 993320d..9852178 100644
@@ -226,6 +226,9 @@ class Environment(testmod.Environment):
             cmd += ' ' + args
             os.system(cmd);
 
+    def clean_sessions(self):
+        return
+
 #########################################
 debug_fail = False
 
nfs4.1/server41tests/environment.py +6 -1
index b2df732..7632655 100644
@@ -248,7 +248,12 @@ class Environment(testmod.Environment):
     def testname(self, t):
         """Returns a name for the test that is unique between runs"""
         return "%s_%i" % (t.code, self.timestamp)
-    
+
+    def clean_sessions(self):
+        """Destroy client name env.c1"""
+        for sessionid in self.c1.sessions.keys():
+            self.c1.compound([op.destroy_session(sessionid)])
+
 #########################################
 debug_fail = False
 
nfs4.1/testmod.py +1 -0
index 5908066..661aed0 100644
@@ -220,6 +220,7 @@ class Test(object):
             environment.startUp()
             self.runtest(self, environment)
             self.result = self._pass_result
+	    environment.clean_sessions()
         except KeyboardInterrupt:
             raise
         except TestException, e:
Signature · 1 line
1.9.3
#4 lore raw
Quoted 12 lines · Kinglong Mee
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

Quoted 6 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Can you show me more information about this?

thanks,
Kinglong Mee

Quoted 76 lines
Quoted 2 lines

Could you look into those and resend your pynfs patches? Thanks!

Yes, I will check those patch and resend them.

thanks,
Kinglong Mee

Quoted 67 lines

--b.

Quoted 61 lines · Kinglong Mee

There are many sessions left after testing, they hold drc memory at server. This patch tries to clean session after each testcase.

v2,
adds empty function of clean_sessions for nfs4.0,
because they are using the same testmod.py

---
 nfs4.0/servertests/environment.py   | 3 +++
 nfs4.1/server41tests/environment.py | 7 ++++++-
 nfs4.1/testmod.py                   | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)
nfs4.0/servertests/environment.py +3 -0
index 993320d..9852178 100644
@@ -226,6 +226,9 @@ class Environment(testmod.Environment):
             cmd += ' ' + args
             os.system(cmd);
 
+    def clean_sessions(self):
+        return
+
 #########################################
 debug_fail = False
 
nfs4.1/server41tests/environment.py +6 -1
index b2df732..7632655 100644
@@ -248,7 +248,12 @@ class Environment(testmod.Environment):
     def testname(self, t):
         """Returns a name for the test that is unique between runs"""
         return "%s_%i" % (t.code, self.timestamp)
-    
+
+    def clean_sessions(self):
+        """Destroy client name env.c1"""
+        for sessionid in self.c1.sessions.keys():
+            self.c1.compound([op.destroy_session(sessionid)])
+
 #########################################
 debug_fail = False
 
nfs4.1/testmod.py +1 -0
index 5908066..661aed0 100644
@@ -220,6 +220,7 @@ class Test(object):
             environment.startUp()
             self.runtest(self, environment)
             self.result = self._pass_result
+	    environment.clean_sessions()
         except KeyboardInterrupt:
             raise
         except TestException, e:
Signature · 1 line
1.9.3
#5 lore raw
Quoted 6 lines · Kinglong Mee
Quoted 5 lines · Kinglong Mee
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

OK, thanks for explaining.

Quoted 9 lines
Quoted 7 lines
Quoted 7 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Can you show me more information about this?

[root@pip5 pynfs]# ./nfs4.0/testserver.py f19:/exports/xfs/pynfstest-user --maketree Initialization failed, no tests run.
Traceback (most recent call last):
File "./nfs4.0/testserver.py", line 381, in <module>

    main()
  File "./nfs4.0/testserver.py", line 344, in main
    env.init()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 140, in init
    self._maketree()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 162, in _maketree
    check(res, msg="Trying to create /%s," % '/'.join(path))

File "/root/pynfs/nfs4.0/servertests/environment.py", line 253, in check
raise testmod.FailureException(msg)
testmod.FailureException: Trying to create /tmp, should return NFS4_OK, instead got NFS4ERR_ROFS

This happens after the ipv6 patch.

Note /exports on my server is exported read-only, xfs is a separate writeable filesystem.

--b.

#6 lore raw
Quoted 31 lines · J. Bruce Fields
Quoted 6 lines · Kinglong Mee
Quoted 5 lines · Kinglong Mee
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

OK, thanks for explaining.

Quoted 9 lines
Quoted 7 lines
Quoted 7 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Can you show me more information about this?

[root@pip5 pynfs]# ./nfs4.0/testserver.py f19:/exports/xfs/pynfstest-user --maketree Initialization failed, no tests run.
Traceback (most recent call last):
File "./nfs4.0/testserver.py", line 381, in <module>

    main()
  File "./nfs4.0/testserver.py", line 344, in main
    env.init()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 140, in init
    self._maketree()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 162, in _maketree
    check(res, msg="Trying to create /%s," % '/'.join(path))
Quoted 8 lines

File "/root/pynfs/nfs4.0/servertests/environment.py", line 253, in check
raise testmod.FailureException(msg)
testmod.FailureException: Trying to create /tmp, should return NFS4_OK, instead got NFS4ERR_ROFS

This happens after the ipv6 patch.

Note /exports on my server is exported read-only, xfs is a separate writeable filesystem.

Thanks for your testing.
I have found this bug in IPv6 path, and will send three new path all I have.

thanks,
Kinglong Mee

#7 lore raw
Quoted 36 lines · Kinglong Mee
Quoted 35 lines · J. Bruce Fields
Quoted 6 lines · Kinglong Mee
Quoted 5 lines · Kinglong Mee
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

OK, thanks for explaining.

Quoted 9 lines
Quoted 7 lines
Quoted 7 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Can you show me more information about this?

[root@pip5 pynfs]# ./nfs4.0/testserver.py f19:/exports/xfs/pynfstest-user --maketree Initialization failed, no tests run.
Traceback (most recent call last):
File "./nfs4.0/testserver.py", line 381, in <module>

    main()
  File "./nfs4.0/testserver.py", line 344, in main
    env.init()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 140, in init
    self._maketree()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 162, in _maketree
    check(res, msg="Trying to create /%s," % '/'.join(path))

File "/root/pynfs/nfs4.0/servertests/environment.py", line 253, in check
raise testmod.FailureException(msg)
testmod.FailureException: Trying to create /tmp, should return NFS4_OK, instead got NFS4ERR_ROFS

Quoted 7 lines
Quoted 4 lines

This happens after the ipv6 patch.

Note /exports on my server is exported read-only, xfs is a separate writeable filesystem.

Thanks for your testing.
I have found this bug in IPv6 path, and will send three new path all I have.

I found you have revert the following two patch in your tree,

"NFS4.1: try to clean sessions after testing" and, "NFS4.0: Case for linking to bad source path with zero-length"

thanks,
Kinglong Mee

#8 lore raw
Quoted 42 lines · Kinglong Mee
Quoted 41 lines · Kinglong Mee
Quoted 39 lines · J. Bruce Fields
Quoted 6 lines · Kinglong Mee
Quoted 5 lines · Kinglong Mee
Quoted 2 lines · J. Bruce Fields

I tried to apply this, and the ipv6 patch (could we do that for 4.1 too?) and the 3 other patches, but:

nfs4.1 has supports IPv6, the patch for nfs4.0 is a back-port from nfs4.1.

OK, thanks for explaining.

Quoted 9 lines
Quoted 7 lines
Quoted 7 lines

- there are some conflicts with the latest pynfs (e.g. I already added a few acl tests, apologies)
- I'm getting failures to write to a read-only fs, apparently one of the tests is trying to write to the export root? I didn't check which one.

Can you show me more information about this?

[root@pip5 pynfs]# ./nfs4.0/testserver.py f19:/exports/xfs/pynfstest-user --maketree Initialization failed, no tests run.
Traceback (most recent call last):
File "./nfs4.0/testserver.py", line 381, in <module>

    main()
  File "./nfs4.0/testserver.py", line 344, in main
    env.init()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 140, in init
    self._maketree()
  File "/root/pynfs/nfs4.0/servertests/environment.py", line 162, in _maketree
    check(res, msg="Trying to create /%s," % '/'.join(path))

File "/root/pynfs/nfs4.0/servertests/environment.py", line 253, in check
raise testmod.FailureException(msg)
testmod.FailureException: Trying to create /tmp, should return NFS4_OK, instead got NFS4ERR_ROFS

This happens after the ipv6 patch.

Note /exports on my server is exported read-only, xfs is a separate writeable filesystem.

Quoted 7 lines
Quoted 2 lines

Thanks for your testing.
I have found this bug in IPv6 path, and will send three new path all I have.

I found you have revert the following two patch in your tree,

"NFS4.1: try to clean sessions after testing" and, "NFS4.0: Case for linking to bad source path with zero-length"

I think those only every showed up in a temporary testing branch?

Anyway, pushed out now, with the ipv6 change. Others waiting for you to resend or me to get a chance to look at them (may be a few days).

--b.