Skip to content

Commit

Permalink
Merge branch 'master' into optimiseSessionReset
Browse files Browse the repository at this point in the history
  • Loading branch information
chrjohn authored Feb 13, 2024
2 parents 6895019 + 9f8fb4b commit 126a123
Show file tree
Hide file tree
Showing 10 changed files with 199 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Configure pagefile
uses: al-cheb/configure-pagefile-action@v1.3
uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 16GB
Expand Down
10 changes: 5 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<jdkLevel>1.8</jdkLevel>
<slf4j.version>2.0.10</slf4j.version>
<slf4j.version>2.0.12</slf4j.version>
<mockito-core.version>4.11.0</mockito-core.version>
<hamcrest.version>2.2</hamcrest.version>
<junit.jupiter.version>5.10.1</junit.jupiter.version>
<junit.jupiter.version>5.10.2</junit.jupiter.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<mainClass/>
Expand All @@ -81,7 +81,7 @@
<maven-resources-plugin-version>3.3.1</maven-resources-plugin-version>
<maven-compiler-plugin-version>3.12.1</maven-compiler-plugin-version>
<maven-jar-plugin-version>3.3.0</maven-jar-plugin-version>
<maven-surefire-plugin-version>3.2.3</maven-surefire-plugin-version>
<maven-surefire-plugin-version>3.2.5</maven-surefire-plugin-version>
<maven-pmd-plugin-version>3.21.2</maven-pmd-plugin-version>
<maven-source-plugin-version>3.3.0</maven-source-plugin-version>
<maven-javadoc-plugin-version>3.6.3</maven-javadoc-plugin-version>
Expand All @@ -94,7 +94,7 @@
<build-helper-maven-plugin-version>3.5.0</build-helper-maven-plugin-version>
<maven-shared-utils.version>3.4.2</maven-shared-utils.version>
<file-management.version>3.0.0</file-management.version>
<maven-plugin-annotations.version>3.10.2</maven-plugin-annotations.version>
<maven-plugin-annotations.version>3.11.0</maven-plugin-annotations.version>
<maven-plugin-testing-harness.version>3.3.0</maven-plugin-testing-harness.version>
<plantuml-maven-plugin-version>1.2</plantuml-maven-plugin-version>
<plantuml-version>8059</plantuml-version>
Expand Down Expand Up @@ -467,7 +467,7 @@
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.10.2</version>
<version>3.11.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion quickfixj-base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.3.1</version>
<version>3.3.2</version>
</plugin>
</plugins>
</reporting>
Expand Down
5 changes: 4 additions & 1 deletion quickfixj-codegenerator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.10.2</version>
<version>3.11.0</version>
<configuration>
<goalPrefix>quickfixj-codegenerator</goalPrefix>
</configuration>
</plugin>
</plugins>
</build>
Expand Down
2 changes: 1 addition & 1 deletion quickfixj-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.3.1</version>
<version>3.3.2</version>
</plugin>
</plugins>
</reporting>
Expand Down
18 changes: 18 additions & 0 deletions quickfixj-core/src/main/java/quickfix/SessionSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -877,4 +877,22 @@ public static Set<InetAddress> parseRemoteAddresses(String raw) {
return result;
}

public void removeSection(final SessionID sessionID) throws ConfigError {
Properties properties = getSessionProperties(sessionID);

if (properties == null) {
throw new ConfigError("Session not found");
}
sections.remove(sessionID);
}

public void removeSection(final String propertyKey, final String propertyValue) throws ConfigError {
SessionID sessionIdToRemove = sections.entrySet().stream()
.filter(entry -> propertyValue.equals(entry.getValue().get(propertyKey)))
.map(Map.Entry::getKey)
.findFirst()
.orElseThrow(() -> new ConfigError("Session not found"));

sections.remove(sessionIdToRemove);
}
}
1 change: 0 additions & 1 deletion quickfixj-core/src/test/java/quickfix/JdbcLogTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ private void setUpJdbcLog(boolean filterHeartbeats, DataSource dataSource) throw
if (filterHeartbeats) {
settings.setBool(JdbcSetting.SETTING_JDBC_LOG_HEARTBEATS, false);
}
settings.setString(sessionID, JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
JdbcTestSupport.setHypersonicSettings(settings);
initializeTableDefinitions(connection);
logFactory = new JdbcLogFactory(settings);
Expand Down
2 changes: 2 additions & 0 deletions quickfixj-core/src/test/java/quickfix/JdbcTestSupport.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public static void setHypersonicSettings(SessionSettings settings) {
settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_URL, HSQL_CONNECTION_URL);
settings.setString(JdbcSetting.SETTING_JDBC_USER, HSQL_USER);
settings.setString(JdbcSetting.SETTING_JDBC_PASSWORD, "");
// HSQL doesn't support JDBC4 which means that test query has to be supplied to HikariCP
settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
}

public static Connection getConnection() throws ClassNotFoundException, SQLException {
Expand Down
46 changes: 46 additions & 0 deletions quickfixj-core/src/test/java/quickfix/SessionSettingsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
Expand Down Expand Up @@ -610,6 +611,51 @@ public void testConcurrentAccess() throws ConfigError, InterruptedException {
assertTrue(testHasPassed.get());
}

@Test
public void testRemoveSectionBySessionID() throws ConfigError {
final Map<Object, Object> defaultSettings = createDefaultSettings();

final Map<Object, Object> pricingSection = createPricingSection();
final SessionID pricingSessionID = new SessionID("FIX.4.2:FOOBAR_PRICING->*");

final Map<Object, Object> tradingSection = createTradingSection();
final SessionID tradingSessionID = new SessionID("FIX.4.2:FOOBAR_TRADING->*");

final SessionSettings sessionSettings = new SessionSettings();
sessionSettings.set(new Dictionary(null, defaultSettings));
sessionSettings.set(pricingSessionID, new Dictionary("sessions", pricingSection));
sessionSettings.set(tradingSessionID, new Dictionary("sessions", tradingSection));

while (sessionSettings.sectionIterator().hasNext()) {
SessionID sessionID = sessionSettings.sectionIterator().next();
sessionSettings.removeSection(sessionID);
}

assertFalse(sessionSettings.sectionIterator().hasNext());
}

@Test
public void testRemoveSectionByPropertyKey() throws ConfigError {
final Map<Object, Object> defaultSettings = createDefaultSettings();

final Map<Object, Object> tradingSection = createTradingSection();
final SessionID tradingSessionID = new SessionID("FIX.4.2:FOOBAR_TRADING->*");

final SessionSettings sessionSettings = new SessionSettings();
sessionSettings.set(new Dictionary(null, defaultSettings));
sessionSettings.set(tradingSessionID, new Dictionary("sessions", tradingSection));

sessionSettings.removeSection("SocketAcceptPort", "7566");

Set<SessionID> expectedSessionIdSet = new HashSet<>();
while (sessionSettings.sectionIterator().hasNext()) {
SessionID sessionID = sessionSettings.sectionIterator().next();
expectedSessionIdSet.add(sessionID);
}

assertFalse(expectedSessionIdSet.contains(tradingSessionID));
}

private Map<Object, Object> createTradingSection() {
final Map<Object, Object> tradingSection = new HashMap<>();
tradingSection.put("PersistMessages","Y");
Expand Down
Loading

0 comments on commit 126a123

Please sign in to comment.