示例#1
0
        public void testPrefix()
        {
            QuickFix.SessionID someSessionID = new QuickFix.SessionID("FIX.4.4", "sender", "target");
            QuickFix.SessionID someSessionIDWithQualifier = new QuickFix.SessionID("FIX.4.3", "sender", "target","foo");

            Assert.AreEqual("FIX.4.4-sender-target", QuickFix.FileLog.Prefix(someSessionID));
            Assert.AreEqual("FIX.4.3-sender-target-foo", QuickFix.FileLog.Prefix(someSessionIDWithQualifier));
        }
示例#2
0
        public void testPrefixForSessionWithSubsAndLoc()
        {
            QuickFix.SessionID sessionIDWithSubsAndLocation = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "SENDERSUB", "SENDERLOC", "TARGETCOMP", "TARGETSUB", "TARGETLOC");
            Assert.That(QuickFix.FileStore.Prefix(sessionIDWithSubsAndLocation), Is.EqualTo("FIX.4.2-SENDERCOMP_SENDERSUB_SENDERLOC-TARGETCOMP_TARGETSUB_TARGETLOC"));

            QuickFix.SessionID sessionIDWithSubsNoLocation = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "SENDERSUB", "TARGETCOMP", "TARGETSUB");
            Assert.That(QuickFix.FileStore.Prefix(sessionIDWithSubsNoLocation), Is.EqualTo("FIX.4.2-SENDERCOMP_SENDERSUB-TARGETCOMP_TARGETSUB"));
        }
示例#3
0
        public void testThrowsIfNoConfig()
        {
            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);

            Assert.Throws<QuickFix.ConfigError>(delegate { factory.Create(sessionID); });
        }
示例#4
0
        public void testLogRotation()
        {
            string logDir = "log";
            if (System.IO.Directory.Exists(logDir))
                System.IO.Directory.Delete(logDir, true);

            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, logDir);

            int NumLogsToRotate = 5;
            config.SetString(QuickFix.SessionSettings.FILE_LOG_ROTATE_NUM_TO_KEEP, NumLogsToRotate.ToString());
            config.SetString(QuickFix.SessionSettings.FILE_LOG_ROTATE_ON_NEW_SESSION, "Y");

            settings.Set(sessionID, config);

            string timeStampMinute = System.DateTime.UtcNow.ToString("MMddyyyy-HHmm");

            for (int i = 0; i < NumLogsToRotate; i++)
            {
                QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
                log = (QuickFix.FileLog)factory.Create(sessionID);

                log.OnEvent("some event");
                log.OnIncoming("some incoming");
                log.OnOutgoing("some outgoing");

                Assert.That(System.IO.File.Exists(logDir+"/FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log"));
                Assert.That(System.IO.File.Exists(logDir+"/FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log"));
                log.Dispose();

            }

            Assert.That(System.IO.Directory.GetFiles(logDir,
                String.Format("FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log.{0}*",timeStampMinute),
                System.IO.SearchOption.TopDirectoryOnly)
                .Count().Equals(NumLogsToRotate-1));

            Assert.That(System.IO.Directory.GetFiles(logDir,
                String.Format("FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log.{0}*", timeStampMinute),
                System.IO.SearchOption.TopDirectoryOnly)
                .Count().Equals(NumLogsToRotate-1));
        }
示例#5
0
        public void setup()
        {
            if (System.IO.Directory.Exists("store"))
                System.IO.Directory.Delete("store", true);

            sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_STORE_PATH, "store");

            settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);
            factory = new QuickFix.FileStoreFactory(settings);

            store = (QuickFix.FileStore)factory.Create(sessionID);
        }
示例#6
0
        public UnitTestContext()
        {
            QuickFix.Dictionary config = CreateConfig();
            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            App = new QFApp(settings);
            Initiator = new MockInitiator();
            App.Initiator = Initiator;

            Session = new SessionThatTracksOutbound(
                App,
                new QuickFix.MemoryStoreFactory(),
                sessionID,
                new QuickFix.DataDictionaryProvider(),
                new QuickFix.SessionSchedule(config),
                0,
                new QuickFix.ScreenLogFactory(settings),
                new QuickFix.DefaultMessageFactory(),
                "blah");
            Session.MaxLatency = 120;
        }
