gameServer/stresstest.hs
changeset 2948 3f21a9dc93d0
parent 2352 7eaf82cf0890
child 3425 ead2ed20dfd4
equal deleted inserted replaced
2947:803b277e4894 2948:3f21a9dc93d0
    17 session1 nick room = ["NICK", nick, "", "PROTO", "24", "", "CHAT", "lobby 1", "", "CREATE", room, "", "CHAT", "room 1", "", "QUIT", "bye-bye", ""]
    17 session1 nick room = ["NICK", nick, "", "PROTO", "24", "", "CHAT", "lobby 1", "", "CREATE", room, "", "CHAT", "room 1", "", "QUIT", "bye-bye", ""]
    18 session2 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "PART", "", "CHAT", "lobby after part", "", "QUIT", "bye-bye", ""]
    18 session2 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "PART", "", "CHAT", "lobby after part", "", "QUIT", "bye-bye", ""]
    19 session3 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "QUIT", "bye-bye", ""]
    19 session3 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "QUIT", "bye-bye", ""]
    20 
    20 
    21 emulateSession sock s = do
    21 emulateSession sock s = do
    22 	mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (50000::Int, 90000) >>= threadDelay) s
    22     mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (50000::Int, 90000) >>= threadDelay) s
    23 	hFlush sock
    23     hFlush sock
    24 	threadDelay 225000
    24     threadDelay 225000
    25 
    25 
    26 testing = Control.Exception.handle print $ do
    26 testing = Control.Exception.handle print $ do
    27 	putStrLn "Start"
    27     putStrLn "Start"
    28 	sock <- connectTo "127.0.0.1" (PortNumber 46631)
    28     sock <- connectTo "127.0.0.1" (PortNumber 46631)
    29 
    29 
    30 	num1 <- randomRIO (70000::Int, 70100)
    30     num1 <- randomRIO (70000::Int, 70100)
    31 	num2 <- randomRIO (0::Int, 2)
    31     num2 <- randomRIO (0::Int, 2)
    32 	num3 <- randomRIO (0::Int, 5)
    32     num3 <- randomRIO (0::Int, 5)
    33 	let nick1 = show num1
    33     let nick1 = show num1
    34 	let room1 = show num2
    34     let room1 = show num2
    35 	case num2 of 
    35     case num2 of 
    36 		0 -> emulateSession sock $ session1 nick1 room1
    36         0 -> emulateSession sock $ session1 nick1 room1
    37 		1 -> emulateSession sock $ session2 nick1 room1
    37         1 -> emulateSession sock $ session2 nick1 room1
    38 		2 -> emulateSession sock $ session3 nick1 room1
    38         2 -> emulateSession sock $ session3 nick1 room1
    39 	hClose sock
    39     hClose sock
    40 	putStrLn "Finish"
    40     putStrLn "Finish"
    41 
    41 
    42 forks = forever $ do
    42 forks = forever $ do
    43 	delay <- randomRIO (10000::Int, 19000)
    43     delay <- randomRIO (10000::Int, 19000)
    44 	threadDelay delay
    44     threadDelay delay
    45 	forkIO testing
    45     forkIO testing
    46 
    46 
    47 main = withSocketsDo $ do
    47 main = withSocketsDo $ do
    48 #if !defined(mingw32_HOST_OS)
    48 #if !defined(mingw32_HOST_OS)
    49 	installHandler sigPIPE Ignore Nothing;
    49     installHandler sigPIPE Ignore Nothing;
    50 #endif
    50 #endif
    51 	forks
    51     forks