diff --git a/.gitignore b/.gitignore
index db715d5666..76cb9c94c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
.run/
.vs/
.vscode/
+.devcontainer/
# Output folders
**/target/
diff --git a/sdk-actors/pom.xml b/sdk-actors/pom.xml
index ddabdf49bf..7c2b60cde2 100644
--- a/sdk-actors/pom.xml
+++ b/sdk-actors/pom.xml
@@ -61,6 +61,12 @@
${grpc.version}
test
+
+ commons-validator
+ commons-validator
+ 1.7
+ test
+
diff --git a/sdk-actors/src/test/java/io/dapr/actors/TestUtils.java b/sdk-actors/src/test/java/io/dapr/actors/TestUtils.java
index 86ccccceed..5ccc453862 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/TestUtils.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/TestUtils.java
@@ -16,6 +16,7 @@
import io.dapr.exceptions.DaprException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.function.Executable;
+import org.apache.commons.validator.routines.InetAddressValidator;
public final class TestUtils {
@@ -54,4 +55,12 @@ public static void assertThrowsDaprException(
Assertions.assertEquals(expectedErrorCode, daprException.getErrorCode());
Assertions.assertEquals(expectedErrorMessage, daprException.getMessage());
}
-}
+
+ public static String formatIpAddress(final String ipAddress) {
+ String formattedIpAddress = ipAddress;
+ if(InetAddressValidator.getInstance().isValidInet6Address(ipAddress)) {
+ formattedIpAddress = "[" + ipAddress + "]"; // per URL spec https://url.spec.whatwg.org/#host-writing
+ }
+ return formattedIpAddress;
+ }
+}
\ No newline at end of file
diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
index 634780a5f0..69e47bfd0b 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
@@ -25,6 +25,7 @@
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;
+import static io.dapr.actors.TestUtils.formatIpAddress;
import static io.dapr.actors.TestUtils.assertThrowsDaprException;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,10 +37,13 @@ public class DaprHttpClientTest {
private MockInterceptor mockInterceptor;
+ private String sidecarIp;
+
private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
@BeforeEach
public void setUp() {
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
}
@@ -47,10 +51,26 @@ public void setUp() {
@Test
public void invokeActorMethod() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/method/Payment")
+ .post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
+ .respond(EXPECTED_RESULT);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
+ DaprHttpClient = new DaprHttpClient(daprHttp);
+ Mono mono =
+ DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
+ assertEquals(new String(mono.block()), EXPECTED_RESULT);
+ }
+
+ @Test
+ public void invokeActorMethodIPv6() {
+ String prevSidecarIp = sidecarIp;
+ System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
+ mockInterceptor.addRule()
+ .post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
+ System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
Mono mono =
DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
assertEquals(new String(mono.block()), EXPECTED_RESULT);
@@ -59,12 +79,12 @@ public void invokeActorMethod() {
@Test
public void invokeActorMethodError() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/method/Payment")
+ .post("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/method/Payment")
.respond(404,
ResponseBody.create("" +
"{\"errorCode\":\"ERR_SOMETHING\"," +
"\"message\":\"error message\"}", MediaTypes.MEDIATYPE_JSON));
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono =
DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/DaprHttpClientTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/DaprHttpClientTest.java
index a267452a68..2a20d5bc13 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/runtime/DaprHttpClientTest.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/DaprHttpClientTest.java
@@ -38,6 +38,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.fail;
+import static io.dapr.actors.TestUtils.formatIpAddress;
public class DaprHttpClientTest {
@@ -46,11 +47,14 @@ public class DaprHttpClientTest {
private OkHttpClient okHttpClient;
private MockInterceptor mockInterceptor;
+
+ private String sidecarIp;
private final String EXPECTED_RESULT = "{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
@BeforeEach
public void setUp() throws Exception {
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
}
@@ -58,21 +62,35 @@ public void setUp() throws Exception {
@Test
public void getActorState() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/state/order")
+ .get("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state/order")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono = DaprHttpClient.getState("DemoActor", "1", "order");
assertEquals(new String(mono.block()), EXPECTED_RESULT);
}
+ @Test
+ public void getActorStateIPv6() {
+ String prevSidecarIp = sidecarIp;
+ System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
+ mockInterceptor.addRule()
+ .get("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state/order")
+ .respond(EXPECTED_RESULT);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
+ DaprHttpClient = new DaprHttpClient(daprHttp);
+ System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
+ Mono mono = DaprHttpClient.getState("DemoActor", "1", "order");
+ assertEquals(new String(mono.block()), EXPECTED_RESULT);
+ }
@Test
public void saveActorStateTransactionally() {
mockInterceptor.addRule()
- .put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/state")
+ .put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/state")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
List ops = Collections.singletonList(new ActorStateOperation("UPSERT", "key", "value"));
Mono mono = DaprHttpClient.saveStateTransactionally("DemoActor", "1", ops);
@@ -82,9 +100,9 @@ public void saveActorStateTransactionally() {
@Test
public void registerActorReminder() {
mockInterceptor.addRule()
- .put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/reminders/reminder")
+ .put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/reminders/reminder")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono =
DaprHttpClient.registerReminder(
@@ -98,9 +116,9 @@ public void registerActorReminder() {
@Test
public void unregisterActorReminder() {
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/reminders/reminder")
+ .delete("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/reminders/reminder")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono = DaprHttpClient.unregisterReminder("DemoActor", "1", "reminder");
assertNull(mono.block());
@@ -110,7 +128,7 @@ public void unregisterActorReminder() {
public void registerActorTimer() {
String data = "hello world";
mockInterceptor.addRule()
- .put("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/timers/timer")
+ .put("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/timers/timer")
.answer(new RuleAnswer() {
@Override
public Response.Builder respond(Request request) {
@@ -132,7 +150,7 @@ public Response.Builder respond(Request request) {
.body(ResponseBody.create("{}", MediaType.get("application/json")));
}
});
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono =
DaprHttpClient.registerTimer(
@@ -150,9 +168,9 @@ public Response.Builder respond(Request request) {
@Test
public void unregisterActorTimer() {
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/actors/DemoActor/1/timers/timer")
+ .delete("http://" + sidecarIp + ":3000/v1.0/actors/DemoActor/1/timers/timer")
.respond(EXPECTED_RESULT);
- DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ DaprHttp daprHttp = new DaprHttpProxy(sidecarIp, 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono = DaprHttpClient.unregisterTimer("DemoActor", "1", "timer");
assertNull(mono.block());
diff --git a/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldClientIT.java b/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldClientIT.java
index d7bec5cbb5..577d8b72d1 100644
--- a/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldClientIT.java
+++ b/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldClientIT.java
@@ -15,6 +15,7 @@
import io.dapr.it.BaseIT;
import io.dapr.it.DaprRun;
+import io.dapr.config.Properties;
import io.dapr.v1.DaprGrpc;
import io.dapr.v1.DaprProtos;
import io.grpc.ManagedChannel;
@@ -34,7 +35,7 @@ public void testHelloWorldState() throws Exception {
2000
);
ManagedChannel channel =
- ManagedChannelBuilder.forAddress("127.0.0.1", daprRun.getGrpcPort()).usePlaintext().build();
+ ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), daprRun.getGrpcPort()).usePlaintext().build();
DaprGrpc.DaprBlockingStub client = DaprGrpc.newBlockingStub(channel);
String key = "mykey";
diff --git a/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldGrpcStateService.java b/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldGrpcStateService.java
index 96fd79f519..d3446a27b7 100644
--- a/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldGrpcStateService.java
+++ b/sdk-tests/src/test/java/io/dapr/it/state/HelloWorldGrpcStateService.java
@@ -14,6 +14,7 @@
package io.dapr.it.state;
import com.google.protobuf.ByteString;
+import io.dapr.config.Properties;
import io.dapr.v1.CommonProtos.StateItem;
import io.dapr.v1.DaprGrpc;
import io.dapr.v1.DaprGrpc.DaprBlockingStub;
@@ -37,7 +38,7 @@ public static void main(String[] args) {
// If port string is not valid, it will throw an exception.
int grpcPortInt = Integer.parseInt(grpcPort);
- ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", grpcPortInt).usePlaintext().build();
+ ManagedChannel channel = ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), grpcPortInt).usePlaintext().build();
DaprBlockingStub client = DaprGrpc.newBlockingStub(channel);
String key = "mykey";
diff --git a/sdk/pom.xml b/sdk/pom.xml
index 622a41aef4..5f876e8367 100644
--- a/sdk/pom.xml
+++ b/sdk/pom.xml
@@ -128,6 +128,12 @@
junit-jupiter-migrationsupport
test
+
+ commons-validator
+ commons-validator
+ 1.7
+ test
+
io.projectreactor
reactor-test
diff --git a/sdk/src/main/java/io/dapr/config/Properties.java b/sdk/src/main/java/io/dapr/config/Properties.java
index f4c4ba6033..2ceeffb4a4 100644
--- a/sdk/src/main/java/io/dapr/config/Properties.java
+++ b/sdk/src/main/java/io/dapr/config/Properties.java
@@ -14,6 +14,7 @@
package io.dapr.config;
import io.dapr.client.DaprApiProtocol;
+import io.dapr.utils.NetworkUtils;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
@@ -27,7 +28,7 @@ public class Properties {
/**
* Dapr's default IP for HTTP and gRPC communication.
*/
- private static final String DEFAULT_SIDECAR_IP = "127.0.0.1";
+ private static final String DEFAULT_SIDECAR_IP = NetworkUtils.getHostLoopbackAddress();
/**
* Dapr's default HTTP port.
diff --git a/sdk/src/main/java/io/dapr/utils/NetworkUtils.java b/sdk/src/main/java/io/dapr/utils/NetworkUtils.java
index e5b4ad0f2b..8929d898c7 100644
--- a/sdk/src/main/java/io/dapr/utils/NetworkUtils.java
+++ b/sdk/src/main/java/io/dapr/utils/NetworkUtils.java
@@ -19,9 +19,11 @@
import io.grpc.ManagedChannelBuilder;
import java.io.IOException;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URI;
+import java.net.UnknownHostException;
/**
* Utility methods for network, internal to Dapr SDK.
@@ -112,4 +114,12 @@ private static void callWithRetry(Runnable function, long retryTimeoutMillisecon
Thread.sleep(Math.min(remaining, RETRY_WAIT_MILLISECONDS));
}
}
-}
+
+ /**
+ * Retrieve loopback address for the host.
+ * @return The loopback address String
+ */
+ public static String getHostLoopbackAddress() {
+ return InetAddress.getLoopbackAddress().getHostAddress();
+ }
+}
\ No newline at end of file
diff --git a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
index 34ec5396a7..9592377a2f 100644
--- a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
+++ b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
@@ -72,6 +72,8 @@
import static io.dapr.utils.TestUtils.assertThrowsDaprException;
import static io.dapr.utils.TestUtils.findFreePort;
+import static io.dapr.utils.TestUtils.formatIpAddress;
+
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
@@ -85,6 +87,8 @@ public class DaprClientHttpTest {
private final String EXPECTED_RESULT =
"{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
+
+ private String sidecarIp;
private DaprClient daprClientHttp;
@@ -98,9 +102,10 @@ public class DaprClientHttpTest {
@BeforeEach
public void setUp() {
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
- daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ daprHttp = new DaprHttp(sidecarIp, 3000, okHttpClient);
daprClientHttp = new DaprClientProxy(new DaprClientHttp(daprHttp));
daprClientHttpXML = new DaprClientProxy(new DaprClientHttp(daprHttp, new XmlSerializer(), new XmlSerializer()));
}
@@ -186,7 +191,7 @@ public void waitForSidecarSlowSuccessfulHealthCheck() throws Exception {
public void waitForSidecarOK() throws Exception {
int port = findFreePort();
System.setProperty(Properties.HTTP_PORT.getName(), Integer.toString(port));
- daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), port, okHttpClient);
+ daprHttp = new DaprHttp(sidecarIp, port, okHttpClient);
DaprClientHttp daprClientHttp = new DaprClientHttp(daprHttp);
mockInterceptor.addRule()
@@ -217,7 +222,7 @@ public void waitForSidecarTimeoutOK() throws Exception {
}
});
t.start();
- daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), port, okHttpClient);
+ daprHttp = new DaprHttp(sidecarIp, port, okHttpClient);
DaprClientHttp daprClientHttp = new DaprClientHttp(daprHttp);
daprClientHttp.waitForSidecar(10000).block();
}
@@ -226,19 +231,35 @@ public void waitForSidecarTimeoutOK() throws Exception {
@Test
public void publishEventInvocation() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/mypubsubname/A")
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/mypubsubname/A")
.respond(EXPECTED_RESULT);
String event = "{ \"message\": \"This is a test\" }";
- daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
+ daprHttp = new DaprHttp(sidecarIp, 3000, okHttpClient);
DaprClientHttp daprClientHttp = new DaprClientHttp(daprHttp);
Mono mono = daprClientHttp.publishEvent("mypubsubname", "A", event, null);
assertNull(mono.block());
}
+ @Test
+ public void publishEventInvocationIPv6() {
+ String prevSidecarIp = sidecarIp;
+ System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
+ mockInterceptor.addRule()
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/mypubsubname/A")
+ .respond(EXPECTED_RESULT);
+ String event = "{ \"message\": \"This is a test\" }";
+ daprHttp = new DaprHttp(sidecarIp, 3000, okHttpClient);
+ daprClientHttp = new DaprClientHttp(daprHttp);
+ System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
+ Mono mono = daprClientHttp.publishEvent("mypubsubname", "A", event, null);
+ assertNull(mono.block());
+ }
+
@Test
public void publishEvent() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/mypubsubname/A")
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/mypubsubname/A")
.header("content-type", "application/json")
.respond(EXPECTED_RESULT);
String event = "{ \"message\": \"This is a test\" }";
@@ -250,7 +271,7 @@ public void publishEvent() {
@Test
public void publishEventContentTypeOverride() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/mypubsubname/A")
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/mypubsubname/A")
.header("content-type", "text/plain")
.respond(EXPECTED_RESULT);
String event = "{ \"message\": \"This is a test\" }";
@@ -284,7 +305,7 @@ public void publishEventIfPubsubIsNullOrEmpty() {
@Test
public void publishEventNoHotMono() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/mypubsubname/A")
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/mypubsubname/A")
.respond(EXPECTED_RESULT);
String event = "{ \"message\": \"This is a test\" }";
@@ -295,8 +316,8 @@ public void publishEventNoHotMono() {
@Test
public void invokeServiceVerbNull() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/A")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/A")
+ .respond(EXPECTED_RESULT);
String event = "{ \"message\": \"This is a test\" }";
assertThrows(IllegalArgumentException.class, () ->
@@ -306,7 +327,7 @@ public void invokeServiceVerbNull() {
@Test
public void invokeServiceIllegalArgumentException() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/badorder")
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/badorder")
.respond("INVALID JSON");
assertThrows(IllegalArgumentException.class, () -> {
@@ -342,7 +363,7 @@ public void invokeServiceIllegalArgumentException() {
@Test
public void invokeServiceDaprError() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/invoke/myapp/method/mymethod")
+ .post("http://" + sidecarIp + ":3000/v1.0/invoke/myapp/method/mymethod")
.respond(500,
ResponseBody.create(
"{ \"errorCode\": \"MYCODE\", \"message\": \"My Message\"}",
@@ -359,7 +380,7 @@ public void invokeServiceDaprError() {
@Test
public void invokeServiceDaprErrorFromGRPC() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/invoke/myapp/method/mymethod")
+ .post("http://" + sidecarIp + ":3000/v1.0/invoke/myapp/method/mymethod")
.respond(500,
ResponseBody.create(
"{ \"code\": 7 }",
@@ -376,7 +397,7 @@ public void invokeServiceDaprErrorFromGRPC() {
@Test
public void invokeServiceDaprErrorUnknownJSON() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/invoke/myapp/method/mymethod")
+ .post("http://" + sidecarIp + ":3000/v1.0/invoke/myapp/method/mymethod")
.respond(500,
ResponseBody.create(
"{ \"anything\": 7 }",
@@ -394,7 +415,7 @@ public void invokeServiceDaprErrorUnknownJSON() {
@Test
public void invokeServiceDaprErrorEmptyString() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/invoke/myapp/method/mymethod")
+ .post("http://" + sidecarIp + ":3000/v1.0/invoke/myapp/method/mymethod")
.respond(500,
ResponseBody.create(
"",
@@ -412,8 +433,8 @@ public void invokeServiceDaprErrorEmptyString() {
@Test
public void invokeServiceMethodNull() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/publish/A")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/publish/A")
+ .respond(EXPECTED_RESULT);
assertThrows(IllegalArgumentException.class, () ->
daprClientHttp.invokeMethod("1", "", null, HttpExtension.POST, null, (Class)null).block());
@@ -422,7 +443,7 @@ public void invokeServiceMethodNull() {
@Test
public void invokeService() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
.respond("\"hello world\"");
Mono mono = daprClientHttp.invokeMethod("41", "neworder", null, HttpExtension.GET, null, String.class);
@@ -432,7 +453,7 @@ public void invokeService() {
@Test
public void invokeServiceNullResponse() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
.respond(new byte[0]);
Mono mono = daprClientHttp.invokeMethod("41", "neworder", null, HttpExtension.GET, null, String.class);
@@ -442,8 +463,8 @@ public void invokeServiceNullResponse() {
@Test
public void simpleInvokeService() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
- .respond(EXPECTED_RESULT);
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.invokeMethod("41", "neworder", null, HttpExtension.GET, byte[].class);
assertEquals(new String(mono.block()), EXPECTED_RESULT);
@@ -453,8 +474,8 @@ public void simpleInvokeService() {
public void invokeServiceWithMetadataMap() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
- .respond(EXPECTED_RESULT);
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.invokeMethod("41", "neworder", (byte[]) null, HttpExtension.GET, map);
String monoString = new String(mono.block());
@@ -465,8 +486,8 @@ public void invokeServiceWithMetadataMap() {
public void invokeServiceWithOutRequest() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
- .respond(EXPECTED_RESULT);
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.invokeMethod("41", "neworder", HttpExtension.GET, map);
assertNull(mono.block());
@@ -476,8 +497,8 @@ public void invokeServiceWithOutRequest() {
public void invokeServiceWithRequest() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
- .respond(EXPECTED_RESULT);
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.invokeMethod("41", "neworder", "", HttpExtension.GET, map);
assertNull(mono.block());
@@ -487,7 +508,7 @@ public void invokeServiceWithRequest() {
public void invokeServiceWithRequestAndQueryString() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder?param1=1¶m2=a¶m2=b%2Fc")
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder?param1=1¶m2=a¶m2=b%2Fc")
.respond(EXPECTED_RESULT);
Map> queryString = new HashMap<>();
@@ -502,7 +523,7 @@ public void invokeServiceWithRequestAndQueryString() {
public void invokeServiceNoHotMono() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
.respond(500);
daprClientHttp.invokeMethod("41", "neworder", "", HttpExtension.GET, map);
@@ -518,7 +539,7 @@ public void invokeServiceWithContext() {
.put("tracestate", tracestate)
.put("not_added", "xyz");
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/invoke/41/method/neworder")
+ .post("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
.header("traceparent", traceparent)
.header("tracestate", tracestate)
.respond(new byte[0]);
@@ -535,7 +556,7 @@ public void invokeServiceWithContext() {
public void invokeBinding() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
.respond("");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "");
@@ -546,7 +567,7 @@ public void invokeBinding() {
public void invokeBindingNullData() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
.respond("");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", null);
@@ -556,7 +577,7 @@ public void invokeBindingNullData() {
@Test
public void invokeBindingErrors() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
.respond("NOT VALID JSON");
assertThrows(IllegalArgumentException.class, () -> {
@@ -579,7 +600,7 @@ public void invokeBindingErrors() {
@Test
public void invokeBindingResponseNull() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
.respond(new byte[0]);
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, String.class);
@@ -589,8 +610,8 @@ public void invokeBindingResponseNull() {
@Test
public void invokeBindingResponseObject() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("\"OK\"");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("\"OK\"");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, String.class);
assertEquals("OK", mono.block());
@@ -600,8 +621,8 @@ public void invokeBindingResponseObject() {
public void invokeBindingResponseDouble() {
Map map = new HashMap<>();
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("1.5");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("1.5");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", map, double.class);
assertEquals(1.5, mono.block(), 0.0001);
@@ -610,8 +631,8 @@ public void invokeBindingResponseDouble() {
@Test
public void invokeBindingResponseFloat() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("1.5");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("1.5");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, float.class);
assertEquals(1.5, mono.block(), 0.0001);
@@ -620,8 +641,8 @@ public void invokeBindingResponseFloat() {
@Test
public void invokeBindingResponseChar() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("\"a\"");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("\"a\"");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, char.class);
assertEquals('a', (char)mono.block());
@@ -630,8 +651,8 @@ public void invokeBindingResponseChar() {
@Test
public void invokeBindingResponseByte() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("\"2\"");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("\"2\"");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, byte.class);
assertEquals((byte)0x2, (byte)mono.block());
@@ -640,8 +661,8 @@ public void invokeBindingResponseByte() {
@Test
public void invokeBindingResponseLong() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("1");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("1");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, long.class);
assertEquals(1, (long)mono.block());
@@ -650,8 +671,8 @@ public void invokeBindingResponseLong() {
@Test
public void invokeBindingResponseInt() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond("1");
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond("1");
Mono mono = daprClientHttp.invokeBinding("sample-topic", "myoperation", "", null, int.class);
assertEquals(1, (int)mono.block());
@@ -660,8 +681,8 @@ public void invokeBindingResponseInt() {
@Test
public void invokeBindingNullName() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond(EXPECTED_RESULT);
assertThrows(IllegalArgumentException.class, () ->
daprClientHttp.invokeBinding(null, "myoperation", "").block());
@@ -670,8 +691,8 @@ public void invokeBindingNullName() {
@Test
public void invokeBindingNullOpName() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
+ .respond(EXPECTED_RESULT);
assertThrows(IllegalArgumentException.class, () ->
daprClientHttp.invokeBinding("sample-topic", null, "").block());
@@ -680,7 +701,7 @@ public void invokeBindingNullOpName() {
@Test
public void bindingNoHotMono() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/bindings/sample-topic")
+ .post("http://" + sidecarIp + ":3000/v1.0/bindings/sample-topic")
.respond(EXPECTED_RESULT);
daprClientHttp.invokeBinding(null, "", "");
@@ -690,7 +711,7 @@ public void bindingNoHotMono() {
@Test
public void getStatesErrors() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("NOT VALID JSON");
assertThrows(IllegalArgumentException.class, () -> {
@@ -720,7 +741,7 @@ public void getStatesErrors() {
@Test
public void getStatesString() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("[{\"key\": \"100\", \"data\": \"hello world\", \"etag\": \"1\"}," +
"{\"key\": \"200\", \"error\": \"not found\"}]");
@@ -740,7 +761,7 @@ public void getStatesString() {
@Test
public void getStatesInteger() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("[{\"key\": \"100\", \"data\": 1234, \"etag\": \"1\"}," +
"{\"key\": \"200\", \"error\": \"not found\"}]");
@@ -761,7 +782,7 @@ public void getStatesInteger() {
@Test
public void getStatesBoolean() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("[{\"key\": \"100\", \"data\": true, \"etag\": \"1\"}," +
"{\"key\": \"200\", \"error\": \"not found\"}]");
@@ -784,7 +805,7 @@ public void getStatesByteArray() {
byte[] value = new byte[]{1, 2, 3};
String base64Value = Base64.getEncoder().encodeToString(value);
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("[{\"key\": \"100\", \"data\": \"" + base64Value + "\", \"etag\": \"1\"}," +
"{\"key\": \"200\", \"error\": \"not found\"}]");
@@ -807,7 +828,7 @@ public void getStatesByteArray() {
public void getStatesObject() {
MyObject object = new MyObject(1, "Event");
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/bulk")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/bulk")
.respond("[{\"key\": \"100\", \"data\": " +
"{ \"id\": \"" + object.id + "\", \"value\": \"" + object.value + "\"}, \"etag\": \"1\"}," +
"{\"key\": \"200\", \"error\": \"not found\"}]");
@@ -835,10 +856,10 @@ public void getState() {
State stateKeyEmpty = new State<>("", "value", "etag", stateOptions);
State stateKeyBadPayload = new State<>("keyBadPayload", "value", "etag", stateOptions);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
.respond("\"" + EXPECTED_RESULT + "\"");
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/keyBadPayload")
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/keyBadPayload")
.respond("NOT VALID");
assertThrows(IllegalArgumentException.class, () -> {
@@ -866,8 +887,8 @@ public void getState() {
public void getStatesEmptyEtag() {
State stateEmptyEtag = new State<>("key", "value", "", null);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond("\"" + EXPECTED_RESULT + "\"");
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond("\"" + EXPECTED_RESULT + "\"");
State monoEmptyEtag = daprClientHttp.getState(STATE_STORE_NAME, stateEmptyEtag, String.class).block();
assertEquals(monoEmptyEtag.getKey(), "key");
@@ -879,8 +900,8 @@ public void getStateWithMetadata() {
Map metadata = new HashMap<>();
metadata.put("key_1", "val_1");
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key?metadata.key_1=val_1")
- .respond("\"" + EXPECTED_RESULT + "\"");
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key?metadata.key_1=val_1")
+ .respond("\"" + EXPECTED_RESULT + "\"");
GetStateRequest request = new GetStateRequest(STATE_STORE_NAME, "key");
request.setMetadata(metadata);
@@ -892,8 +913,8 @@ public void getStateWithMetadata() {
public void getStateWithStateOptions() {
StateOptions stateOptions = new StateOptions(StateOptions.Consistency.STRONG, StateOptions.Concurrency.FIRST_WRITE);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key?consistency=strong&concurrency=first-write")
- .respond("\"" + EXPECTED_RESULT + "\"");
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key?consistency=strong&concurrency=first-write")
+ .respond("\"" + EXPECTED_RESULT + "\"");
GetStateRequest request = new GetStateRequest(STATE_STORE_NAME, "key");
request.setStateOptions(stateOptions);
@@ -905,8 +926,8 @@ public void getStateWithStateOptions() {
public void getStatesNullEtag() {
State stateNullEtag = new State<>("key", "value", null, null);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond("\"" + EXPECTED_RESULT + "\"");
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond("\"" + EXPECTED_RESULT + "\"");
State monoNullEtag = daprClientHttp.getState(STATE_STORE_NAME, stateNullEtag, String.class).block();
assertEquals(monoNullEtag.getKey(), "key");
@@ -917,7 +938,7 @@ public void getStatesNullEtag() {
public void getStatesNoHotMono() {
State stateNullEtag = new State<>("key", "value", null, null);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
.respond(500);
daprClientHttp.getState(STATE_STORE_NAME, stateNullEtag, String.class);
@@ -929,8 +950,8 @@ public void saveStates() {
State stateKeyValue = new State<>("key", "value", "etag", null);
List> stateKeyValueList = Collections.singletonList(stateKeyValue);
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.saveBulkState(STATE_STORE_NAME, stateKeyValueList);
assertNull(mono.block());
@@ -960,7 +981,7 @@ public void saveStatesNullState() {
List> stateKeyValueList = new ArrayList<>();
stateKeyValueList.add(null);
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
.respond(EXPECTED_RESULT);
Mono mono1 = daprClientHttp.saveBulkState(STATE_STORE_NAME, stateKeyValueList);
@@ -972,8 +993,8 @@ public void saveStatesEtagNull() {
State stateKeyValue = new State<>("key", "value", null, null);
List> stateKeyValueList = Collections.singletonList(stateKeyValue);
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.saveBulkState(STATE_STORE_NAME, stateKeyValueList);
assertNull(mono.block());
@@ -984,8 +1005,8 @@ public void saveStatesEtagEmpty() {
State stateKeyValue = new State<>("key", "value", "", null);
List> stateKeyValueList = Collections.singletonList(stateKeyValue);
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.saveBulkState(STATE_STORE_NAME, stateKeyValueList);
assertNull(mono.block());
@@ -994,8 +1015,8 @@ public void saveStatesEtagEmpty() {
@Test
public void simpleSaveStates() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
- .respond(EXPECTED_RESULT);
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
+ .respond(EXPECTED_RESULT);
StateOptions stateOptions = mock(StateOptions.class);
Mono mono = daprClientHttp.saveState(STATE_STORE_NAME, "key", "etag", "value", stateOptions);
@@ -1005,7 +1026,7 @@ public void simpleSaveStates() {
@Test
public void saveStatesNoHotMono() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore")
.respond(500);
StateOptions stateOptions = mock(StateOptions.class);
@@ -1016,7 +1037,7 @@ public void saveStatesNoHotMono() {
@Test
public void simpleExecuteTransaction() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.matches(new BodyMatcher(
"{\"operations\":[{\"operation\":\"upsert\",\"request\":{\"value\":\"my data\",\"key\":\"key1\"," +
"\"etag\":\"ETag1\",\"options\":{}}},{\"operation\":\"delete\",\"request\":{\"key\":\"deleteKey\"}}]}"
@@ -1043,7 +1064,7 @@ public void simpleExecuteTransaction() {
@Test
public void simpleExecuteTransactionXMLData() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.matches(new BodyMatcher("{\"operations\":[{\"operation\":\"upsert\"," +
"\"request\":{\"value\":\"PFN0cmluZz5teSBkYXRhPC9TdHJpbmc+\",\"key\":\"key1\",\"etag\":\"ETag1\"," +
"\"options\":{}}},{\"operation\":\"delete\",\"request\":{\"value\":\"PG51bGwvPg==\"," +
@@ -1070,7 +1091,7 @@ public void simpleExecuteTransactionXMLData() {
@Test
public void simpleExecuteTransactionNullEtag() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.respond(EXPECTED_RESULT);
String etag = null;
String key = "key1";
@@ -1093,7 +1114,7 @@ public void simpleExecuteTransactionNullEtag() {
@Test
public void simpleExecuteTransactionEmptyEtag() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.respond(EXPECTED_RESULT);
String etag = "empty";
String key = "key1";
@@ -1116,7 +1137,7 @@ public void simpleExecuteTransactionEmptyEtag() {
@Test
public void simpleExecuteTransactionNullOperationAndNullState() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.respond(EXPECTED_RESULT);
String etag = null;
String key = "key1";
@@ -1154,7 +1175,7 @@ public void executeTransactionErrors() {
@Test
public void simpleExecuteTransactionNull() {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/state/MyStateStore/transaction")
+ .post("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/transaction")
.respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.executeStateTransaction(STATE_STORE_NAME, null);
@@ -1168,8 +1189,8 @@ public void deleteState() {
StateOptions stateOptions = mock(StateOptions.class);
State stateKeyValue = new State<>("key", "value", "etag", stateOptions);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond(EXPECTED_RESULT);
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.deleteState(STATE_STORE_NAME, stateKeyValue.getKey(), stateKeyValue.getEtag(), stateOptions);
assertNull(mono.block());
@@ -1182,8 +1203,8 @@ public void deleteStateWithMetadata() {
StateOptions stateOptions = mock(StateOptions.class);
State stateKeyValue = new State<>("key", "value", "etag", stateOptions);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key?metadata.key_1=val_1")
- .respond(EXPECTED_RESULT);
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key?metadata.key_1=val_1")
+ .respond(EXPECTED_RESULT);
DeleteStateRequest request = new DeleteStateRequest(STATE_STORE_NAME, stateKeyValue.getKey());
request.setMetadata(metadata)
@@ -1198,7 +1219,7 @@ public void deleteStateNoHotMono() {
StateOptions stateOptions = mock(StateOptions.class);
State stateKeyValue = new State<>("key", "value", "etag", stateOptions);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
.respond(500);
daprClientHttp.deleteState(STATE_STORE_NAME, stateKeyValue.getKey(), stateKeyValue.getEtag(), stateOptions);
@@ -1209,8 +1230,8 @@ public void deleteStateNoHotMono() {
public void deleteStateNullEtag() {
State stateKeyValue = new State<>("key", "value", null, null);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond(EXPECTED_RESULT);
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.deleteState(STATE_STORE_NAME, stateKeyValue.getKey(), stateKeyValue.getEtag(), null);
assertNull(mono.block());
@@ -1220,8 +1241,8 @@ public void deleteStateNullEtag() {
public void deleteStateEmptyEtag() {
State stateKeyValue = new State<>("key", "value", "", null);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond(EXPECTED_RESULT);
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond(EXPECTED_RESULT);
Mono mono = daprClientHttp.deleteState(STATE_STORE_NAME, stateKeyValue.getKey(), stateKeyValue.getEtag(), null);
assertNull(mono.block());
@@ -1232,8 +1253,8 @@ public void deleteStateIllegalArgumentException() {
State stateKeyValueNull = new State<>(null, "value", "etag", null);
State stateKeyValueEmpty = new State<>("", "value", "etag", null);
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3000/v1.0/state/MyStateStore/key")
- .respond(EXPECTED_RESULT);
+ .delete("http://" + sidecarIp + ":3000/v1.0/state/MyStateStore/key")
+ .respond(EXPECTED_RESULT);
assertThrows(IllegalArgumentException.class, () -> {
daprClientHttp.deleteState(STATE_STORE_NAME, null, null, null).block();
@@ -1258,7 +1279,7 @@ public void deleteStateIllegalArgumentException() {
@Test
public void getSecrets() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
.respond("{ \"mysecretkey\": \"mysecretvalue\"}");
assertThrows(IllegalArgumentException.class, () -> {
@@ -1273,7 +1294,7 @@ public void getSecrets() {
@Test
public void getSecretsSpecialCharsInKey() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key%2Fone")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key%2Fone")
.respond("{ \"mysecretkey\": \"mysecretvalue\"}");
assertThrows(IllegalArgumentException.class, () -> {
@@ -1288,8 +1309,8 @@ public void getSecretsSpecialCharsInKey() {
@Test
public void getSecretsEmpty() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
- .respond("");
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
+ .respond("");
assertThrows(IllegalArgumentException.class, () -> {
daprClientHttp.getSecret(SECRET_STORE_NAME, null).block();
@@ -1302,7 +1323,7 @@ public void getSecretsEmpty() {
@Test
public void getSecrets404() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
.respond(404);
assertThrowsDaprException("UNKNOWN", () ->
@@ -1313,7 +1334,7 @@ public void getSecrets404() {
@Test
public void getSecrets404WithErrorCode() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
.respond(404,
ResponseBody.create("" +
"{\"errorCode\":\"ERR_SECRET_STORE_NOT_FOUND\"," +
@@ -1327,7 +1348,7 @@ public void getSecrets404WithErrorCode() {
@Test
public void getSecretsErrors() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
.respond("INVALID JSON");
assertThrows(IllegalArgumentException.class, () ->
@@ -1348,17 +1369,17 @@ public void getSecretsErrors() {
@Test
public void getSecretsWithMetadata() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key")
- .respond("{ \"mysecretkey\": \"mysecretvalue\"}");
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key")
+ .respond("{ \"mysecretkey\": \"mysecretvalue\"}");
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/key?metadata.metakey=metavalue")
- .respond("{ \"mysecretkey2\": \"mysecretvalue2\"}");
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/key?metadata.metakey=metavalue")
+ .respond("{ \"mysecretkey2\": \"mysecretvalue2\"}");
{
Map secret = daprClientHttp.getSecret(
- SECRET_STORE_NAME,
- "key",
- null).block();
+ SECRET_STORE_NAME,
+ "key",
+ null).block();
assertEquals(1, secret.size());
assertEquals("mysecretvalue", secret.get("mysecretkey"));
@@ -1366,9 +1387,9 @@ public void getSecretsWithMetadata() {
{
Map secret = daprClientHttp.getSecret(
- SECRET_STORE_NAME,
- "key",
- Collections.singletonMap("metakey", "metavalue")).block();
+ SECRET_STORE_NAME,
+ "key",
+ Collections.singletonMap("metakey", "metavalue")).block();
assertEquals(1, secret.size());
assertEquals("mysecretvalue2", secret.get("mysecretkey2"));
@@ -1378,7 +1399,7 @@ public void getSecretsWithMetadata() {
@Test
public void getBulkSecrets() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/bulk")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/bulk")
.respond("{ \"one\": { \"mysecretkey\": \"mysecretvalue\"}, \"two\": { \"a\": \"1\", \"b\": \"2\"}}");
Map> secrets = daprClientHttp.getBulkSecret(SECRET_STORE_NAME).block();
@@ -1394,7 +1415,7 @@ public void getBulkSecrets() {
@Test
public void getBulkSecretsWithMetadata() {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3000/v1.0/secrets/MySecretStore/bulk?metadata.metakey=metavalue")
+ .get("http://" + sidecarIp + ":3000/v1.0/secrets/MySecretStore/bulk?metadata.metakey=metavalue")
.respond("{ \"one\": { \"mysecretkey\": \"mysecretvalue\"}, \"two\": { \"a\": \"1\", \"b\": \"2\"}}");
Map> secrets =
@@ -1545,8 +1566,8 @@ public void close() throws Exception {
@Test
public void shutdown() throws Exception {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3000/v1.0/shutdown")
- .respond(204);
+ .post("http://" + sidecarIp + ":3000/v1.0/shutdown")
+ .respond(204);
final Mono mono = daprClientHttp.shutdown();
assertNull(mono.block());
@@ -1653,4 +1674,4 @@ public int hashCode() {
return result;
}
}
-}
+}
\ No newline at end of file
diff --git a/sdk/src/test/java/io/dapr/client/DaprHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java
index dac27904bd..ceac555878 100644
--- a/sdk/src/test/java/io/dapr/client/DaprHttpTest.java
+++ b/sdk/src/test/java/io/dapr/client/DaprHttpTest.java
@@ -38,6 +38,7 @@
import java.util.List;
import java.util.Map;
+import static io.dapr.utils.TestUtils.formatIpAddress;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.fail;
@@ -52,6 +53,8 @@ public class DaprHttpTest {
private static final String EXPECTED_RESULT =
"{\"data\":\"ewoJCSJwcm9wZXJ0eUEiOiAidmFsdWVBIiwKCQkicHJvcGVydHlCIjogInZhbHVlQiIKCX0=\"}";
+
+ private String sidecarIp;
private OkHttpClient okHttpClient;
@@ -61,6 +64,7 @@ public class DaprHttpTest {
@BeforeEach
public void setUp() {
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
mockInterceptor = new MockInterceptor(Behavior.UNORDERED);
okHttpClient = new OkHttpClient.Builder().addInterceptor(mockInterceptor).build();
}
@@ -68,12 +72,12 @@ public void setUp() {
@Test
public void invokeApi_daprApiToken_present() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.hasHeader(Headers.DAPR_API_TOKEN)
.respond(serializer.serialize(EXPECTED_RESULT));
environmentVariables.set(Properties.API_TOKEN.getEnvName(), "xyz");
assertEquals("xyz", Properties.API_TOKEN.get());
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, (byte[]) null, null, Context.empty());
DaprHttp.Response response = mono.block();
@@ -84,12 +88,12 @@ public void invokeApi_daprApiToken_present() throws IOException {
@Test
public void invokeApi_daprApiToken_absent() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.not()
.hasHeader(Headers.DAPR_API_TOKEN)
.respond(serializer.serialize(EXPECTED_RESULT));
assertNull(Properties.API_TOKEN.get());
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, (byte[]) null, null, Context.empty());
DaprHttp.Response response = mono.block();
@@ -103,9 +107,29 @@ public void invokeMethod() throws IOException {
headers.put("content-type", "text/html");
headers.put("header1", "value1");
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.respond(serializer.serialize(EXPECTED_RESULT));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
+ Mono mono =
+ daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, (byte[]) null, headers, Context.empty());
+ DaprHttp.Response response = mono.block();
+ String body = serializer.deserialize(response.getBody(), String.class);
+ assertEquals(EXPECTED_RESULT, body);
+ }
+
+ @Test
+ public void invokeMethodIPv6() throws IOException {
+ String prevSidecarIp = sidecarIp;
+ System.setProperty(Properties.SIDECAR_IP.getName(), "2001:db8:3333:4444:5555:6666:7777:8888");
+ sidecarIp = formatIpAddress(Properties.SIDECAR_IP.get());
+ Map headers = new HashMap<>();
+ headers.put("content-type", "text/html");
+ headers.put("header1", "value1");
+ mockInterceptor.addRule()
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
+ .respond(serializer.serialize(EXPECTED_RESULT));
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
+ System.setProperty(Properties.SIDECAR_IP.getName(), prevSidecarIp);
Mono mono =
daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, (byte[]) null, headers, Context.empty());
DaprHttp.Response response = mono.block();
@@ -116,10 +140,10 @@ public void invokeMethod() throws IOException {
@Test
public void invokePostMethod() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.respond(serializer.serialize(EXPECTED_RESULT))
.addHeader("Header", "Value");
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, "", null, Context.empty());
DaprHttp.Response response = mono.block();
@@ -130,9 +154,9 @@ public void invokePostMethod() throws IOException {
@Test
public void invokeDeleteMethod() throws IOException {
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3500/v1.0/state")
+ .delete("http://" + sidecarIp + ":3500/v1.0/state")
.respond(serializer.serialize(EXPECTED_RESULT));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("DELETE", "v1.0/state".split("/"), null, (String) null, null, Context.empty());
DaprHttp.Response response = mono.block();
@@ -153,9 +177,9 @@ public void invokeHEADMethod() throws IOException {
@Test
public void invokeGetMethod() throws IOException {
mockInterceptor.addRule()
- .get("http://127.0.0.1:3500/v1.0/get")
+ .get("http://" + sidecarIp + ":3500/v1.0/get")
.respond(serializer.serialize(EXPECTED_RESULT));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono = daprHttp.invokeApi("GET", "v1.0/get".split("/"), null, null, Context.empty());
DaprHttp.Response response = mono.block();
String body = serializer.deserialize(response.getBody(), String.class);
@@ -170,9 +194,9 @@ public void invokeMethodWithHeaders() throws IOException {
Map> urlParameters = new HashMap<>();
urlParameters.put("orderId", Collections.singletonList("41"));
mockInterceptor.addRule()
- .get("http://127.0.0.1:3500/v1.0/state/order?orderId=41")
+ .get("http://" + sidecarIp + ":3500/v1.0/state/order?orderId=41")
.respond(serializer.serialize(EXPECTED_RESULT));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("GET", "v1.0/state/order".split("/"), urlParameters, headers, Context.empty());
DaprHttp.Response response = mono.block();
@@ -183,9 +207,9 @@ public void invokeMethodWithHeaders() throws IOException {
@Test
public void invokePostMethodRuntime() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.respond(500);
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono =
daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, null, Context.empty());
StepVerifier.create(mono).expectError(RuntimeException.class).verify();
@@ -194,10 +218,10 @@ public void invokePostMethodRuntime() throws IOException {
@Test
public void invokePostDaprError() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.respond(500, ResponseBody.create(MediaType.parse("text"),
"{\"errorCode\":null,\"message\":null}"));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono = daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, null, Context.empty());
StepVerifier.create(mono).expectError(RuntimeException.class).verify();
}
@@ -205,10 +229,10 @@ public void invokePostDaprError() throws IOException {
@Test
public void invokePostMethodUnknownError() throws IOException {
mockInterceptor.addRule()
- .post("http://127.0.0.1:3500/v1.0/state")
+ .post("http://" + sidecarIp + ":3500/v1.0/state")
.respond(500, ResponseBody.create(MediaType.parse("application/json"),
"{\"errorCode\":\"null\",\"message\":\"null\"}"));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono mono = daprHttp.invokeApi("POST", "v1.0/state".split("/"), null, null, Context.empty());
StepVerifier.create(mono).expectError(RuntimeException.class).verify();
}
@@ -268,17 +292,17 @@ public void testCallbackCalledAtTheExpectedTimeTest() throws IOException {
String urlDeleteState = STATE_PATH + "/" + deletedStateKey;
String urlExistingState = STATE_PATH + "/" + existingState;
mockInterceptor.addRule()
- .get("http://127.0.0.1:3500/" + urlDeleteState)
+ .get("http://" + sidecarIp + ":3500/" + urlDeleteState)
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
deletedStateKey));
mockInterceptor.addRule()
- .delete("http://127.0.0.1:3500/" + urlDeleteState)
+ .delete("http://" + sidecarIp + ":3500/" + urlDeleteState)
.respond(204);
mockInterceptor.addRule()
- .get("http://127.0.0.1:3500/" + urlExistingState)
+ .get("http://" + sidecarIp + ":3500/" + urlExistingState)
.respond(200, ResponseBody.create(MediaType.parse("application/json"),
serializer.serialize(existingState)));
- DaprHttp daprHttp = new DaprHttp(Properties.SIDECAR_IP.get(), 3500, okHttpClient);
+ DaprHttp daprHttp = new DaprHttp(sidecarIp, 3500, okHttpClient);
Mono response = daprHttp.invokeApi("GET", urlExistingState.split("/"), null, null, Context.empty());
assertEquals(existingState, serializer.deserialize(response.block().getBody(), String.class));
Mono responseDeleted = daprHttp.invokeApi("GET", urlDeleteState.split("/"), null, null, Context.empty());
@@ -287,7 +311,7 @@ public void testCallbackCalledAtTheExpectedTimeTest() throws IOException {
assertNull(serializer.deserialize(responseDeleteKey.block().getBody(), String.class));
mockInterceptor.reset();
mockInterceptor.addRule()
- .get("http://127.0.0.1:3500/" + urlDeleteState)
+ .get("http://" + sidecarIp + ":3500/" + urlDeleteState)
.respond(404, ResponseBody.create(MediaType.parse("application/json"),
"{\"errorCode\":\"404\",\"message\":\"State Not Found\"}"));
try {
diff --git a/sdk/src/test/java/io/dapr/utils/TestUtils.java b/sdk/src/test/java/io/dapr/utils/TestUtils.java
index 592db3a98b..8f5929ec2f 100644
--- a/sdk/src/test/java/io/dapr/utils/TestUtils.java
+++ b/sdk/src/test/java/io/dapr/utils/TestUtils.java
@@ -17,6 +17,7 @@
import io.dapr.exceptions.DaprException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.function.Executable;
+import org.apache.commons.validator.routines.InetAddressValidator;
import java.io.IOException;
import java.net.ServerSocket;
@@ -79,4 +80,12 @@ public static int findFreePort() throws IOException {
return socket.getLocalPort();
}
}
-}
+
+ public static String formatIpAddress(final String ipAddress) {
+ String formattedIpAddress = ipAddress;
+ if(InetAddressValidator.getInstance().isValidInet6Address(ipAddress)) {
+ formattedIpAddress = "[" + ipAddress + "]"; // per URL spec https://url.spec.whatwg.org/#host-writing
+ }
+ return formattedIpAddress;
+ }
+}
\ No newline at end of file