WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Added a stress test for the Xenstore-Python interface la

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Added a stress test for the Xenstore-Python interface layer.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 14 Dec 2005 13:08:08 +0000
Delivery-date: Wed, 14 Dec 2005 13:10:01 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID f85f52b508c365da0255870ff7325980dd8f78fe
# Parent  62d9ac63e7f509328815443d8604f849b64d0c9d
Added a stress test for the Xenstore-Python interface layer.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>

diff -r 62d9ac63e7f5 -r f85f52b508c3 tools/python/setup.py
--- a/tools/python/setup.py     Tue Dec 13 18:08:26 2005
+++ b/tools/python/setup.py     Wed Dec 14 11:54:39 2005
@@ -46,6 +46,7 @@
 
                          'xen.xend.tests',
                          'xen.xend.server.tests',
+                         'xen.xend.xenstore.tests',
                          'xen.xm.tests'
                          ],
       ext_package = "xen.lowlevel",
diff -r 62d9ac63e7f5 -r f85f52b508c3 
tools/python/xen/xend/xenstore/tests/__init__.py
--- /dev/null   Tue Dec 13 18:08:26 2005
+++ b/tools/python/xen/xend/xenstore/tests/__init__.py  Wed Dec 14 11:54:39 2005
@@ -0,0 +1,2 @@
+
+
diff -r 62d9ac63e7f5 -r f85f52b508c3 
tools/python/xen/xend/xenstore/tests/stress_xs.py
--- /dev/null   Tue Dec 13 18:08:26 2005
+++ b/tools/python/xen/xend/xenstore/tests/stress_xs.py Wed Dec 14 11:54:39 2005
@@ -0,0 +1,121 @@
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+# Copyright (c) 2005 XenSource Ltd
+
+
+import random
+import sys
+import threading
+import time
+
+import xen.lowlevel.xs
+
+from xen.xend.xenstore import xsutil
+from xen.xend.xenstore.xstransact import xstransact
+from xen.xend.xenstore.xswatch import xswatch
+
+
+PATH = '/tool/stress_xs'
+
+
+def stress():
+    xstransact.Remove(PATH)
+    xstransact.Mkdir(PATH)
+
+    xswatch(PATH, watch_callback)
+
+    def do(f):
+        t = threading.Thread(target=stress_write)
+        t.setDaemon(True)
+        t.start()
+
+    do(stress_write)
+    do(stress_get_domain_path)
+    do(stress_get_domain_path_xsutil)
+    do(stress_open_close)
+
+    while True:
+        # Wait for Ctrl-C.
+        time.sleep(100000000)
+
+
+def stress_write():
+    xstransact.Write(PATH, 'key', '1')
+    while True:
+        val = xstransact.Gather(PATH, ('key', int))
+        xstransact.Store(PATH, ('key', val + 1))
+
+        random_sleep()
+
+
+def stress_get_domain_path():
+    xs_handle = xen.lowlevel.xs.xs()
+
+    domid = 0
+    while True:
+        xs_handle.get_domain_path(domid)
+        domid += 1
+
+        random_sleep()
+
+
+def stress_get_domain_path_xsutil():
+    domid = 0
+    while True:
+        xsutil.GetDomainPath(domid)
+        domid += 1
+
+        random_sleep()
+
+
+def stress_open_close():
+    while True:
+        xs_handle = xen.lowlevel.xs.xs()
+
+        try:
+            try:
+                trans = xs_handle.transaction_start()
+                val = int(xs_handle.read(trans, PATH + '/key'))
+                xs_handle.write(trans, PATH + '/key', str(val + 1))
+                xs_handle.transaction_end(trans, False)
+            except:
+                xs_handle.transaction_end(trans, True)
+
+            random_sleep()
+        finally:
+            del xs_handle
+
+
+def watch_callback(path):
+    random_sleep()
+    return True
+
+
+def random_sleep():
+    d = random.randint(-50000, 500)
+    if d > 0:
+        time.sleep(d / 1000.0)
+
+
+def main(argv = None):
+    if argv is None:
+        argv = sys.argv
+
+    stress()
+
+    return 0
+
+
+if __name__ == "__main__":
+    sys.exit(main())

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Added a stress test for the Xenstore-Python interface layer., Xen patchbot -unstable <=