Skip to content

Commit 0276061

Browse files
authored
Merge branch 'master' into defaultapplverid-range
2 parents 3e76eef + 25bbd8a commit 0276061

File tree

6 files changed

+133
-33
lines changed

6 files changed

+133
-33
lines changed

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
steps:
4444
- uses: actions/checkout@v4
4545
- name: Configure pagefile
46-
uses: al-cheb/configure-pagefile-action@v1.3
46+
uses: al-cheb/configure-pagefile-action@v1.4
4747
with:
4848
minimum-size: 8GB
4949
maximum-size: 16GB

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@
6868
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
6969
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
7070
<jdkLevel>1.8</jdkLevel>
71-
<slf4j.version>2.0.10</slf4j.version>
71+
<slf4j.version>2.0.12</slf4j.version>
7272
<mockito-core.version>4.11.0</mockito-core.version>
7373
<hamcrest.version>2.2</hamcrest.version>
74-
<junit.jupiter.version>5.10.1</junit.jupiter.version>
74+
<junit.jupiter.version>5.10.2</junit.jupiter.version>
7575
<maven.compiler.source>8</maven.compiler.source>
7676
<maven.compiler.target>8</maven.compiler.target>
7777
<mainClass/>
@@ -81,7 +81,7 @@
8181
<maven-resources-plugin-version>3.3.1</maven-resources-plugin-version>
8282
<maven-compiler-plugin-version>3.12.1</maven-compiler-plugin-version>
8383
<maven-jar-plugin-version>3.3.0</maven-jar-plugin-version>
84-
<maven-surefire-plugin-version>3.2.3</maven-surefire-plugin-version>
84+
<maven-surefire-plugin-version>3.2.5</maven-surefire-plugin-version>
8585
<maven-pmd-plugin-version>3.21.2</maven-pmd-plugin-version>
8686
<maven-source-plugin-version>3.3.0</maven-source-plugin-version>
8787
<maven-javadoc-plugin-version>3.6.3</maven-javadoc-plugin-version>
@@ -94,7 +94,7 @@
9494
<build-helper-maven-plugin-version>3.5.0</build-helper-maven-plugin-version>
9595
<maven-shared-utils.version>3.4.2</maven-shared-utils.version>
9696
<file-management.version>3.0.0</file-management.version>
97-
<maven-plugin-annotations.version>3.10.2</maven-plugin-annotations.version>
97+
<maven-plugin-annotations.version>3.11.0</maven-plugin-annotations.version>
9898
<maven-plugin-testing-harness.version>3.3.0</maven-plugin-testing-harness.version>
9999
<plantuml-maven-plugin-version>1.2</plantuml-maven-plugin-version>
100100
<plantuml-version>8059</plantuml-version>
@@ -467,7 +467,7 @@
467467
</plugin>
468468
<plugin>
469469
<artifactId>maven-plugin-plugin</artifactId>
470-
<version>3.10.2</version>
470+
<version>3.11.0</version>
471471
</plugin>
472472
<plugin>
473473
<artifactId>maven-install-plugin</artifactId>

quickfixj-codegenerator/pom.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@
7878
</plugin>
7979
<plugin>
8080
<artifactId>maven-plugin-plugin</artifactId>
81-
<version>3.10.2</version>
81+
<version>3.11.0</version>
82+
<configuration>
83+
<goalPrefix>quickfixj-codegenerator</goalPrefix>
84+
</configuration>
8285
</plugin>
8386
</plugins>
8487
</build>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ private void setUpJdbcLog(boolean filterHeartbeats, DataSource dataSource) throw
133133
if (filterHeartbeats) {
134134
settings.setBool(JdbcSetting.SETTING_JDBC_LOG_HEARTBEATS, false);
135135
}
136-
settings.setString(sessionID, JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
137136
JdbcTestSupport.setHypersonicSettings(settings);
138137
initializeTableDefinitions(connection);
139138
logFactory = new JdbcLogFactory(settings);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static void setHypersonicSettings(SessionSettings settings) {
4343
settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_URL, HSQL_CONNECTION_URL);
4444
settings.setString(JdbcSetting.SETTING_JDBC_USER, HSQL_USER);
4545
settings.setString(JdbcSetting.SETTING_JDBC_PASSWORD, "");
46+
// HSQL doesn't support JDBC4 which means that test query has to be supplied to HikariCP
47+
settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
4648
}
4749

