|
|
|
@ -96,20 +96,22 @@ connectAndSendOrder step sock order ep = do |
|
|
|
send sock [] (BL.toStrict . encode $ RequestSubmitOrder 1 order) |
|
|
|
send sock [] (BL.toStrict . encode $ RequestSubmitOrder 1 order) |
|
|
|
threadDelay 10000 |
|
|
|
threadDelay 10000 |
|
|
|
|
|
|
|
|
|
|
|
testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \step -> withContext (\ctx -> do |
|
|
|
defaultOrder = mkOrder { |
|
|
|
step "Setup" |
|
|
|
|
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
|
|
|
|
ep <- makeEndpoint |
|
|
|
|
|
|
|
let order = mkOrder { |
|
|
|
|
|
|
|
orderAccountId = "demo", |
|
|
|
orderAccountId = "demo", |
|
|
|
orderSecurity = "FOO", |
|
|
|
orderSecurity = "FOO", |
|
|
|
orderPrice = Market, |
|
|
|
orderPrice = Market, |
|
|
|
orderQuantity = 10, |
|
|
|
orderQuantity = 10, |
|
|
|
orderOperation = Buy |
|
|
|
orderOperation = Buy |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \step -> withContext (\ctx -> do |
|
|
|
|
|
|
|
step "Setup" |
|
|
|
|
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
|
|
|
|
ep <- makeEndpoint |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock order ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
|
|
|
|
|
|
|
|
step "Checking that order is submitted to BrokerInterface" |
|
|
|
step "Checking that order is submitted to BrokerInterface" |
|
|
|
s <- readIORef broState |
|
|
|
s <- readIORef broState |
|
|
|
@ -119,6 +121,7 @@ testBrokerServerSubmitOrder = testCaseSteps "Broker Server submits order" $ \ste |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
case resp of |
|
|
|
case resp of |
|
|
|
Just (ResponseOrderSubmitted _) -> return () |
|
|
|
Just (ResponseOrderSubmitted _) -> return () |
|
|
|
|
|
|
|
Just _ -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
Nothing -> assertFailure "Invalid response" |
|
|
|
|
|
|
|
|
|
|
|
))) |
|
|
|
))) |
|
|
|
@ -128,16 +131,9 @@ testBrokerServerSubmitOrderToUnknownAccount = testCaseSteps "Broker Server retur |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
let order = mkOrder { |
|
|
|
|
|
|
|
orderAccountId = "foobar", |
|
|
|
|
|
|
|
orderSecurity = "FOO", |
|
|
|
|
|
|
|
orderPrice = Market, |
|
|
|
|
|
|
|
orderQuantity = 10, |
|
|
|
|
|
|
|
orderOperation = Buy |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock order ep |
|
|
|
connectAndSendOrder step sock (defaultOrder { orderAccountId = "foobar" }) ep |
|
|
|
|
|
|
|
|
|
|
|
step "Reading response" |
|
|
|
step "Reading response" |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
resp <- decode . BL.fromStrict <$> receive sock |
|
|
|
@ -153,16 +149,9 @@ testBrokerServerCancelOrder = testCaseSteps "Broker Server: submitted order canc |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
let order = mkOrder { |
|
|
|
|
|
|
|
orderAccountId = "demo", |
|
|
|
|
|
|
|
orderSecurity = "FOO", |
|
|
|
|
|
|
|
orderPrice = Market, |
|
|
|
|
|
|
|
orderQuantity = 10, |
|
|
|
|
|
|
|
orderOperation = Buy |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock order ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
(Just (ResponseOrderSubmitted orderId)) <- decode . BL.fromStrict <$> receive sock |
|
|
|
|
|
|
|
|
|
|
|
step "Sending order cancellation request" |
|
|
|
step "Sending order cancellation request" |
|
|
|
@ -186,16 +175,9 @@ testBrokerServerCancelUnknownOrder = testCaseSteps "Broker Server: order cancell |
|
|
|
step "Setup" |
|
|
|
step "Setup" |
|
|
|
ep <- makeEndpoint |
|
|
|
ep <- makeEndpoint |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
(mockBroker, broState) <- mkMockBroker ["demo"] |
|
|
|
let order = mkOrder { |
|
|
|
|
|
|
|
orderAccountId = "demo", |
|
|
|
|
|
|
|
orderSecurity = "FOO", |
|
|
|
|
|
|
|
orderPrice = Market, |
|
|
|
|
|
|
|
orderQuantity = 10, |
|
|
|
|
|
|
|
orderOperation = Buy |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS -> |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
withSocket ctx Req (\sock -> do |
|
|
|
connectAndSendOrder step sock order ep |
|
|
|
connectAndSendOrder step sock defaultOrder ep |
|
|
|
receive sock |
|
|
|
receive sock |
|
|
|
|
|
|
|
|
|
|
|
step "Sending order cancellation request" |
|
|
|
step "Sending order cancellation request" |
|
|
|
|