|
|
|
@ -115,7 +115,7 @@ testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \ste |
|
|
|
step "Reading response" |
|
|
|
step "Reading response" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderSubmitted _) -> return () |
|
|
|
Just ResponseOk -> return () |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
@ -139,14 +139,14 @@ testBrokerServerSubmitOrderDifferentIdentities = testCaseSteps "Broker Server su |
|
|
|
step "Reading response for identity1" |
|
|
|
step "Reading response for identity1" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock1 |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock1 |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderSubmitted localOrderId) -> localOrderId @=? orderId1 |
|
|
|
Just ResponseOk -> return () |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
step "Reading response for identity2" |
|
|
|
step "Reading response for identity2" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock2 |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock2 |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderSubmitted localOrderId) -> localOrderId @=? orderId2 |
|
|
|
Just ResponseOk -> return () |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
@ -178,11 +178,10 @@ testBrokerServerCancelOrder = testCaseSteps "Broker Server: submitted order canc |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted localOrderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
localOrderId @=? (orderId defaultOrder) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
step "Sending order cancellation request" |
|
|
|
step "Sending order cancellation request" |
|
|
|
send sock [] (BL.toStrict . encode $ RequestCancelOrder 2 "identity" localOrderId) |
|
|
|
send sock [] (BL.toStrict . encode $ RequestCancelOrder 2 "identity" (orderId defaultOrder)) |
|
|
|
threadDelay 10000 |
|
|
|
threadDelay 10000 |
|
|
|
|
|
|
|
|
|
|
|
step "Checking that order is cancelled in BrokerBackend" |
|
|
|
step "Checking that order is cancelled in BrokerBackend" |
|
|
|
@ -192,7 +191,7 @@ testBrokerServerCancelOrder = testCaseSteps "Broker Server: submitted order canc |
|
|
|
step "Reading response" |
|
|
|
step "Reading response" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderCancelled _) -> return () |
|
|
|
Just ResponseOk -> return () |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
@ -255,8 +254,7 @@ testBrokerServerGetNotifications = testCaseSteps "Broker Server: notifications r |
|
|
|
-- We have to actually submit order, or else server won't know that we should |
|
|
|
-- We have to actually submit order, or else server won't know that we should |
|
|
|
-- be notified about this order |
|
|
|
-- be notified about this order |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted localOrderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
localOrderId @=? orderId defaultOrder |
|
|
|
|
|
|
|
threadDelay 10000 |
|
|
|
threadDelay 10000 |
|
|
|
|
|
|
|
|
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
@ -292,9 +290,8 @@ testBrokerServerGetNotifications = testCaseSteps "Broker Server: notifications r |
|
|
|
length ns @=? 3 |
|
|
|
length ns @=? 3 |
|
|
|
let (OrderNotification orderNotificationSqnum oid newstate) = ns !! 1 |
|
|
|
let (OrderNotification orderNotificationSqnum oid newstate) = ns !! 1 |
|
|
|
let (TradeNotification tradeNotificationSqnum newtrade) = ns !! 2 |
|
|
|
let (TradeNotification tradeNotificationSqnum newtrade) = ns !! 2 |
|
|
|
localOrderId @=? oid |
|
|
|
|
|
|
|
Executed @=? newstate |
|
|
|
Executed @=? newstate |
|
|
|
trade { tradeOrderId = localOrderId } @=? newtrade |
|
|
|
trade { tradeOrderId = orderId defaultOrder } @=? newtrade |
|
|
|
-- Check notification sqnums |
|
|
|
-- Check notification sqnums |
|
|
|
step "Received notification sqnums are correct" |
|
|
|
step "Received notification sqnums are correct" |
|
|
|
let sqnums = sort $ fmap (unNotificationSqnum . getNotificationSqnum) ns |
|
|
|
let sqnums = sort $ fmap (unNotificationSqnum . getNotificationSqnum) ns |
|
|
|
@ -313,8 +310,7 @@ testBrokerServerGetNotificationsFromSameSqnum = testCaseSteps "Broker Server: no |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted localOrderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
localOrderId @=? orderId defaultOrder |
|
|
|
|
|
|
|
threadDelay 10000 |
|
|
|
threadDelay 10000 |
|
|
|
|
|
|
|
|
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
@ -372,8 +368,7 @@ testBrokerServerGetNotificationsRemovesEarlierNotifications = testCaseSteps "Bro |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep notifEp [] defaultServerSecurityParams) stopBrokerServer $ \_ -> |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
withSocket ctx Req $ \sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted localOrderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
localOrderId @=? orderId defaultOrder |
|
|
|
|
|
|
|
threadDelay 10000 |
|
|
|
threadDelay 10000 |
|
|
|
|
|
|
|
|
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
globalOrderId <- orderId . head . orders <$> readIORef broState |
|
|
|
@ -428,7 +423,7 @@ testBrokerServerDuplicateRequest = testCaseSteps "Broker Server: duplicate reque |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
|
|
|
|
|
|
|
|
step "Reading response" |
|
|
|
step "Reading response" |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
|
|
|
|
|
|
|
|
step "Sending duplicate request (with same sequence number)" |
|
|
|
step "Sending duplicate request (with same sequence number)" |
|
|
|
send sock [] (BL.toStrict . encode $ RequestSubmitOrder 1 "identity" defaultOrder) |
|
|
|
send sock [] (BL.toStrict . encode $ RequestSubmitOrder 1 "identity" defaultOrder) |
|
|
|
@ -441,7 +436,7 @@ testBrokerServerDuplicateRequest = testCaseSteps "Broker Server: duplicate reque |
|
|
|
step "Reading response from duplicate request" |
|
|
|
step "Reading response from duplicate request" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderSubmitted oid) -> orderId @?= oid |
|
|
|
Just ResponseOk -> return () |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
@ -459,13 +454,13 @@ testBrokerServerNotificationSocket = testCaseSteps "Broker Server: sends notific |
|
|
|
connectAndSendOrderWithIdentity step sock defaultOrder "test-identity" ep |
|
|
|
connectAndSendOrderWithIdentity step sock defaultOrder "test-identity" ep |
|
|
|
|
|
|
|
|
|
|
|
step "Reading response" |
|
|
|
step "Reading response" |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
Just ResponseOk <- decode . BL.fromStrict <$> receive sock |
|
|
|
|
|
|
|
|
|
|
|
step "Reading order submitted notification" |
|
|
|
step "Reading order submitted notification" |
|
|
|
|
|
|
|
|
|
|
|
[_, payload] <- receiveMulti nSocket |
|
|
|
[_, payload] <- receiveMulti nSocket |
|
|
|
let (Just (OrderNotification notifSqnum1 notifOid newOrderState)) = decode . BL.fromStrict $ payload |
|
|
|
let (Just (OrderNotification notifSqnum1 notifOid newOrderState)) = decode . BL.fromStrict $ payload |
|
|
|
notifOid @?= orderId |
|
|
|
notifOid @?= orderId defaultOrder |
|
|
|
newOrderState @?= Submitted |
|
|
|
newOrderState @?= Submitted |
|
|
|
|
|
|
|
|
|
|
|
backendOrderId <- mockBrokerLastOrderId broState |
|
|
|
backendOrderId <- mockBrokerLastOrderId broState |
|
|
|
@ -489,7 +484,7 @@ testBrokerServerNotificationSocket = testCaseSteps "Broker Server: sends notific |
|
|
|
step "Receiving trade notification" |
|
|
|
step "Receiving trade notification" |
|
|
|
[_, payload] <- receiveMulti nSocket |
|
|
|
[_, payload] <- receiveMulti nSocket |
|
|
|
let (Just (TradeNotification notifSqnum2 incomingTrade)) = decode . BL.fromStrict $ payload |
|
|
|
let (Just (TradeNotification notifSqnum2 incomingTrade)) = decode . BL.fromStrict $ payload |
|
|
|
incomingTrade @?= trade { tradeOrderId = orderId } |
|
|
|
incomingTrade @?= trade { tradeOrderId = orderId defaultOrder } |
|
|
|
|
|
|
|
|
|
|
|
{- |
|
|
|
{- |
|
|
|
testBrokerServerTradeSink :: TestTree |
|
|
|
testBrokerServerTradeSink :: TestTree |
|
|
|
|