Index: rpctest/rpctest.scm ================================================================== --- rpctest/rpctest.scm +++ rpctest/rpctest.scm @@ -1,12 +1,19 @@ ;;;; rpc-demo.scm ;;;; Simple database server / client +;;; start server thusly: ./rpctest server test.db +;;; you will need to init test.db: +;;; sqlite3 test.db "CREATE TABLE foo (id INTEGER PRIMARY KEY, var TEXT, val TEXT);" + (require-extension (srfi 18) extras tcp rpc sqlite3) ;;; Common things +(define total-queries 0) +(define start-time (current-seconds)) + (define operation (string->symbol (car (command-line-arguments)))) (define param (cadr (command-line-arguments))) (print "Operation: " operation ", param: " param) (define rpc:listener @@ -33,14 +40,17 @@ (let ((db (open-database param))) (set-finalizer! db finalize!) (rpc:publish-procedure! 'query (lambda (sql callback) + (set! total-queries (+ total-queries 1)) (print "Executing query '" sql "' ...") (for-each-row callback - db sql)))) + db sql) + (print "Query rate: " (/ total-queries (/ (- (current-seconds) start-time) 60)) " per minute") + ))) (thread-join! rpc:server)) ;;; Client side (define (callback1 . columns) ADDED rpctest/run-client.sh Index: rpctest/run-client.sh ================================================================== --- /dev/null +++ rpctest/run-client.sh @@ -0,0 +1,12 @@ +#!/bin/bash + + +while ./rpctest client "insert into foo (var,val) values ($RANDOM,$RANDOM);";do + numrows=$(./rpctest client "select * from foo;"|wc -l) + deletefrom=$RANDOM + echo "numrows=$numrows, deletefrom=$deletefrom" + if [[ $numrows -gt 300 ]];then + echo "numrows=$numrows, deletefrom=$deletefrom" + ./rpctest client "delete from foo where var > $deletefrom;" + fi +done