示例#1
0
        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.");
        }
示例#2
0
        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"));
        }
示例#3
0
        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.");
        }
示例#4
0
 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));
 }
示例#5
0
        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);
        }
示例#6
0
 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");
 }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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));
            }
        }
示例#12
0
 static void cancel(DataRow row) {
     FerretControl.cancel((string) row["ferretOrderId"], Dates.date((string) row["submittedTime"]));
 }
示例#13
0
 public void release(DataRow row) {
     FerretControl.release((string) row["ferretOrderId"], Dates.date((string) row["submittedTime"]));
 }
示例#14
0
 public override void setUp()
 {
     base.setUp();
     FerretControl.setBroker(JMSTestCase.TEST_BROKER2);
     FerretControl.setStatus("Inactive");
 }
示例#15
0
 public override void setUp()
 {
     base.setUp();
     FerretControl.setBroker(JMSTestCase.TEST_BROKER2);
     ferretStatus = FerretControl.incomingStatus();
 }