|
@@ -1,30 +1,41 @@
|
|
|
+local _M = {}
|
|
|
+
|
|
|
local cjson = require "cjson"
|
|
|
local mysql = require "resty.mysql"
|
|
|
local math = require "math"
|
|
|
|
|
|
-local mysqlconn = {
|
|
|
- host = "DBHOSTNAME",
|
|
|
- port = 3306,
|
|
|
- database = "hello_world",
|
|
|
- user = "benchmarkdbuser",
|
|
|
- password = "benchmarkdbpass"
|
|
|
-}
|
|
|
+local encode = cjson.encode
|
|
|
+local random = math.random
|
|
|
+local insert = table.insert
|
|
|
+
|
|
|
|
|
|
-ngx.header.content_type = 'application/json'
|
|
|
+function _M.handler(ngx)
|
|
|
+ ngx.header.content_type = 'application/json'
|
|
|
+
|
|
|
+ if ngx.var.uri == '/json' then
|
|
|
+ local resp = {message = "Hello, World!"}
|
|
|
+ ngx.print( encode(resp) )
|
|
|
+ elseif ngx.var.uri == '/db' then
|
|
|
|
|
|
-if ngx.var.uri == '/json' then
|
|
|
- local resp = {message = "Hello, World!"}
|
|
|
- ngx.print( cjson.encode(resp) )
|
|
|
+ local mysqlconn = {
|
|
|
+ host = "DBHOSTNAME",
|
|
|
+ port = 3306,
|
|
|
+ database = "hello_world",
|
|
|
+ user = "benchmarkdbuser",
|
|
|
+ password = "benchmarkdbpass"
|
|
|
+ }
|
|
|
|
|
|
-elseif ngx.var.uri == '/db' then
|
|
|
- local db, err = mysql:new()
|
|
|
- local ok, err = db:connect(mysqlconn)
|
|
|
- local num_queries = tonumber(ngx.req.get_uri_args()["queries"]) or 1
|
|
|
- local worlds = {}
|
|
|
- for i=1, num_queries do
|
|
|
- local wid = math.random(1, 10000)
|
|
|
- table.insert(worlds, db:query('SELECT * FROM World WHERE id = '..wid)[1])
|
|
|
+ local db, err = mysql:new()
|
|
|
+ local ok, err = db:connect(mysqlconn)
|
|
|
+ local num_queries = tonumber(ngx.var.arg_queries) or 1
|
|
|
+ local worlds = {}
|
|
|
+ for i=1, num_queries do
|
|
|
+ local wid = random(1, 10000)
|
|
|
+ insert(worlds, db:query('SELECT * FROM World WHERE id = '..wid)[1])
|
|
|
+ end
|
|
|
+ ngx.print( encode(worlds) )
|
|
|
+ local ok, err = db:set_keepalive(0, 256)
|
|
|
end
|
|
|
- ngx.print( cjson.encode(worlds) )
|
|
|
- local ok, err = db:set_keepalive(0, 256)
|
|
|
end
|
|
|
+
|
|
|
+return _M
|