示例#7
0
        public void testGeneratedFileName()
        {
            if (System.IO.Directory.Exists("log"))
                System.IO.Directory.Delete("log", true);

            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, "log");

            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
            log = (QuickFix.FileLog)factory.Create(sessionID);

            log.OnEvent("some event");
            log.OnIncoming("some incoming");
            log.OnOutgoing("some outgoing");

            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log"));
            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log"));
        }
 public virtual void onMessage(MarketDataSnapshotFullRefresh message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
 public virtual void onMessage(SettlementInstructionRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#10
0
 public virtual void onMessage(AllocationReportAck message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#11
0
 public virtual void onMessage(TradeCaptureReportAck message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#12
0
 public virtual void onMessage(PositionMaintenanceReport message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#13
0
 public virtual void onMessage(QuoteStatusReport message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#14
0
 public virtual void onMessage(RegistrationInstructionsResponse message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#15
0
 public virtual void onMessage(ListStrikePrice message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#16
0
 public virtual void onMessage(BusinessMessageReject message, QuickFix.SessionID session)
 {
 }
示例#17
0
 public virtual void onMessage(TradingSessionStatus message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#18
0
 public virtual void onMessage(SecurityDefinitionRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#19
0
 public virtual void onMessage(MassQuoteAcknowledgement message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#20
0
 public virtual void onMessage(MarketDataRequestReject message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#21
0
 public virtual void onMessage(OrderMassCancelReport message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#22
0
 public virtual void onMessage(QuoteResponse message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#23
0
 public virtual void onMessage(CrossOrderCancelRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#24
0
 public virtual void onMessage(RequestForPositionsAck message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#25
0
 public virtual void onMessage(SecurityTypes message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#26
0
 public virtual void onMessage(Advertisement message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#27
0
        public new void onMessage(QuickFix.Message message, QuickFix.SessionID session)

        {
            throw new QuickFix.UnsupportedMessageType();
        }
示例#28
0
 public virtual void onMessage(ConfirmationAck message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#29
0
 public virtual void onMessage(DerivativeSecurityList message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#30
0
 public virtual void onMessage(AssignmentReport message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#31
0
 public virtual void onMessage(NewOrderMultileg message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#32
0
        public void setup()
        {
            responder = new MockResponder();
            sessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            application = new MockApplication();
            settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetBool(QuickFix.SessionSettings.PERSIST_MESSAGES, false);
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.START_TIME, "00:00:00");
            config.SetString(QuickFix.SessionSettings.END_TIME, "00:00:00");
            settings.Set(sessionID, config);

            session = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), sessionID,
                new QuickFix.DataDictionaryProvider(),new QuickFix.SessionSchedule(config), 0, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session.SetResponder(responder);
            session.CheckLatency = false;

            // must be set for an initiator
            int heartBeatInterval = 10;

            session2 = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), new QuickFix.SessionID("FIX.4.2", "OTHER_SENDER", "OTHER_TARGET"),
                new QuickFix.DataDictionaryProvider(), new QuickFix.SessionSchedule(config), heartBeatInterval, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session2.SetResponder(responder);
            session2.CheckLatency = false;

            seqNum = 1;
        }
示例#33
0
        public void TestMillisecondsInOrigSendingTimeStamp()
        {
            // MS in timestamp should default to Y
            Assert.That(session.MillisecondsInTimeStamp);

            // Logon first
            Logon();

            // Do a resend request
            SendResendRequest(0, 2);
            AssertMsInTag(QuickFix.Fields.MsgType.SEQUENCERESET, QuickFix.Fields.Tags.OrigSendingTime, true);

            // NO MS
            session.MillisecondsInTimeStamp = false;
            SendResendRequest(0, 2);
            AssertMsInTag(QuickFix.Fields.MsgType.SEQUENCERESET, QuickFix.Fields.Tags.OrigSendingTime, false);

            // Less than FIX42 - no ms in timestamp, even if you tell it to
            sessionID = new QuickFix.SessionID(QuickFix.FixValues.BeginString.FIX40, "SENDER", "TARGET");
            session.SessionID = sessionID;
            session.MillisecondsInTimeStamp = true;
            SendResendRequest40(0, 2);
            AssertMsInTag(QuickFix.Fields.MsgType.SEQUENCERESET, QuickFix.Fields.Tags.OrigSendingTime, false);
        }
示例#34
0
 public virtual void onMessage(DontKnowTrade message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#35
0
 public virtual void onMessage(Logon message, QuickFix.SessionID session)
 {
 }
示例#36
0
 public virtual void onMessage(MultilegOrderCancelReplace message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#37
0
 public virtual void onMessage(MarketDataIncrementalRefresh message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#38
0
        public void TestDoesSessionExist()
        {
            QuickFix.SessionID invalidSessionID = new QuickFix.SessionID("FIX.4.2", "NOT_SENDER", "NOT_TARGET");
            QuickFix.SessionID validSessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");

            Assert.That(QuickFix.Session.DoesSessionExist(invalidSessionID), Is.EqualTo(false));
            Assert.That(QuickFix.Session.DoesSessionExist(validSessionID), Is.EqualTo(true));
        }
示例#39
0
 public virtual void onMessage(OrderMassStatusRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#40
0
        public void TestMillisecondsInSendingTimeStamp()
        {
            // MS in timestamp should default to Y
            Assert.That(session.MillisecondsInTimeStamp);

            // Ms should show up
            Logon();
            AssertMsInTag(QuickFix.Fields.MsgType.LOGON, QuickFix.Fields.Tags.SendingTime, true);

            // No ms
            session.MillisecondsInTimeStamp = false;
            Logon();
            Assert.That(responder.msgLookup[QuickFix.Fields.MsgType.LOGON].Count == 2);
            AssertMsInTag(QuickFix.Fields.MsgType.LOGON, QuickFix.Fields.Tags.SendingTime, false);

            // Less than FIX42 - no ms in timestamp, even if you tell it to
            sessionID = new QuickFix.SessionID(QuickFix.FixValues.BeginString.FIX40, "SENDER", "TARGET");
            session.SessionID = sessionID;
            session.MillisecondsInTimeStamp = true;
            Logon40();
            Assert.That(responder.msgLookup[QuickFix.Fields.MsgType.LOGON].Count == 3);
            AssertMsInTag(QuickFix.Fields.MsgType.LOGON, QuickFix.Fields.Tags.SendingTime, false);
        }
示例#41
0
 public virtual void onMessage(RFQRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }