wrecker-1.0.0: app/Main.hs
import Control.Exception
import Control.Monad (void)
import Data.Monoid
import Network.HTTP.Client
import Network.HTTP.Client.TLS (tlsManagerSettings)
import Options.Applicative
import Wrecker
import Wrecker.Options
parser :: Parser (PartialOptions, String)
parser = (,) <$> pPartialOptions <*> strArgument mempty
runParser' :: IO (Options, String)
runParser' = do
let opts =
info
(helper <*> parser)
(fullDesc <> progDesc "Welcome to wrecker" <>
header "wrecker - HTTP stress tester and benchmarker")
(partialOptions, url) <- execParser opts
options <-
case completeOptions partialOptions of
Nothing -> throwIO $ userError ""
Just x -> return x
return (options, url)
main :: IO ()
main = do
(options, url) <- runParser'
man <-
newManager
tlsManagerSettings
{ managerConnCount = concurrency options
, managerIdleConnectionCount = concurrency options
}
req <- parseRequest url
void $ run options $ [(url, \env -> void $ record (recorder env) url $ httpLbs req man)]