bench.rkt 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #lang racket/base
  2. (require web-server/servlet-env
  3. web-server/dispatch
  4. web-server/http
  5. json
  6. db)
  7. (define (response/json x)
  8. (response/output
  9. #:mime-type #"application/json"
  10. (λ (out)
  11. (write-json x out))))
  12. (define (page/json req)
  13. (response/json
  14. (hasheq 'message "Hello, World!")))
  15. (define (go! db-host)
  16. (define c
  17. (virtual-connection
  18. (connection-pool
  19. (λ ()
  20. (mysql-connect #:user "benchmarkdbuser"
  21. #:password "benchmarkdbpass"
  22. #:database "hello_world"
  23. #:server db-host)))))
  24. (define (db-one)
  25. (define random-id (add1 (random 10000)))
  26. (query-list c "select * from World where randomNumber = $1" random-id))
  27. (define (page/db req)
  28. (response/json
  29. (db-one)))
  30. (define (page/dbs req i)
  31. (response/json
  32. (for/list ([j (in-range i)])
  33. (db-one))))
  34. (define-values (main-dispatch main-url)
  35. (dispatch-rules
  36. [("json")
  37. page/json]
  38. [("db")
  39. page/db]
  40. [("dbs" (integer-arg))
  41. page/dbs]))
  42. (serve/servlet
  43. main-dispatch
  44. #:port 8000
  45. #:listen-ip #f
  46. #:command-line? #t
  47. #:servlet-regexp #rx""
  48. #:servlet-path "/"))
  49. (module+ main
  50. (require racket/cmdline)
  51. (command-line #:program "bench"
  52. #:args (db-host-s)
  53. (go! db-host-s)))