public void testCancelSelected() // any non-filled non-cancelled ferret order can be cancelled independent of ferret state { var gui = startGui(); FerretControl.setStatus("DMA"); insertSubmitted(39, SYMBOL, "test", "TCAN1"); insertSubmitted(39, SYMBOL, "test", "TCAN2"); var id3 = insertSubmitted(39, SYMBOL, "test", "TCAN3"); insertSimFilled(39, SYMBOL, "test"); publishAndWaitForCount(gui, id3, 4); changeFerretStatus(gui, "TCAN1", "New", "Stage"); changeFerretStatus(gui, "TCAN2", "Filled", "Filled"); var messages = new List <Fields>(); FerretControl.onOutgoing(messages.Add); gui.tracker.cancelMaybe(gui.rows()); gui.waitMatches(2, () => messages.Count); var cancel = Util.Objects.first(messages); AreEqual("CancelOrder", cancel.text("MESSAGETYPE")); AreEqual("CCAN3", cancel.text("USERORDERID")); gui.hasMessage("Skipped.*2"); changeFerretStatus(gui, "TCAN1", "Cancelled", "Cancelled"); changeFerretStatus(gui, "TCAN3", "Cancelled", "Cancelled"); gui.tracker.cancelMaybe(gui.rows()); gui.hasMessage("None of the selected orders can be cancelled. Please select an open Ferret Order to cancel."); }
public void testReleaseToMarket() { Dates.freezeNow("2009/09/09 09:09:09"); var gui = startGui(); FerretControl.setStatus("Ticket"); var id = insertSubmitted(39, SYMBOL, "test", "FERREL"); publishAndWaitForCount(gui, id, 1); gui.wait(populateCompleted); AreEqual("Submitted", latestRow(gui)["status"]); gui.requireMenu(latestRow(gui)); changeFerretStatus(gui, "FERREL", "New", "Stage"); gui.requireMenu(latestRow(gui)); changeFerretStatus(gui, "FERREL", "Accepted", "Ticket", "TICKET"); gui.requireMenu(latestRow(gui)); FerretControl.setStatus("Stage"); gui.wait(populateCompleted); changeFerretStatus(gui, "FERREL", "New", "Stage"); gui.noMenu(latestRow(gui)); FerretControl.setStatus("Ticket"); gui.wait(populateCompleted); changeFerretStatus(gui, "FERREL", "New", "Stage"); gui.requireMenu(latestRow(gui)); Fields fields = null; FerretControl.onOutgoing(f => fields = f); gui.tracker.release(latestRow(gui)); O.wait(() => fields != null); AreEqual("ReleaseStagedOrder", fields.text("MESSAGETYPE")); AreEqual("FERREL", fields.text("USERORDERID")); AreEqual("2009-09-09", fields.text("ORDERDATE")); }
public void testReleaseSelected() { var gui = startGui(); FerretControl.setStatus("Ticket"); insertSubmitted(39, SYMBOL, "test", "REL1"); insertSubmitted(39, SYMBOL, "test", "REL2"); var id3 = insertSubmitted(39, SYMBOL, "test", "REL3"); publishAndWaitForCount(gui, id3, 3); publishFerretResponse(Dates.now(), "REL1", "New", "UNUSED"); gui.waitMatches("Stage", () => gui.ferretStatus("REL1")); publishFerretResponse(Dates.now(), "REL2", "New", "UNUSED"); gui.waitMatches("Stage", () => gui.ferretStatus("REL2")); var messages = new List <Fields>(); FerretControl.onOutgoing(messages.Add); gui.tracker.releaseMaybe(gui.rows()); gui.waitMatches(2, () => messages.Count); gui.hasMessage("Skipped.*1"); changeFerretStatus(gui, "REL1", "Filled", "Filled"); changeFerretStatus(gui, "REL2", "Filled", "Filled"); gui.tracker.releaseMaybe(gui.rows()); gui.hasMessage("None of the selected orders can be released. Please select a staged Ferret Order to release."); }
public void initialize() { gui.setOrderTable(table.dataTable()); initializeSystems(); initializeMarkets(); initializePvs(); populate(); OrderTable.TOPIC.subscribe(fields => gui.runOnGuiThread(() => table.update(fields))); FerretControl.incomingStatus().subscribe(fields => gui.runOnGuiThread(table.populate)); }
static void publishFerretResponse(Date orderDate, string ferretId, string status, string destination) { var updateResponse = FerretControl.incomingResponses(orderDate, ferretId); var fields = new Fields(); fields.put("ORDERDATE", O.ymdHuman(orderDate)); fields.put("STATUS", status); fields.put("DESTINATION", destination); fields.put("USERORDERID", ferretId); updateResponse.send(fields); }
public void testPretendStatus() { FerretControl.setStatus("Stage"); AreEqual(FerretControl.status(), "Stage"); FerretControl.setStatus("Foo"); AreEqual(FerretControl.status(), "Foo"); FerretControl.setStatus("Stage"); AreEqual(FerretControl.status(), "Stage"); FerretControl.setStatus("Blarg"); AreEqual(FerretControl.status(), "Blarg"); FerretControl.setStatus("Stage"); AreEqual(FerretControl.status(), "Stage"); }
public void testModeChangeChallenges() { var gui = new FakeFerretControlGui(); var control = new FerretControl(gui, ferretStatus); var messages = new List <Fields>(); FerretControl.onOutgoing(messages.Add); control.setRandomSeed(12345); control.changeStatus("Stage"); AreEqual("Stage", gui.status()); gui.stageAnswer(YesNoCancel.YES); control.onTicketPressed(); gui.hasMessage("Are you not not sure?"); gui.waitMatches(1, () => messages.Count); messages.Clear(); control.setReadonly(true); gui.stageAnswer(YesNoCancel.NO); control.onTicketPressed(); gui.hasMessage("Are you not not sure?", "incorrect"); control.setReadonly(false); control.changeStatus("Ticket"); AreEqual("Ticket", gui.status()); gui.stageAnswer(YesNoCancel.YES); control.onDMAPressed(); gui.hasMessage("Are you not not not not sure?"); gui.waitMatches(1, () => messages.Count); messages.Clear(); control.setReadonly(true); control.onDMAPressed(); gui.hasMessage("Are you not not not sure?", "incorrect"); control.setReadonly(false); control.onStagePressed(); gui.noMessage(); gui.waitMatches(1, () => messages.Count); messages.Clear(); control.changeStatus("DMA"); control.onStagePressed(); gui.noMessage(); gui.waitMatches(1, () => messages.Count); messages.Clear(); control.onTicketPressed(); gui.noMessage(); gui.waitMatches(1, () => messages.Count); }
public void testPopulation() { var gui = new FakeFerretControlGui(); new FerretControl(gui, ferretStatus); gui.waitMatches("Unknown", gui.status); gui.requireEnabled(false, false, false); FerretControl.setStatus("Ticket"); gui.requireEnabled(true, false, true); FerretControl.setStatus("Stage"); gui.requireEnabled(false, true, false); FerretControl.setStatus("DMA"); gui.requireEnabled(false, true, true); FerretControl.setStatus("Inactive"); gui.requireEnabled(false, false, false); FerretControl.setStatus("Reject"); gui.requireEnabled(false, false, false); }
void restart(string hostname, string system) { if (BloombergTagsTable.TAGS.anyAutoExecute(system) && !FerretControl.status().Equals("Stage")) { var answer = gui.askUser("This will put Ferret into Stage mode. Are you sure you want to do this?"); if (answer != YesNoCancel.YES) { return; } FerretControl.requestFerretChange("Stage"); wait(() => FerretControl.status().Equals("Stage")); } var fields = new Fields(); fields.put("System", system); fields.put("Hostname", hostname); fields.put("Timestamp", ymdHuman(now())); LiveLauncher.restartTopic().send(fields); }
public void testCanPublishRestart() { LogC.useJavaLog = true; FerretControl.onOutgoing(fields => O.queueWorkItem(() => FerretControl.setStatus(fields.text("FERRETSTATE")))); system.populateDetailsIfNeeded(false); system.populateTagIfNeeded("QF.Example", false); FerretControl.setStatus("Ticket"); var tracker = startGui(); var restartRequests = LiveLauncher.restartTopic(); Fields received = null; restartRequests.subscribe(fields => { received = fields; }); tracker.restart(O.hostname(), system.id()); O.wait(() => received != null); AreEqual(system.id(), (int)received.longg("SystemId")); AreEqual(O.hostname(), received.text("Hostname")); gui.noMessage(); system.setAutoExecuteTrades(true); gui.stageAnswer(YesNoCancel.NO); restartRequests.setReadonly(true); tracker.restart(O.hostname(), system.id()); gui.hasMessage("This will put Ferret into Stage mode. Are you sure you want to do this?"); gui.stageAnswer(YesNoCancel.YES); restartRequests.setReadonly(false); received = null; tracker.restart(O.hostname(), system.id()); gui.hasMessage("This will put Ferret into Stage mode. Are you sure you want to do this?"); waitMatches("Stage", FerretControl.status); O.wait(() => received != null); received = null; tracker.restart(O.hostname(), system.id()); gui.noMessage(); O.wait(() => received != null); }
void addOrderRow(LiveOrders.LiveOrder o) { var row = table.NewRow(); lock (table) { var system = o.liveSystem(); row["system"] = o.sivName(); row["pv"] = system.pv().name(); row["symbol"] = o.market(); row["simFillTime"] = simFillTimeString(o); row["enterExit"] = o.entryExit() + " " + o.positionDirection(); row["size"] = o.size().ToString("N0"); row["simFillPrice"] = priceString(o); row["details"] = o.orderDetails(); row["description"] = o.description(); row["hostname"] = o.hostname(); row["ferretOrderId"] = o.ferretOrderId(); row["status"] = o.isFerret() ? "Submitted" : ""; row["submittedTime"] = submittedTimeString(o); row["liveOrderId"] = "" + o.id(); liveOrderRows.Add(o.id(), row); table.Rows.InsertAt(row, 0); } if (FerretControl.canRelease()) { gui.addContextMenu(row); } else { gui.removeContextMenu(row); } if (o.isFerret()) { FerretControl.onIncomingOrderResponse(o, fields => updateStatus(row, fields)); } }
static void cancel(DataRow row) { FerretControl.cancel((string) row["ferretOrderId"], Dates.date((string) row["submittedTime"])); }
public void release(DataRow row) { FerretControl.release((string) row["ferretOrderId"], Dates.date((string) row["submittedTime"])); }
public override void setUp() { base.setUp(); FerretControl.setBroker(JMSTestCase.TEST_BROKER2); FerretControl.setStatus("Inactive"); }
public override void setUp() { base.setUp(); FerretControl.setBroker(JMSTestCase.TEST_BROKER2); ferretStatus = FerretControl.incomingStatus(); }