|
@@ -5,6 +5,8 @@
|
|
json
|
|
json
|
|
db)
|
|
db)
|
|
|
|
|
|
|
|
+(define DEPLOY? (box #t))
|
|
|
|
+
|
|
(define (response/json x)
|
|
(define (response/json x)
|
|
(response/output
|
|
(response/output
|
|
#:mime-type #"application/json"
|
|
#:mime-type #"application/json"
|
|
@@ -17,23 +19,42 @@
|
|
|
|
|
|
(define (go! db-host)
|
|
(define (go! db-host)
|
|
(define c
|
|
(define c
|
|
- (virtual-connection
|
|
|
|
- (connection-pool
|
|
|
|
- (λ ()
|
|
|
|
- (mysql-connect #:user "benchmarkdbuser"
|
|
|
|
- #:password "benchmarkdbpass"
|
|
|
|
- #:database "hello_world"
|
|
|
|
- #:server db-host)))))
|
|
|
|
|
|
+ (cond
|
|
|
|
+ [(unbox DEPLOY?)
|
|
|
|
+ (virtual-connection
|
|
|
|
+ (connection-pool
|
|
|
|
+ (λ ()
|
|
|
|
+ (mysql-connect #:user "benchmarkdbuser"
|
|
|
|
+ #:password "benchmarkdbpass"
|
|
|
|
+ #:database "hello_world"
|
|
|
|
+ #:server db-host))))]
|
|
|
|
+ [else
|
|
|
|
+ (define c (sqlite3-connect #:database 'memory))
|
|
|
|
+ (query-exec c "create table World ( id int, randomNumber int )")
|
|
|
|
+ (for ([i (in-range (add1 10000))])
|
|
|
|
+ (query-exec c "insert into World values ( $1, $1 )" i))
|
|
|
|
+ c]))
|
|
|
|
|
|
(define (db-one)
|
|
(define (db-one)
|
|
- (define random-id (add1 (random 10000)))
|
|
|
|
- (query-list c "select * from World where randomNumber = $1" random-id))
|
|
|
|
|
|
+ (define id (add1 (random 10000)))
|
|
|
|
+ (define randomNumber
|
|
|
|
+ (query-value c "select randomNumber from World where id = ?" id))
|
|
|
|
+ (hash 'id id 'randomNumber randomNumber))
|
|
|
|
|
|
(define (page/db req)
|
|
(define (page/db req)
|
|
(response/json
|
|
(response/json
|
|
(db-one)))
|
|
(db-one)))
|
|
|
|
|
|
- (define (page/dbs req i)
|
|
|
|
|
|
+ (define (clamp lo x hi)
|
|
|
|
+ (cond
|
|
|
|
+ [(x . < . lo) lo]
|
|
|
|
+ [(hi . < . x) hi]
|
|
|
|
+ [else x]))
|
|
|
|
+
|
|
|
|
+ (define (page/dbs req is)
|
|
|
|
+ (define maybe-num (string->number is))
|
|
|
|
+ (define maybe-i (or maybe-num 0))
|
|
|
|
+ (define i (clamp 1 maybe-i 500))
|
|
(response/json
|
|
(response/json
|
|
(for/list ([j (in-range i)])
|
|
(for/list ([j (in-range i)])
|
|
(db-one))))
|
|
(db-one))))
|
|
@@ -44,7 +65,7 @@
|
|
page/json]
|
|
page/json]
|
|
[("db")
|
|
[("db")
|
|
page/db]
|
|
page/db]
|
|
- [("dbs" (integer-arg))
|
|
|
|
|
|
+ [("dbs" (string-arg))
|
|
page/dbs]))
|
|
page/dbs]))
|
|
|
|
|
|
(serve/servlet
|
|
(serve/servlet
|
|
@@ -52,11 +73,15 @@
|
|
#:port 8000
|
|
#:port 8000
|
|
#:listen-ip #f
|
|
#:listen-ip #f
|
|
#:command-line? #t
|
|
#:command-line? #t
|
|
|
|
+ #:banner? (not (unbox DEPLOY?))
|
|
#:servlet-regexp #rx""
|
|
#:servlet-regexp #rx""
|
|
#:servlet-path "/"))
|
|
#:servlet-path "/"))
|
|
|
|
|
|
(module+ main
|
|
(module+ main
|
|
(require racket/cmdline)
|
|
(require racket/cmdline)
|
|
(command-line #:program "bench"
|
|
(command-line #:program "bench"
|
|
|
|
+ #:once-each
|
|
|
|
+ ["--test" "Run in test mode"
|
|
|
|
+ (set-box! DEPLOY? #f)]
|
|
#:args (db-host-s)
|
|
#:args (db-host-s)
|
|
(go! db-host-s)))
|
|
(go! db-host-s)))
|