Skip to content

Commit 196c776

Browse files
authored
Use dynamic port for LostLogoutTest, LostLogoutThreadedTest, SocketAcceptorTest (#573)
* issue-487 - fixed for LostLogoutTest & LostLogoutThreadedTest * Fixes quickfix-j/quickfix-j#487
1 parent 0425600 commit 196c776

File tree

3 files changed

+35
-26
lines changed

3 files changed

+35
-26
lines changed

quickfixj-core/src/test/java/quickfix/SocketAcceptorTest.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,10 @@ public void testRestartOfAcceptor() throws Exception {
8181
Acceptor acceptor = null;
8282
Initiator initiator = null;
8383
try {
84-
acceptor = createAcceptor(testAcceptorApplication);
84+
final int port = AvailablePortFinder.getNextAvailable();
85+
acceptor = createAcceptor(testAcceptorApplication, port);
8586
acceptor.start();
86-
initiator = createInitiator(testInitiatorApplication);
87+
initiator = createInitiator(testInitiatorApplication, port);
8788

8889
assertNotNull("Session should be registered", lookupSession(acceptorSessionID));
8990

@@ -131,7 +132,8 @@ public void testQuickRestartOfAcceptor() throws Exception {
131132
try {
132133
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
133134
TestConnectorApplication testAcceptorApplication = new TestConnectorApplication();
134-
acceptor = createAcceptor(testAcceptorApplication);
135+
final int port = AvailablePortFinder.getNextAvailable();
136+
acceptor = createAcceptor(testAcceptorApplication, port);
135137
acceptor.start();
136138
Thread.sleep(2500L);
137139
acceptor.stop();
@@ -152,7 +154,8 @@ public void testDoubleStartOfAcceptor() throws Exception {
152154
try {
153155
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
154156
TestConnectorApplication testAcceptorApplication = new TestConnectorApplication();
155-
acceptor = createAcceptor(testAcceptorApplication);
157+
final int port = AvailablePortFinder.getNextAvailable();
158+
acceptor = createAcceptor(testAcceptorApplication, port);
156159
acceptor.start();
157160
// second start should be ignored
158161
acceptor.start();
@@ -170,7 +173,8 @@ public void testSessionsAreCleanedUp() throws Exception {
170173
Acceptor acceptor = null;
171174
try {
172175
TestConnectorApplication testAcceptorApplication = new TestConnectorApplication();
173-
acceptor = createAcceptor(testAcceptorApplication);
176+
final int port = AvailablePortFinder.getNextAvailable();
177+
acceptor = createAcceptor(testAcceptorApplication, port);
174178
acceptor.start();
175179
assertEquals(1, acceptor.getSessions().size() );
176180
assertEquals(1 + SESSION_COUNT, Session.numSessions() );
@@ -189,7 +193,8 @@ public void testSessionsAreCleanedUpOnThreadedSocketAcceptor() throws Exception
189193
Acceptor acceptor = null;
190194
try {
191195
TestConnectorApplication testAcceptorApplication = new TestConnectorApplication();
192-
acceptor = createAcceptorThreaded(testAcceptorApplication);
196+
final int port = AvailablePortFinder.getNextAvailable();
197+
acceptor = createAcceptorThreaded(testAcceptorApplication, port);
193198
acceptor.start();
194199
assertEquals(1, acceptor.getSessions().size() );
195200
assertEquals(1 + SESSION_COUNT, Session.numSessions() );
@@ -345,29 +350,29 @@ public void toAdmin(Message message, SessionID sessionId) {
345350
}
346351

347352

348-
private Acceptor createAcceptor(TestConnectorApplication testAcceptorApplication)
353+
private Acceptor createAcceptor(TestConnectorApplication testAcceptorApplication, int port)
349354
throws ConfigError {
350355

351-
SessionSettings settings = createAcceptorSettings();
356+
SessionSettings settings = createAcceptorSettings(port);
352357

353358
MessageStoreFactory factory = new MemoryStoreFactory();
354359
quickfix.LogFactory logFactory = new SLF4JLogFactory(new SessionSettings());
355360
return new SocketAcceptor(testAcceptorApplication, factory, settings, logFactory,
356361
new DefaultMessageFactory());
357362
}
358363

359-
private Acceptor createAcceptorThreaded(TestConnectorApplication testAcceptorApplication)
364+
private Acceptor createAcceptorThreaded(TestConnectorApplication testAcceptorApplication, int port)
360365
throws ConfigError {
361366

362-
SessionSettings settings = createAcceptorSettings();
367+
SessionSettings settings = createAcceptorSettings(port);
363368

364369
MessageStoreFactory factory = new MemoryStoreFactory();
365370
quickfix.LogFactory logFactory = new SLF4JLogFactory(new SessionSettings());
366371
return new ThreadedSocketAcceptor(testAcceptorApplication, factory, settings, logFactory,
367372
new DefaultMessageFactory());
368373
}
369374

370-
private SessionSettings createAcceptorSettings() {
375+
private SessionSettings createAcceptorSettings(int socketAcceptPort) {
371376
SessionSettings settings = new SessionSettings();
372377
HashMap<Object, Object> defaults = new HashMap<>();
373378
defaults.put("ConnectionType", "acceptor");
@@ -376,12 +381,12 @@ private SessionSettings createAcceptorSettings() {
376381
defaults.put("BeginString", "FIX.4.2");
377382
defaults.put("NonStopSession", "Y");
378383
settings.setString(acceptorSessionID, "SocketAcceptProtocol", ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
379-
settings.setString(acceptorSessionID, "SocketAcceptPort", "10000");
384+
settings.setString(acceptorSessionID, "SocketAcceptPort", String.valueOf(socketAcceptPort));
380385
settings.set(defaults);
381386
return settings;
382387
}
383388

384-
private Initiator createInitiator(TestConnectorApplication testInitiatorApplication) throws ConfigError {
389+
private Initiator createInitiator(TestConnectorApplication testInitiatorApplication, int socketConnectPort) throws ConfigError {
385390
SessionSettings settings = new SessionSettings();
386391
HashMap<Object, Object> defaults = new HashMap<>();
387392
defaults.put("ConnectionType", "initiator");
@@ -395,7 +400,7 @@ private Initiator createInitiator(TestConnectorApplication testInitiatorApplicat
395400
settings.setString("BeginString", FixVersions.BEGINSTRING_FIX42);
396401
settings.setString(initiatorSessionID, "SocketConnectProtocol", ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
397402
settings.setString(initiatorSessionID, "SocketConnectHost", "127.0.0.1");
398-
settings.setString(initiatorSessionID, "SocketConnectPort", "10000");
403+
settings.setString(initiatorSessionID, "SocketConnectPort", String.valueOf(socketConnectPort));
399404
settings.set(defaults);
400405

401406
MessageStoreFactory factory = new MemoryStoreFactory();

quickfixj-core/src/test/java/quickfix/mina/LostLogoutTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package quickfix.mina;
22

3+
import org.apache.mina.util.AvailablePortFinder;
34
import org.junit.Test;
45
import quickfix.Application;
56
import quickfix.DefaultMessageFactory;
@@ -51,11 +52,12 @@ public class LostLogoutTest {
5152

5253
@Test
5354
public void lostLogoutMessageTest() throws Exception {
55+
final int port = AvailablePortFinder.getNextAvailable();
5456
// create server (acceptor)
55-
server = new ServerApp();
57+
server = new ServerApp(port);
5658

5759
// create client (initiator) and start the FIX session (log on)
58-
client = new ClientApp();
60+
client = new ClientApp(port);
5961

6062
// wait until until client is logged on
6163
client.waitUntilLoggedOn();
@@ -89,11 +91,11 @@ private class ServerApp implements Application {
8991
private SocketAcceptor acceptor = null;
9092

9193
private final SessionID sid = new SessionID("FIX.4.4", "SERVER", "CLIENT");
92-
public ServerApp() throws Exception {
94+
public ServerApp(int port) throws Exception {
9395
SessionSettings settings = new SessionSettings();
9496
settings.setString("ConnectionType", "acceptor");
9597
settings.setString("SocketAcceptAddress", "127.0.0.1");
96-
settings.setLong("SocketAcceptPort", 54321);
98+
settings.setLong("SocketAcceptPort", port);
9799
settings.setString("StartTime", "00:00:00");
98100
settings.setString("EndTime", "00:00:00");
99101
settings.setString("UseDataDictionary", "N");
@@ -164,12 +166,12 @@ private static class ClientApp implements Application {
164166
private SocketInitiator initiator = null;
165167
private Session session;
166168

167-
public ClientApp() throws Exception {
169+
public ClientApp(int port) throws Exception {
168170
SessionID sid = new SessionID("FIX.4.4", "CLIENT", "SERVER");
169171
SessionSettings settings = new SessionSettings();
170172
settings.setString("ConnectionType", "initiator");
171173
settings.setString("SocketConnectHost", "127.0.0.1");
172-
settings.setLong("SocketConnectPort", 54321);
174+
settings.setLong("SocketConnectPort", port);
173175
settings.setString("StartTime", "00:00:00");
174176
settings.setString("EndTime", "00:00:00");
175177
settings.setLong("HeartBtInt", 30);

quickfixj-core/src/test/java/quickfix/mina/LostLogoutThreadedTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package quickfix.mina;
22

3+
import org.apache.mina.util.AvailablePortFinder;
34
import org.junit.Test;
45
import quickfix.Application;
56
import quickfix.DefaultMessageFactory;
@@ -51,11 +52,12 @@ public class LostLogoutThreadedTest {
5152

5253
@Test
5354
public void lostLogoutMessageTest() throws Exception {
55+
final int port = AvailablePortFinder.getNextAvailable();
5456
// create server (acceptor)
55-
server = new ServerApp();
57+
server = new ServerApp(port);
5658

5759
// create client (initiator) and start the FIX session (log on)
58-
client = new ClientApp();
60+
client = new ClientApp(port);
5961

6062
// wait until until client is logged on
6163
client.waitUntilLoggedOn();
@@ -88,12 +90,12 @@ public void lostLogoutMessageTest() throws Exception {
8890
private class ServerApp implements Application {
8991
private ThreadedSocketAcceptor acceptor = null;
9092

91-
public ServerApp() throws Exception {
93+
public ServerApp(int port) throws Exception {
9294
SessionID sid = new SessionID("FIX.4.4", "SERVER", "CLIENT");
9395
SessionSettings settings = new SessionSettings();
9496
settings.setString("ConnectionType", "acceptor");
9597
settings.setString("SocketAcceptAddress", "127.0.0.1");
96-
settings.setLong("SocketAcceptPort", 54321);
98+
settings.setLong("SocketAcceptPort", port);
9799
settings.setString("StartTime", "00:00:00");
98100
settings.setString("EndTime", "00:00:00");
99101
settings.setString("UseDataDictionary", "N");
@@ -164,12 +166,12 @@ private static class ClientApp implements Application {
164166
private ThreadedSocketInitiator initiator = null;
165167
private Session session;
166168

167-
public ClientApp() throws Exception {
169+
public ClientApp(int port) throws Exception {
168170
SessionID sid = new SessionID("FIX.4.4", "CLIENT", "SERVER");
169171
SessionSettings settings = new SessionSettings();
170172
settings.setString("ConnectionType", "initiator");
171173
settings.setString("SocketConnectHost", "127.0.0.1");
172-
settings.setLong("SocketConnectPort", 54321);
174+
settings.setLong("SocketConnectPort", port);
173175
settings.setString("StartTime", "00:00:00");
174176
settings.setString("EndTime", "00:00:00");
175177
settings.setLong("HeartBtInt", 30);

0 commit comments

Comments
 (0)