forked from lorenzo/wrecker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.hs
37 lines (34 loc) · 1.12 KB
/
Main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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)]