From 7e1e88860b27abbdfeddbe5a5de4152d2a6cfb29 Mon Sep 17 00:00:00 2001 From: sttk Date: Sun, 12 Apr 2026 14:26:42 +0900 Subject: [PATCH] fix: modified treatments of ClientResources in RedisDataSrc --- .../github/sttk/sabi_redis/RedisDataSrc.java | 21 +-- .../sttk/sabi_redis/StandaloneTest.java | 130 ++++++++---------- 2 files changed, 72 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/github/sttk/sabi_redis/RedisDataSrc.java b/src/main/java/com/github/sttk/sabi_redis/RedisDataSrc.java index 6c86135..283cea7 100644 --- a/src/main/java/com/github/sttk/sabi_redis/RedisDataSrc.java +++ b/src/main/java/com/github/sttk/sabi_redis/RedisDataSrc.java @@ -71,8 +71,7 @@ public record FailToConnectToRedis(ClientResources clientResources, RedisURI red * @param uri a URI string. */ public RedisDataSrc(String uri) { - var cr = DefaultClientResources.create(); - this.redisClientFactory = new RedisClientFactoryWithUriString(cr, uri); + this.redisClientFactory = new RedisClientFactoryWithUriString(null, uri); } /** @@ -81,8 +80,7 @@ public RedisDataSrc(String uri) { * @param uri a URI object. */ public RedisDataSrc(URI uri) { - var cr = DefaultClientResources.create(); - this.redisClientFactory = new RedisClientFactoryWithUriString(cr, uri.toString()); + this.redisClientFactory = new RedisClientFactoryWithUriString(null, uri.toString()); } /** @@ -91,8 +89,7 @@ public RedisDataSrc(URI uri) { * @param redisURI a RedisURI object. */ public RedisDataSrc(RedisURI redisURI) { - var cr = DefaultClientResources.create(); - this.redisClientFactory = new RedisClientFactoryWithRedisURI(cr, redisURI); + this.redisClientFactory = new RedisClientFactoryWithRedisURI(null, redisURI); } /** @@ -191,7 +188,11 @@ private class RedisClientFactoryWithUriString implements RedisClientFactory { public RedisClient create() throws Err { RedisClient client = null; try { - client = RedisClient.create(this.cr, this.uri); + if (this.cr == null) { + client = RedisClient.create(this.uri); + } else { + client = RedisClient.create(this.cr, this.uri); + } } catch (Exception e) { throw new Err(new FailToCreateClientWithUriString(this.cr, this.uri), e); } @@ -219,7 +220,11 @@ private class RedisClientFactoryWithRedisURI implements RedisClientFactory { public RedisClient create() throws Err { RedisClient client = null; try { - client = RedisClient.create(this.cr, this.redisURI); + if (this.cr == null) { + client = RedisClient.create(this.redisURI); + } else { + client = RedisClient.create(this.cr, this.redisURI); + } } catch (Exception e) { throw new Err(new FailToCreateClientWithRedisURI(this.cr, this.redisURI), e); } diff --git a/src/test/java/com/github/sttk/sabi_redis/StandaloneTest.java b/src/test/java/com/github/sttk/sabi_redis/StandaloneTest.java index d923be0..84fe006 100644 --- a/src/test/java/com/github/sttk/sabi_redis/StandaloneTest.java +++ b/src/test/java/com/github/sttk/sabi_redis/StandaloneTest.java @@ -17,9 +17,8 @@ private StandaloneTest() {} @Test void test_NewRedisDataSrcWithUriString() { - var data = new DataHub(); - data.uses("redis", new RedisDataSrc("redis://127.0.0.1:6379/0")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc("redis://127.0.0.1:6379/0")); data.run(d -> {}); } catch (Err e) { fail(e); @@ -28,9 +27,8 @@ void test_NewRedisDataSrcWithUriString() { @Test void test_NewRedisDataSrcWithUriStringButInvalidAddr() { - var data = new DataHub(); - data.uses("redis", new RedisDataSrc("xxxx")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc("xxxx")); data.run(d -> {}); fail(); } catch (Err err) { @@ -41,7 +39,7 @@ void test_NewRedisDataSrcWithUriStringButInvalidAddr() { switch (err2.getReason()) { case RedisDataSrc.FailToCreateClientWithUriString reason2 -> { assertThat(reason2.uri()).isEqualTo("xxxx"); - assertThat(reason2.clientResources()).isNotNull(); + assertThat(reason2.clientResources()).isNull(); assertThat(err2.getCause().toString()) .isEqualTo("java.lang.IllegalArgumentException: URI scheme must not be null"); } @@ -55,9 +53,8 @@ void test_NewRedisDataSrcWithUriStringButInvalidAddr() { @Test void test_NewRedisDataSrcWithUriStringButNotFoundAddr() { - var data = new DataHub(); - data.uses("redis", new RedisDataSrc("redis://127.0.0.1:9999/0")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc("redis://127.0.0.1:9999/0")); data.run(d -> {}); fail(); } catch (Err err) { @@ -70,7 +67,7 @@ void test_NewRedisDataSrcWithUriStringButNotFoundAddr() { assertThat(reason2.redisURI().getHost()).isEqualTo("127.0.0.1"); assertThat(reason2.redisURI().getPort()).isEqualTo(9999); assertThat(reason2.redisURI().getDatabase()).isEqualTo(0); - assertThat(reason2.clientResources()).isNotNull(); + assertThat(reason2.clientResources()).isNull(); assertThat(err2.getCause().toString()) .isEqualTo( "io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1/:9999"); @@ -85,28 +82,20 @@ void test_NewRedisDataSrcWithUriStringButNotFoundAddr() { @Test void test_NewRedisDataSrcWithURI() { - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(new URI("redis://127.0.0.1:6379/0"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); } catch (Err e) { fail(e); + } catch (URISyntaxException e) { + fail(e); } } @Test void test_NewRedisDataSrcWithURIButInvalidAddr() { - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(new URI("xxxx"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); fail(); } catch (Err err) { @@ -117,7 +106,7 @@ void test_NewRedisDataSrcWithURIButInvalidAddr() { switch (err2.getReason()) { case RedisDataSrc.FailToCreateClientWithUriString reason2 -> { assertThat(reason2.uri().toString()).isEqualTo("xxxx"); - assertThat(reason2.clientResources()).isNotNull(); + assertThat(reason2.clientResources()).isNull(); assertThat(err2.getCause().toString()) .isEqualTo("java.lang.IllegalArgumentException: URI scheme must not be null"); } @@ -126,18 +115,15 @@ void test_NewRedisDataSrcWithURIButInvalidAddr() { } default -> fail(err); } + } catch (URISyntaxException e) { + fail(e); } } @Test void test_NewRedisDataSrcWithURIButNotFoundAddr() { - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(new URI("redis://127.0.0.1:9999/0"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); fail(); } catch (Err err) { @@ -150,7 +136,7 @@ void test_NewRedisDataSrcWithURIButNotFoundAddr() { assertThat(reason2.redisURI().getHost()).isEqualTo("127.0.0.1"); assertThat(reason2.redisURI().getPort()).isEqualTo(9999); assertThat(reason2.redisURI().getDatabase()).isEqualTo(0); - assertThat(reason2.clientResources()).isNotNull(); + assertThat(reason2.clientResources()).isNull(); assertThat(err2.getCause().toString()) .isEqualTo( "io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1/:9999"); @@ -160,14 +146,15 @@ void test_NewRedisDataSrcWithURIButNotFoundAddr() { } default -> fail(err); } + } catch (URISyntaxException e) { + fail(e); } } @Test void test_NewRedisDataSrcWithRedisURI() { - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(RedisURI.create("redis://127.0.0.1:6379/0"))); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(RedisURI.create("redis://127.0.0.1:6379/0"))); data.run(d -> {}); } catch (Err e) { fail(e); @@ -176,9 +163,8 @@ void test_NewRedisDataSrcWithRedisURI() { @Test void test_NewRedisDataSrcWithRedisURIButInvalidAddr() { - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(RedisURI.create("redis://127.0.0.1:9999/1"))); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(RedisURI.create("redis://127.0.0.1:9999/1"))); data.run(d -> {}); fail(); } catch (Err err) { @@ -191,7 +177,7 @@ void test_NewRedisDataSrcWithRedisURIButInvalidAddr() { assertThat(reason2.redisURI().getHost()).isEqualTo("127.0.0.1"); assertThat(reason2.redisURI().getPort()).isEqualTo(9999); assertThat(reason2.redisURI().getDatabase()).isEqualTo(1); - assertThat(reason2.clientResources()).isNotNull(); + assertThat(reason2.clientResources()).isNull(); assertThat(err2.getCause().toString()) .isEqualTo( "io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1/:9999"); @@ -207,21 +193,21 @@ void test_NewRedisDataSrcWithRedisURIButInvalidAddr() { @Test void test_NewRedisDataSrcWithClientResourcesAndUriString() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(cr, "redis://127.0.0.1:6379/0")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(cr, "redis://127.0.0.1:6379/0")); data.run(d -> {}); } catch (Err e) { fail(e); + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndUriStringButInvalidAddr() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(cr, "xxxx")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(cr, "xxxx")); data.run(d -> {}); fail(); } catch (Err err) { @@ -241,15 +227,16 @@ void test_NewRedisDataSrcWithClientResourcesAndUriStringButInvalidAddr() { } default -> fail(err); } + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndUriStringButNotFoundAddr() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(cr, "redis://127.0.0.1:9999/0")); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(cr, "redis://127.0.0.1:9999/0")); data.run(d -> {}); fail(); } catch (Err err) { @@ -272,35 +259,31 @@ void test_NewRedisDataSrcWithClientResourcesAndUriStringButNotFoundAddr() { } default -> fail(err); } + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndURI() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(cr, new URI("redis://127.0.0.1:6379/0"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); } catch (Err e) { fail(e); + } catch (URISyntaxException e) { + fail(e); + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndURIButInvalidAddr() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(cr, new URI("xxxx"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); fail(); } catch (Err err) { @@ -320,19 +303,18 @@ void test_NewRedisDataSrcWithClientResourcesAndURIButInvalidAddr() { } default -> fail(err); } + } catch (URISyntaxException e) { + fail(e); + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndURIButNotFoundAddr() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - try { + try (var data = new DataHub()) { data.uses("redis", new RedisDataSrc(cr, new URI("redis://127.0.0.1:9999/0"))); - } catch (URISyntaxException e) { - fail(e); - } - try { data.run(d -> {}); fail(); } catch (Err err) { @@ -355,27 +337,31 @@ void test_NewRedisDataSrcWithClientResourcesAndURIButNotFoundAddr() { } default -> fail(err); } + } catch (URISyntaxException e) { + fail(e); + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndRedisURI() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(cr, RedisURI.create("redis://127.0.0.1:6379/0"))); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(cr, RedisURI.create("redis://127.0.0.1:6379/0"))); data.run(d -> {}); } catch (Err e) { fail(e); + } finally { + cr.shutdown(); } } @Test void test_NewRedisDataSrcWithClientResourcesAndRedisURIButInvalidAddr() { var cr = DefaultClientResources.create(); - var data = new DataHub(); - data.uses("redis", new RedisDataSrc(cr, RedisURI.create("redis://127.0.0.1:9999/1"))); - try { + try (var data = new DataHub()) { + data.uses("redis", new RedisDataSrc(cr, RedisURI.create("redis://127.0.0.1:9999/1"))); data.run(d -> {}); fail(); } catch (Err err) { @@ -398,6 +384,8 @@ void test_NewRedisDataSrcWithClientResourcesAndRedisURIButInvalidAddr() { } default -> fail(err); } + } finally { + cr.shutdown(); } }