From a82e4ce9f3b1bbcf43a40d7dd5824ca6b3f04ebd Mon Sep 17 00:00:00 2001 From: Tristan Lins Date: Sat, 22 Jun 2019 12:55:31 +0200 Subject: [PATCH 1/2] SingleServerConfig#getAddress() is a String, not an URI anymore #2150 #2029 Since 0ce487f08d68fe4cde21355a9394d1967bc38d32 SingleServerConfig#getAddress() return type has changed to String. --- .../org/redisson/config/ConfigSupportTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java b/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java index 1a2aa8ac9..d00203d72 100644 --- a/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java +++ b/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java @@ -1,12 +1,10 @@ package org.redisson.config; -import com.fasterxml.jackson.databind.exc.InvalidFormatException; import mockit.Mock; import mockit.MockUp; import org.junit.Test; import java.io.IOException; -import java.net.URI; import static org.junit.Assert.*; @@ -17,7 +15,7 @@ public class ConfigSupportTest { mockHostEnv("1.1.1.1"); SingleServerConfig config = mkConfig("127.0.0.1"); - assertEquals(URI.create("redis://127.0.0.1"), config.getAddress()); + assertEquals("redis://127.0.0.1", config.getAddress()); } @Test @@ -25,13 +23,15 @@ public class ConfigSupportTest { mockHostEnv("1.1.1.1"); SingleServerConfig config = mkConfig("${REDIS_URI}"); - assertEquals(URI.create("redis://1.1.1.1"), config.getAddress()); + assertEquals("redis://1.1.1.1", config.getAddress()); } - @Test(expected = InvalidFormatException.class) + @Test public void testParsingEnv_envMissing() throws IOException { mockHostEnv(null); - mkConfig("${REDIS_URI}"); + final SingleServerConfig config = mkConfig("${REDIS_URI}"); + + assertEquals("redis://${REDIS_URI}", config.getAddress()); } @Test @@ -39,7 +39,7 @@ public class ConfigSupportTest { mockHostEnv("11.0.0.1"); SingleServerConfig config = mkConfig("${REDIS_URI:-10.0.0.1}"); - assertEquals(URI.create("redis://11.0.0.1"), config.getAddress()); + assertEquals("redis://11.0.0.1", config.getAddress()); } @Test @@ -47,7 +47,7 @@ public class ConfigSupportTest { mockHostEnv(null); SingleServerConfig config = mkConfig("${REDIS_URI:-10.0.0.1}"); - assertEquals(URI.create("redis://10.0.0.1"), config.getAddress()); + assertEquals("redis://10.0.0.1", config.getAddress()); } private SingleServerConfig mkConfig(String authorityValue) throws IOException { From 52007ecc91df8629c30730e93105043252adc72d Mon Sep 17 00:00:00 2001 From: Tristan Lins Date: Sat, 22 Jun 2019 13:03:03 +0200 Subject: [PATCH 2/2] Allow usage of multiple env variables with default values in one config entry --- .../org/redisson/config/ConfigSupport.java | 2 +- .../redisson/config/ConfigSupportTest.java | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/config/ConfigSupport.java b/redisson/src/main/java/org/redisson/config/ConfigSupport.java index c67935969..37c821e65 100644 --- a/redisson/src/main/java/org/redisson/config/ConfigSupport.java +++ b/redisson/src/main/java/org/redisson/config/ConfigSupport.java @@ -101,7 +101,7 @@ public class ConfigSupport { } private String resolveEnvParams(String content) { - Pattern pattern = Pattern.compile("\\$\\{(\\w+(:-.+)?)\\}"); + Pattern pattern = Pattern.compile("\\$\\{(\\w+(:-.+?)?)\\}"); Matcher m = pattern.matcher(content); while (m.find()) { String[] parts = m.group(1).split(":-"); diff --git a/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java b/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java index d00203d72..5d3ad9747 100644 --- a/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java +++ b/redisson/src/test/java/org/redisson/config/ConfigSupportTest.java @@ -26,6 +26,14 @@ public class ConfigSupportTest { assertEquals("redis://1.1.1.1", config.getAddress()); } + @Test + public void testParsingEnv2() throws IOException { + mockHostPortEnv("1.1.1.1", "6379"); + SingleServerConfig config = mkConfig("${REDIS_HOST}:${REDIS_PORT}"); + + assertEquals("redis://1.1.1.1:6379", config.getAddress()); + } + @Test public void testParsingEnv_envMissing() throws IOException { mockHostEnv(null); @@ -42,6 +50,14 @@ public class ConfigSupportTest { assertEquals("redis://11.0.0.1", config.getAddress()); } + @Test + public void testParsingDefault_envPresent2() throws IOException { + mockHostPortEnv("11.0.0.1", "1234"); + SingleServerConfig config = mkConfig("${REDIS_HOST:-127.0.0.1}:${REDIS_PORT:-6379}"); + + assertEquals("redis://11.0.0.1:1234", config.getAddress()); + } + @Test public void testParsingDefault_envMissing() throws IOException { mockHostEnv(null); @@ -50,6 +66,14 @@ public class ConfigSupportTest { assertEquals("redis://10.0.0.1", config.getAddress()); } + @Test + public void testParsingDefault_envMissing2() throws IOException { + mockHostPortEnv(null, null); + SingleServerConfig config = mkConfig("${REDIS_HOST:-127.0.0.1}:${REDIS_PORT:-6379}"); + + assertEquals("redis://127.0.0.1:6379", config.getAddress()); + } + private SingleServerConfig mkConfig(String authorityValue) throws IOException { String config = "singleServerConfig:\n address: redis://" + authorityValue; return new ConfigSupport().fromYAML(config, Config.class).getSingleServerConfig(); @@ -64,4 +88,20 @@ public class ConfigSupportTest { }; } + private void mockHostPortEnv(String host, String port) { + new MockUp() { + @Mock + String getenv(String name) { + switch (name) { + case "REDIS_HOST": + return host; + case "REDIS_PORT": + return port; + default: + return null; + } + } + }; + } + }