public void DynamicInitiator() { StartListener(); StartEngine(true); // Ensure we can log on statically (normally) configured initiator Assert.IsTrue(WaitForLogonMessage(StaticInitiatorCompID), "Failed to get logon message for static initiator session"); SendInitiatorLogon(StaticInitiatorCompID); // Add the dynamic initator and ensure that we can log on string dynamicCompID = "ini10"; var sessionID = CreateSessionID(dynamicCompID); var sessionConfig = CreateSessionConfig(dynamicCompID, true); Assert.IsTrue(_initiator.AddSession(sessionID, sessionConfig), "Failed to add dynamic session to initiator"); Assert.IsTrue(WaitForLogonMessage(dynamicCompID), "Failed to get logon message for dynamic initiator session"); SendInitiatorLogon(dynamicCompID); Assert.IsTrue(WaitForLogonStatus(dynamicCompID), "Failed to logon dynamic initiator session"); // Ensure that we can't add the same session again Assert.IsFalse(_initiator.AddSession(sessionID, sessionConfig), "Added dynamic session twice"); // Now that dynamic initiator is logged on, ensure that unforced attempt to remove session fails Assert.IsFalse(_initiator.RemoveSession(sessionID, false), "Unexpected success removing active session"); Assert.IsTrue(IsLoggedOn(dynamicCompID), "Unexpected logoff"); // Ensure that forced attempt to remove session dynamic session succeeds, even though it is in logged on state Assert.IsTrue(_initiator.RemoveSession(sessionID, true), "Failed to remove active session"); Assert.IsTrue(WaitForDisconnect(dynamicCompID), "Socket still connected after session removed"); Assert.IsFalse(IsLoggedOn(dynamicCompID), "Session still logged on after being removed"); // Ensure that we can perform unforced removal of a dynamic session that is not logged on. string dynamicCompID2 = "ini20"; var sessionID2 = CreateSessionID(dynamicCompID2); Assert.IsTrue(_initiator.AddSession(sessionID2, CreateSessionConfig(dynamicCompID2, true)), "Failed to add dynamic session to initiator"); Assert.IsTrue(WaitForLogonMessage(dynamicCompID2), "Failed to get logon message for dynamic initiator session"); Assert.IsFalse(IsLoggedOn(dynamicCompID2), "Session logged on"); Assert.IsTrue(_initiator.RemoveSession(sessionID2, false), "Failed to remove inactive session"); Assert.IsTrue(WaitForDisconnect(dynamicCompID2), "Socket still connected after session removed"); // Ensure that we can remove statically configured session Assert.IsTrue(IsLoggedOn(StaticInitiatorCompID), "Unexpected loss of connection"); Assert.IsTrue(_initiator.RemoveSession(CreateSessionID(StaticInitiatorCompID), true), "Failed to remove active session"); Assert.IsTrue(WaitForDisconnect(StaticInitiatorCompID), "Socket still connected after session removed"); Assert.IsFalse(IsLoggedOn(StaticInitiatorCompID), "Session still logged on after being removed"); // Check that log directory default setting has been effective Assert.Greater(System.IO.Directory.GetFiles(_logPath, QuickFix.Values.BeginString_FIX42 + "*.log").Length, 0); }
public void DynamicInitiator() { StartListener(); StartEngine(true); // Ensure we can log on statically (normally) configured initiator Assert.IsTrue(WaitForLogonMessage(StaticInitiatorCompID), "Failed to get logon message for static initiator session"); SendInitiatorLogon(StaticInitiatorCompID); // Add the dynamic initator and ensure that we can log on string dynamicCompID = "ini10"; var sessionID = CreateSessionID(dynamicCompID); Assert.IsTrue(_initiator.AddSession(sessionID, CreateSessionConfig(dynamicCompID, true)), "Failed to add dynamic session to initiator"); Assert.IsTrue(WaitForLogonMessage(dynamicCompID), "Failed to get logon message for dynamic initiator session"); SendInitiatorLogon(dynamicCompID); Assert.IsTrue(WaitForLogonStatus(dynamicCompID), "Failed to logon dynamic initiator session"); // Now that dynamic initiator is logged on, ensure that unforced attempt to remove session fails Assert.IsFalse(_initiator.RemoveSession(sessionID, false), "Unexpected success removing active session"); Assert.IsTrue(IsLoggedOn(dynamicCompID), "Unexpected logoff"); // Ensure that forced attempt to remove session dynamic session succeeds, even though it is in logged on state Assert.IsTrue(_initiator.RemoveSession(sessionID, true), "Failed to remove active session"); Assert.IsTrue(WaitForDisconnect(dynamicCompID), "Socket still connected after session removed"); Assert.IsFalse(IsLoggedOn(dynamicCompID), "Session still logged on after being removed"); // Ensure that we can perform unforced removal of a dynamic session that is not logged on. string dynamicCompID2 = "ini20"; var sessionID2 = CreateSessionID(dynamicCompID2); Assert.IsTrue(_initiator.AddSession(sessionID2, CreateSessionConfig(dynamicCompID2, true)), "Failed to add dynamic session to initiator"); Assert.IsTrue(WaitForLogonMessage(dynamicCompID2), "Failed to get logon message for dynamic initiator session"); Assert.IsFalse(IsLoggedOn(dynamicCompID2), "Session logged on"); Assert.IsTrue(_initiator.RemoveSession(sessionID2, false), "Failed to remove inactive session"); Assert.IsTrue(WaitForDisconnect(dynamicCompID2), "Socket still connected after session removed"); // Ensure that we can remove statically configured session Assert.IsTrue(IsLoggedOn(StaticInitiatorCompID), "Unexpected loss of connection"); Assert.IsTrue(_initiator.RemoveSession(CreateSessionID(StaticInitiatorCompID), true), "Failed to remove active session"); Assert.IsTrue(WaitForDisconnect(StaticInitiatorCompID), "Socket still connected after session removed"); Assert.IsFalse(IsLoggedOn(StaticInitiatorCompID), "Session still logged on after being removed"); }