Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,46 @@
name: Java CI with Maven

on: [push, pull_request]

jobs:
ubuntu-adopt-jdk-11:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
java-version: "11"
distribution: "adopt"
cache: maven
- name: Build with Maven
run: mvn package --file pom.xml

ubuntu-adopt-jdk-8:

ubuntu-adopt-jdk-17:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'adopt'
java-version: "17"
distribution: "adopt"
cache: maven
- name: Build with Maven
run: mvn package --file pom.xml

ubuntu-adopt-jdk-17:

ubuntu-adopt-jdk-21:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'adopt'
java-version: "21"
distribution: "adopt"
cache: maven
- name: Build with Maven
run: mvn package --file pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,15 @@ public Syslog5424Listener(SyslogMessageConsumer syslogBuilder) {
public void exitHeaderPriorityValue(Rfc5424Parser.HeaderPriorityValueContext ctx) {
String priority = ctx.getText();
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_PRI, priority);

int pri = Integer.parseInt(priority);
int sev = pri % 8;
int facility = pri / 8;
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_PRI_SEVERITY, String.valueOf(sev));
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_PRI_FACILITY, String.valueOf(facility));
try {
int pri = Integer.parseInt(priority);
int sev = pri % 8;
int facility = pri / 8;
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_PRI_SEVERITY, String.valueOf(sev));
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_PRI_FACILITY, String.valueOf(facility));
} catch (NumberFormatException e) {
throw new ParseException("Invalid priority: " + priority, e);
}
}

@Override
Expand Down Expand Up @@ -109,8 +112,13 @@ public void exitHeaderNilMsgId(Rfc5424Parser.HeaderNilMsgIdContext ctx) {

@Override
public void exitHeaderTimeStamp(Rfc5424Parser.HeaderTimeStampContext ctx) {
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_TIMESTAMP,
ctx.full_date().getText() + "T" + ctx.full_time().getText());
String txt = null;
try {
txt = ctx.full_date().getText() + "T" + ctx.full_time().getText();
} catch (NullPointerException e) {
throw new ParseException("Invalid TimeStamp", e);
}
syslogBuilder.consumeValue(SyslogFieldKeys.HEADER_TIMESTAMP, txt);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

package com.github.palindromicity.syslog;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -454,9 +457,39 @@ public void testInvalidLineConsumer() throws Exception {

@Test
public void testParseLinesMissingStructure() throws Exception {
SyslogParser parser = new SyslogParserBuilder().forSpecification(SyslogSpecification.HEROKU_HTTPS_LOG_DRAIN).withSyslogBuilder(new MapOfMaps5424MessageHandler()).build();
SyslogParser<Map<String, Object>> parser = new SyslogParserBuilder<Map<String,Object>>().forSpecification(SyslogSpecification.HEROKU_HTTPS_LOG_DRAIN).withSyslogBuilder(new MapOfMaps5424MessageHandler()).build();
List<Map<String, Object>> mapList = handleFile("src/test/resources/logs/5424/log_missing_structure.txt",
parser);
Assert.assertEquals(1, mapList.size());
}

@Test
public void testParseLineAtna() throws Exception {
final SyslogParser<Map<String,Object>> parser = new SyslogParserBuilder<Map<String,Object>>().withSyslogBuilder(new MapOfMaps5424MessageHandler()).build();
final List<Map<String, Object>> mapList = handleFile("src/test/resources/logs/5424/log_atna.txt", parser);
Assert.assertEquals(1, mapList.size());
final Map<String, Object> map = mapList.get(0);

final String message = (String) map.get(SyslogFieldKeys.MESSAGE.getField());
Assert.assertNotNull(message);
// Multiple whitespaces should be kept
Assert.assertTrue(message.contains(" "));
Assert.assertFalse(message.contains("=\"0\"Event"));
}

@Test
public void testParseLinesWithInvalidWhitespaces() throws Exception {
final SyslogParser<Map<String,Object>> parser = new SyslogParserBuilder<Map<String,Object>>().withSyslogBuilder(new MapOfMaps5424MessageHandler()).build();
final Path path = Paths.get("src/test/resources/logs/5424/log_invalid_whitespaces.txt");
final List<String> lines = Files.readAllLines(path);

for (final String line : lines) {
try {
handleLine(line, parser);
Assert.fail("The parsing of the invalid line should have failed: " + line);
} catch (final Exception e) {
Assert.assertTrue(e instanceof ParseException);
}
}
}
}
1 change: 1 addition & 0 deletions src/test/resources/logs/5424/log_atna.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - <?xml version="1.0" encoding="UTF-8"?><AuditMessage><EventIdentification EventDateTime="2025-05-15T14:11:18.377+00:00" EventOutcomeIndicator="0" EventActionCode="E"/></AuditMessage>
18 changes: 18 additions & 0 deletions src/test/resources/logs/5424/log_invalid_whitespaces.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<8 5>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 202 5-05-17T1 0:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z clie nt.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegratio nTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 4 2 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RF C-3881 - Hello
<8 5>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 202 5-05-17T1 0:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z clie nt.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegratio nTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 4 2 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RF C-3881 - Hello
<8 5>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025 -05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.loca lhost IkitIntegrationTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrat ionTestApp 42 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 4 2 IHE+RFC-3881 - Hello
<85>1 2025-05-17T10:54:32Z client.localhost IkitIntegrationTestApp 42 IHE+ RFC-3881 - Hello