# HG changeset patch # User unc0rr # Date 1226940532 0 # Node ID 264e11b5c63906c00f5f9f5ba997ab3fb24b90cd # Parent b4586b0f4426f6d7e80e56f3913908cd602a6897 Stress testing app diff -r b4586b0f4426 -r 264e11b5c639 netserver/stresstest.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netserver/stresstest.hs Mon Nov 17 16:48:52 2008 +0000 @@ -0,0 +1,43 @@ +module Main where + +import IO +import System.IO +import Control.Concurrent +import Network +import Control.Exception +import Control.Monad +import System.Random + +session1 nick room = ["NICK", nick, "", "PROTO", "20", "", "CREATE", room, "", "CHAT_STRING", "Hi", ""] +session2 nick room = ["NICK", nick, "", "PROTO", "20", "", "JOIN", room, "", "CHAT_STRING", "Hello", ""] + +emulateSession sock s = do + mapM_ (\x -> hPutStrLn sock x >> randomRIO (70000::Int, 120000) >>= threadDelay) s + hFlush sock + threadDelay 250000 + +testing = Control.Exception.handle (\e -> putStrLn $ show e) $ do + putStrLn "Start" + sock <- connectTo "127.0.0.1" (PortNumber 46631) + + num1 <- randomRIO (70000::Int, 70100) + num2 <- randomRIO (70000::Int, 70100) + num3 <- randomRIO (0::Int, 7) + num4 <- randomRIO (0::Int, 7) + let nick1 = show $ num1 + let nick2 = show $ num2 + let room1 = show $ num3 + let room2 = show $ num4 + emulateSession sock $ session1 nick1 room1 + emulateSession sock $ session2 nick2 room2 + emulateSession sock $ session2 nick1 room1 + hClose sock + putStrLn "Finish" + +forks = forever $ do + delay <- randomRIO (40000::Int, 70000) + threadDelay delay + forkIO testing + +main = withSocketsDo $ do + forks \ No newline at end of file