mirror of
https://github.com/tiennm99/tjahzi.git
synced 2026-10-14 12:17:12 +00:00
Re #87: Mirroring tests from logback side.
This commit is contained in:
1 parent
846eacb492
commit
cdbf9e46bc
12 files changed
+326
-6
No files matched your search
@@ -102,6 +102,12 @@
|
||||
<version>1.14.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>nginx</artifactId>
|
||||
<version>1.14.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<profiles>
|
||||
|
||||
@@ -4,7 +4,6 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginElement;
|
||||
import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
|
||||
import org.apache.logging.log4j.status.StatusLogger;
|
||||
import pl.tkowalcz.tjahzi.LoggingSystem;
|
||||
import pl.tkowalcz.tjahzi.TjahziInitializer;
|
||||
@@ -48,6 +47,9 @@ public class LokiAppenderBuilder<B extends LokiAppenderBuilder<B>> extends Abstr
|
||||
@PluginBuilderAttribute
|
||||
private int port;
|
||||
|
||||
@PluginBuilderAttribute
|
||||
private boolean useSSL;
|
||||
|
||||
@PluginBuilderAttribute
|
||||
private String username;
|
||||
|
||||
@@ -103,6 +105,7 @@ public class LokiAppenderBuilder<B extends LokiAppenderBuilder<B>> extends Abstr
|
||||
.withLogEndpoint(logEndpoint)
|
||||
.withHost(host)
|
||||
.withPort(port)
|
||||
.withUseSSL(useSSL)
|
||||
.withUsername(username)
|
||||
.withPassword(password)
|
||||
.withConnectionTimeoutMillis(connectTimeoutMillis)
|
||||
@@ -174,6 +177,46 @@ public class LokiAppenderBuilder<B extends LokiAppenderBuilder<B>> extends Abstr
|
||||
return host;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getLogEndpoint() {
|
||||
return logEndpoint;
|
||||
}
|
||||
|
||||
public void setLogEndpoint(String logEndpoint) {
|
||||
this.logEndpoint = logEndpoint;
|
||||
}
|
||||
|
||||
public boolean isUseSSL() {
|
||||
return useSSL;
|
||||
}
|
||||
|
||||
public void setUseSSL(boolean useSSL) {
|
||||
this.useSSL = useSSL;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public int getConnectTimeoutMillis() {
|
||||
return connectTimeoutMillis;
|
||||
}
|
||||
|
||||
+2
-4
@@ -3,15 +3,13 @@ package pl.tkowalcz.tjahzi.log4j2;
|
||||
import org.apache.logging.log4j.core.LoggerContext;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static pl.tkowalcz.tjahzi.log4j2.infra.IntegrationTest.loadConfig;
|
||||
|
||||
class BufferSizeConfigurationTest {
|
||||
|
||||
@Test
|
||||
void shouldUseDefaultWhenLogBufferSizeIsNotSetViaConfiguration() throws URISyntaxException {
|
||||
void shouldUseDefaultWhenLogBufferSizeIsNotSetViaConfiguration() {
|
||||
// When
|
||||
LoggerContext context = loadConfig("appender-test-with-buffer-size-megabytes-unset.xml");
|
||||
|
||||
@@ -22,7 +20,7 @@ class BufferSizeConfigurationTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSetLogBufferSizeViaConfiguration() throws URISyntaxException {
|
||||
void shouldSetLogBufferSizeViaConfiguration() {
|
||||
// When
|
||||
LoggerContext context = loadConfig("appender-test-with-buffer-size-megabytes-set-to-64.xml");
|
||||
|
||||
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package pl.tkowalcz.tjahzi.log4j2;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.testcontainers.containers.BindMode;
|
||||
import org.testcontainers.containers.NginxContainer;
|
||||
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import pl.tkowalcz.tjahzi.log4j2.infra.IntegrationTest;
|
||||
import pl.tkowalcz.tjahzi.log4j2.infra.LokiAssert;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
|
||||
class LokiAppenderHttpsCustomEndpointTest extends IntegrationTest {
|
||||
|
||||
@Container
|
||||
public NginxContainer<?> nginx = new NginxContainer<>("nginx:latest")
|
||||
.withNetwork(network)
|
||||
.withClasspathResourceMapping("loki.reverse.nginx.conf",
|
||||
"/etc/nginx/conf.d/loki.reverse.conf",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/nginx-selfsigned.crt",
|
||||
"/etc/nginx/nginx-selfsigned.crt",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/nginx-selfsigned.key",
|
||||
"/etc/nginx/nginx-selfsigned.key",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/passwords",
|
||||
"/etc/nginx/passwords",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.waitingFor(new HttpWaitStrategy())
|
||||
.withExposedPorts(81);
|
||||
|
||||
@Override
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
System.setProperty("loki.host", nginx.getHost());
|
||||
System.setProperty("loki.port", nginx.getFirstMappedPort().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSendData() {
|
||||
// Given
|
||||
loadConfig("appender-test-custom-endpoint-configuration.xml");
|
||||
Logger logger = LogManager.getLogger(LokiAppenderHttpsCustomEndpointTest.class);
|
||||
|
||||
String expectedLogLine = "Hello World";
|
||||
|
||||
// When
|
||||
logger.info(expectedLogLine);
|
||||
|
||||
// Then
|
||||
LokiAssert.assertThat(loki)
|
||||
.returns(response -> response
|
||||
.body("data.result.size()", equalTo(1))
|
||||
.body("data.result[0].stream.server", equalTo("127.0.0.1"))
|
||||
.body(
|
||||
"data.result.values",
|
||||
hasItems(
|
||||
hasItems(
|
||||
hasItems(
|
||||
containsString("INFO LokiAppenderHttpsCustomEndpointTest - " + expectedLogLine)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package pl.tkowalcz.tjahzi.log4j2;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.testcontainers.containers.BindMode;
|
||||
import org.testcontainers.containers.NginxContainer;
|
||||
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import pl.tkowalcz.tjahzi.log4j2.infra.IntegrationTest;
|
||||
import pl.tkowalcz.tjahzi.log4j2.infra.LokiAssert;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
|
||||
class LokiAppenderHttpsUrlConnectionReverseProxyTest extends IntegrationTest {
|
||||
|
||||
@Container
|
||||
public NginxContainer<?> nginx = new NginxContainer<>("nginx:latest")
|
||||
.withNetwork(network)
|
||||
.withClasspathResourceMapping("loki.reverse.nginx.conf",
|
||||
"/etc/nginx/conf.d/loki.reverse.conf",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/nginx-selfsigned.crt",
|
||||
"/etc/nginx/nginx-selfsigned.crt",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/nginx-selfsigned.key",
|
||||
"/etc/nginx/nginx-selfsigned.key",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.withClasspathResourceMapping("nginx/passwords",
|
||||
"/etc/nginx/passwords",
|
||||
BindMode.READ_ONLY
|
||||
)
|
||||
.waitingFor(new HttpWaitStrategy())
|
||||
.withExposedPorts(81);
|
||||
|
||||
@Override
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
System.setProperty("loki.host", nginx.getHost());
|
||||
System.setProperty("loki.port", nginx.getFirstMappedPort().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSendData() {
|
||||
// Given
|
||||
loadConfig("appender-test-url-configuration.xml");
|
||||
Logger logger = LogManager.getLogger(LokiAppenderHttpsUrlConnectionReverseProxyTest.class);
|
||||
|
||||
String expectedLogLine = "Hello World";
|
||||
|
||||
// When
|
||||
logger.info(expectedLogLine);
|
||||
|
||||
// Then
|
||||
LokiAssert.assertThat(loki)
|
||||
.returns(response -> response
|
||||
.body("data.result.size()", equalTo(1))
|
||||
.body("data.result[0].stream.server", equalTo("127.0.0.1"))
|
||||
.body(
|
||||
"data.result.values",
|
||||
hasItems(
|
||||
hasItems(
|
||||
hasItems(
|
||||
containsString("INFO LokiAppenderHttpsUrlConnectionReverseProxyTest - " + expectedLogLine)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.testcontainers.containers.BindMode;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
import org.testcontainers.containers.Network;
|
||||
import org.testcontainers.containers.wait.strategy.Wait;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
@@ -17,8 +18,12 @@ import java.net.URL;
|
||||
@Testcontainers
|
||||
public class IntegrationTest {
|
||||
|
||||
public static Network network = Network.newNetwork();
|
||||
|
||||
@Container
|
||||
public GenericContainer loki = new GenericContainer("grafana/loki:2.3.0")
|
||||
.withNetwork(network)
|
||||
.withNetworkAliases("loki")
|
||||
.withCommand("-config.file=/etc/loki-config.yaml")
|
||||
.withClasspathResourceMapping("loki-config.yaml",
|
||||
"/etc/loki-config.yaml",
|
||||
@@ -31,7 +36,7 @@ public class IntegrationTest {
|
||||
.withExposedPorts(3100);
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
public void setUp() {
|
||||
System.setProperty("loki.host", loki.getHost());
|
||||
System.setProperty("loki.port", loki.getFirstMappedPort().toString());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration packages="pl.tkowalcz.tjahzi.log4j2">
|
||||
<Loggers>
|
||||
<Root level="OFF">
|
||||
</Root>
|
||||
|
||||
<Logger name="pl.tkowalcz" level="ALL">
|
||||
<AppenderRef ref="Loki"/>
|
||||
</Logger>
|
||||
</Loggers>
|
||||
|
||||
<appenders>
|
||||
<Loki name="Loki">
|
||||
<host>${sys:loki.host}</host>
|
||||
<port>${sys:loki.port}</port>
|
||||
|
||||
<useSSL>true</useSSL>
|
||||
<logEndpoint>/monitoring/loki/api/v1/push</logEndpoint>
|
||||
|
||||
<username>tjahzi</username>
|
||||
<password>tjahzi</password>
|
||||
|
||||
|
||||
<ThresholdFilter level="ALL"/>
|
||||
<PatternLayout>
|
||||
<Pattern>[%t] %d{DEFAULT} %5p %c{1} - %m%n%exception{full}</Pattern>
|
||||
</PatternLayout>
|
||||
|
||||
<Header name="server" value="127.0.0.1"/>
|
||||
<Label name="server" value="127.0.0.1"/>
|
||||
</Loki>
|
||||
</appenders>
|
||||
</configuration>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration packages="pl.tkowalcz.tjahzi.log4j2">
|
||||
<Loggers>
|
||||
<Root level="OFF">
|
||||
</Root>
|
||||
|
||||
<Logger name="pl.tkowalcz" level="ALL">
|
||||
<AppenderRef ref="Loki"/>
|
||||
</Logger>
|
||||
</Loggers>
|
||||
|
||||
<appenders>
|
||||
<Loki name="Loki">
|
||||
<url>https://${sys:loki.host}:${sys:loki.port}/monitoring/loki/api/v1/push</url>
|
||||
|
||||
<username>tjahzi</username>
|
||||
<password>tjahzi</password>
|
||||
|
||||
<ThresholdFilter level="ALL"/>
|
||||
<PatternLayout>
|
||||
<Pattern>[%t] %d{DEFAULT} %5p %c{1} - %m%n%exception{full}</Pattern>
|
||||
</PatternLayout>
|
||||
|
||||
<Header name="server" value="127.0.0.1"/>
|
||||
<Label name="server" value="127.0.0.1"/>
|
||||
</Loki>
|
||||
</appenders>
|
||||
</configuration>
|
||||
@@ -0,0 +1,12 @@
|
||||
server {
|
||||
listen 81 ssl;
|
||||
ssl_certificate nginx-selfsigned.crt;
|
||||
ssl_certificate_key nginx-selfsigned.key;
|
||||
|
||||
location /monitoring/ {
|
||||
proxy_pass http://loki:3100/;
|
||||
}
|
||||
|
||||
auth_basic "loki auth";
|
||||
auth_basic_user_file /etc/nginx/passwords;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICljCCAX4CCQDDkzDNweN3/jANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJQ
|
||||
TDAeFw0yMjA1MDMyMjA0MzRaFw0yMzA1MDMyMjA0MzRaMA0xCzAJBgNVBAYTAlBM
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6glTZOdvg9TbDu6fk/L
|
||||
pZkWFegPALIkCf+ckk+yDSpyg+kuD4XR96NdcxRrMfQBCJGfTBRnpEI4VyZD5aBf
|
||||
xRoqN6DwRrE8fN7r25C5wi3O7Xewz1NKmVnll+RnjZH84UuC3g+5RMVg7xDM8jrw
|
||||
pdQnw8EY2bBfT8G+1JLWdFBdQDByblMJv+w0LdisqbV0A/bTdLMD8a2Pw7lbciMC
|
||||
s0rrdlfcga0QsI7PsraOjVzjl29Cm09YNUjeiR4dD6ZNSAC73qdi1n9OPfrct648
|
||||
Q/kbR2jiwHzvnQUwj/UCKncs1Vxc84YDaCxiMQYyaHxvaukUFWzE3SLu/OKtpHcE
|
||||
7wIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBBRVyWs2RLG3WJoqx7ArSXAg43uikv
|
||||
D7Tvo+ZIRuX7GRtQTk5N3nhyG5EVY85j9LX1MlaTkLeuAjHFuWjgRXe6cSFThnrA
|
||||
qZRMH19jIDlTsd1YOurGrNQCST6R6YJ3rrPrcRDuLow/nO+4hD903DzzuLSjqoWw
|
||||
TRIRwEcKuX/YrXX81/uFLEonuL97N4HkDnIhPZy/ndS8qAdrH6T47XZ6jh4WYInC
|
||||
q0FNEmIjbGgTqwOh5wARP83aR6azXpS8Wb6ms2LYBd1BDuoAkqX4Hw5/iHcsqBQ8
|
||||
UNp7qAH4UQj+cgUL0MQUL07NhJpbcAuAjz6iUXyFv/bb9WR2t2h2qLOu
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHqCVNk52+D1Ns
|
||||
O7p+T8ulmRYV6A8AsiQJ/5yST7INKnKD6S4PhdH3o11zFGsx9AEIkZ9MFGekQjhX
|
||||
JkPloF/FGio3oPBGsTx83uvbkLnCLc7td7DPU0qZWeWX5GeNkfzhS4LeD7lExWDv
|
||||
EMzyOvCl1CfDwRjZsF9Pwb7UktZ0UF1AMHJuUwm/7DQt2KyptXQD9tN0swPxrY/D
|
||||
uVtyIwKzSut2V9yBrRCwjs+yto6NXOOXb0KbT1g1SN6JHh0Ppk1IALvep2LWf049
|
||||
+ty3rjxD+RtHaOLAfO+dBTCP9QIqdyzVXFzzhgNoLGIxBjJofG9q6RQVbMTdIu78
|
||||
4q2kdwTvAgMBAAECggEANRmdQjKeY2wEDeccxHdIfDRo0U60nsTCHP6kj60ud53w
|
||||
cvDTVUGMBEaolfC6ScDRfYvtR/itT9xky5jbufibP/qje8QL42FD6xoGtJCbNu+j
|
||||
9zg8CAfo8TwdefY/LEHFdc31ckXQSmAMVcisGUhftFrmcIOsrkjgMIAg1rxu2OQG
|
||||
gLhC5CCESLcGJdHnWnxuQCb81u51b5gftRgoCTRqOBiHf+uopn/cYjCOCCHIwh2I
|
||||
Dr8yVDcxUIeXzaTnUk3epR4AcYePI8A41KCqIlhQPDy6VbbZmDwHUROMD05ON88z
|
||||
/PsTUrhAvlAuYXDioxkDXCmU7/4ccUZtg+tVsQe3EQKBgQDmzjimW0RMLKvx5f9V
|
||||
PTgqrWuQssE1CuDqZAyqianyjkFzE4MteIXVzBh0JreDpKipyUcGu8QnlrS+LCsj
|
||||
W0DczdIq+WZmTFE8MmMxx5EFxEgXbyidV9P+VeBLgQ5kGYTAOfb6M8oHbSuo9mnQ
|
||||
6WZDWUwSJ5k5YFFXVjZZp4V1fQKBgQDdc3v1mr9sRwiy5AD641AgeCjmYCMm90j4
|
||||
QEZr25IgyueT7tA13O/Yi56ggiiQtkN0OjVCqtpF+piWIyEjXprUGf/0c/w16yew
|
||||
Cfv4j2+DGYqsNrPXU3yBWCOseFm221E/obmvvi8F9aSftTs83dMw9QSYgnnbkmVz
|
||||
5aPQrZT/2wKBgC3pxhEpxKtWk5naQ/HD7OFogCZXuOGBWX6nCnH+UqVisRhgQE8S
|
||||
U6VVJWQts4HnhnnIBW4MehfZ/fh6ttYguAV0mCNeW4VsFxjfeSYU6f94rVKkFTM/
|
||||
nndQw/6hHKjC/spyfXQGS2Ew0WeaJTCezW4GXICcCfoE9AloqAUrsvvNAoGBANV6
|
||||
4MLxvRtalw4tMqypubKzY2pCv2Bu/s8i10Be2U33jKtViy6BoE22uuKs1wI6UmiX
|
||||
PITaQ7U2USZbEzUPnF5f+hjkPvyThxzzYw5I6A0P8Fj4GwK3Hs1p9GntUz8tyfN3
|
||||
qpO62YX7OgokIckZZuBJM3b6QRLk3ByQAg3HaF4FAoGBANUMBR3oUC5Eb7Uzr2oy
|
||||
xY5mQ9YpN3ePzVUPc1tV8UCILksnJmobL4MFLfH0DWMQpysxBhjKwoYm1UxgYnWK
|
||||
FtJcYxAybkPvon+cCzOeVcZKQY5Kq5cjBGRKAA79fDQjiFR+mtwVY7JcaDfK8hff
|
||||
OW7UOrsm/EpNhyG4IYjH8cLd
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1 @@
|
||||
tjahzi:$apr1$7WwaD0YV$Z3WwsmYhmHM9Vsp7euiO21
|
||||
Reference in new issue
Block a user