[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Added a stress test for the Xenstore-Python interface layer.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |