You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hu...@apache.org on 2019/04/26 06:11:39 UTC
[incubator-dubbo] branch master updated: [Dubbo-3826] Auth support
for redis metadata report (#3888)
This is an automated email from the ASF dual-hosted git repository.
huxing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 7d83fde [Dubbo-3826] Auth support for redis metadata report (#3888)
7d83fde is described below
commit 7d83fde30e3864f7115c2650f77ee2e28bcdb051
Author: tomatofrommars <to...@users.noreply.github.com>
AuthorDate: Fri Apr 26 14:11:34 2019 +0800
[Dubbo-3826] Auth support for redis metadata report (#3888)
---
.../metadata/store/redis/RedisMetadataReport.java | 4 ++-
.../store/redis/RedisMetadataReportTest.java | 37 ++++++++++++++++++++--
2 files changed, 37 insertions(+), 4 deletions(-)
diff --git a/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
index 4f00148..42d8880 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.metadata.store.redis;
+import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -37,7 +38,8 @@ public class RedisMetadataReport extends AbstractMetadataReport {
public RedisMetadataReport(URL url) {
super(url);
- pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort());
+ int timeout = url.getParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT);
+ pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort(), timeout, url.getPassword());
}
@Override
diff --git a/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
index d7cbe34..4984bde 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
@@ -28,7 +28,10 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
import redis.clients.jedis.Jedis;
+import redis.clients.jedis.exceptions.JedisConnectionException;
+import redis.clients.jedis.exceptions.JedisDataException;
import redis.embedded.RedisServer;
import java.io.IOException;
@@ -45,13 +48,22 @@ public class RedisMetadataReportTest {
RedisMetadataReport redisMetadataReport;
RedisMetadataReport syncRedisMetadataReport;
RedisServer redisServer;
+ URL registryUrl;
@BeforeEach
- public void constructor() throws IOException {
+ public void constructor(TestInfo testInfo) throws IOException {
int redisPort = NetUtils.getAvailablePort();
- this.redisServer = new RedisServer(redisPort);
+ String methodName = testInfo.getTestMethod().get().getName();
+ if ("testAuthRedisMetadata".equals(methodName) || ("testWrongAuthRedisMetadata".equals(methodName))) {
+ String password = "チェリー";
+ redisServer = RedisServer.builder().port(redisPort).setting("requirepass " + password).build();
+ registryUrl = URL.valueOf("redis://username:" + password + "@localhost:" + redisPort);
+ } else {
+ redisServer = RedisServer.builder().port(redisPort).build();
+ registryUrl = URL.valueOf("redis://localhost:" + redisPort);
+ }
+
this.redisServer.start();
- URL registryUrl = URL.valueOf("redis://localhost:" + redisPort);
redisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(registryUrl);
URL asyncRegistryUrl = URL.valueOf("redis://localhost:" + redisPort + "?" + SYNC_REPORT_KEY + "=true");
syncRedisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(registryUrl);
@@ -173,4 +185,23 @@ public class RedisMetadataReportTest {
return consumerMetadataIdentifier;
}
+ @Test
+ public void testAuthRedisMetadata() throws ClassNotFoundException {
+ testStoreProvider(redisMetadataReport, "1.0.0.redis.md.p1", 3000);
+ }
+
+ @Test
+ public void testWrongAuthRedisMetadata() throws ClassNotFoundException {
+ registryUrl = registryUrl.setPassword("123456");
+ redisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(registryUrl);
+ try {
+ testStoreProvider(redisMetadataReport, "1.0.0.redis.md.p1", 3000);
+ } catch (RpcException e) {
+ if (e.getCause() instanceof JedisConnectionException && e.getCause().getCause() instanceof JedisDataException) {
+ Assertions.assertEquals("ERR invalid password", e.getCause().getCause().getMessage());
+ } else {
+ Assertions.fail("no invalid password exception!");
+ }
+ }
+ }
}