Skip to content

Commit 058fedf

Browse files
author
Piotr P. Karwasz
committed
Adds a unit test
Adds a unit test of middleware configuration in the Log4j file.
1 parent 302e7dc commit 058fedf

File tree

3 files changed

+106
-11
lines changed

3 files changed

+106
-11
lines changed

src/test/java/HttpEventCollectorUnitTest.java

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,19 @@
1616
* under the License.
1717
*/
1818

19+
import java.io.ByteArrayInputStream;
1920
import java.io.IOException;
20-
import java.io.OutputStream;
21-
import java.net.InetSocketAddress;
21+
import java.util.HashMap;
22+
import java.util.List;
23+
import java.util.logging.LogManager;
2224

23-
import com.splunk.logging.HttpEventCollectorErrorHandler;
24-
import com.splunk.logging.HttpEventCollectorEventInfo;
25+
import org.apache.logging.log4j.Level;
2526
import org.junit.Assert;
2627
import org.junit.Test;
27-
import sun.rmi.runtime.Log;
2828

29-
import java.io.ByteArrayInputStream;
30-
import java.util.Date;
31-
import java.util.HashMap;
32-
import java.util.List;
33-
import java.util.logging.LogManager;
34-
import java.util.logging.Logger;
29+
import com.splunk.logging.HttpEventCollectorErrorHandler;
30+
import com.splunk.logging.HttpEventCollectorEventInfo;
31+
import com.splunk.logging.Log4jTestMiddleware;
3532

3633
public class HttpEventCollectorUnitTest {
3734
@Test
@@ -66,6 +63,35 @@ public void input(List<HttpEventCollectorEventInfo> events) {
6663
Assert.assertTrue(HttpEventCollectorUnitTestMiddleware.eventsReceived == 3);
6764
}
6865

66+
@Test
67+
public void log4j_subcomponents() throws Exception {
68+
final Level[] levels = { Level.WARN, Level.INFO, Level.DEBUG };
69+
final long[] expectedCounts = { 1, 2, 3 };
70+
for (int i = 0; i < levels.length; i++) {
71+
HashMap<String, String> userInputs = new HashMap<>();
72+
String loggerName = "splunk.log4jSubcomponents";
73+
userInputs.put("user_logger_name", loggerName);
74+
userInputs.put("user_httpEventCollector_token", "11111111-2222-3333-4444-555555555555");
75+
userInputs.put("user_middleware", "HttpEventCollectorUnitTestMiddleware");
76+
userInputs.put("user_batch_size_count", "1");
77+
userInputs.put("user_batch_size_bytes", "0");
78+
userInputs.put("user_eventBodySerializer", "DoesNotExistButShouldNotCrashTest");
79+
userInputs.put("user_eventHeaderSerializer", "DoesNotExistButShouldNotCrashTest");
80+
userInputs.put("user_eventLevel", levels[i].toString());
81+
TestUtil.resetLog4j2Configuration("log4j2_subcomponents_template.xml", "log4j2.xml", userInputs);
82+
org.apache.logging.log4j.Logger LOG4J = org.apache.logging.log4j.LogManager.getLogger(loggerName);
83+
84+
HttpEventCollectorUnitTestMiddleware.eventsReceived = 0;
85+
// send 3 events
86+
LOG4J.warn("hello log4j");
87+
LOG4J.info("hello log4j");
88+
LOG4J.debug("hello log4j");
89+
if (HttpEventCollectorUnitTestMiddleware.eventsReceived == 0)
90+
sleep(1000);
91+
Assert.assertEquals(expectedCounts[i], Log4jTestMiddleware.eventsReceived);
92+
}
93+
}
94+
6995
@Test
7096
public void logback_simple() throws Exception {
7197
HashMap<String, String> userInputs = new HashMap<String, String>();
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.splunk.logging;
2+
3+
import java.util.List;
4+
5+
import org.apache.logging.log4j.Level;
6+
import org.apache.logging.log4j.core.config.plugins.Plugin;
7+
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
8+
import org.apache.logging.log4j.core.config.plugins.PluginValue;
9+
10+
import com.splunk.logging.HttpEventCollectorMiddleware.HttpSenderMiddleware;
11+
import com.splunk.logging.HttpEventCollectorMiddleware.IHttpSender;
12+
import com.splunk.logging.HttpEventCollectorMiddleware.IHttpSenderCallback;
13+
14+
@Plugin(name = "Log4jTestMiddleware", category = "Core", elementType = HttpEventCollectorLog4jAppender.MIDDLEWARE_TYPE)
15+
public class Log4jTestMiddleware extends HttpSenderMiddleware {
16+
17+
@PluginFactory
18+
public static Log4jTestMiddleware createMiddleware(@PluginValue("level") String level) {
19+
return new Log4jTestMiddleware(Level.valueOf(level));
20+
}
21+
22+
public static long eventsReceived = 0;
23+
private Level level;
24+
25+
private Log4jTestMiddleware(Level level) {
26+
this.level = level;
27+
}
28+
29+
@Override
30+
public void postEvents(List<HttpEventCollectorEventInfo> events, IHttpSender sender, IHttpSenderCallback callback) {
31+
eventsReceived += events.stream().filter(e -> Level.valueOf(e.getSeverity()).compareTo(level) <= 0).count();
32+
}
33+
34+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Configuration status="info" name="example" packages="com.splunk.logging">
3+
<Appenders>
4+
<SplunkHttp
5+
name="httpconf"
6+
url="%scheme%://%host%:8088"
7+
token="%user_httpEventCollector_token%"
8+
host="%user_host%"
9+
index="%user_index%"
10+
source="%user_source%"
11+
sourcetype="%user_sourcetype%"
12+
messageFormat="%user_messageFormat%"
13+
batch_interval="%user_batch_interval%"
14+
batch_size_bytes="%user_batch_size_bytes%"
15+
batch_size_count="%user_batch_size_count%"
16+
disableCertificateValidation="true"
17+
send_mode="%user_send_mode%"
18+
middleware="user_middleware"
19+
eventBodySerializer="%user_eventBodySerializer%"
20+
eventHeaderSerializer="%user_eventHeaderSerializer%"
21+
>
22+
<Log4jTestMiddleware level="%user_eventLevel%"/>
23+
<PatternLayout pattern="%m"/>
24+
</SplunkHttp>
25+
26+
</Appenders>
27+
28+
<!-- Define a logger named 'testSplunkLog4j' which writes to the socket appender we defined above. -->
29+
<Loggers>
30+
<Root level="INFO"/>
31+
<Logger name="%user_logger_name%" level="info">
32+
<AppenderRef ref="httpconf"/>
33+
</Logger>
34+
</Loggers>
35+
</Configuration>

0 commit comments

Comments
 (0)