Mercurial > p > roundup > code
changeset 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 | fe77e4325084 |
| children | 163d2c60fdf3 |
| files | .github/workflows/ci-test.yml test/benchmark.py |
| diffstat | 2 files changed, 14 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/.github/workflows/ci-test.yml Mon Apr 08 13:14:57 2024 -0400 +++ b/.github/workflows/ci-test.yml Wed Apr 10 00:14:58 2024 -0400 @@ -313,6 +313,10 @@ # -f scripts/Docker/Dockerfile . + - name: run benchmarks + if: "contains(github.event.head_commit.message, 'benchmark')" + run: PYTHONPATH=. python test/benchmark.py + # in parallel build coveralls requires a finish step finish: needs: test
--- a/test/benchmark.py Mon Apr 08 13:14:57 2024 -0400 +++ b/test/benchmark.py Wed Apr 10 00:14:58 2024 -0400 @@ -1,11 +1,12 @@ from __future__ import print_function import sys, os, time +import importlib from roundup.hyperdb import String, Password, Link, Multilink, Date, \ Interval, DatabaseError, Boolean, Number from roundup import date, password -from .db_test_base import config +from test.db_test_base import config def setupSchema(db, module): status = module.Class(db, "status", name=String()) @@ -25,7 +26,8 @@ def main(backendname, time=time.time, numissues=10): try: - exec('from roundup.backends import %s as backend'%backendname) + backend = importlib.import_module("roundup.backends.back_%s" % + backendname) except ImportError: return @@ -37,14 +39,14 @@ db = backend.Database(config, 'admin') setupSchema(db, backend) # create a whole bunch of stuff - db.user.create(**{'username': 'admin'}) + db.user.create(**{'username': 'admin', 'roles': 'Admin'}) db.status.create(name="unread") db.status.create(name="in-progress") db.status.create(name="testing") db.status.create(name="resolved") pc = -1 for i in range(numissues): - db.user.create(**{'username': 'user %s'%i}) + db.user.create(**{'username': 'user %s'%i, 'roles': 'User'}) for j in range(10): db.user.set(str(i+1), assignable=1) db.user.set(str(i+1), assignable=0) @@ -122,14 +124,14 @@ # 0 1 2 3 4 5 6 # 01234567890123456789012345678901234567890123456789012345678901234 print('Test name fetch journl jprops lookup filter filtml TOTAL ') - for name in 'anydbm metakit sqlite'.split(): + for name in 'anydbm sqlite'.split(): main(name) - for name in 'anydbm metakit sqlite'.split(): + for name in 'anydbm sqlite'.split(): main(name, numissues=20) - for name in 'anydbm metakit sqlite'.split(): + for name in 'anydbm sqlite'.split(): main(name, numissues=100) # don't even bother benchmarking the dbm backends > 100! - for name in 'metakit sqlite'.split(): + for name in 'sqlite'.split(): main(name, numissues=1000) # vim: set et sts=4 sw=4 :
