Skip to content

Commit efb742a

Browse files
committed
extracting the common pattern for udpTest.
1 parent ead529b commit efb742a

File tree

2 files changed

+14
-27
lines changed

2 files changed

+14
-27
lines changed

tests/Network/Socket/ByteStringSpec.hs

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,37 +48,27 @@ spec = do
4848
describe "sendTo" $ do
4949
it "works well" $ do
5050
let server sock = recv sock 1024 `shouldReturn` testMsg
51-
client sock serverPort = do
52-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
53-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
54-
sendTo sock testMsg $ addrAddress addr
51+
client sock addr = sendTo sock testMsg addr
5552
udpTest client server
5653

5754
it "throws when closed" $ do
5855
let server _ = return ()
59-
client sock serverPort = do
60-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
61-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
56+
client sock addr = do
6257
close sock
63-
sendTo sock testMsg (addrAddress addr) `shouldThrow` anyException
58+
sendTo sock testMsg addr `shouldThrow` anyException
6459
udpTest client server
6560

6661
describe "sendAllTo" $ do
6762
it "works well" $ do
6863
let server sock = recv sock 1024 `shouldReturn` testMsg
69-
client sock serverPort = do
70-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
71-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
72-
sendAllTo sock testMsg $ addrAddress addr
64+
client sock addr = sendAllTo sock testMsg addr
7365
udpTest client server
7466

7567
it "throws when closed" $ do
7668
let server _ = return ()
77-
client sock serverPort = do
78-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
79-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
69+
client sock addr = do
8070
close sock
81-
sendAllTo sock testMsg (addrAddress addr) `shouldThrow` anyException
71+
sendAllTo sock testMsg addr `shouldThrow` anyException
8272
udpTest client server
8373

8474
describe "sendMany" $ do
@@ -103,22 +93,17 @@ spec = do
10393
describe "sendManyTo" $ do
10494
it "works well" $ do
10595
let server sock = recv sock 1024 `shouldReturn` S.append seg1 seg2
106-
client sock serverPort = do
107-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
108-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
109-
sendManyTo sock [seg1, seg2] $ addrAddress addr
96+
client sock addr = sendManyTo sock [seg1, seg2] addr
11097

11198
seg1 = C.pack "This is a "
11299
seg2 = C.pack "test message."
113100
udpTest client server
114101

115102
it "throws when closed" $ do
116103
let server _ = return ()
117-
client sock serverPort = do
118-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
119-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
104+
client sock addr = do
120105
close sock
121-
sendManyTo sock [seg1, seg2] (addrAddress addr) `shouldThrow` anyException
106+
sendManyTo sock [seg1, seg2] addr `shouldThrow` anyException
122107

123108
seg1 = C.pack "This is a "
124109
seg2 = C.pack "test message."

tests/Network/Test/Common.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,21 @@ tcp serverAct portVar = defaultClientServer
145145

146146
-- | Create an unconnected 'Socket' for sending UDP and receiving
147147
-- datagrams and then run 'clientAct' and 'serverAct'.
148-
udpTest :: (Socket -> PortNumber -> IO a) -> (Socket -> IO b) -> IO ()
148+
udpTest :: (Socket -> SockAddr -> IO a) -> (Socket -> IO b) -> IO ()
149149
udpTest client server =
150150
withPort $ test . setServerAction server . udp client
151151

152152
udp
153-
:: (Socket -> PortNumber -> IO a)
153+
:: (Socket -> SockAddr -> IO a)
154154
-> MVar PortNumber
155155
-> ClientServer a Socket
156156
udp clientAct portVar = defaultClientServer
157157
{ clientSetup = socket AF_INET Datagram defaultProtocol
158158
, clientAction = \sock -> do
159159
serverPort <- readMVar portVar
160-
clientAct sock serverPort
160+
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
161+
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
162+
clientAct sock $ addrAddress addr
161163
, serverSetup = do
162164
let hints = defaultHints {
163165
addrFlags = [AI_PASSIVE]

0 commit comments

Comments
 (0)