Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions src/main/java/com/github/sttk/sabi_redis/RedisDataSrc.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

/**
Expand All @@ -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());
}

/**
Expand All @@ -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);
}

/**
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
}
Expand Down
130 changes: 59 additions & 71 deletions src/test/java/com/github/sttk/sabi_redis/StandaloneTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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) {
Expand All @@ -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");
}
Expand All @@ -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) {
Expand All @@ -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/<unresolved>:9999");
Expand All @@ -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) {
Expand All @@ -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");
}
Expand All @@ -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) {
Expand All @@ -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/<unresolved>:9999");
Expand All @@ -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);
Expand All @@ -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) {
Expand All @@ -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/<unresolved>:9999");
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -398,6 +384,8 @@ void test_NewRedisDataSrcWithClientResourcesAndRedisURIButInvalidAddr() {
}
default -> fail(err);
}
} finally {
cr.shutdown();
}
}

Expand Down
Loading