|
|
|
@ -23,6 +23,7 @@ import Control.Concurrent.BoundedChan |
|
|
|
import Control.Concurrent hiding (writeChan) |
|
|
|
import Control.Concurrent hiding (writeChan) |
|
|
|
import Control.Exception |
|
|
|
import Control.Exception |
|
|
|
import System.ZMQ4 |
|
|
|
import System.ZMQ4 |
|
|
|
|
|
|
|
import System.ZMQ4.ZAP |
|
|
|
import Data.Aeson |
|
|
|
import Data.Aeson |
|
|
|
import Data.Time.Clock |
|
|
|
import Data.Time.Clock |
|
|
|
import Data.Time.Calendar |
|
|
|
import Data.Time.Calendar |
|
|
|
@ -73,14 +74,14 @@ defaultOrder = mkOrder { |
|
|
|
|
|
|
|
|
|
|
|
testBrokerServerStartStop = testCase "Broker Server starts and stops" $ withContext (\ctx -> do |
|
|
|
testBrokerServerStartStop = testCase "Broker Server starts and stops" $ withContext (\ctx -> do |
|
|
|
ep <- toText <$> UV4.nextRandom |
|
|
|
ep <- toText <$> UV4.nextRandom |
|
|
|
broS <- startBrokerServer [] ctx ("inproc://brokerserver" `T.append` ep) "" |
|
|
|
broS <- startBrokerServer [] ctx ("inproc://brokerserver" `T.append` ep) "" Nothing |
|
|
|
stopBrokerServer broS) |
|
|
|
stopBrokerServer broS) |
|
|
|
|
|
|
|
|
|
|
|
testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \step -> withContext (\ctx -> do |
|
|
|
testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \step -> withContext (\ctx -> do |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
|
|
|
|
|
|
|
|
@ -102,7 +103,7 @@ testBrokerServerSubmitOrderToUnknownAccount = testCaseSteps "Broker Server retur |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock (defaultOrder { orderAccountId = "foobar" }) ep |
|
|
|
connectAndSendOrder step sock (defaultOrder { orderAccountId = "foobar" }) ep |
|
|
|
|
|
|
|
|
|
|
|
@ -120,7 +121,7 @@ testBrokerServerCancelOrder = testCaseSteps "Broker Server: submitted order canc |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
@ -146,7 +147,7 @@ testBrokerServerCancelUnknownOrder = testCaseSteps "Broker Server: order cancell |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
receive sock |
|
|
|
receive sock |
|
|
|
@ -168,7 +169,7 @@ testBrokerServerCorruptedPacket = testCaseSteps "Broker Server: corrupted packet |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
step "Connecting" |
|
|
|
step "Connecting" |
|
|
|
connect sock (T.unpack ep) |
|
|
|
connect sock (T.unpack ep) |
|
|
|
@ -192,7 +193,7 @@ testBrokerServerGetNotifications = testCaseSteps "Broker Server: notifications r |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
-- 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 |
|
|
|
@ -253,7 +254,7 @@ testBrokerServerDuplicateRequest = testCaseSteps "Broker Server: duplicate reque |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "") stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "" Nothing) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
|
|
|
|
|
|
|
|
@ -284,7 +285,7 @@ testBrokerServerTradeSink = testCaseSteps "Broker Server: sends trades to trade |
|
|
|
withSocket ctx Rep (\tradeSock -> do |
|
|
|
withSocket ctx Rep (\tradeSock -> do |
|
|
|
bind tradeSock "inproc://trade-sink" |
|
|
|
bind tradeSock "inproc://trade-sink" |
|
|
|
setReceiveTimeout (restrict 1000) tradeSock |
|
|
|
setReceiveTimeout (restrict 1000) tradeSock |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "inproc://trade-sink") stopBrokerServer (\broS -> do |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep "inproc://trade-sink" Nothing) stopBrokerServer (\broS -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
step "Connecting" |
|
|
|
step "Connecting" |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
|