mirror of https://github.com/dapr/java-sdk.git
Convert Config API to Stable endpoints. (#846)
This commit is contained in:
parent
135b109201
commit
aaa5f7bc76
|
|
@ -38,7 +38,7 @@ jobs:
|
||||||
spring-boot-version: 2.3.6.RELEASE
|
spring-boot-version: 2.3.6.RELEASE
|
||||||
experimental: false
|
experimental: false
|
||||||
env:
|
env:
|
||||||
GOVER: 1.19
|
GOVER: "1.20"
|
||||||
GOOS: linux
|
GOOS: linux
|
||||||
GOARCH: amd64
|
GOARCH: amd64
|
||||||
GOPROXY: https://proxy.golang.org
|
GOPROXY: https://proxy.golang.org
|
||||||
|
|
@ -47,7 +47,7 @@ jobs:
|
||||||
DAPR_RUNTIME_VER: 1.10.6-rc.2
|
DAPR_RUNTIME_VER: 1.10.6-rc.2
|
||||||
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.10.0/install/install.sh
|
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.10.0/install/install.sh
|
||||||
DAPR_CLI_REF:
|
DAPR_CLI_REF:
|
||||||
DAPR_REF:
|
DAPR_REF: 1415e23b14628db70adf9403f5a18876f40b6924
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Set up OpenJDK ${{ env.JDK_VER }}
|
- name: Set up OpenJDK ${{ env.JDK_VER }}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
java: [ 11, 13, 15, 16 ]
|
java: [ 11, 13, 15, 16 ]
|
||||||
env:
|
env:
|
||||||
GOVER: 1.19
|
GOVER: "1.20"
|
||||||
GOOS: linux
|
GOOS: linux
|
||||||
GOARCH: amd64
|
GOARCH: amd64
|
||||||
GOPROXY: https://proxy.golang.org
|
GOPROXY: https://proxy.golang.org
|
||||||
|
|
@ -41,7 +41,7 @@ jobs:
|
||||||
DAPR_RUNTIME_VER: 1.10.6-rc.2
|
DAPR_RUNTIME_VER: 1.10.6-rc.2
|
||||||
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.10.0/install/install.sh
|
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.10.0/install/install.sh
|
||||||
DAPR_CLI_REF:
|
DAPR_CLI_REF:
|
||||||
DAPR_REF:
|
DAPR_REF: 1415e23b14628db70adf9403f5a18876f40b6924
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Set up OpenJDK ${{ env.JDK_VER }}
|
- name: Set up OpenJDK ${{ env.JDK_VER }}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ limitations under the License.
|
||||||
|
|
||||||
package io.dapr.examples.configuration.grpc;
|
package io.dapr.examples.configuration.grpc;
|
||||||
|
|
||||||
|
import io.dapr.client.DaprClient;
|
||||||
import io.dapr.client.DaprClientBuilder;
|
import io.dapr.client.DaprClientBuilder;
|
||||||
import io.dapr.client.DaprPreviewClient;
|
import io.dapr.client.DaprPreviewClient;
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
|
|
@ -44,8 +45,8 @@ public class ConfigurationClient {
|
||||||
* @throws Exception throws Exception
|
* @throws Exception throws Exception
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
try (DaprClient client = (new DaprClientBuilder()).build()) {
|
||||||
System.out.println("Using preview client...");
|
System.out.println("Using Dapr client...");
|
||||||
getConfigurations(client);
|
getConfigurations(client);
|
||||||
subscribeConfigurationRequest(client);
|
subscribeConfigurationRequest(client);
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +57,7 @@ public class ConfigurationClient {
|
||||||
*
|
*
|
||||||
* @param client DaprPreviewClient object
|
* @param client DaprPreviewClient object
|
||||||
*/
|
*/
|
||||||
public static void getConfigurations(DaprPreviewClient client) {
|
public static void getConfigurations(DaprClient client) {
|
||||||
System.out.println("*******trying to retrieve configurations for a list of keys********");
|
System.out.println("*******trying to retrieve configurations for a list of keys********");
|
||||||
List<String> keys = new ArrayList<>();
|
List<String> keys = new ArrayList<>();
|
||||||
keys.add("myconfig1");
|
keys.add("myconfig1");
|
||||||
|
|
@ -76,7 +77,7 @@ public class ConfigurationClient {
|
||||||
*
|
*
|
||||||
* @param client DaprPreviewClient object
|
* @param client DaprPreviewClient object
|
||||||
*/
|
*/
|
||||||
public static void subscribeConfigurationRequest(DaprPreviewClient client) {
|
public static void subscribeConfigurationRequest(DaprClient client) {
|
||||||
System.out.println("Subscribing to key: myconfig1");
|
System.out.println("Subscribing to key: myconfig1");
|
||||||
SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(
|
SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(
|
||||||
CONFIG_STORE_NAME, Collections.singletonList("myconfig1"));
|
CONFIG_STORE_NAME, Collections.singletonList("myconfig1"));
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
## Retrieve Configurations via Configuration API
|
## Retrieve Configurations via Configuration API
|
||||||
|
|
||||||
This example provides the different capabilities provided by Dapr Java SDK for Configuration. For further information about Configuration APIs please refer to [this link](https://docs.dapr.io/developing-applications/building-blocks/configuration/)
|
This example provides the different capabilities provided by Dapr Java SDK for Configuration. For further information about Configuration APIs please refer to [this link](https://docs.dapr.io/developing-applications/building-blocks/configuration/)
|
||||||
**This API is available in Preview Mode**.
|
|
||||||
|
|
||||||
### Using the ConfigurationAPI
|
### Using the ConfigurationAPI
|
||||||
|
|
||||||
|
|
@ -63,7 +62,7 @@ public class ConfigurationClient {
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
||||||
System.out.println("Using preview client...");
|
System.out.println("Using Dapr client...");
|
||||||
getConfigurations(client);
|
getConfigurations(client);
|
||||||
subscribeConfigurationRequestWithSubscribe(client);
|
subscribeConfigurationRequestWithSubscribe(client);
|
||||||
unsubscribeConfigurationItems(client);
|
unsubscribeConfigurationItems(client);
|
||||||
|
|
@ -134,7 +133,7 @@ Use the following command to run this example-
|
||||||
<!-- STEP
|
<!-- STEP
|
||||||
name: Run ConfigurationClient example
|
name: Run ConfigurationClient example
|
||||||
expected_stdout_lines:
|
expected_stdout_lines:
|
||||||
- "== APP == Using preview client..."
|
- "== APP == Using Dapr client..."
|
||||||
- "== APP == *******trying to retrieve configurations for a list of keys********"
|
- "== APP == *******trying to retrieve configurations for a list of keys********"
|
||||||
- "== APP == val1 : key ->myconfig1"
|
- "== APP == val1 : key ->myconfig1"
|
||||||
- "== APP == val2 : key ->myconfig2"
|
- "== APP == val2 : key ->myconfig2"
|
||||||
|
|
@ -155,7 +154,7 @@ dapr run --components-path ./components/configuration --app-id configgrpc --log-
|
||||||
|
|
||||||
### Sample output
|
### Sample output
|
||||||
```
|
```
|
||||||
== APP == Using preview client...
|
== APP == Using Dapr client...
|
||||||
== APP == *******trying to retrieve configurations for a list of keys********
|
== APP == *******trying to retrieve configurations for a list of keys********
|
||||||
== APP == val1 : key ->myconfig1
|
== APP == val1 : key ->myconfig1
|
||||||
== APP == val2 : key ->myconfig2
|
== APP == val2 : key ->myconfig2
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ limitations under the License.
|
||||||
package io.dapr.examples.configuration.http;
|
package io.dapr.examples.configuration.http;
|
||||||
|
|
||||||
import io.dapr.client.DaprApiProtocol;
|
import io.dapr.client.DaprApiProtocol;
|
||||||
|
import io.dapr.client.DaprClient;
|
||||||
import io.dapr.client.DaprClientBuilder;
|
import io.dapr.client.DaprClientBuilder;
|
||||||
import io.dapr.client.DaprPreviewClient;
|
import io.dapr.client.DaprPreviewClient;
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
|
|
@ -42,8 +43,8 @@ public class ConfigurationClient {
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
System.getProperties().setProperty(Properties.API_PROTOCOL.getName(), DaprApiProtocol.HTTP.name());
|
System.getProperties().setProperty(Properties.API_PROTOCOL.getName(), DaprApiProtocol.HTTP.name());
|
||||||
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
try (DaprClient client = (new DaprClientBuilder()).build()) {
|
||||||
System.out.println("Using preview client...");
|
System.out.println("Using Dapr client...");
|
||||||
getConfigurations(client);
|
getConfigurations(client);
|
||||||
subscribeConfigurationRequest(client);
|
subscribeConfigurationRequest(client);
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +55,7 @@ public class ConfigurationClient {
|
||||||
*
|
*
|
||||||
* @param client DaprPreviewClient object
|
* @param client DaprPreviewClient object
|
||||||
*/
|
*/
|
||||||
public static void getConfigurations(DaprPreviewClient client) {
|
public static void getConfigurations(DaprClient client) {
|
||||||
System.out.println("*******trying to retrieve configurations for a list of keys********");
|
System.out.println("*******trying to retrieve configurations for a list of keys********");
|
||||||
List<String> keys = new ArrayList<>();
|
List<String> keys = new ArrayList<>();
|
||||||
keys.add("myconfig1");
|
keys.add("myconfig1");
|
||||||
|
|
@ -79,7 +80,7 @@ public class ConfigurationClient {
|
||||||
*
|
*
|
||||||
* @param client DaprPreviewClient object
|
* @param client DaprPreviewClient object
|
||||||
*/
|
*/
|
||||||
public static void subscribeConfigurationRequest(DaprPreviewClient client) throws InterruptedException {
|
public static void subscribeConfigurationRequest(DaprClient client) throws InterruptedException {
|
||||||
System.out.println("Subscribing to key: myconfig2");
|
System.out.println("Subscribing to key: myconfig2");
|
||||||
SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(
|
SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(
|
||||||
CONFIG_STORE_NAME, Collections.singletonList("myconfig2"));
|
CONFIG_STORE_NAME, Collections.singletonList("myconfig2"));
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public class ConfigurationClient {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
System.getProperties().setProperty(Properties.API_PROTOCOL.getName(), DaprApiProtocol.HTTP.name());
|
System.getProperties().setProperty(Properties.API_PROTOCOL.getName(), DaprApiProtocol.HTTP.name());
|
||||||
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
|
||||||
System.out.println("Using preview client...");
|
System.out.println("Using Dapr client...");
|
||||||
getConfigurations(client);
|
getConfigurations(client);
|
||||||
subscribeConfigurationRequest(client);
|
subscribeConfigurationRequest(client);
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +153,7 @@ Use the following command to run this example-
|
||||||
<!-- STEP
|
<!-- STEP
|
||||||
name: Run ConfigurationClient example
|
name: Run ConfigurationClient example
|
||||||
expected_stdout_lines:
|
expected_stdout_lines:
|
||||||
- "== APP == Using preview client..."
|
- "== APP == Using Dapr client..."
|
||||||
- "== APP == *******trying to retrieve configurations for a list of keys********"
|
- "== APP == *******trying to retrieve configurations for a list of keys********"
|
||||||
- "== APP == val1 : key ->myconfig1"
|
- "== APP == val1 : key ->myconfig1"
|
||||||
- "== APP == val2 : key ->myconfig2"
|
- "== APP == val2 : key ->myconfig2"
|
||||||
|
|
@ -184,7 +184,7 @@ docker exec dapr_redis redis-cli MSET myconfig2 "updated_val2||1"
|
||||||
|
|
||||||
### Sample output
|
### Sample output
|
||||||
```
|
```
|
||||||
== APP == Using preview client...
|
== APP == Using Dapr client...
|
||||||
== APP == *******trying to retrieve configurations for a list of keys********
|
== APP == *******trying to retrieve configurations for a list of keys********
|
||||||
== APP == val1 : key ->myconfig1
|
== APP == val1 : key ->myconfig1
|
||||||
== APP == val2 : key ->myconfig2
|
== APP == val2 : key ->myconfig2
|
||||||
|
|
|
||||||
4
pom.xml
4
pom.xml
|
|
@ -16,7 +16,7 @@
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<grpc.version>1.42.1</grpc.version>
|
<grpc.version>1.42.1</grpc.version>
|
||||||
<protobuf.version>3.17.3</protobuf.version>
|
<protobuf.version>3.17.3</protobuf.version>
|
||||||
<dapr.proto.baseurl>https://raw.githubusercontent.com/dapr/dapr/v1.10.0-rc.2/dapr/proto</dapr.proto.baseurl>
|
<dapr.proto.baseurl>https://raw.githubusercontent.com/dapr/dapr/1415e23b14628db70adf9403f5a18876f40b6924/dapr/proto</dapr.proto.baseurl>
|
||||||
<os-maven-plugin.version>1.6.2</os-maven-plugin.version>
|
<os-maven-plugin.version>1.6.2</os-maven-plugin.version>
|
||||||
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
|
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
|
||||||
<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
|
<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.13.1</version>
|
<version>4.13.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.13.1</version>
|
<version>4.13.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ limitations under the License.
|
||||||
|
|
||||||
package io.dapr.it.configuration.grpc;
|
package io.dapr.it.configuration.grpc;
|
||||||
|
|
||||||
|
import io.dapr.client.DaprClient;
|
||||||
import io.dapr.client.DaprClientBuilder;
|
import io.dapr.client.DaprClientBuilder;
|
||||||
import io.dapr.client.DaprPreviewClient;
|
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
|
|
@ -37,7 +37,7 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
|
|
||||||
private static DaprRun daprRun;
|
private static DaprRun daprRun;
|
||||||
|
|
||||||
private static DaprPreviewClient daprPreviewClient;
|
private static DaprClient daprClient;
|
||||||
|
|
||||||
private static String key = "myconfig1";
|
private static String key = "myconfig1";
|
||||||
|
|
||||||
|
|
@ -63,12 +63,12 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
public static void init() throws Exception {
|
public static void init() throws Exception {
|
||||||
daprRun = startDaprApp(ConfigurationClientIT.class.getSimpleName(), 5000);
|
daprRun = startDaprApp(ConfigurationClientIT.class.getSimpleName(), 5000);
|
||||||
daprRun.switchToGRPC();
|
daprRun.switchToGRPC();
|
||||||
daprPreviewClient = new DaprClientBuilder().buildPreviewClient();
|
daprClient = new DaprClientBuilder().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void tearDown() throws Exception {
|
public static void tearDown() throws Exception {
|
||||||
daprPreviewClient.close();
|
daprClient.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
|
@ -78,13 +78,13 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConfiguration() {
|
public void getConfiguration() {
|
||||||
ConfigurationItem ci = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block();
|
ConfigurationItem ci = daprClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block();
|
||||||
assertEquals(ci.getValue(), "myconfigvalue1");
|
assertEquals(ci.getValue(), "myconfigvalue1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConfigurations() {
|
public void getConfigurations() {
|
||||||
Map<String, ConfigurationItem> cis = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block();
|
Map<String, ConfigurationItem> cis = daprClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block();
|
||||||
assertTrue(cis.size() == 2);
|
assertTrue(cis.size() == 2);
|
||||||
assertTrue(cis.containsKey("myconfigkey1"));
|
assertTrue(cis.containsKey("myconfigkey1"));
|
||||||
assertTrue(cis.containsKey("myconfigkey2"));
|
assertTrue(cis.containsKey("myconfigkey2"));
|
||||||
|
|
@ -94,7 +94,7 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
@Test
|
@Test
|
||||||
public void subscribeConfiguration() {
|
public void subscribeConfiguration() {
|
||||||
Runnable subscribeTask = () -> {
|
Runnable subscribeTask = () -> {
|
||||||
Flux<SubscribeConfigurationResponse> outFlux = daprPreviewClient
|
Flux<SubscribeConfigurationResponse> outFlux = daprClient
|
||||||
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2");
|
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2");
|
||||||
outFlux.subscribe(update -> {
|
outFlux.subscribe(update -> {
|
||||||
if (update.getItems().size() == 0 ) {
|
if (update.getItems().size() == 0 ) {
|
||||||
|
|
@ -132,7 +132,7 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
AtomicReference<Disposable> disposableAtomicReference = new AtomicReference<>();
|
AtomicReference<Disposable> disposableAtomicReference = new AtomicReference<>();
|
||||||
AtomicReference<String> subscriptionId = new AtomicReference<>();
|
AtomicReference<String> subscriptionId = new AtomicReference<>();
|
||||||
Runnable subscribeTask = () -> {
|
Runnable subscribeTask = () -> {
|
||||||
Flux<SubscribeConfigurationResponse> outFlux = daprPreviewClient
|
Flux<SubscribeConfigurationResponse> outFlux = daprClient
|
||||||
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1");
|
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1");
|
||||||
disposableAtomicReference.set(outFlux
|
disposableAtomicReference.set(outFlux
|
||||||
.subscribe(update -> {
|
.subscribe(update -> {
|
||||||
|
|
@ -163,7 +163,7 @@ public class ConfigurationClientIT extends BaseIT {
|
||||||
// To ensure key starts getting updated
|
// To ensure key starts getting updated
|
||||||
inducingSleepTime(1000);
|
inducingSleepTime(1000);
|
||||||
|
|
||||||
UnsubscribeConfigurationResponse res = daprPreviewClient.unsubscribeConfiguration(
|
UnsubscribeConfigurationResponse res = daprClient.unsubscribeConfiguration(
|
||||||
subscriptionId.get(),
|
subscriptionId.get(),
|
||||||
CONFIG_STORE_NAME
|
CONFIG_STORE_NAME
|
||||||
).block();
|
).block();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package io.dapr.it.configuration.http;
|
package io.dapr.it.configuration.http;
|
||||||
|
|
||||||
|
import io.dapr.client.DaprClient;
|
||||||
import io.dapr.client.DaprClientBuilder;
|
import io.dapr.client.DaprClientBuilder;
|
||||||
import io.dapr.client.DaprPreviewClient;
|
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.it.BaseIT;
|
import io.dapr.it.BaseIT;
|
||||||
import io.dapr.it.DaprRun;
|
import io.dapr.it.DaprRun;
|
||||||
|
|
@ -21,7 +21,7 @@ public class ConfigurationIT extends BaseIT {
|
||||||
|
|
||||||
private static DaprRun daprRun;
|
private static DaprRun daprRun;
|
||||||
|
|
||||||
private static DaprPreviewClient daprPreviewClient;
|
private static DaprClient daprClient;
|
||||||
|
|
||||||
private static String key = "myconfig1";
|
private static String key = "myconfig1";
|
||||||
|
|
||||||
|
|
@ -39,12 +39,12 @@ public class ConfigurationIT extends BaseIT {
|
||||||
public static void init() throws Exception {
|
public static void init() throws Exception {
|
||||||
daprRun = startDaprApp(ConfigurationIT.class.getSimpleName(), 5000);
|
daprRun = startDaprApp(ConfigurationIT.class.getSimpleName(), 5000);
|
||||||
daprRun.switchToHTTP();
|
daprRun.switchToHTTP();
|
||||||
daprPreviewClient = new DaprClientBuilder().buildPreviewClient();
|
daprClient = new DaprClientBuilder().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void tearDown() throws Exception {
|
public static void tearDown() throws Exception {
|
||||||
daprPreviewClient.close();
|
daprClient.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
|
@ -54,14 +54,14 @@ public class ConfigurationIT extends BaseIT {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConfiguration() {
|
public void getConfiguration() {
|
||||||
ConfigurationItem ci = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block();
|
ConfigurationItem ci = daprClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block();
|
||||||
assertEquals(ci.getKey(), "myconfigkey1");
|
assertEquals(ci.getKey(), "myconfigkey1");
|
||||||
assertEquals(ci.getValue(), "myconfigvalue1");
|
assertEquals(ci.getValue(), "myconfigvalue1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConfigurations() {
|
public void getConfigurations() {
|
||||||
Map<String, ConfigurationItem> cis = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block();
|
Map<String, ConfigurationItem> cis = daprClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block();
|
||||||
assertTrue(cis.size() == 2);
|
assertTrue(cis.size() == 2);
|
||||||
assertTrue(cis.containsKey("myconfigkey1"));
|
assertTrue(cis.containsKey("myconfigkey1"));
|
||||||
assertTrue(cis.containsKey("myconfigkey2"));
|
assertTrue(cis.containsKey("myconfigkey2"));
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package io.dapr.it.configuration.http;
|
package io.dapr.it.configuration.http;
|
||||||
|
|
||||||
|
import io.dapr.client.DaprClient;
|
||||||
import io.dapr.client.DaprClientBuilder;
|
import io.dapr.client.DaprClientBuilder;
|
||||||
import io.dapr.client.DaprPreviewClient;
|
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
import io.dapr.it.BaseIT;
|
import io.dapr.it.BaseIT;
|
||||||
|
|
@ -23,7 +23,7 @@ public class ConfigurationSubscribeIT extends BaseIT {
|
||||||
|
|
||||||
private static DaprRun daprRun;
|
private static DaprRun daprRun;
|
||||||
|
|
||||||
private static DaprPreviewClient daprPreviewClient;
|
private static DaprClient daprClient;
|
||||||
|
|
||||||
private static String key = "myconfig1";
|
private static String key = "myconfig1";
|
||||||
|
|
||||||
|
|
@ -46,12 +46,12 @@ public class ConfigurationSubscribeIT extends BaseIT {
|
||||||
true,
|
true,
|
||||||
60000);
|
60000);
|
||||||
daprRun.switchToHTTP();
|
daprRun.switchToHTTP();
|
||||||
daprPreviewClient = new DaprClientBuilder().buildPreviewClient();
|
daprClient = new DaprClientBuilder().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void tearDown() throws Exception {
|
public static void tearDown() throws Exception {
|
||||||
daprPreviewClient.close();
|
daprClient.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
|
@ -62,14 +62,14 @@ public class ConfigurationSubscribeIT extends BaseIT {
|
||||||
@Test
|
@Test
|
||||||
public void subscribeAndUnsubscribeConfiguration() {
|
public void subscribeAndUnsubscribeConfiguration() {
|
||||||
AtomicReference<String> subId= new AtomicReference<>("");
|
AtomicReference<String> subId= new AtomicReference<>("");
|
||||||
Flux<SubscribeConfigurationResponse> outFlux = daprPreviewClient
|
Flux<SubscribeConfigurationResponse> outFlux = daprClient
|
||||||
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2");
|
.subscribeConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2");
|
||||||
outFlux.subscribe(items -> {
|
outFlux.subscribe(items -> {
|
||||||
subId.set(items.getSubscriptionId());
|
subId.set(items.getSubscriptionId());
|
||||||
});
|
});
|
||||||
assertTrue(subId.get().length() > 0);
|
assertTrue(subId.get().length() > 0);
|
||||||
|
|
||||||
UnsubscribeConfigurationResponse res = daprPreviewClient.unsubscribeConfiguration(
|
UnsubscribeConfigurationResponse res = daprClient.unsubscribeConfiguration(
|
||||||
subId.get(),
|
subId.get(),
|
||||||
CONFIG_STORE_NAME
|
CONFIG_STORE_NAME
|
||||||
).block();
|
).block();
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,12 @@ limitations under the License.
|
||||||
|
|
||||||
package io.dapr.client;
|
package io.dapr.client;
|
||||||
|
|
||||||
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.client.domain.DeleteStateRequest;
|
import io.dapr.client.domain.DeleteStateRequest;
|
||||||
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
||||||
import io.dapr.client.domain.GetBulkSecretRequest;
|
import io.dapr.client.domain.GetBulkSecretRequest;
|
||||||
import io.dapr.client.domain.GetBulkStateRequest;
|
import io.dapr.client.domain.GetBulkStateRequest;
|
||||||
|
import io.dapr.client.domain.GetConfigurationRequest;
|
||||||
import io.dapr.client.domain.GetSecretRequest;
|
import io.dapr.client.domain.GetSecretRequest;
|
||||||
import io.dapr.client.domain.GetStateRequest;
|
import io.dapr.client.domain.GetStateRequest;
|
||||||
import io.dapr.client.domain.HttpExtension;
|
import io.dapr.client.domain.HttpExtension;
|
||||||
|
|
@ -26,8 +28,13 @@ import io.dapr.client.domain.PublishEventRequest;
|
||||||
import io.dapr.client.domain.SaveStateRequest;
|
import io.dapr.client.domain.SaveStateRequest;
|
||||||
import io.dapr.client.domain.State;
|
import io.dapr.client.domain.State;
|
||||||
import io.dapr.client.domain.StateOptions;
|
import io.dapr.client.domain.StateOptions;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.TransactionalStateOperation;
|
import io.dapr.client.domain.TransactionalStateOperation;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
import io.dapr.utils.TypeRef;
|
import io.dapr.utils.TypeRef;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -559,6 +566,99 @@ public interface DaprClient extends AutoCloseable {
|
||||||
*/
|
*/
|
||||||
Mono<Map<String, Map<String, String>>> getBulkSecret(GetBulkSecretRequest request);
|
Mono<Map<String, Map<String, String>>> getBulkSecret(GetBulkSecretRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a configuration based on a provided key.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param key key of the configuration item which is to be retrieved
|
||||||
|
* @return Mono of the Configuration Item
|
||||||
|
*/
|
||||||
|
Mono<ConfigurationItem> getConfiguration(String storeName, String key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a configuration based on a provided key.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param key key of the configuration item which is to be retrieved
|
||||||
|
* @param metadata optional metadata
|
||||||
|
* @return Mono of the Configuration Item
|
||||||
|
*/
|
||||||
|
Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve Map of configurations based on a provided variable number of keys.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param keys keys of the configurations which are to be retrieved
|
||||||
|
* @return Mono of Map of ConfigurationItems
|
||||||
|
*/
|
||||||
|
Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, String... keys);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve Map of configurations based on a provided variable number of keys.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param keys keys of the configurations which are to be retrieved
|
||||||
|
* @param metadata optional metadata
|
||||||
|
* @return Mono of Map of ConfigurationItems
|
||||||
|
*/
|
||||||
|
Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, List<String> keys,
|
||||||
|
Map<String, String> metadata);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve Map of configurations based on a provided configuration request object.
|
||||||
|
*
|
||||||
|
* @param request request for retrieving Configurations for a list keys
|
||||||
|
* @return Mono of Map of ConfigurationItems
|
||||||
|
*/
|
||||||
|
|
||||||
|
Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subscribe to the keys for any change.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param keys keys of the configurations which are to be subscribed
|
||||||
|
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
||||||
|
*/
|
||||||
|
Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, String... keys);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subscribe to the keys for any change.
|
||||||
|
*
|
||||||
|
* @param storeName Name of the configuration store
|
||||||
|
* @param keys keys of the configurations which are to be subscribed
|
||||||
|
* @param metadata optional metadata
|
||||||
|
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
||||||
|
*/
|
||||||
|
Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, List<String> keys,
|
||||||
|
Map<String, String> metadata);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subscribe to the keys for any change.
|
||||||
|
*
|
||||||
|
* @param request request for subscribing to any change for the given keys in request
|
||||||
|
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
||||||
|
*/
|
||||||
|
Flux<SubscribeConfigurationResponse> subscribeConfiguration(SubscribeConfigurationRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsubscribe from previously subscribed keys.
|
||||||
|
*
|
||||||
|
* @param id subscription id returned by subscribeConfiguration API.
|
||||||
|
* @param storeName Name of the configuration store.
|
||||||
|
* @return Mono of {@link UnsubscribeConfigurationResponse} instance.
|
||||||
|
*/
|
||||||
|
Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(String id, String storeName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsubscribe from previously subscribed keys.
|
||||||
|
*
|
||||||
|
* @param request request for unsubscribing to any change for the given subscription id in request
|
||||||
|
* @return Mono of {@link UnsubscribeConfigurationResponse} instance.
|
||||||
|
*/
|
||||||
|
Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(UnsubscribeConfigurationRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gracefully shutdown the dapr runtime.
|
* Gracefully shutdown the dapr runtime.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -881,18 +881,18 @@ public class DaprClientGrpc extends AbstractDaprClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
DaprProtos.GetConfigurationRequest envelope = builder.build();
|
DaprProtos.GetConfigurationRequest envelope = builder.build();
|
||||||
return this.getConfigurationAlpha1(envelope);
|
return this.getConfiguration(envelope);
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
return DaprException.wrapMono(ex);
|
return DaprException.wrapMono(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mono<Map<String, ConfigurationItem>> getConfigurationAlpha1(DaprProtos.GetConfigurationRequest envelope) {
|
private Mono<Map<String, ConfigurationItem>> getConfiguration(DaprProtos.GetConfigurationRequest envelope) {
|
||||||
return Mono.deferContextual(
|
return Mono.deferContextual(
|
||||||
context ->
|
context ->
|
||||||
this.<DaprProtos.GetConfigurationResponse>createMono(
|
this.<DaprProtos.GetConfigurationResponse>createMono(
|
||||||
it -> intercept(context, asyncStub).getConfigurationAlpha1(envelope, it)
|
it -> intercept(context, asyncStub).getConfiguration(envelope, it)
|
||||||
)
|
)
|
||||||
).map(
|
).map(
|
||||||
it -> {
|
it -> {
|
||||||
|
|
@ -932,7 +932,7 @@ public class DaprClientGrpc extends AbstractDaprClient {
|
||||||
|
|
||||||
DaprProtos.SubscribeConfigurationRequest envelope = builder.build();
|
DaprProtos.SubscribeConfigurationRequest envelope = builder.build();
|
||||||
return this.<DaprProtos.SubscribeConfigurationResponse>createFlux(
|
return this.<DaprProtos.SubscribeConfigurationResponse>createFlux(
|
||||||
it -> intercept(asyncStub).subscribeConfigurationAlpha1(envelope, it)
|
it -> intercept(asyncStub).subscribeConfiguration(envelope, it)
|
||||||
).map(
|
).map(
|
||||||
it -> {
|
it -> {
|
||||||
Map<String, ConfigurationItem> configMap = new HashMap<>();
|
Map<String, ConfigurationItem> configMap = new HashMap<>();
|
||||||
|
|
@ -972,7 +972,7 @@ public class DaprClientGrpc extends AbstractDaprClient {
|
||||||
DaprProtos.UnsubscribeConfigurationRequest envelope = builder.build();
|
DaprProtos.UnsubscribeConfigurationRequest envelope = builder.build();
|
||||||
|
|
||||||
return this.<DaprProtos.UnsubscribeConfigurationResponse>createMono(
|
return this.<DaprProtos.UnsubscribeConfigurationResponse>createMono(
|
||||||
it -> intercept(asyncStub).unsubscribeConfigurationAlpha1(envelope, it)
|
it -> intercept(asyncStub).unsubscribeConfiguration(envelope, it)
|
||||||
).map(
|
).map(
|
||||||
it -> new UnsubscribeConfigurationResponse(it.getOk(), it.getMessage())
|
it -> new UnsubscribeConfigurationResponse(it.getOk(), it.getMessage())
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -809,7 +809,7 @@ public class DaprClientHttp extends AbstractDaprClient {
|
||||||
Map<String, List<String>> queryArgs = metadataToQueryArgs(metadata);
|
Map<String, List<String>> queryArgs = metadataToQueryArgs(metadata);
|
||||||
queryParams.putAll(queryArgs);
|
queryParams.putAll(queryArgs);
|
||||||
|
|
||||||
String[] pathSegments = new String[] {DaprHttp.ALPHA_1_API_VERSION, "configuration", configurationStoreName };
|
String[] pathSegments = new String[] {DaprHttp.API_VERSION, "configuration", configurationStoreName };
|
||||||
return Mono.deferContextual(
|
return Mono.deferContextual(
|
||||||
context -> this.client
|
context -> this.client
|
||||||
.invokeApi(
|
.invokeApi(
|
||||||
|
|
@ -870,7 +870,7 @@ public class DaprClientHttp extends AbstractDaprClient {
|
||||||
queryParams.putAll(queryArgs);
|
queryParams.putAll(queryArgs);
|
||||||
|
|
||||||
String[] pathSegments =
|
String[] pathSegments =
|
||||||
new String[] { DaprHttp.ALPHA_1_API_VERSION, "configuration", configurationStoreName, "subscribe" };
|
new String[] { DaprHttp.API_VERSION, "configuration", configurationStoreName, "subscribe" };
|
||||||
SubscribeConfigurationResponse res = Mono.deferContextual(
|
SubscribeConfigurationResponse res = Mono.deferContextual(
|
||||||
context -> this.client.invokeApi(
|
context -> this.client.invokeApi(
|
||||||
DaprHttp.HttpMethods.GET.name(),
|
DaprHttp.HttpMethods.GET.name(),
|
||||||
|
|
@ -911,7 +911,7 @@ public class DaprClientHttp extends AbstractDaprClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] pathSegments = new String[]
|
String[] pathSegments = new String[]
|
||||||
{ DaprHttp.ALPHA_1_API_VERSION, "configuration", configStoreName, id, "unsubscribe" };
|
{ DaprHttp.API_VERSION, "configuration", configStoreName, id, "unsubscribe" };
|
||||||
|
|
||||||
return Mono.deferContextual(
|
return Mono.deferContextual(
|
||||||
context -> this.client
|
context -> this.client
|
||||||
|
|
|
||||||
|
|
@ -13,23 +13,28 @@ limitations under the License.
|
||||||
|
|
||||||
package io.dapr.client;
|
package io.dapr.client;
|
||||||
|
|
||||||
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.client.domain.DeleteStateRequest;
|
import io.dapr.client.domain.DeleteStateRequest;
|
||||||
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
||||||
import io.dapr.client.domain.GetBulkSecretRequest;
|
import io.dapr.client.domain.GetBulkSecretRequest;
|
||||||
import io.dapr.client.domain.GetBulkStateRequest;
|
import io.dapr.client.domain.GetBulkStateRequest;
|
||||||
|
import io.dapr.client.domain.GetConfigurationRequest;
|
||||||
import io.dapr.client.domain.GetSecretRequest;
|
import io.dapr.client.domain.GetSecretRequest;
|
||||||
import io.dapr.client.domain.GetStateRequest;
|
import io.dapr.client.domain.GetStateRequest;
|
||||||
import io.dapr.client.domain.HttpExtension;
|
import io.dapr.client.domain.HttpExtension;
|
||||||
import io.dapr.client.domain.InvokeBindingRequest;
|
import io.dapr.client.domain.InvokeBindingRequest;
|
||||||
import io.dapr.client.domain.InvokeMethodRequest;
|
import io.dapr.client.domain.InvokeMethodRequest;
|
||||||
import io.dapr.client.domain.PublishEventRequest;
|
import io.dapr.client.domain.PublishEventRequest;
|
||||||
import io.dapr.client.domain.QueryStateRequest;
|
|
||||||
import io.dapr.client.domain.QueryStateResponse;
|
|
||||||
import io.dapr.client.domain.SaveStateRequest;
|
import io.dapr.client.domain.SaveStateRequest;
|
||||||
import io.dapr.client.domain.State;
|
import io.dapr.client.domain.State;
|
||||||
import io.dapr.client.domain.StateOptions;
|
import io.dapr.client.domain.StateOptions;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.TransactionalStateOperation;
|
import io.dapr.client.domain.TransactionalStateOperation;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
import io.dapr.utils.TypeRef;
|
import io.dapr.utils.TypeRef;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -500,6 +505,88 @@ class DaprClientProxy implements DaprClient {
|
||||||
return client.getBulkSecret(request);
|
return client.getBulkSecret(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<ConfigurationItem> getConfiguration(String storeName, String key) {
|
||||||
|
return client.getConfiguration(storeName, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata) {
|
||||||
|
return client.getConfiguration(storeName, key, metadata);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, String... keys) {
|
||||||
|
return client.getConfiguration(storeName, keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, List<String> keys,
|
||||||
|
Map<String, String> metadata) {
|
||||||
|
return client.getConfiguration(storeName, keys, metadata);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request) {
|
||||||
|
return client.getConfiguration(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, String... keys) {
|
||||||
|
return client.subscribeConfiguration(storeName, keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, List<String> keys,
|
||||||
|
Map<String, String> metadata) {
|
||||||
|
return client.subscribeConfiguration(storeName, keys, metadata);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Flux<SubscribeConfigurationResponse> subscribeConfiguration(SubscribeConfigurationRequest request) {
|
||||||
|
return client.subscribeConfiguration(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(String id, String storeName) {
|
||||||
|
return client.unsubscribeConfiguration(id, storeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(UnsubscribeConfigurationRequest request) {
|
||||||
|
return client.unsubscribeConfiguration(request);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -17,17 +17,10 @@ import io.dapr.client.domain.BulkPublishEntry;
|
||||||
import io.dapr.client.domain.BulkPublishRequest;
|
import io.dapr.client.domain.BulkPublishRequest;
|
||||||
import io.dapr.client.domain.BulkPublishResponse;
|
import io.dapr.client.domain.BulkPublishResponse;
|
||||||
import io.dapr.client.domain.BulkPublishResponseFailedEntry;
|
import io.dapr.client.domain.BulkPublishResponseFailedEntry;
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
|
||||||
import io.dapr.client.domain.GetConfigurationRequest;
|
|
||||||
import io.dapr.client.domain.QueryStateRequest;
|
import io.dapr.client.domain.QueryStateRequest;
|
||||||
import io.dapr.client.domain.QueryStateResponse;
|
import io.dapr.client.domain.QueryStateResponse;
|
||||||
import io.dapr.client.domain.SubscribeConfigurationRequest;
|
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.query.Query;
|
import io.dapr.client.domain.query.Query;
|
||||||
import io.dapr.utils.TypeRef;
|
import io.dapr.utils.TypeRef;
|
||||||
import reactor.core.publisher.Flux;
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -40,99 +33,6 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
public interface DaprPreviewClient extends AutoCloseable {
|
public interface DaprPreviewClient extends AutoCloseable {
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve a configuration based on a provided key.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param key key of the configuration item which is to be retrieved
|
|
||||||
* @return Mono of the Configuration Item
|
|
||||||
*/
|
|
||||||
Mono<ConfigurationItem> getConfiguration(String storeName, String key);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve a configuration based on a provided key.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param key key of the configuration item which is to be retrieved
|
|
||||||
* @param metadata optional metadata
|
|
||||||
* @return Mono of the Configuration Item
|
|
||||||
*/
|
|
||||||
Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve Map of configurations based on a provided variable number of keys.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param keys keys of the configurations which are to be retrieved
|
|
||||||
* @return Mono of Map of ConfigurationItems
|
|
||||||
*/
|
|
||||||
Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, String... keys);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve Map of configurations based on a provided variable number of keys.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param keys keys of the configurations which are to be retrieved
|
|
||||||
* @param metadata optional metadata
|
|
||||||
* @return Mono of Map of ConfigurationItems
|
|
||||||
*/
|
|
||||||
Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, List<String> keys,
|
|
||||||
Map<String, String> metadata);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve Map of configurations based on a provided configuration request object.
|
|
||||||
*
|
|
||||||
* @param request request for retrieving Configurations for a list keys
|
|
||||||
* @return Mono of Map of ConfigurationItems
|
|
||||||
*/
|
|
||||||
|
|
||||||
Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subscribe to the keys for any change.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param keys keys of the configurations which are to be subscribed
|
|
||||||
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
|
||||||
*/
|
|
||||||
Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, String... keys);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subscribe to the keys for any change.
|
|
||||||
*
|
|
||||||
* @param storeName Name of the configuration store
|
|
||||||
* @param keys keys of the configurations which are to be subscribed
|
|
||||||
* @param metadata optional metadata
|
|
||||||
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
|
||||||
*/
|
|
||||||
Flux<SubscribeConfigurationResponse> subscribeConfiguration(String storeName, List<String> keys,
|
|
||||||
Map<String, String> metadata);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subscribe to the keys for any change.
|
|
||||||
*
|
|
||||||
* @param request request for subscribing to any change for the given keys in request
|
|
||||||
* @return Flux of {@link SubscribeConfigurationResponse} instance
|
|
||||||
*/
|
|
||||||
Flux<SubscribeConfigurationResponse> subscribeConfiguration(SubscribeConfigurationRequest request);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subscribe to the keys for any change.
|
|
||||||
*
|
|
||||||
* @param id subscription id returned by subscribeConfiguration API.
|
|
||||||
* @param storeName Name of the configuration store.
|
|
||||||
* @return Mono of {@link UnsubscribeConfigurationResponse} instance.
|
|
||||||
*/
|
|
||||||
Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(String id, String storeName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subscribe to the keys for any change.
|
|
||||||
*
|
|
||||||
* @param request request for unsubscribing to any change for the given subscription id in request
|
|
||||||
* @return Mono of {@link UnsubscribeConfigurationResponse} instance.
|
|
||||||
*/
|
|
||||||
Mono<UnsubscribeConfigurationResponse> unsubscribeConfiguration(UnsubscribeConfigurationRequest request);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query for states using a query string.
|
* Query for states using a query string.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ package io.dapr.client;
|
||||||
import com.google.protobuf.Any;
|
import com.google.protobuf.Any;
|
||||||
import com.google.protobuf.ByteString;
|
import com.google.protobuf.ByteString;
|
||||||
import com.google.protobuf.Empty;
|
import com.google.protobuf.Empty;
|
||||||
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.client.domain.DeleteStateRequest;
|
import io.dapr.client.domain.DeleteStateRequest;
|
||||||
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
import io.dapr.client.domain.ExecuteStateTransactionRequest;
|
||||||
import io.dapr.client.domain.GetBulkStateRequest;
|
import io.dapr.client.domain.GetBulkStateRequest;
|
||||||
|
|
@ -24,7 +25,10 @@ import io.dapr.client.domain.HttpExtension;
|
||||||
import io.dapr.client.domain.PublishEventRequest;
|
import io.dapr.client.domain.PublishEventRequest;
|
||||||
import io.dapr.client.domain.State;
|
import io.dapr.client.domain.State;
|
||||||
import io.dapr.client.domain.StateOptions;
|
import io.dapr.client.domain.StateOptions;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.TransactionalStateOperation;
|
import io.dapr.client.domain.TransactionalStateOperation;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
import io.dapr.config.Properties;
|
import io.dapr.config.Properties;
|
||||||
import io.dapr.serializer.DaprObjectSerializer;
|
import io.dapr.serializer.DaprObjectSerializer;
|
||||||
import io.dapr.serializer.DefaultObjectSerializer;
|
import io.dapr.serializer.DefaultObjectSerializer;
|
||||||
|
|
@ -53,6 +57,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
@ -82,6 +87,8 @@ public class DaprClientGrpcTest {
|
||||||
|
|
||||||
private static final String STATE_STORE_NAME = "MyStateStore";
|
private static final String STATE_STORE_NAME = "MyStateStore";
|
||||||
|
|
||||||
|
private static final String CONFIG_STORE_NAME = "MyConfigStore";
|
||||||
|
|
||||||
private static final String SECRET_STORE_NAME = "MySecretStore";
|
private static final String SECRET_STORE_NAME = "MySecretStore";
|
||||||
|
|
||||||
private Closeable closeable;
|
private Closeable closeable;
|
||||||
|
|
@ -2098,6 +2105,248 @@ public class DaprClientGrpcTest {
|
||||||
assertEquals("2", secrets.get("two").get("b"));
|
assertEquals("2", secrets.get("two").get("b"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getConfigurationTestErrorScenario() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
client.getConfiguration("", "key").block();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSingleConfigurationTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(getSingleMockResponse());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).getConfiguration(any(DaprProtos.GetConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
ConfigurationItem ci = client.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
||||||
|
assertEquals("configvalue1", ci.getValue());
|
||||||
|
assertEquals("1", ci.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSingleConfigurationWithMetadataTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(getSingleMockResponse());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).getConfiguration(any(DaprProtos.GetConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
Map<String, String> reqMetadata = new HashMap<>();
|
||||||
|
reqMetadata.put("meta1", "value1");
|
||||||
|
ConfigurationItem ci = client.getConfiguration(CONFIG_STORE_NAME, "configkey1", reqMetadata).block();
|
||||||
|
assertEquals("configvalue1", ci.getValue());
|
||||||
|
assertEquals("1", ci.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMultipleConfigurationTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(getMultipleMockResponse());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).getConfiguration(any(DaprProtos.GetConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
Map<String, ConfigurationItem> cis = client.getConfiguration(CONFIG_STORE_NAME, "configkey1","configkey2").block();
|
||||||
|
assertEquals(2, cis.size());
|
||||||
|
assertTrue("configkey1", cis.containsKey("configkey1"));
|
||||||
|
assertEquals("configvalue1", cis.get("configkey1").getValue());
|
||||||
|
assertEquals("1", cis.get("configkey1").getVersion());
|
||||||
|
assertTrue("configkey2", cis.containsKey("configkey2"));
|
||||||
|
assertEquals("configvalue2", cis.get("configkey2").getValue());
|
||||||
|
assertEquals("1", cis.get("configkey2").getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMultipleConfigurationWithMetadataTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(getMultipleMockResponse());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).getConfiguration(any(DaprProtos.GetConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
Map<String, String> reqMetadata = new HashMap<>();
|
||||||
|
reqMetadata.put("meta1", "value1");
|
||||||
|
List<String> keys = Arrays.asList("configkey1","configkey2");
|
||||||
|
Map<String, ConfigurationItem> cis = client.getConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).block();
|
||||||
|
assertEquals(2, cis.size());
|
||||||
|
assertTrue("configkey1", cis.containsKey("configkey1"));
|
||||||
|
assertEquals("configvalue1", cis.get("configkey1").getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeConfigurationTest() {
|
||||||
|
Map<String, String> metadata = new HashMap<>();
|
||||||
|
metadata.put("meta1", "value1");
|
||||||
|
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
||||||
|
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
||||||
|
.setValue("configvalue1")
|
||||||
|
.setVersion("1")
|
||||||
|
.putAllMetadata(metadata)
|
||||||
|
.build());
|
||||||
|
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
|
||||||
|
.putAllItems(configs)
|
||||||
|
.setId("subscription_id")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(responseEnvelope);
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).subscribeConfiguration(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
Iterator<SubscribeConfigurationResponse> itr = client.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
||||||
|
assertTrue(itr.hasNext());
|
||||||
|
SubscribeConfigurationResponse res = itr.next();
|
||||||
|
assertTrue(res.getItems().containsKey("configkey1"));
|
||||||
|
assertEquals("subscription_id", res.getSubscriptionId());
|
||||||
|
assertFalse(itr.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeConfigurationTestWithMetadata() {
|
||||||
|
Map<String, String> metadata = new HashMap<>();
|
||||||
|
metadata.put("meta1", "value1");
|
||||||
|
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
||||||
|
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
||||||
|
.setValue("configvalue1")
|
||||||
|
.setVersion("1")
|
||||||
|
.putAllMetadata(metadata)
|
||||||
|
.build());
|
||||||
|
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
|
||||||
|
.putAllItems(configs)
|
||||||
|
.setId("subscription_id")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(responseEnvelope);
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).subscribeConfiguration(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
Map<String, String> reqMetadata = new HashMap<>();
|
||||||
|
List<String> keys = Arrays.asList("configkey1");
|
||||||
|
|
||||||
|
Iterator<SubscribeConfigurationResponse> itr = client.subscribeConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).toIterable().iterator();
|
||||||
|
assertTrue(itr.hasNext());
|
||||||
|
SubscribeConfigurationResponse res = itr.next();
|
||||||
|
assertTrue(res.getItems().containsKey("configkey1"));
|
||||||
|
assertEquals("subscription_id", res.getSubscriptionId());
|
||||||
|
assertFalse(itr.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeConfigurationWithErrorTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onError(new RuntimeException());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).subscribeConfiguration(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
assertThrowsDaprException(ExecutionException.class, () -> {
|
||||||
|
client.subscribeConfiguration(CONFIG_STORE_NAME, "key").blockFirst();
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
client.subscribeConfiguration("", "key").blockFirst();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unsubscribeConfigurationTest() {
|
||||||
|
DaprProtos.UnsubscribeConfigurationResponse responseEnvelope = DaprProtos.UnsubscribeConfigurationResponse.newBuilder()
|
||||||
|
.setOk(true)
|
||||||
|
.setMessage("unsubscribed_message")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.UnsubscribeConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.UnsubscribeConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onNext(responseEnvelope);
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).unsubscribeConfiguration(any(DaprProtos.UnsubscribeConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
UnsubscribeConfigurationResponse
|
||||||
|
response = client.unsubscribeConfiguration("subscription_id", CONFIG_STORE_NAME).block();
|
||||||
|
assertTrue(response.getIsUnsubscribed());
|
||||||
|
assertEquals("unsubscribed_message", response.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unsubscribeConfigurationTestWithError() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.UnsubscribeConfigurationResponse> observer =
|
||||||
|
(StreamObserver<DaprProtos.UnsubscribeConfigurationResponse>) invocation.getArguments()[1];
|
||||||
|
observer.onError(new RuntimeException());
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).unsubscribeConfiguration(any(DaprProtos.UnsubscribeConfigurationRequest.class), any());
|
||||||
|
|
||||||
|
assertThrowsDaprException(ExecutionException.class, () -> {
|
||||||
|
client.unsubscribeConfiguration("subscription_id", CONFIG_STORE_NAME).block();
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
client.unsubscribeConfiguration("", CONFIG_STORE_NAME).block();
|
||||||
|
});
|
||||||
|
|
||||||
|
UnsubscribeConfigurationRequest req = new UnsubscribeConfigurationRequest("subscription_id", "");
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
client.unsubscribeConfiguration(req).block();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private DaprProtos.GetConfigurationResponse getSingleMockResponse() {
|
||||||
|
Map<String, String> metadata = new HashMap<>();
|
||||||
|
metadata.put("meta1", "value1");
|
||||||
|
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
||||||
|
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
||||||
|
.setValue("configvalue1")
|
||||||
|
.setVersion("1")
|
||||||
|
.putAllMetadata(metadata)
|
||||||
|
.build());
|
||||||
|
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
|
||||||
|
.putAllItems(configs)
|
||||||
|
.build();
|
||||||
|
return responseEnvelope;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DaprProtos.GetConfigurationResponse getMultipleMockResponse() {
|
||||||
|
Map<String, String> metadata = new HashMap<>();
|
||||||
|
metadata.put("meta1", "value1");
|
||||||
|
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
||||||
|
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
||||||
|
.setValue("configvalue1")
|
||||||
|
.setVersion("1")
|
||||||
|
.putAllMetadata(metadata)
|
||||||
|
.build());
|
||||||
|
configs.put("configkey2", CommonProtos.ConfigurationItem.newBuilder()
|
||||||
|
.setValue("configvalue2")
|
||||||
|
.setVersion("1")
|
||||||
|
.putAllMetadata(metadata)
|
||||||
|
.build());
|
||||||
|
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
|
||||||
|
.putAllItems(configs)
|
||||||
|
.build();
|
||||||
|
return responseEnvelope;
|
||||||
|
}
|
||||||
|
|
||||||
/* If this test is failing, it means that a new value was added to StateOptions.Consistency
|
/* If this test is failing, it means that a new value was added to StateOptions.Consistency
|
||||||
* enum, without creating a mapping to one of the proto defined gRPC enums
|
* enum, without creating a mapping to one of the proto defined gRPC enums
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ package io.dapr.client;
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||||
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
import io.dapr.client.domain.DeleteStateRequest;
|
import io.dapr.client.domain.DeleteStateRequest;
|
||||||
import io.dapr.client.domain.GetBulkStateRequest;
|
import io.dapr.client.domain.GetBulkStateRequest;
|
||||||
import io.dapr.client.domain.GetStateRequest;
|
import io.dapr.client.domain.GetStateRequest;
|
||||||
|
|
@ -23,7 +24,10 @@ import io.dapr.client.domain.InvokeMethodRequest;
|
||||||
import io.dapr.client.domain.PublishEventRequest;
|
import io.dapr.client.domain.PublishEventRequest;
|
||||||
import io.dapr.client.domain.State;
|
import io.dapr.client.domain.State;
|
||||||
import io.dapr.client.domain.StateOptions;
|
import io.dapr.client.domain.StateOptions;
|
||||||
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
import io.dapr.client.domain.TransactionalStateOperation;
|
import io.dapr.client.domain.TransactionalStateOperation;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
||||||
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
import io.dapr.config.Properties;
|
import io.dapr.config.Properties;
|
||||||
import io.dapr.exceptions.DaprException;
|
import io.dapr.exceptions.DaprException;
|
||||||
import io.dapr.serializer.DaprObjectSerializer;
|
import io.dapr.serializer.DaprObjectSerializer;
|
||||||
|
|
@ -51,6 +55,7 @@ import java.util.Arrays;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import reactor.util.context.ContextView;
|
import reactor.util.context.ContextView;
|
||||||
|
|
@ -58,6 +63,7 @@ import reactor.util.context.ContextView;
|
||||||
import static io.dapr.utils.TestUtils.assertThrowsDaprException;
|
import static io.dapr.utils.TestUtils.assertThrowsDaprException;
|
||||||
import static io.dapr.utils.TestUtils.findFreePort;
|
import static io.dapr.utils.TestUtils.findFreePort;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
@ -68,6 +74,8 @@ public class DaprClientHttpTest {
|
||||||
|
|
||||||
private static final String STATE_STORE_NAME = "MyStateStore";
|
private static final String STATE_STORE_NAME = "MyStateStore";
|
||||||
|
|
||||||
|
private static final String CONFIG_STORE_NAME = "MyConfigStore";
|
||||||
|
|
||||||
private static final String SECRET_STORE_NAME = "MySecretStore";
|
private static final String SECRET_STORE_NAME = "MySecretStore";
|
||||||
|
|
||||||
private final String EXPECTED_RESULT =
|
private final String EXPECTED_RESULT =
|
||||||
|
|
@ -1304,6 +1312,120 @@ public class DaprClientHttpTest {
|
||||||
assertEquals("2", secrets.get("two").get("b"));
|
assertEquals("2", secrets.get("two").get("b"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getConfigurationTestErrorScenario() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
daprClientHttp.getConfiguration("", "key").block();
|
||||||
|
});
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
daprClientHttp.getConfiguration(" ", "key").block();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getConfigurationTest() {
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore")
|
||||||
|
.param("key","configkey1")
|
||||||
|
.respond("{\"configkey1\" : {\"value\" : \"configvalue1\",\"version\" : \"1\"}}");
|
||||||
|
|
||||||
|
ConfigurationItem ci = daprClientHttp.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
||||||
|
assertNotNull(ci);
|
||||||
|
assertEquals("configkey1", ci.getKey());
|
||||||
|
assertEquals("configvalue1", ci.getValue());
|
||||||
|
assertEquals("1", ci.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAllConfigurationTest() {
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore")
|
||||||
|
.respond("{\"configkey1\" : {\"value\" : \"configvalue1\",\"version\" : \"1\"}}");
|
||||||
|
|
||||||
|
ConfigurationItem ci = daprClientHttp.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
||||||
|
assertNotNull(ci);
|
||||||
|
assertEquals("configkey1", ci.getKey());
|
||||||
|
assertEquals("configvalue1", ci.getValue());
|
||||||
|
assertEquals("1", ci.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeConfigurationTest() {
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore/subscribe")
|
||||||
|
.param("key", "configkey1")
|
||||||
|
.respond("{\"id\":\"1234\"}");
|
||||||
|
|
||||||
|
Iterator<SubscribeConfigurationResponse> itr = daprClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
||||||
|
assertTrue(itr.hasNext());
|
||||||
|
SubscribeConfigurationResponse res = itr.next();
|
||||||
|
assertEquals("1234", res.getSubscriptionId());
|
||||||
|
assertFalse(itr.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeAllConfigurationTest() {
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore/subscribe")
|
||||||
|
.respond("{\"id\":\"1234\"}");
|
||||||
|
|
||||||
|
Iterator<SubscribeConfigurationResponse> itr = daprClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
||||||
|
assertTrue(itr.hasNext());
|
||||||
|
SubscribeConfigurationResponse res = itr.next();
|
||||||
|
assertEquals("1234", res.getSubscriptionId());
|
||||||
|
assertFalse(itr.hasNext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unsubscribeConfigurationTest() {
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore/1234/unsubscribe")
|
||||||
|
.respond("{\"ok\": true}");
|
||||||
|
|
||||||
|
UnsubscribeConfigurationResponse res = daprClientHttp.unsubscribeConfiguration("1234", CONFIG_STORE_NAME).block();
|
||||||
|
assertTrue(res.getIsUnsubscribed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unsubscribeConfigurationTestWithError() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
daprClientHttp.unsubscribeConfiguration("", CONFIG_STORE_NAME).block();
|
||||||
|
});
|
||||||
|
|
||||||
|
UnsubscribeConfigurationRequest req = new UnsubscribeConfigurationRequest("subscription_id", "");
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
daprClientHttp.unsubscribeConfiguration(req).block();
|
||||||
|
});
|
||||||
|
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore/1234/unsubscribe")
|
||||||
|
.respond("{\"ok\": false, \"message\": \"some error while unsubscribing\"}");
|
||||||
|
UnsubscribeConfigurationResponse res = daprClientHttp.unsubscribeConfiguration("1234", CONFIG_STORE_NAME).block();
|
||||||
|
assertFalse(res.getIsUnsubscribed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void subscribeConfigurationTestWithError() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
daprClientHttp.subscribeConfiguration("", "key1").blockFirst();
|
||||||
|
});
|
||||||
|
|
||||||
|
mockInterceptor.addRule()
|
||||||
|
.get()
|
||||||
|
.path("/v1.0/configuration/MyConfigStore/subscribe")
|
||||||
|
.param("key", "configkey1")
|
||||||
|
.respond(500);
|
||||||
|
assertThrows(DaprException.class, () -> {
|
||||||
|
daprClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").blockFirst();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void closeException() {
|
public void closeException() {
|
||||||
DaprHttp daprHttp = Mockito.mock(DaprHttp.class);
|
DaprHttp daprHttp = Mockito.mock(DaprHttp.class);
|
||||||
|
|
|
||||||
|
|
@ -20,17 +20,12 @@ import com.google.protobuf.ByteString;
|
||||||
import io.dapr.client.domain.BulkPublishRequest;
|
import io.dapr.client.domain.BulkPublishRequest;
|
||||||
import io.dapr.client.domain.BulkPublishEntry;
|
import io.dapr.client.domain.BulkPublishEntry;
|
||||||
import io.dapr.client.domain.BulkPublishResponse;
|
import io.dapr.client.domain.BulkPublishResponse;
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
|
||||||
import io.dapr.client.domain.QueryStateItem;
|
import io.dapr.client.domain.QueryStateItem;
|
||||||
import io.dapr.client.domain.QueryStateRequest;
|
import io.dapr.client.domain.QueryStateRequest;
|
||||||
import io.dapr.client.domain.QueryStateResponse;
|
import io.dapr.client.domain.QueryStateResponse;
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.query.Query;
|
import io.dapr.client.domain.query.Query;
|
||||||
import io.dapr.serializer.DaprObjectSerializer;
|
import io.dapr.serializer.DaprObjectSerializer;
|
||||||
import io.dapr.serializer.DefaultObjectSerializer;
|
import io.dapr.serializer.DefaultObjectSerializer;
|
||||||
import io.dapr.v1.CommonProtos;
|
|
||||||
import io.dapr.v1.DaprGrpc;
|
import io.dapr.v1.DaprGrpc;
|
||||||
import io.dapr.v1.DaprProtos;
|
import io.dapr.v1.DaprProtos;
|
||||||
import io.grpc.Status;
|
import io.grpc.Status;
|
||||||
|
|
@ -47,19 +42,15 @@ import reactor.core.publisher.Mono;
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
import static io.dapr.utils.TestUtils.assertThrowsDaprException;
|
import static io.dapr.utils.TestUtils.assertThrowsDaprException;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
|
|
@ -72,7 +63,6 @@ import static org.mockito.Mockito.when;
|
||||||
public class DaprPreviewClientGrpcTest {
|
public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
private static final ObjectMapper MAPPER = new ObjectMapper();
|
||||||
private static final String CONFIG_STORE_NAME = "MyConfigStore";
|
|
||||||
private static final String QUERY_STORE_NAME = "testQueryStore";
|
private static final String QUERY_STORE_NAME = "testQueryStore";
|
||||||
|
|
||||||
private static final String PUBSUB_NAME = "testPubsub";
|
private static final String PUBSUB_NAME = "testPubsub";
|
||||||
|
|
@ -295,248 +285,6 @@ public class DaprPreviewClientGrpcTest {
|
||||||
Assert.assertEquals("expected no entries to be failed", 0, result.getFailedEntries().size());
|
Assert.assertEquals("expected no entries to be failed", 0, result.getFailedEntries().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getConfigurationTestErrorScenario() {
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
previewClient.getConfiguration("", "key").block();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getSingleConfigurationTest() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(getSingleMockResponse());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
|
||||||
assertEquals("configvalue1", ci.getValue());
|
|
||||||
assertEquals("1", ci.getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getSingleConfigurationWithMetadataTest() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(getSingleMockResponse());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
Map<String, String> reqMetadata = new HashMap<>();
|
|
||||||
reqMetadata.put("meta1", "value1");
|
|
||||||
ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1", reqMetadata).block();
|
|
||||||
assertEquals("configvalue1", ci.getValue());
|
|
||||||
assertEquals("1", ci.getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getMultipleConfigurationTest() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(getMultipleMockResponse());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
Map<String, ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1","configkey2").block();
|
|
||||||
assertEquals(2, cis.size());
|
|
||||||
assertTrue("configkey1", cis.containsKey("configkey1"));
|
|
||||||
assertEquals("configvalue1", cis.get("configkey1").getValue());
|
|
||||||
assertEquals("1", cis.get("configkey1").getVersion());
|
|
||||||
assertTrue("configkey2", cis.containsKey("configkey2"));
|
|
||||||
assertEquals("configvalue2", cis.get("configkey2").getValue());
|
|
||||||
assertEquals("1", cis.get("configkey2").getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getMultipleConfigurationWithMetadataTest() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.GetConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.GetConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(getMultipleMockResponse());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
Map<String, String> reqMetadata = new HashMap<>();
|
|
||||||
reqMetadata.put("meta1", "value1");
|
|
||||||
List<String> keys = Arrays.asList("configkey1","configkey2");
|
|
||||||
Map<String, ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).block();
|
|
||||||
assertEquals(2, cis.size());
|
|
||||||
assertTrue("configkey1", cis.containsKey("configkey1"));
|
|
||||||
assertEquals("configvalue1", cis.get("configkey1").getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeConfigurationTest() {
|
|
||||||
Map<String, String> metadata = new HashMap<>();
|
|
||||||
metadata.put("meta1", "value1");
|
|
||||||
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
|
||||||
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
|
||||||
.setValue("configvalue1")
|
|
||||||
.setVersion("1")
|
|
||||||
.putAllMetadata(metadata)
|
|
||||||
.build());
|
|
||||||
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
|
|
||||||
.putAllItems(configs)
|
|
||||||
.setId("subscription_id")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(responseEnvelope);
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).subscribeConfigurationAlpha1(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
Iterator<SubscribeConfigurationResponse> itr = previewClient.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
|
||||||
assertTrue(itr.hasNext());
|
|
||||||
SubscribeConfigurationResponse res = itr.next();
|
|
||||||
assertTrue(res.getItems().containsKey("configkey1"));
|
|
||||||
assertEquals("subscription_id", res.getSubscriptionId());
|
|
||||||
assertFalse(itr.hasNext());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeConfigurationTestWithMetadata() {
|
|
||||||
Map<String, String> metadata = new HashMap<>();
|
|
||||||
metadata.put("meta1", "value1");
|
|
||||||
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
|
||||||
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
|
||||||
.setValue("configvalue1")
|
|
||||||
.setVersion("1")
|
|
||||||
.putAllMetadata(metadata)
|
|
||||||
.build());
|
|
||||||
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
|
|
||||||
.putAllItems(configs)
|
|
||||||
.setId("subscription_id")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(responseEnvelope);
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).subscribeConfigurationAlpha1(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
Map<String, String> reqMetadata = new HashMap<>();
|
|
||||||
List<String> keys = Arrays.asList("configkey1");
|
|
||||||
|
|
||||||
Iterator<SubscribeConfigurationResponse> itr = previewClient.subscribeConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).toIterable().iterator();
|
|
||||||
assertTrue(itr.hasNext());
|
|
||||||
SubscribeConfigurationResponse res = itr.next();
|
|
||||||
assertTrue(res.getItems().containsKey("configkey1"));
|
|
||||||
assertEquals("subscription_id", res.getSubscriptionId());
|
|
||||||
assertFalse(itr.hasNext());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeConfigurationWithErrorTest() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.SubscribeConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.SubscribeConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onError(new RuntimeException());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).subscribeConfigurationAlpha1(any(DaprProtos.SubscribeConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
assertThrowsDaprException(ExecutionException.class, () -> {
|
|
||||||
previewClient.subscribeConfiguration(CONFIG_STORE_NAME, "key").blockFirst();
|
|
||||||
});
|
|
||||||
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
previewClient.subscribeConfiguration("", "key").blockFirst();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void unsubscribeConfigurationTest() {
|
|
||||||
DaprProtos.UnsubscribeConfigurationResponse responseEnvelope = DaprProtos.UnsubscribeConfigurationResponse.newBuilder()
|
|
||||||
.setOk(true)
|
|
||||||
.setMessage("unsubscribed_message")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.UnsubscribeConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.UnsubscribeConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(responseEnvelope);
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).unsubscribeConfigurationAlpha1(any(DaprProtos.UnsubscribeConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
UnsubscribeConfigurationResponse
|
|
||||||
response = previewClient.unsubscribeConfiguration("subscription_id", CONFIG_STORE_NAME).block();
|
|
||||||
assertTrue(response.getIsUnsubscribed());
|
|
||||||
assertEquals("unsubscribed_message", response.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void unsubscribeConfigurationTestWithError() {
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.UnsubscribeConfigurationResponse> observer =
|
|
||||||
(StreamObserver<DaprProtos.UnsubscribeConfigurationResponse>) invocation.getArguments()[1];
|
|
||||||
observer.onError(new RuntimeException());
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).unsubscribeConfigurationAlpha1(any(DaprProtos.UnsubscribeConfigurationRequest.class), any());
|
|
||||||
|
|
||||||
assertThrowsDaprException(ExecutionException.class, () -> {
|
|
||||||
previewClient.unsubscribeConfiguration("subscription_id", CONFIG_STORE_NAME).block();
|
|
||||||
});
|
|
||||||
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
previewClient.unsubscribeConfiguration("", CONFIG_STORE_NAME).block();
|
|
||||||
});
|
|
||||||
|
|
||||||
UnsubscribeConfigurationRequest req = new UnsubscribeConfigurationRequest("subscription_id", "");
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
previewClient.unsubscribeConfiguration(req).block();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private DaprProtos.GetConfigurationResponse getSingleMockResponse() {
|
|
||||||
Map<String, String> metadata = new HashMap<>();
|
|
||||||
metadata.put("meta1", "value1");
|
|
||||||
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
|
||||||
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
|
||||||
.setValue("configvalue1")
|
|
||||||
.setVersion("1")
|
|
||||||
.putAllMetadata(metadata)
|
|
||||||
.build());
|
|
||||||
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
|
|
||||||
.putAllItems(configs)
|
|
||||||
.build();
|
|
||||||
return responseEnvelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
private DaprProtos.GetConfigurationResponse getMultipleMockResponse() {
|
|
||||||
Map<String, String> metadata = new HashMap<>();
|
|
||||||
metadata.put("meta1", "value1");
|
|
||||||
Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
|
|
||||||
configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
|
|
||||||
.setValue("configvalue1")
|
|
||||||
.setVersion("1")
|
|
||||||
.putAllMetadata(metadata)
|
|
||||||
.build());
|
|
||||||
configs.put("configkey2", CommonProtos.ConfigurationItem.newBuilder()
|
|
||||||
.setValue("configvalue2")
|
|
||||||
.setVersion("1")
|
|
||||||
.putAllMetadata(metadata)
|
|
||||||
.build());
|
|
||||||
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
|
|
||||||
.putAllItems(configs)
|
|
||||||
.build();
|
|
||||||
return responseEnvelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryStateExceptionsTest() {
|
public void queryStateExceptionsTest() {
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,10 @@ limitations under the License.
|
||||||
|
|
||||||
package io.dapr.client;
|
package io.dapr.client;
|
||||||
|
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
|
||||||
import io.dapr.client.domain.QueryStateRequest;
|
import io.dapr.client.domain.QueryStateRequest;
|
||||||
import io.dapr.client.domain.QueryStateResponse;
|
import io.dapr.client.domain.QueryStateResponse;
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationRequest;
|
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
|
||||||
import io.dapr.client.domain.query.Query;
|
import io.dapr.client.domain.query.Query;
|
||||||
import io.dapr.config.Properties;
|
import io.dapr.config.Properties;
|
||||||
import io.dapr.exceptions.DaprException;
|
|
||||||
import io.dapr.utils.TypeRef;
|
import io.dapr.utils.TypeRef;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.mock.Behavior;
|
import okhttp3.mock.Behavior;
|
||||||
|
|
@ -29,16 +24,12 @@ import okhttp3.mock.MockInterceptor;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
public class DaprPreviewClientHttpTest {
|
public class DaprPreviewClientHttpTest {
|
||||||
private static final String CONFIG_STORE_NAME = "MyConfigStore";
|
|
||||||
|
|
||||||
private DaprPreviewClient daprPreviewClientHttp;
|
private DaprPreviewClient daprPreviewClientHttp;
|
||||||
|
|
||||||
|
|
@ -107,118 +98,4 @@ public class DaprPreviewClientHttpTest {
|
||||||
assertEquals("result must be same", "testData", response.getResults().get(0).getValue());
|
assertEquals("result must be same", "testData", response.getResults().get(0).getValue());
|
||||||
assertEquals("result must be same", "6f54ad94-dfb9-46f0-a371-e42d550adb7d", response.getResults().get(0).getEtag());
|
assertEquals("result must be same", "6f54ad94-dfb9-46f0-a371-e42d550adb7d", response.getResults().get(0).getEtag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getConfigurationTestErrorScenario() {
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
daprPreviewClientHttp.getConfiguration("", "key").block();
|
|
||||||
});
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
daprPreviewClientHttp.getConfiguration(" ", "key").block();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getConfigurationTest() {
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore")
|
|
||||||
.param("key","configkey1")
|
|
||||||
.respond("{\"configkey1\" : {\"value\" : \"configvalue1\",\"version\" : \"1\"}}");
|
|
||||||
|
|
||||||
ConfigurationItem ci = daprPreviewClientHttp.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
|
||||||
assertNotNull(ci);
|
|
||||||
assertEquals("configkey1", ci.getKey());
|
|
||||||
assertEquals("configvalue1", ci.getValue());
|
|
||||||
assertEquals("1", ci.getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getAllConfigurationTest() {
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore")
|
|
||||||
.respond("{\"configkey1\" : {\"value\" : \"configvalue1\",\"version\" : \"1\"}}");
|
|
||||||
|
|
||||||
ConfigurationItem ci = daprPreviewClientHttp.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
|
|
||||||
assertNotNull(ci);
|
|
||||||
assertEquals("configkey1", ci.getKey());
|
|
||||||
assertEquals("configvalue1", ci.getValue());
|
|
||||||
assertEquals("1", ci.getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeConfigurationTest() {
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore/subscribe")
|
|
||||||
.param("key", "configkey1")
|
|
||||||
.respond("{\"id\":\"1234\"}");
|
|
||||||
|
|
||||||
Iterator<SubscribeConfigurationResponse> itr = daprPreviewClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
|
||||||
assertTrue(itr.hasNext());
|
|
||||||
SubscribeConfigurationResponse res = itr.next();
|
|
||||||
assertEquals("1234", res.getSubscriptionId());
|
|
||||||
assertFalse(itr.hasNext());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeAllConfigurationTest() {
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore/subscribe")
|
|
||||||
.respond("{\"id\":\"1234\"}");
|
|
||||||
|
|
||||||
Iterator<SubscribeConfigurationResponse> itr = daprPreviewClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
|
|
||||||
assertTrue(itr.hasNext());
|
|
||||||
SubscribeConfigurationResponse res = itr.next();
|
|
||||||
assertEquals("1234", res.getSubscriptionId());
|
|
||||||
assertFalse(itr.hasNext());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void unsubscribeConfigurationTest() {
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore/1234/unsubscribe")
|
|
||||||
.respond("{\"ok\": true}");
|
|
||||||
|
|
||||||
UnsubscribeConfigurationResponse res = daprPreviewClientHttp.unsubscribeConfiguration("1234", CONFIG_STORE_NAME).block();
|
|
||||||
assertTrue(res.getIsUnsubscribed());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void unsubscribeConfigurationTestWithError() {
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
daprPreviewClientHttp.unsubscribeConfiguration("", CONFIG_STORE_NAME).block();
|
|
||||||
});
|
|
||||||
|
|
||||||
UnsubscribeConfigurationRequest req = new UnsubscribeConfigurationRequest("subscription_id", "");
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
daprPreviewClientHttp.unsubscribeConfiguration(req).block();
|
|
||||||
});
|
|
||||||
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore/1234/unsubscribe")
|
|
||||||
.respond("{\"ok\": false, \"message\": \"some error while unsubscribing\"}");
|
|
||||||
UnsubscribeConfigurationResponse res = daprPreviewClientHttp.unsubscribeConfiguration("1234", CONFIG_STORE_NAME).block();
|
|
||||||
assertFalse(res.getIsUnsubscribed());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void subscribeConfigurationTestWithError() {
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
|
||||||
daprPreviewClientHttp.subscribeConfiguration("", "key1").blockFirst();
|
|
||||||
});
|
|
||||||
|
|
||||||
mockInterceptor.addRule()
|
|
||||||
.get()
|
|
||||||
.path("/v1.0-alpha1/configuration/MyConfigStore/subscribe")
|
|
||||||
.param("key", "configkey1")
|
|
||||||
.respond(500);
|
|
||||||
assertThrows(DaprException.class, () -> {
|
|
||||||
daprPreviewClientHttp.subscribeConfiguration(CONFIG_STORE_NAME, "configkey1").blockFirst();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue