Mercurial > p > roundup > code
annotate test/benchmark.py @ 8580:5cba36e42b8f
chore: refactor replace urlparse with urlsplit and use urllib_
Python docs recommend use of urlsplit() rather than
urlparse(). urlsplit() is a little faster and doesn't try to split the
path into path and params using the rules from an obsolete RFC.
actions.py, demo.py, rest.py, client.py
Replace urlparse() with urlsplit()
actions.py
urlsplit() produces a named tuple with one fewer elements (no
.param). So fixup calls to urlunparse() so they have the proper
number of elements in the tuple.
also merge url filtering for param and path.
demo.py, rest.py:
Replace imports from urlparse/urllib.parse with
roundup.anypy.urllib_ so we use the same interface throughout the
code base.
test/test_cgi.py:
Since actions.py filtering for invali urls not split by path/param,
fix tests for improperly quoted url's.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 19 Apr 2026 22:58:59 -0400 |
| parents | 9c3ec0a5c7fc |
| children |
| rev | line source |
|---|---|
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
1 """ Usage: python benchmark.py ["database backend list" | backend1] [backend2] |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
2 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
3 Import the backend (anydbm, sqlite by default) and run some performance |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
4 tests. Example: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
5 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
6 test default anypy and sqlite backends |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
7 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
8 python benchmark.py |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
9 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
10 test mysql and sqlite backends |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
11 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
12 python benchmark.py mysql sqlite |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
13 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
14 or |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
15 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
16 python benchmark.py "mysql sqlite" |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
17 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
18 test all backends |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
19 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
20 python benchmark.py anydbm mysql postgresql sqlite |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
21 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
22 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
23 """ |
|
2823
d41f38de578e
remove unused imports: shutil, Indexer;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2813
diff
changeset
|
24 import sys, os, time |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
25 import importlib, signal, shutil |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
26 |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
27 # --- patch sys.path to make sure 'import roundup' finds correct version |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
28 import os.path as osp |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
29 thisdir = osp.dirname(osp.abspath(__file__)) |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
30 rootdir = osp.dirname(thisdir) |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
31 if (osp.exists(thisdir + '/benchmark.py') and |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
32 osp.exists(rootdir + '/roundup/__init__.py')): |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
33 # the script is located inside roundup source code |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
34 sys.path.insert(0, rootdir) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 Interval, DatabaseError, Boolean, Number |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 from roundup import date, password |
|
2823
d41f38de578e
remove unused imports: shutil, Indexer;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2813
diff
changeset
|
39 |
|
7871
30fcdf60da44
test: fix benchmark.py and set up to run under github if requested
John Rouillard <rouilj@ieee.org>
parents:
5400
diff
changeset
|
40 from test.db_test_base import config |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
42 # global for the default signal hander so |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
43 # my signal handler can reset before it raises signal. |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
44 int_sig_default_handler = None |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
45 |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 def setupSchema(db, module): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 status = module.Class(db, "status", name=String()) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 status.setkey("name") |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 user = module.Class(db, "user", username=String(), password=Password(), |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 assignable=Boolean(), age=Number(), roles=String()) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 user.setkey("username") |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 file = module.FileClass(db, "file", name=String(), type=String(), |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 comment=String(indexme="yes")) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 issue = module.IssueClass(db, "issue", title=String(indexme="yes"), |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 status=Link("status"), nosy=Multilink("user"), deadline=Date(), |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 foo=Interval(), files=Multilink("file"), assignedto=Link('user')) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 session = module.Class(db, 'session', title=String()) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 session.disableJournalling() |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 db.post_init() |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 db.commit() |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
62 def rm_db_on_signal(sig, frame): |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
63 print("removing incomplete database %s due to interruption." % |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
64 config.DATABASE) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
65 |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
66 shutil.rmtree(config.DATABASE) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
67 |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
68 signal.signal(signal.SIGINT, int_sig_default_handler) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
69 # re-raise the signal so the normal signal handling runs. |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
70 signal.raise_signal(signal.SIGTERM) |
|
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
71 |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 def main(backendname, time=time.time, numissues=10): |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
73 global int_sig_default_handler |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
74 |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 try: |
|
7871
30fcdf60da44
test: fix benchmark.py and set up to run under github if requested
John Rouillard <rouilj@ieee.org>
parents:
5400
diff
changeset
|
76 backend = importlib.import_module("roundup.backends.back_%s" % |
|
30fcdf60da44
test: fix benchmark.py and set up to run under github if requested
John Rouillard <rouilj@ieee.org>
parents:
5400
diff
changeset
|
77 backendname) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
78 except ImportError: |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
79 print("Unable to import %s backend." % backendname) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 return |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
82 times = [] |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
84 config.DATABASE = os.path.join('_benchmark', '%s-%s'%(backendname, |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
85 numissues)) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
86 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
87 config.RDBMS_NAME = "rounduptest_%s" % numissues |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
88 |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
89 if not os.path.exists(config.DATABASE): |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
90 int_sig_default_handler = signal.signal(signal.SIGINT, rm_db_on_signal) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
91 db = backend.Database(config, 'admin') |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
92 setupSchema(db, backend) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
93 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
94 # if we are re-initializing, delete any existing db |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
95 db.clear() |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
96 db.commit() |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
97 |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
98 # create a whole bunch of stuff |
|
7871
30fcdf60da44
test: fix benchmark.py and set up to run under github if requested
John Rouillard <rouilj@ieee.org>
parents:
5400
diff
changeset
|
99 db.user.create(**{'username': 'admin', 'roles': 'Admin'}) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
100 db.status.create(name="unread") |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
101 db.status.create(name="in-progress") |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
102 db.status.create(name="testing") |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
103 db.status.create(name="resolved") |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
104 pc = -1 |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
105 for i in range(numissues): |
|
7871
30fcdf60da44
test: fix benchmark.py and set up to run under github if requested
John Rouillard <rouilj@ieee.org>
parents:
5400
diff
changeset
|
106 db.user.create(**{'username': 'user %s'%i, 'roles': 'User'}) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
107 for j in range(10): |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
108 db.user.set(str(i+1), assignable=1) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
109 db.user.set(str(i+1), assignable=0) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
110 db.issue.create(**{'title': 'issue %s'%i}) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
111 for j in range(10): |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
112 db.issue.set(str(i+1), status='2', assignedto='2', nosy=[]) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
113 db.issue.set(str(i+1), status='1', assignedto='1', |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
114 nosy=['1','2']) |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
115 if (i*100//numissues) != pc and 'INCI' not in os.environ: |
|
5400
2120f77554d5
Python 3 preparation: use // and __truediv__ as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
116 pc = (i*100//numissues) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
117 sys.stdout.write("%d%%\r"%pc) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
118 sys.stdout.flush() |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
119 db.commit() |
|
7872
163d2c60fdf3
test: benchmark no progress when INCI defined; set path; signal handling
John Rouillard <rouilj@ieee.org>
parents:
7871
diff
changeset
|
120 signal.signal(signal.SIGINT, int_sig_default_handler) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
121 else: |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
122 db = backend.Database(config, 'admin') |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
123 setupSchema(db, backend) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
124 |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
125 sys.stdout.write('%10s: %-6d'%(backendname[:10], numissues)) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
126 sys.stdout.flush() |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
127 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
128 times.append(('start', time())) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 # fetch |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
131 db.clearCache() |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 for i in db.issue.list(): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 db.issue.get(i, 'title') |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 times.append(('fetch', time())) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
135 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
136 # journals |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
137 db.clearCache() |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
138 for i in db.issue.list(): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
139 db.issue.history(i) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 times.append(('journal', time())) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 # "calculated" props |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
143 db.clearCache() |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 for i in db.issue.list(): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
145 db.issue.get(i, 'activity') |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 db.issue.get(i, 'creator') |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
147 db.issue.get(i, 'creation') |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 times.append(('jprops', time())) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
149 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
150 # lookup |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
151 db.clearCache() |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 for i in range(numissues): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
153 db.user.lookup('user %s'%i) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
154 times.append(('lookup', time())) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
155 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
156 # filter |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
157 db.clearCache() |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
158 for i in range(100): |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
159 db.issue.filter(None, {'assignedto': '1', 'title':'issue'}, |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
160 ('+', 'activity'), ('+', 'status')) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
161 times.append(('filter', time())) |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
162 |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
163 # filter with multilink |
|
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
164 db.clearCache() |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 for i in range(100): |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 db.issue.filter(None, {'nosy': ['1'], 'assignedto': '1', |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 'title':'issue'}, ('+', 'activity'), ('+', 'status')) |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
168 times.append(('filtml', time())) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 # results |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 last = None |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
172 for event, stamp in times: |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 if last is None: |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
174 first = stamp |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
175 else: |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
176 sys.stdout.write(' %-6.2f'%(stamp-last)) |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
177 last = stamp |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
2823
diff
changeset
|
178 print(' %-6.2f'%(last-first)) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
179 sys.stdout.flush() |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
180 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
181 if __name__ == '__main__': |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
182 if len(sys.argv) == 2: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
183 test_databases = sys.argv[1].split() |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
184 elif len(sys.argv) > 2: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
185 test_databases = sys.argv[1:] |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
186 else: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
187 test_databases = ['anydbm', 'sqlite'] |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
188 |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
189 # 0 1 2 3 4 5 6 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
190 # 01234567890123456789012345678901234567890123456789012345678901234 |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
191 print('Test name fetch journl jprops lookup filter filtml TOTAL ') |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
192 for name in test_databases: |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
193 main(name) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
194 for name in test_databases: |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
195 main(name, numissues=20) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
196 for name in test_databases: |
|
1181
49aebf5a8691
some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
197 main(name, numissues=100) |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
198 |
|
1233
69bf0d381fd7
Zope Collector fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
1181
diff
changeset
|
199 # don't even bother benchmarking the dbm backends > 100! |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
200 try: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
201 test_databases.remove('anydbm') |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
202 except ValueError: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
203 # anydbm not present; this is fine |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
204 pass |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
205 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
206 for name in test_databases: |
|
1233
69bf0d381fd7
Zope Collector fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
1181
diff
changeset
|
207 main(name, numissues=1000) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
208 |
|
7876
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
209 for name in test_databases: |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
210 main(name, numissues=10000) |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
211 |
|
7a3392f1f7ac
test: update benchmark add basic CLI support for backend arguments
John Rouillard <rouilj@ieee.org>
parents:
7873
diff
changeset
|
212 |
|
2813
91d4d28c4a86
remove bsddb, bsddb3 backends;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
1233
diff
changeset
|
213 # vim: set et sts=4 sw=4 : |
