Browse Source

Merge branch 'master' into fortune

Patrick Falls 12 years ago
parent
commit
bd32367932

+ 32 - 21
openresty/app.lua

@@ -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

+ 2 - 1
openresty/nginx.conf

@@ -8,10 +8,11 @@ events {
 
 http {
     access_log off;
+    lua_package_path 'CWD/openresty/?.lua;;';	
     server {
         listen       8080;
         location / {
-            content_by_lua_file 'CWD/openresty/app.lua';
+            content_by_lua 'require("app").handler(ngx)';
         }
     }
 }

+ 0 - 56
yesod/bench/Application.hs

@@ -1,56 +0,0 @@
-{-# LANGUAGE BangPatterns #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-module Application
-    ( makeApplication
-    , makeFoundation
-    ) where
-
-import Import
-import Control.Monad
-import Control.DeepSeq (force)
-import System.Random
-
-import qualified Database.Persist.Store
-import Database.Persist.Store (PersistValue (..))
-import Network.HTTP.Conduit (newManager, def)
-import Yesod.Default.Config
-
-
-import Settings
-
-getJsonR :: Handler RepJson
-getJsonR = jsonToRepJson $ object [("message", "Hello, World!" :: Text)]
-
-getDBR :: Handler RepJson
-getDBR = do
-    !i <- liftIO $ randomRIO (1, 10000)
-    Just o <- runDB $ get $ Key $ PersistInt64 i
-    jsonToRepJson $ object ["id" .= i, "randomNumber" .= worldRandomNumber o]
-
-getDB2R :: Int -> Handler RepJson
-getDB2R n = do
-    !is <- force . take n . randomRs (1, 10000) <$> liftIO newStdGen
-
-    ns <- runDB $
-        forM is $ \i -> do
-            Just o <- get $ Key $ PersistInt64 i
-            return (i, worldRandomNumber o)
-
-    jsonToRepJson $ array
-        [ object ["id" .= i, "randomNumber" .= rn] | (i, rn) <- ns ]
-
-mkYesodDispatch "App" resourcesApp
-
-makeApplication :: AppConfig DefaultEnv Extra -> IO Application
-makeApplication conf = makeFoundation conf >>= toWaiAppPlain
-
-makeFoundation :: AppConfig DefaultEnv Extra -> IO App
-makeFoundation conf = do
-    manager <- newManager def
-    dbconf <- withYamlEnvironment "config/mysql.yml" (appEnv conf)
-              Database.Persist.Store.loadConfig >>=
-              Database.Persist.Store.applyEnv
-    p <- Database.Persist.Store.createPoolConfig (dbconf :: Settings.PersistConfig)
-    let foundation = App conf p manager dbconf
-
-    return foundation

+ 0 - 39
yesod/bench/Foundation.hs

@@ -1,39 +0,0 @@
-module Foundation where
-
-import Prelude
-import Yesod
-import Yesod.Default.Config
-import Network.HTTP.Conduit (Manager)
-import qualified Settings
-import qualified Database.Persist.Store
-import Database.Persist.GenericSql
-import Settings (Extra (..))
-
-data App = App
-    { settings :: AppConfig DefaultEnv Extra
-    , connPool :: Database.Persist.Store.PersistConfigPool Settings.PersistConfig -- ^ Database connection pool.
-    , httpManager :: Manager
-    , persistConfig :: Settings.PersistConfig
-    }
-
-mkYesodData "App" $(parseRoutesFile "config/routes")
-
-type Form x = Html -> MForm App App (FormResult x, Widget)
-
-instance Yesod App where
-    approot = ApprootMaster $ appRoot . settings
-    logLevel _ = LevelError
-    makeSessionBackend _ = return Nothing
-    shouldLog _ _ _ = False
-
-instance YesodPersist App where
-    type YesodPersistBackend App = SqlPersist
-    runDB f = do
-        master <- getYesod
-        Database.Persist.Store.runPool
-            (persistConfig master)
-            f
-            (connPool master)
-
-getExtra :: Handler Extra
-getExtra = fmap (appExtra . settings) getYesod

+ 0 - 27
yesod/bench/Import.hs

@@ -1,27 +0,0 @@
-module Import
-    ( module Import
-    ) where
-
-import           Prelude              as Import hiding (head, init, last,
-                                                 readFile, tail, writeFile)
-import           Yesod                as Import hiding (Route (..))
-
-import           Control.Applicative  as Import (pure, (<$>), (<*>))
-import           Data.Text            as Import (Text)
-
-import           Foundation           as Import
-import           Model                as Import
-import           Settings             as Import
-
-#if __GLASGOW_HASKELL__ >= 704
-import           Data.Monoid          as Import
-                                                 (Monoid (mappend, mempty, mconcat),
-                                                 (<>))
-#else
-import           Data.Monoid          as Import
-                                                 (Monoid (mappend, mempty, mconcat))
-
-infixr 5 <>
-(<>) :: Monoid m => m -> m -> m
-(<>) = mappend
-#endif

+ 0 - 12
yesod/bench/Model.hs

@@ -1,12 +0,0 @@
-module Model where
-
-import Prelude
-import Yesod
-import Database.Persist.Quasi
-
--- You can define all of your database entities in the entities file.
--- You can find more information on persistent and how to declare entities
--- at:
--- http://www.yesodweb.com/book/persistent/
-share [mkPersist sqlOnlySettings, mkMigrate "migrateAll"]
-    $(persistFileWith lowerCaseSettings "config/models")

+ 0 - 16
yesod/bench/Settings.hs

@@ -1,16 +0,0 @@
-module Settings where
-
-import Prelude
-import Database.Persist.MySQL (MySQLConf)
-import Yesod.Default.Config
-import Yesod.Default.Util
-import Data.Yaml
-
-type PersistConfig = MySQLConf
-
-data Extra = Extra
-    { 
-    } deriving Show
-
-parseExtra :: DefaultEnv -> Object -> Parser Extra
-parseExtra _ o = return Extra

+ 0 - 8
yesod/bench/app/main.hs

@@ -1,8 +0,0 @@
-import Prelude              (IO)
-import Yesod.Default.Config (fromArgs)
-import Yesod.Default.Main   (defaultMain)
-import Settings             (parseExtra)
-import Application          (makeApplication)
-
-main :: IO ()
-main = defaultMain (fromArgs parseExtra) makeApplication

+ 0 - 2
yesod/bench/config/models

@@ -1,2 +0,0 @@
-World
-    randomNumber Int sql=randomNumber

+ 0 - 21
yesod/bench/config/mysql.yml

@@ -1,21 +0,0 @@
-Default: &defaults
-  user: benchmarkdbuser
-  password: benchmarkdbpass
-  host: 127.0.0.1
-  port: 3306
-  database: hello_world
-  poolsize: 10
-
-Development:
-  <<: *defaults
-
-Testing:
-  <<: *defaults
-
-Staging:
-  poolsize: 100
-  <<: *defaults
-
-Production:
-  poolsize: 100
-  <<: *defaults

+ 0 - 3
yesod/bench/config/routes

@@ -1,3 +0,0 @@
-/json           JsonR   GET
-/db             DBR     GET
-/db2/#Int       DB2R    GET

+ 0 - 18
yesod/bench/config/settings.yml

@@ -1,18 +0,0 @@
-Default: &defaults
-  host: "*4" # any IPv4 host
-  port: 3000
-  approot: "http://localhost:3000"
-  #analytics: UA-YOURCODE
-
-Development:
-  <<: *defaults
-
-Testing:
-  <<: *defaults
-
-Staging:
-  <<: *defaults
-
-Production:
-  #approot: "http://www.example.com"
-  <<: *defaults

+ 1 - 1
yesod/setup.py

@@ -5,7 +5,7 @@ import setup_util
 import os
 
 def start(args):
-  setup_util.replace_text("yesod/bench/config/mysql.yml", "host: .*", "host: " + args.database_host)
+  #setup_util.replace_text("yesod/bench/config/mysql.yml", "host: .*", "host: " + args.database_host)
   
   subprocess.check_call("cabal update", shell=True, cwd="yesod/bench")
   subprocess.check_call("cabal install --only-dependencies", shell=True, cwd="yesod/bench")