4850
public static Connection getConnection() throws ClassNotFoundException, SQLException {

quickfixj-core/src/test/java/quickfix/mina/ssl/SSLCertificateTest.java

Lines changed: 121 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@
2323
import org.apache.mina.core.filterchain.IoFilterChain;
2424
import org.apache.mina.core.session.IoSession;
2525
import org.apache.mina.filter.ssl.SslFilter;
26-
import org.junit.Assert;
2726
import org.junit.Test;
2827
import org.slf4j.Logger;
2928
import org.slf4j.LoggerFactory;
29+
import quickfix.Acceptor;
3030
import quickfix.ApplicationAdapter;
3131
import quickfix.ConfigError;
3232
import quickfix.DefaultMessageFactory;
3333
import quickfix.FixVersions;
34+
import quickfix.Initiator;
3435
import quickfix.MemoryStoreFactory;
3536
import quickfix.MessageFactory;
3637
import quickfix.MessageStoreFactory;
3738
import quickfix.RuntimeError;
3839
import quickfix.Session;
40+
import quickfix.SessionFactory;
3941
import quickfix.SessionID;
4042
import quickfix.SessionSettings;
4143
import quickfix.ThreadedSocketAcceptor;
@@ -552,6 +554,51 @@ public void shouldFailWhenUsingBadServerCertificate() throws Exception {
552554
}
553555
}
554556

557+
@Test
558+
public void shouldConnectDifferentTypesOfSessions() throws Exception {
559+
int sslPort = AvailablePortFinder.getNextAvailable();
560+
int nonSslPort = AvailablePortFinder.getNextAvailable();
561+
TestAcceptor acceptor = new TestAcceptor(createMixedSessionAcceptorSettings(sslPort, nonSslPort, "single-session/server.keystore"));
562+
563+
try {
564+
acceptor.start();
565+
566+
TestInitiator sslInitiator = new TestInitiator(
567+
createInitiatorSettings("single-session/client.keystore", "single-session/client.truststore",
568+
CIPHER_SUITES_TLS, "TLSv1.2", "ZULU_SSL", "ALFA_SSL", Integer.toString(sslPort), "JKS", "JKS"));
569+
570+
TestInitiator nonSslInitiator = new TestInitiator(createInitiatorSettings("ZULU_NON_SSL", "ALFA_NON_SSL", nonSslPort));
571+
572+
try {
573+
sslInitiator.start();
574+
nonSslInitiator.start();
575+
576+
sslInitiator.assertNoSslExceptionThrown();
577+
sslInitiator.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_SSL", "ALFA_SSL"));
578+
sslInitiator.assertAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_SSL", "ALFA_SSL"),
579+
new BigInteger("1448538842"));
580+
581+
acceptor.assertNoSslExceptionThrown();
582+
acceptor.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_SSL", "ZULU_SSL"));
583+
acceptor.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_SSL", "ZULU_SSL"));
584+
585+
nonSslInitiator.assertNoSslExceptionThrown();
586+
nonSslInitiator.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_NON_SSL", "ALFA_NON_SSL"));
587+
nonSslInitiator.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_NON_SSL", "ALFA_NON_SSL"));
588+
589+
acceptor.assertNoSslExceptionThrown();
590+
acceptor.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_NON_SSL", "ZULU_NON_SSL"));
591+
acceptor.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_NON_SSL", "ZULU_NON_SSL"));
592+
593+
} finally {
594+
sslInitiator.stop();
595+
nonSslInitiator.stop();
596+
}
597+
} finally {
598+
acceptor.stop();
599+
}
600+
}
601+
555602
static abstract class TestConnector {
556603
private static final Logger LOGGER = LoggerFactory.getLogger(TestConnector.class);
557604
private static final int TIMEOUT_SECONDS = 5;
@@ -744,24 +791,53 @@ public SessionConnector createConnector(SessionSettings sessionSettings) throws
744791
return new ThreadedSocketInitiator(new ApplicationAdapter(),
745792
messageStoreFactory, sessionSettings, messageFactory);
746793
}
794+
}
747795

