Skip to content

Commit 57b86c5

Browse files
willtsaiartursouzamthmuldersMukundan Sundararajandependabot[bot]
authored
Change "127.0.0.1" to SIDECAR_IP to dynamically account for IPv4 vs. IPv6 environments (#649)
* Generate updated javadocs for 1.3.1 (#643) Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Migrated out of JCenter as a Maven repository manager (#648) * Upgrade okhttp-mock dependency Version 1.3.2 was never deployed to Maven Central * No longer refer to JCenter, as it has been shut down Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * initial commit: modified ./dapr/client/DaprClientHttpTest.java unit test Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * refactored hardcoded 127.0.0.1 localhost IP to use Dapr sidecar IP Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * refactored hardcoded 127.0.0.1 localhost IP to use Dapr sidecar IP Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * cleaned up unused imports Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * fixed tabbing and imports Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * added utils for getting local host and test utils for ipv6 addresses Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Add auto-assign dapr_bot workflow (#654) Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Bump actions/setup-java from 2.3.1 to 2.4.0 (#663) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.3.1 to 2.4.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@v2.3.1...v2.4.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * added HTTP client tests for IPv6 addresses Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * fixed tests by returning SIDECAR_IP to IPv4 address Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * changes to address PMD code validation violations Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * changing back to loopback address for DEFAULT_SIDECAR_IP fallback Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Fix vault example + Upgrade Dapr CLI and runtime. (#666) * Upgrade Dapr CLI and runtime. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Fix expected vault output. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Update LICENSE to Apache 2.0 (#657) * Update LICENSE to Apache 2.0 Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Update headers to Apache 2. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Bump actions/github-script from 1 to 5 (#655) Bumps [actions/github-script](https://github.com/actions/github-script) from 1 to 5. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](actions/github-script@v1...v5) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Add DCO requirements and updated code of conduct (#669) Issue reference: dapr/docs#2039 Signed-off-by: Will <william.wl.tsai@gmail.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Bump actions/setup-java from 2.4.0 to 2.5.0 (#668) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.4.0 to 2.5.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@v2.4.0...v2.5.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Config api support (#670) * inital draft for config api Signed-off-by: Pravin Pushkar <ppushkar@microsoft.com> * Introducing new client for preview apis and code refactoring Signed-off-by: Pravin Pushkar <ppushkar@microsoft.com> * Unit tests and code refactoring Signed-off-by: Pravin Pushkar <ppushkar@microsoft.com> * Adding integration test Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Copyright changes Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Review comments fixes Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Removed DaprPreviewClientProxy and updated example README Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Adding validate workflow for cofiguration api example Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * fixing example autovalidation and code coverage Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Fixing autovalidation and removing getAllConfiguration Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Fixing review comments Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * Add regex header checkstyle. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Fix headers and add javadocs to some. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Update for next release: 1.5.0 snapshot (#672) * Update CLI and runtime to 1.6.0-rc.x Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Upgrade the version to 1.5.0-SNAPSHOT Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Update proto RC. (#674) Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Java SDK - Documentation for configuration API methods (#676) * Java SDK - Documentation for configuration API methods Signed-off-by: pravinpushkar <ppushkar@microsoft.com> * review comment fixes Signed-off-by: pravinpushkar <ppushkar@microsoft.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * Generate updated javadocs for 1.4.0 (#677) Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * address package dependency issue on integration test Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * added comment to include spec for ipv6 represention in url Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * corrected comment in NetworkUtils.getHostLoopbackAddress() Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * added comment to include spec for ipv6 represention in url Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * updated dependency scope to test Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> * fix NetworkUtils.java Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * checkstyle fix in NetworkUtils.java Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * fix imports Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * fix ipv6 formatting issues Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * fix ipv6 formatting issues Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * fix code style nits Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * refactor formatIpAddress method in actors utls Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> --------- Signed-off-by: Will Tsai <william.wl.tsai@gmail.com> Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Will <william.wl.tsai@gmail.com> Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Maarten Mulders <mthmulders@users.noreply.github.com> Co-authored-by: Mukundan Sundararajan <musundar@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: greenie-msft <56556602+greenie-msft@users.noreply.github.com> Co-authored-by: Pravin Pushkar <ppushkar@microsoft.com> Co-authored-by: Cassie Coyle <cassie@diagrid.io>
1 parent 92ccca5 commit 57b86c5

File tree

13 files changed

+293
-166
lines changed

13 files changed

+293
-166
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
.run/
55
.vs/
66
.vscode/
7+
.devcontainer/
78

89
# Output folders
910
**/target/

sdk-actors/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@
6161
<version>${grpc.version}</version>
6262
<scope>test</scope>
6363
</dependency>
64+
<dependency>
65+
<groupId>commons-validator</groupId>
66+
<artifactId>commons-validator</artifactId>
67+
<version>1.7</version>
68+
<scope>test</scope>
69+
</dependency>
6470
</dependencies>
6571

6672
<build>

sdk-actors/src/test/java/io/dapr/actors/TestUtils.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.dapr.exceptions.DaprException;
1717
import org.junit.jupiter.api.Assertions;
1818
import org.junit.jupiter.api.function.Executable;
19+
import org.apache.commons.validator.routines.InetAddressValidator;
1920

2021
public final class TestUtils {
2122

@@ -54,4 +55,12 @@ public static <T extends Throwable> void assertThrowsDaprException(
5455
Assertions.assertEquals(expectedErrorCode, daprException.getErrorCode());
5556
Assertions.assertEquals(expectedErrorMessage, daprException.getMessage());
5657
}
57-
}
58+
59+
public static String formatIpAddress(final String ipAddress) {
60+
String formattedIpAddress = ipAddress;
61+
if(InetAddressValidator.getInstance().isValidInet6Address(ipAddress)) {
62+
formattedIpAddress = "[" + ipAddress + "]"; // per URL spec https://url.spec.whatwg.org/#host-writing
63+
}
64+
return formattedIpAddress;
65+
}
66+
}

sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.junit.jupiter.api.Test;
2626
import reactor.core.publisher.Mono;
2727

28+
import static io.dapr.actors.TestUtils.formatIpAddress;
2829
import static io.dapr.actors.TestUtils.assertThrowsDaprException;
2930
import static org.junit.jupiter.api.Assertions.assertEquals;
3031

@@ -36,21 +37,40 @@ public class DaprHttpClientTest {
3637

3738
private MockInterceptor mockInterceptor;
3839

40+
private String sidecarIp;
41+
3942
private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
4043

4144
@BeforeEach
4245
public void setUp() {
46+
sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
4347
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
4448
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
4549
}
4650

4751
@Test
4852
public void invokeActorMethod() {
4953
mockInterceptor.addRule()
50-
.post("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/method/Payment")
54+
.post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
55+
.respond(EXPECTED_RESULT);
56+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
57+
DaprHttpClient = new DaprHttpClient(daprHttp);
58+
Mono<byte[]> mono =
59+
DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
60+
assertEquals(new String(mono.block()), EXPECTED_RESULT);
61+
}
62+
63+
@Test
64+
public void invokeActorMethodIPv6() {
65+
String prevSidecarIp = sidecarIp;
66+
System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
67+
sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
68+
mockInterceptor.addRule()
69+
.post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
5170
.respond(EXPECTED_RESULT);
52-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
71+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
5372
DaprHttpClient = new DaprHttpClient(daprHttp);
73+
System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
5474
Mono<byte[]> mono =
5575
DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
5676
assertEquals(new String(mono.block()), EXPECTED_RESULT);
@@ -59,12 +79,12 @@ public void invokeActorMethod() {
5979
@Test
6080
public void invokeActorMethodError() {
6181
mockInterceptor.addRule()
62-
.post("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/method/Payment")
82+
.post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
6383
.respond(404,
6484
ResponseBody.create("" +
6585
"{\"errorCode\":\"ERR_SOMETHING\"," +
6686
"\"message\":\"error message\"}", MediaTypes.MEDIATYPE_JSON));
67-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
87+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
6888
DaprHttpClient = new DaprHttpClient(daprHttp);
6989
Mono<byte[]> mono =
7090
DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());

sdk-actors/src/test/java/io/dapr/actors/runtime/DaprHttpClientTest.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import static org.junit.jupiter.api.Assertions.assertEquals;
3939
import static org.junit.jupiter.api.Assertions.assertNull;
4040
import static org.junit.jupiter.api.Assertions.fail;
41+
import static io.dapr.actors.TestUtils.formatIpAddress;
4142

4243
public class DaprHttpClientTest {
4344

@@ -46,33 +47,50 @@ public class DaprHttpClientTest {
4647
private OkHttpClient okHttpClient;
4748

4849
private MockInterceptor mockInterceptor;
50+
51+
private String sidecarIp;
4952

5053
private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
5154

5255
@BeforeEach
5356
public void setUp() throws Exception {
57+
sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
5458
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
5559
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
5660
}
5761

5862
@Test
5963
public void getActorState() {
6064
mockInterceptor.addRule()
61-
.get("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/state/order")
65+
.get("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state/order")
6266
.respond(EXPECTED_RESULT);
63-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
67+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
6468
DaprHttpClient = new DaprHttpClient(daprHttp);
6569
Mono<byte[]> mono = DaprHttpClient.getState("DemoActor", "1", "order");
6670
assertEquals(new String(mono.block()), EXPECTED_RESULT);
6771
}
6872

73+
@Test
74+
public void getActorStateIPv6() {
75+
String prevSidecarIp = sidecarIp;
76+
System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
77+
sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
78+
mockInterceptor.addRule()
79+
.get("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state/order")
80+
.respond(EXPECTED_RESULT);
81+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
82+
DaprHttpClient = new DaprHttpClient(daprHttp);
83+
System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
84+
Mono<byte[]> mono = DaprHttpClient.getState("DemoActor", "1", "order");
85+
assertEquals(new String(mono.block()), EXPECTED_RESULT);
86+
}
6987

7088
@Test
7189
public void saveActorStateTransactionally() {
7290
mockInterceptor.addRule()
73-
.put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/state")
91+
.put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state")
7492
.respond(EXPECTED_RESULT);
75-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
93+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
7694
DaprHttpClient = new DaprHttpClient(daprHttp);
7795
List<ActorStateOperation> ops = Collections.singletonList(new ActorStateOperation("UPSERT", "key", "value"));
7896
Mono<Void> mono = DaprHttpClient.saveStateTransactionally("DemoActor", "1", ops);
@@ -82,9 +100,9 @@ public void saveActorStateTransactionally() {
82100
@Test
83101
public void registerActorReminder() {
84102
mockInterceptor.addRule()
85-
.put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/reminders/reminder")
103+
.put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/reminders/reminder")
86104
.respond(EXPECTED_RESULT);
87-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
105+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
88106
DaprHttpClient = new DaprHttpClient(daprHttp);
89107
Mono<Void> mono =
90108
DaprHttpClient.registerReminder(
@@ -98,9 +116,9 @@ public void registerActorReminder() {
98116
@Test
99117
public void unregisterActorReminder() {
100118
mockInterceptor.addRule()
101-
.delete("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/reminders/reminder")
119+
.delete("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/reminders/reminder")
102120
.respond(EXPECTED_RESULT);
103-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
121+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
104122
DaprHttpClient = new DaprHttpClient(daprHttp);
105123
Mono<Void> mono = DaprHttpClient.unregisterReminder("DemoActor", "1", "reminder");
106124
assertNull(mono.block());
@@ -110,7 +128,7 @@ public void unregisterActorReminder() {
110128
public void registerActorTimer() {
111129
String data = "hello world";
112130
mockInterceptor.addRule()
113-
.put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/timers/timer")
131+
.put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/timers/timer")
114132
.answer(new RuleAnswer() {
115133
@Override
116134
public Response.Builder respond(Request request) {
@@ -132,7 +150,7 @@ public Response.Builder respond(Request request) {
132150
.body(ResponseBody.create("{}", MediaType.get("application/json")));
133151
}
134152
});
135-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
153+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
136154
DaprHttpClient = new DaprHttpClient(daprHttp);
137155
Mono<Void> mono =
138156
DaprHttpClient.registerTimer(
@@ -150,9 +168,9 @@ public Response.Builder respond(Request request) {
150168
@Test
151169
public void unregisterActorTimer() {
152170
mockInterceptor.addRule()
153-
.delete("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/timers/timer")
171+
.delete("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/timers/timer")
154172
.respond(EXPECTED_RESULT);
155-
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
173+
DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
156174
DaprHttpClient = new DaprHttpClient(daprHttp);
157175
Mono<Void> mono = DaprHttpClient.unregisterTimer("DemoActor", "1", "timer");
158176
assertNull(mono.block());

sdk-tests/src/test/java/io/dapr/it/state/HelloWorldClientIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import io.dapr.it.BaseIT;
1717
import io.dapr.it.DaprRun;
18+
import io.dapr.config.Properties;
1819
import io.dapr.v1.DaprGrpc;
1920
import io.dapr.v1.DaprProtos;
2021
import io.grpc.ManagedChannel;
@@ -34,7 +35,7 @@ public void testHelloWorldState() throws Exception {
3435
2000
3536
);
3637
ManagedChannel channel =
37-
ManagedChannelBuilder.forAddress("127.0.0.1", daprRun.getGrpcPort()).usePlaintext().build();
38+
ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), daprRun.getGrpcPort()).usePlaintext().build();
3839
DaprGrpc.DaprBlockingStub client = DaprGrpc.newBlockingStub(channel);
3940

4041
String key = "mykey";

sdk-tests/src/test/java/io/dapr/it/state/HelloWorldGrpcStateService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package io.dapr.it.state;
1515

1616
import com.google.protobuf.ByteString;
17+
import io.dapr.config.Properties;
1718
import io.dapr.v1.CommonProtos.StateItem;
1819
import io.dapr.v1.DaprGrpc;
1920
import io.dapr.v1.DaprGrpc.DaprBlockingStub;
@@ -37,7 +38,7 @@ public static void main(String[] args) {
3738

3839
// If port string is not valid, it will throw an exception.
3940
int grpcPortInt = Integer.parseInt(grpcPort);
40-
ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", grpcPortInt).usePlaintext().build();
41+
ManagedChannel channel = ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), grpcPortInt).usePlaintext().build();
4142
DaprBlockingStub client = DaprGrpc.newBlockingStub(channel);
4243

4344
String key = "mykey";

sdk/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@
128128
<artifactId>junit-jupiter-migrationsupport</artifactId>
129129
<scope>test</scope>
130130
</dependency>
131+
<dependency>
132+
<groupId>commons-validator</groupId>
133+
<artifactId>commons-validator</artifactId>
134+
<version>1.7</version>
135+
<scope>test</scope>
136+
</dependency>
131137
<dependency>
132138
<groupId>io.projectreactor</groupId>
133139
<artifactId>reactor-test</artifactId>

sdk/src/main/java/io/dapr/config/Properties.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package io.dapr.config;
1515

1616
import io.dapr.client.DaprApiProtocol;
17+
import io.dapr.utils.NetworkUtils;
1718

1819
import java.nio.charset.Charset;
1920
import java.nio.charset.StandardCharsets;
@@ -27,7 +28,7 @@ public class Properties {
2728
/**
2829
* Dapr's default IP for HTTP and gRPC communication.
2930
*/
30-
private static final String DEFAULT_SIDECAR_IP = "127.0.0.1";
31+
private static final String DEFAULT_SIDECAR_IP = NetworkUtils.getHostLoopbackAddress();
3132

3233
/**
3334
* Dapr's default HTTP port.

sdk/src/main/java/io/dapr/utils/NetworkUtils.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
import io.grpc.ManagedChannelBuilder;
2020

2121
import java.io.IOException;
22+
import java.net.InetAddress;
2223
import java.net.InetSocketAddress;
2324
import java.net.Socket;
2425
import java.net.URI;
26+
import java.net.UnknownHostException;
2527

2628
/**
2729
* Utility methods for network, internal to Dapr SDK.
@@ -112,4 +114,12 @@ private static void callWithRetry(Runnable function, long retryTimeoutMillisecon
112114
Thread.sleep(Math.min(remaining, RETRY_WAIT_MILLISECONDS));
113115
}
114116
}
115-
}
117+
118+
/**
119+
* Retrieve loopback address for the host.
120+
* @return The loopback address String
121+
*/
122+
public static String getHostLoopbackAddress() {
123+
return InetAddress.getLoopbackAddress().getHostAddress();
124+
}
125+
}

0 commit comments

Comments
 (0)