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 :

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