796+
/**
797+
* Creates acceptor settings that contains two sessions. One with SSL support, one without.
798+
*/
799+
private SessionSettings createMixedSessionAcceptorSettings(int sslPort, int nonSslPort, String keyStoreName) {
800+
HashMap<Object, Object> defaults = new HashMap<>();
801+
defaults.put(SessionFactory.SETTING_CONNECTION_TYPE, "acceptor");
802+
defaults.put(Session.SETTING_START_TIME, "00:00:00");
803+
defaults.put(Session.SETTING_END_TIME, "00:00:00");
804+
defaults.put(Session.SETTING_HEARTBTINT, "30");
805+
806+
SessionSettings sessionSettings = new SessionSettings();
807+
sessionSettings.set(defaults);
808+
809+
SessionID sslSession = new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_SSL", "ZULU_SSL");
810+
sessionSettings.setString(sslSession, "BeginString", FixVersions.BEGINSTRING_FIX44);
811+
sessionSettings.setString(sslSession, "DataDictionary", "FIX44.xml");
812+
sessionSettings.setString(sslSession, "TargetCompID", "ZULU_SSL");
813+
sessionSettings.setString(sslSession, "SenderCompID", "ALFA_SSL");
814+
sessionSettings.setString(sslSession, SSLSupport.SETTING_USE_SSL, "Y");
815+
sessionSettings.setString(sslSession, SSLSupport.SETTING_KEY_STORE_NAME, keyStoreName);
816+
sessionSettings.setString(sslSession, SSLSupport.SETTING_KEY_STORE_PWD, "password");
817+
sessionSettings.setString(sslSession, SSLSupport.SETTING_NEED_CLIENT_AUTH, "N");
818+
sessionSettings.setString(sslSession, "SocketAcceptPort", Integer.toString(sslPort));
819+
820+
SessionID nonSslSession = new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_NON_SSL", "ZULU_NON_SSL");
821+
sessionSettings.setString(nonSslSession, "BeginString", FixVersions.BEGINSTRING_FIX44);
822+
sessionSettings.setString(nonSslSession, "DataDictionary", "FIX44.xml");
823+
sessionSettings.setString(nonSslSession, "TargetCompID", "ZULU_NON_SSL");
824+
sessionSettings.setString(nonSslSession, "SenderCompID", "ALFA_NON_SSL");
825+
sessionSettings.setString(nonSslSession, "SocketAcceptPort", Integer.toString(nonSslPort));
826+
827+
return sessionSettings;
748828
}
749829

