comparison test/benchmark.py @ 7871:30fcdf60da44

test: fix benchmark.py and set up to run under github if requested Add the word "benchmark" to the comment to get the benchmarking code to run.
author John Rouillard <rouilj@ieee.org>
date Wed, 10 Apr 2024 00:14:58 -0400
parents 2120f77554d5
children 163d2c60fdf3
comparison
equal deleted inserted replaced
7870:fe77e4325084 7871:30fcdf60da44
1 from __future__ import print_function 1 from __future__ import print_function
2 import sys, os, time 2 import sys, os, time
3 import importlib
3 4
4 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ 5 from roundup.hyperdb import String, Password, Link, Multilink, Date, \
5 Interval, DatabaseError, Boolean, Number 6 Interval, DatabaseError, Boolean, Number
6 from roundup import date, password 7 from roundup import date, password
7 8
8 from .db_test_base import config 9 from test.db_test_base import config
9 10
10 def setupSchema(db, module): 11 def setupSchema(db, module):
11 status = module.Class(db, "status", name=String()) 12 status = module.Class(db, "status", name=String())
12 status.setkey("name") 13 status.setkey("name")
13 user = module.Class(db, "user", username=String(), password=Password(), 14 user = module.Class(db, "user", username=String(), password=Password(),
23 db.post_init() 24 db.post_init()
24 db.commit() 25 db.commit()
25 26
26 def main(backendname, time=time.time, numissues=10): 27 def main(backendname, time=time.time, numissues=10):
27 try: 28 try:
28 exec('from roundup.backends import %s as backend'%backendname) 29 backend = importlib.import_module("roundup.backends.back_%s" %
30 backendname)
29 except ImportError: 31 except ImportError:
30 return 32 return
31 33
32 times = [] 34 times = []
33 35
35 numissues)) 37 numissues))
36 if not os.path.exists(config.DATABASE): 38 if not os.path.exists(config.DATABASE):
37 db = backend.Database(config, 'admin') 39 db = backend.Database(config, 'admin')
38 setupSchema(db, backend) 40 setupSchema(db, backend)
39 # create a whole bunch of stuff 41 # create a whole bunch of stuff
40 db.user.create(**{'username': 'admin'}) 42 db.user.create(**{'username': 'admin', 'roles': 'Admin'})
41 db.status.create(name="unread") 43 db.status.create(name="unread")
42 db.status.create(name="in-progress") 44 db.status.create(name="in-progress")
43 db.status.create(name="testing") 45 db.status.create(name="testing")
44 db.status.create(name="resolved") 46 db.status.create(name="resolved")
45 pc = -1 47 pc = -1
46 for i in range(numissues): 48 for i in range(numissues):
47 db.user.create(**{'username': 'user %s'%i}) 49 db.user.create(**{'username': 'user %s'%i, 'roles': 'User'})
48 for j in range(10): 50 for j in range(10):
49 db.user.set(str(i+1), assignable=1) 51 db.user.set(str(i+1), assignable=1)
50 db.user.set(str(i+1), assignable=0) 52 db.user.set(str(i+1), assignable=0)
51 db.issue.create(**{'title': 'issue %s'%i}) 53 db.issue.create(**{'title': 'issue %s'%i})
52 for j in range(10): 54 for j in range(10):
120 122
121 if __name__ == '__main__': 123 if __name__ == '__main__':
122 # 0 1 2 3 4 5 6 124 # 0 1 2 3 4 5 6
123 # 01234567890123456789012345678901234567890123456789012345678901234 125 # 01234567890123456789012345678901234567890123456789012345678901234
124 print('Test name fetch journl jprops lookup filter filtml TOTAL ') 126 print('Test name fetch journl jprops lookup filter filtml TOTAL ')
125 for name in 'anydbm metakit sqlite'.split(): 127 for name in 'anydbm sqlite'.split():
126 main(name) 128 main(name)
127 for name in 'anydbm metakit sqlite'.split(): 129 for name in 'anydbm sqlite'.split():
128 main(name, numissues=20) 130 main(name, numissues=20)
129 for name in 'anydbm metakit sqlite'.split(): 131 for name in 'anydbm sqlite'.split():
130 main(name, numissues=100) 132 main(name, numissues=100)
131 # don't even bother benchmarking the dbm backends > 100! 133 # don't even bother benchmarking the dbm backends > 100!
132 for name in 'metakit sqlite'.split(): 134 for name in 'sqlite'.split():
133 main(name, numissues=1000) 135 main(name, numissues=1000)
134 136
135 # vim: set et sts=4 sw=4 : 137 # vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/