Skip to content

Commit 1c971b1

Browse files
rmarticabaRoberto Martinez Caballerovy
authored
Add username configuration (#134)
Add username configuration and adapt tests accordingly. --------- Co-authored-by: Roberto Martinez Caballero <[email protected]> Co-authored-by: Volkan Yazıcı <[email protected]>
1 parent 6c063f4 commit 1c971b1

File tree

8 files changed

+36
-14
lines changed

8 files changed

+36
-14
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ Note that `sentinelNodes` and `sentinelMaster` have priority over `host` and
102102
| `port` | int | 6379 | Redis port |
103103
| `sentinelNodes` | String | `null` | Redis sentinel nodes as comma-separated list, e.g., `host1:port1,host2:port2`. If specified, `host` and `port` parameters are ignored. |
104104
| `sentinelMaster` | String | `null` | Redis sentinel master name |
105+
| `username` | String | `null` | Redis username |
105106
| `password` | String | `null` | Redis password |
106107
| `connectionTimeoutSeconds` | int | 2 | initial connection timeout in seconds |
107108
| `socketTimeoutSeconds` | int | 2 | socket timeout in seconds |

appender/src/main/java/com/vlkan/log4j2/redis/appender/RedisAppender.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public class RedisAppender implements Appender {
7575

7676
private final int port;
7777

78+
private final String username;
79+
7880
private final String password;
7981

8082
private final int connectionTimeoutSeconds;
@@ -107,6 +109,7 @@ private RedisAppender(Builder builder) {
107109
this.keyBytes = builder.key.getBytes(builder.charset);
108110
this.host = builder.host;
109111
this.port = builder.port;
112+
this.username = builder.username;
110113
this.password = builder.password;
111114
this.connectionTimeoutSeconds = builder.connectionTimeoutSeconds;
112115
this.socketTimeoutSeconds = builder.socketTimeoutSeconds;
@@ -243,6 +246,7 @@ private void connect() {
243246
poolConfig.getJedisPoolConfig(),
244247
connectionTimeoutMillis,
245248
socketTimeoutMillis,
249+
username,
246250
password,
247251
database,
248252
null); // clientName
@@ -253,6 +257,7 @@ private void connect() {
253257
port,
254258
connectionTimeoutMillis,
255259
socketTimeoutMillis,
260+
username,
256261
password,
257262
database,
258263
null, // clientName
@@ -331,6 +336,9 @@ public static class Builder implements org.apache.logging.log4j.core.util.Builde
331336
@PluginBuilderAttribute
332337
private String host = "localhost";
333338

339+
@PluginBuilderAttribute
340+
private String username = null;
341+
334342
@PluginBuilderAttribute
335343
private String password = null;
336344

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisAppenderReconnectTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ class RedisAppenderReconnectTest {
4141

4242
private final int redisPort = NetworkUtils.findUnusedPort(redisHost);
4343

44+
private final String redisUsername = String.format("%s-RedisUsername-%s:%d", CLASS_NAME, redisHost, redisPort);
45+
4446
private final String redisPassword = String.format("%s-RedisPassword-%s:%d", CLASS_NAME, redisHost, redisPort);
4547

4648
private final String redisKey = String.format("%s-RedisKey-%s:%d", CLASS_NAME, redisHost, redisPort);
@@ -49,11 +51,11 @@ class RedisAppenderReconnectTest {
4951

5052
@Order(1)
5153
@RegisterExtension
52-
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisPassword);
54+
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisUsername, redisPassword);
5355

5456
@Order(2)
5557
@RegisterExtension
56-
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisPassword);
58+
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisUsername, redisPassword);
5759

5860
@Order(3)
5961
@RegisterExtension
@@ -65,6 +67,7 @@ class RedisAppenderReconnectTest {
6567
.newAppender(redisAppenderName, "RedisAppender")
6668
.addAttribute("host", redisHost)
6769
.addAttribute("port", redisPort)
70+
.addAttribute("username", redisUsername)
6871
.addAttribute("password", redisPassword)
6972
.addAttribute("key", redisKey)
7073
.addAttribute("ignoreExceptions", false)
@@ -148,7 +151,7 @@ void append_should_work_when_server_becomes_reachable_again() {
148151
LOGGER.debug("{} starting server again", LOGGER_PREFIX);
149152
redisServer.start();
150153
jedis.connect();
151-
jedis.auth(redisPassword);
154+
jedis.auth(redisUsername, redisPassword);
152155

153156
// Try to append the 4th message.
154157
LOGGER.debug("{} logging the 4th message", LOGGER_PREFIX);

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisAppenderSentinelTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public class RedisAppenderSentinelTest {
4747

4848
private final String redisSentinelMasterName = String.format("%s-RedisSentinelMasterName-%s:%d", CLASS_NAME, redisHost, redisPort);
4949

50+
private final String redisUsername = String.format("%s-RedisUsername-%s:%d", CLASS_NAME, redisHost, redisPort);
51+
5052
private final String redisPassword = String.format("%s-RedisPassword-%s:%d", CLASS_NAME, redisHost, redisPort);
5153

5254
private final String redisKey = String.format("%s-RedisKey-%s:%d", CLASS_NAME, redisHost, redisPort);
@@ -55,7 +57,7 @@ public class RedisAppenderSentinelTest {
5557

5658
@Order(1)
5759
@RegisterExtension
58-
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisPassword);
60+
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisUsername, redisPassword);
5961

6062
@Order(2)
6163
@RegisterExtension
@@ -64,7 +66,7 @@ public class RedisAppenderSentinelTest {
6466

6567
@Order(3)
6668
@RegisterExtension
67-
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisPassword);
69+
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisUsername, redisPassword);
6870

6971
@Order(4)
7072
@RegisterExtension
@@ -76,6 +78,7 @@ public class RedisAppenderSentinelTest {
7678
.newAppender(redisAppenderName, "RedisAppender")
7779
.addAttribute("sentinelNodes", redisHost + ":" + redisSentinelPort)
7880
.addAttribute("sentinelMaster", redisSentinelMasterName)
81+
.addAttribute("username", redisUsername)
7982
.addAttribute("password", redisPassword)
8083
.addAttribute("key", redisKey)
8184
.addAttribute("ignoreExceptions", false)

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisAppenderShutdownTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class RedisAppenderShutdownTest {
3535

3636
private final int redisPort = NetworkUtils.findUnusedPort(redisHost);
3737

38+
private final String redisUsername = String.format("%s-RedisUsername-%s:%d", CLASS_NAME, redisHost, redisPort);
39+
3840
private final String redisPassword = String.format("%s-RedisPassword-%s:%d", CLASS_NAME, redisHost, redisPort);
3941

4042
private final String redisKey = String.format("%s-RedisKey-%s:%d", CLASS_NAME, redisHost, redisPort);
@@ -43,11 +45,11 @@ class RedisAppenderShutdownTest {
4345

4446
@Order(1)
4547
@RegisterExtension
46-
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisPassword);
48+
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisUsername, redisPassword);
4749

4850
@Order(2)
4951
@RegisterExtension
50-
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisPassword);
52+
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisUsername, redisPassword);
5153

5254
@Order(3)
5355
@RegisterExtension
@@ -59,6 +61,7 @@ class RedisAppenderShutdownTest {
5961
.newAppender(redisAppenderName, "RedisAppender")
6062
.addAttribute("host", redisHost)
6163
.addAttribute("port", redisPort)
64+
.addAttribute("username", redisUsername)
6265
.addAttribute("password", redisPassword)
6366
.addAttribute("key", redisKey)
6467
.addAttribute("ignoreExceptions", false)

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisAppenderTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,19 @@ class RedisAppenderTest {
4343

4444
private final String redisPassword = String.format("%s-RedisPassword-%s:%d", CLASS_NAME, redisHost, redisPort);
4545

46+
private final String redisUsername = String.format("%s-RedisUsername-%s:%d", CLASS_NAME, redisHost, redisPort);
47+
4648
private final String redisKey = String.format("%s-RedisKey-%s:%d", CLASS_NAME, redisHost, redisPort);
4749

4850
private final String redisAppenderName = String.format("%s-RedisAppender-%s-%d", CLASS_NAME, redisHost, redisPort);
4951

5052
@Order(1)
5153
@RegisterExtension
52-
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisPassword);
54+
final RedisServerExtension redisServerExtension = new RedisServerExtension(redisPort, redisUsername, redisPassword);
5355

5456
@Order(2)
5557
@RegisterExtension
56-
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisPassword);
58+
final RedisClientExtension redisClientExtension = new RedisClientExtension(redisHost, redisPort, redisUsername, redisPassword);
5759

5860
@Order(3)
5961
@RegisterExtension
@@ -65,6 +67,7 @@ class RedisAppenderTest {
6567
.newAppender(redisAppenderName, "RedisAppender")
6668
.addAttribute("host", redisHost)
6769
.addAttribute("port", redisPort)
70+
.addAttribute("username", redisUsername)
6871
.addAttribute("password", redisPassword)
6972
.addAttribute("key", redisKey)
7073
.addAttribute("ignoreExceptions", false)
@@ -98,7 +101,6 @@ void appended_messages_should_be_persisted() {
98101
for (RedisTestMessage expectedLogMessage : expectedLogMessages) {
99102
logger.log(expectedLogMessage.level, expectedLogMessage.message);
100103
}
101-
102104
// Verify the logging.
103105
verifyLogging(expectedLogMessages, expectedMessageCount, expectedMessageCount);
104106

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisClientExtension.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ class RedisClientExtension implements BeforeEachCallback, AfterEachCallback {
3030

3131
private final int port;
3232

33+
private final String username ;
3334
private final String password;
3435

3536
private final Jedis client;
3637

37-
RedisClientExtension(String host, int port, String password) {
38+
RedisClientExtension(String host, int port, String username, String password) {
3839
this.host = host;
3940
this.port = port;
41+
this.username = username;
4042
this.password = password;
4143
this.client = new Jedis(host, port);
4244
}
@@ -45,7 +47,7 @@ class RedisClientExtension implements BeforeEachCallback, AfterEachCallback {
4547
public void beforeEach(ExtensionContext ignored) {
4648
LOGGER.debug("starting Redis client (host={}, port={})", host, port);
4749
client.connect();
48-
client.auth(password);
50+
client.auth(username, password);
4951
}
5052

5153
@Override

appender/src/test/java/com/vlkan/log4j2/redis/appender/RedisServerExtension.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ class RedisServerExtension implements BeforeEachCallback, AfterEachCallback {
3030

3131
private final RedisServer redisServer;
3232

33-
RedisServerExtension(int port, String password) {
33+
RedisServerExtension(int port, String username, String password) {
3434
this.port = port;
3535
try {
3636
this.redisServer = RedisServer
3737
.builder()
3838
.port(port)
3939
.bind("0.0.0.0")
40-
.setting("requirepass " + password)
40+
.setting("user " + username + " on -debug +@all ~* >" + password)
4141
.build();
4242
} catch (Exception error) {
4343
String message = String.format("failed creating Redis server (port=%d)", port);

0 commit comments

Comments
 (0)