Skip to content

Commit 917c0b6

Browse files
committed
refactoring tests.
1 parent efb742a commit 917c0b6

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

tests/Network/Test/Common.hs

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,9 @@ tcpTest client server = withPort $ test . setClientAction client . tcp server
9999
tcp :: (Socket -> IO b) -> MVar PortNumber -> ClientServer Socket ()
100100
tcp serverAct portVar = defaultClientServer
101101
{ clientSetup = do
102-
let hints = defaultHints { addrSocketType = Stream }
103102
serverPort <- readMVar portVar
104-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
105-
sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
103+
addr <- resolveClient Stream serverAddr serverPort
104+
sock <- socketWithAddrInfo addr
106105
#if !defined(mingw32_HOST_OS)
107106
withFdSocket sock $ \fd -> do
108107
getNonBlock fd `shouldReturn` True
@@ -111,12 +110,8 @@ tcp serverAct portVar = defaultClientServer
111110
connect sock $ addrAddress addr
112111
return sock
113112
, serverSetup = do
114-
let hints = defaultHints {
115-
addrFlags = [AI_PASSIVE]
116-
, addrSocketType = Stream
117-
}
118-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) Nothing
119-
sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
113+
addr <- resolveServer Stream serverAddr
114+
sock <- socketWithAddrInfo addr
120115
withFdSocket sock $ \fd -> do
121116
#if !defined(mingw32_HOST_OS)
122117
getNonBlock fd `shouldReturn` True
@@ -154,19 +149,16 @@ udp
154149
-> MVar PortNumber
155150
-> ClientServer a Socket
156151
udp clientAct portVar = defaultClientServer
157-
{ clientSetup = socket AF_INET Datagram defaultProtocol
152+
{ clientSetup = do
153+
addr <- resolveClient Datagram serverAddr 8000 -- dummy port
154+
socketWithAddrInfo addr
158155
, clientAction = \sock -> do
159156
serverPort <- readMVar portVar
160-
let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Datagram }
161-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) (Just $ show serverPort)
157+
addr <- resolveClient Datagram serverAddr serverPort
162158
clientAct sock $ addrAddress addr
163159
, serverSetup = do
164-
let hints = defaultHints {
165-
addrFlags = [AI_PASSIVE]
166-
, addrSocketType = Datagram
167-
}
168-
addr:_ <- getAddrInfo (Just hints) (Just serverAddr) Nothing
169-
sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
160+
addr <- resolveServer Datagram serverAddr
161+
sock <- socketWithAddrInfo addr
170162
setSocketOption sock ReuseAddr 1
171163
bind sock $ addrAddress addr
172164
serverPort <- socketPort sock
@@ -237,3 +229,24 @@ bracketWithReraise :: ThreadId -> IO a -> (a -> IO b) -> (a -> IO ()) -> IO ()
237229
bracketWithReraise tid setup teardown thing =
238230
E.bracket setup teardown thing
239231
`E.catch` \ (e :: E.SomeException) -> E.throwTo tid e
232+
233+
resolveClient :: SocketType -> HostName -> PortNumber -> IO AddrInfo
234+
resolveClient socketType host port =
235+
head <$> getAddrInfo (Just hints) (Just host) (Just $ show port)
236+
where
237+
hints = defaultHints {
238+
addrSocketType = socketType
239+
, addrFlags = [AI_NUMERICHOST]
240+
}
241+
242+
resolveServer :: SocketType -> HostName -> IO AddrInfo
243+
resolveServer socketType host =
244+
head <$> getAddrInfo (Just hints) (Just host) Nothing
245+
where
246+
hints = defaultHints {
247+
addrSocketType = socketType
248+
, addrFlags = [AI_PASSIVE]
249+
}
250+
251+
socketWithAddrInfo :: AddrInfo -> IO Socket
252+
socketWithAddrInfo addr = socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)

0 commit comments

Comments
 (0)