750830
private SessionSettings createMultiSessionAcceptorSettings(String keyStoreName, boolean needClientAuth,
751831
String[] trustStoreNames, String cipherSuites, String protocols) {
752832
HashMap<Object, Object> defaults = new HashMap<>();
753-
defaults.put("ConnectionType", "acceptor");
754-
defaults.put("SocketConnectProtocol", ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
833+
defaults.put(SessionFactory.SETTING_CONNECTION_TYPE, "acceptor");
755834
defaults.put(SSLSupport.SETTING_USE_SSL, "Y");
756835
defaults.put(SSLSupport.SETTING_KEY_STORE_NAME, keyStoreName);
757836
defaults.put(SSLSupport.SETTING_KEY_STORE_PWD, "password");
758-
759837
defaults.put(SSLSupport.SETTING_NEED_CLIENT_AUTH, needClientAuth ? "Y" : "N");
760-
defaults.put("SocketAcceptHost", "localhost");
761-
defaults.put("StartTime", "00:00:00");
762-
defaults.put("EndTime", "00:00:00");
763-
defaults.put("HeartBtInt", "30");
764-
defaults.put("ReconnectInterval", "2");
838+
defaults.put(Session.SETTING_START_TIME, "00:00:00");
839+
defaults.put(Session.SETTING_END_TIME, "00:00:00");
840+
defaults.put(Session.SETTING_HEARTBTINT, "30");
765841

766842
if (cipherSuites != null) {
767843
defaults.put(SSLSupport.SETTING_CIPHER_SUITES, cipherSuites);
@@ -791,8 +867,7 @@ private SessionSettings createMultiSessionAcceptorSettings(String keyStoreName,
791867
private SessionSettings createAcceptorSettings(String keyStoreName, boolean needClientAuth, String trustStoreName,
792868
String cipherSuites, String protocols, String keyStoreType, String trustStoreType, int port) {
793869
HashMap<Object, Object> defaults = new HashMap<>();
794-
defaults.put("ConnectionType", "acceptor");
795-
defaults.put("SocketConnectProtocol", ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
870+
defaults.put(SessionFactory.SETTING_CONNECTION_TYPE, "acceptor");
796871
defaults.put(SSLSupport.SETTING_USE_SSL, "Y");
797872
defaults.put(SSLSupport.SETTING_KEY_STORE_NAME, keyStoreName);
798873
defaults.put(SSLSupport.SETTING_KEY_STORE_PWD, "password");
@@ -811,12 +886,10 @@ private SessionSettings createAcceptorSettings(String keyStoreName, boolean need
811886
}
812887

813888
defaults.put(SSLSupport.SETTING_NEED_CLIENT_AUTH, needClientAuth ? "Y" : "N");
814-
defaults.put("SocketAcceptHost", "localhost");
815-
defaults.put("SocketAcceptPort", Integer.toString(port));
816-
defaults.put("StartTime", "00:00:00");
817-
defaults.put("EndTime", "00:00:00");
818-
defaults.put("HeartBtInt", "30");
819-
defaults.put("ReconnectInterval", "2");
889+
defaults.put(Acceptor.SETTING_SOCKET_ACCEPT_PORT, Integer.toString(port));
890+
defaults.put(Session.SETTING_START_TIME, "00:00:00");
891+
defaults.put(Session.SETTING_END_TIME, "00:00:00");
892+
defaults.put(Session.SETTING_HEARTBTINT, "30");
820893

821894
if (cipherSuites != null) {
822895
defaults.put(SSLSupport.SETTING_CIPHER_SUITES, cipherSuites);
@@ -848,8 +921,8 @@ private SessionSettings createInitiatorSettings(String keyStoreName, String trus
848921
String protocols, String senderId, String targetId, String port, String keyStoreType,
849922
String trustStoreType, String endpointIdentificationAlgorithm) {
850923
HashMap<Object, Object> defaults = new HashMap<>();
851-
defaults.put("ConnectionType", "initiator");
852-
defaults.put("SocketConnectProtocol", ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
924+
defaults.put(SessionFactory.SETTING_CONNECTION_TYPE, "initiator");
925+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_PROTOCOL, ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
853926
defaults.put(SSLSupport.SETTING_USE_SSL, "Y");
854927
defaults.put(SSLSupport.SETTING_KEY_STORE_NAME, keyStoreName);
855928
defaults.put(SSLSupport.SETTING_KEY_STORE_PWD, "password");
@@ -867,12 +940,12 @@ private SessionSettings createInitiatorSettings(String keyStoreName, String trus
867940
}
868941
}
869942

870-
defaults.put("SocketConnectHost", "localhost");
871-
defaults.put("SocketConnectPort", port);
872-
defaults.put("StartTime", "00:00:00");
873-
defaults.put("EndTime", "00:00:00");
874-
defaults.put("HeartBtInt", "30");
875-
defaults.put("ReconnectInterval", "2");
943+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_HOST, "localhost");
944+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_PORT, port);
945+
defaults.put(Initiator.SETTING_RECONNECT_INTERVAL, "2");
946+
defaults.put(Session.SETTING_START_TIME, "00:00:00");
947+
defaults.put(Session.SETTING_END_TIME, "00:00:00");
948+
defaults.put(Session.SETTING_HEARTBTINT, "30");
876949

877950
if (cipherSuites != null) {
878951
defaults.put(SSLSupport.SETTING_CIPHER_SUITES, cipherSuites);
@@ -897,4 +970,27 @@ private SessionSettings createInitiatorSettings(String keyStoreName, String trus
897970

898971
return sessionSettings;
899972
}
973+
974+
private SessionSettings createInitiatorSettings(String senderId, String targetId, int port) {
975+
HashMap<Object, Object> defaults = new HashMap<>();
976+
defaults.put(SessionFactory.SETTING_CONNECTION_TYPE, "initiator");
977+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_PROTOCOL, ProtocolFactory.getTypeString(ProtocolFactory.SOCKET));
978+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_HOST, "localhost");
979+
defaults.put(Initiator.SETTING_SOCKET_CONNECT_PORT, Integer.toString(port));
980+
defaults.put(Initiator.SETTING_RECONNECT_INTERVAL, "2");
981+
defaults.put(Session.SETTING_START_TIME, "00:00:00");
982+
defaults.put(Session.SETTING_END_TIME, "00:00:00");
983+
defaults.put(Session.SETTING_HEARTBTINT, "30");
984+
985+
SessionID sessionID = new SessionID(FixVersions.BEGINSTRING_FIX44, senderId, targetId);
986+
987+
SessionSettings sessionSettings = new SessionSettings();
988+
sessionSettings.set(defaults);
989+
sessionSettings.setString(sessionID, "BeginString", FixVersions.BEGINSTRING_FIX44);
990+
sessionSettings.setString(sessionID, "DataDictionary", "FIX44.xml");
991+
sessionSettings.setString(sessionID, "SenderCompID", senderId);
992+
sessionSettings.setString(sessionID, "TargetCompID", targetId);
993+
994+
return sessionSettings;
995+
}
900996
}

0 commit comments

Comments
 (0)