Update sdk to use configuration dictionaries (#769)

* Update sdk to use configuration maps

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* add ref

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* add ref validate

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* go 1.19

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* fix it test

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* update comments

Signed-off-by: addjuarez <addiajuarez@gmail.com>

* use immutable maps

Signed-off-by: addjuarez <addiajuarez@gmail.com>

Signed-off-by: addjuarez <addiajuarez@gmail.com>
This commit is contained in:
addjuarez 2022-09-05 21:28:34 -05:00 committed by GitHub
parent 997c86d526
commit 2cc9e536c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 123 additions and 104 deletions

View File

@ -20,7 +20,7 @@ jobs:
matrix: matrix:
java: [ 11, 13, 15, 16 ] java: [ 11, 13, 15, 16 ]
env: env:
GOVER: 1.17.7 GOVER: 1.19
GOOS: linux GOOS: linux
GOARCH: amd64 GOARCH: amd64
GOPROXY: https://proxy.golang.org GOPROXY: https://proxy.golang.org
@ -29,7 +29,7 @@ jobs:
DAPR_RUNTIME_VER: 1.8.0-rc.3 DAPR_RUNTIME_VER: 1.8.0-rc.3
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.8.0-rc.1/install/install.sh DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.8.0-rc.1/install/install.sh
DAPR_CLI_REF: DAPR_CLI_REF:
DAPR_REF: DAPR_REF: 683a436ff1367e4ff2d27da2d79069c04ec2c46d
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Set up OpenJDK ${{ env.JDK_VER }} - name: Set up OpenJDK ${{ env.JDK_VER }}

View File

@ -31,7 +31,7 @@ jobs:
matrix: matrix:
java: [ 11, 13, 15, 16 ] java: [ 11, 13, 15, 16 ]
env: env:
GOVER: 1.17.7 GOVER: 1.19
GOOS: linux GOOS: linux
GOARCH: amd64 GOARCH: amd64
GOPROXY: https://proxy.golang.org GOPROXY: https://proxy.golang.org
@ -40,7 +40,7 @@ jobs:
DAPR_RUNTIME_VER: 1.8.0-rc.3 DAPR_RUNTIME_VER: 1.8.0-rc.3
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.8.0-rc.1/install/install.sh DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.8.0-rc.1/install/install.sh
DAPR_CLI_REF: DAPR_CLI_REF:
DAPR_REF: DAPR_REF: 683a436ff1367e4ff2d27da2d79069c04ec2c46d
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Set up OpenJDK ${{ env.JDK_VER }} - name: Set up OpenJDK ${{ env.JDK_VER }}

View File

@ -26,6 +26,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public class ConfigurationClient { public class ConfigurationClient {
@ -72,9 +73,9 @@ public class ConfigurationClient {
public static void getConfigurationsUsingVarargs(DaprPreviewClient client) { public static void getConfigurationsUsingVarargs(DaprPreviewClient client) {
System.out.println("*******trying to retrieve configurations for a variable no. of keys********"); System.out.println("*******trying to retrieve configurations for a variable no. of keys********");
try { try {
Mono<List<ConfigurationItem>> items = Mono<Map<String, ConfigurationItem>> items =
client.getConfiguration(CONFIG_STORE_NAME, "myconfig1", "myconfig3"); client.getConfiguration(CONFIG_STORE_NAME, "myconfig1", "myconfig3");
items.block().forEach(ConfigurationClient::print); items.block().forEach((k,v) -> print(v, k));
} catch (Exception ex) { } catch (Exception ex) {
System.out.println(ex.getMessage()); System.out.println(ex.getMessage());
} }
@ -93,8 +94,8 @@ public class ConfigurationClient {
keys.add("myconfig3"); keys.add("myconfig3");
GetConfigurationRequest req = new GetConfigurationRequest(CONFIG_STORE_NAME, keys); GetConfigurationRequest req = new GetConfigurationRequest(CONFIG_STORE_NAME, keys);
try { try {
Mono<List<ConfigurationItem>> items = client.getConfiguration(req); Mono<Map<String, ConfigurationItem>> items = client.getConfiguration(req);
items.block().forEach(ConfigurationClient::print); items.block().forEach((k,v) -> print(v, k));
} catch (Exception ex) { } catch (Exception ex) {
System.out.println(ex.getMessage()); System.out.println(ex.getMessage());
} }
@ -110,10 +111,10 @@ public class ConfigurationClient {
AtomicReference<Disposable> disposableAtomicReference = new AtomicReference<>(); AtomicReference<Disposable> disposableAtomicReference = new AtomicReference<>();
SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(CONFIG_STORE_NAME, keys); SubscribeConfigurationRequest req = new SubscribeConfigurationRequest(CONFIG_STORE_NAME, keys);
Runnable subscribeTask = () -> { Runnable subscribeTask = () -> {
Flux<List<ConfigurationItem>> outFlux = client.subscribeToConfiguration(req); Flux<Map<String, ConfigurationItem>> outFlux = client.subscribeToConfiguration(req);
disposableAtomicReference.set(outFlux disposableAtomicReference.set(outFlux
.subscribe( .subscribe(
cis -> cis.forEach(ConfigurationClient::print) cis -> cis.forEach((k,v) -> print(v, k))
)); ));
}; };
new Thread(subscribeTask).start(); new Thread(subscribeTask).start();
@ -140,8 +141,8 @@ public class ConfigurationClient {
} }
} }
private static void print(ConfigurationItem item) { private static void print(ConfigurationItem item, String key) {
System.out.println(item.getValue() + " : key ->" + item.getKey()); System.out.println(item.getValue() + " : key ->" + key);
} }
private static void executeDockerCommand(int postfix) { private static void executeDockerCommand(int postfix) {

View File

@ -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.7.0-rc.2/dapr/proto</dapr.proto.baseurl> <dapr.proto.baseurl>https://raw.githubusercontent.com/dapr/dapr/683a436ff1367e4ff2d27da2d79069c04ec2c46d/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>

View File

@ -78,7 +78,6 @@ public class ConfigurationClientIT extends BaseIT {
@Test @Test
public void getConfiguration() { public void getConfiguration() {
ConfigurationItem ci = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block(); ConfigurationItem ci = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1").block();
assertEquals(ci.getKey(), "myconfigkey1");
assertEquals(ci.getValue(), "myconfigvalue1"); assertEquals(ci.getValue(), "myconfigvalue1");
} }
@ -91,10 +90,11 @@ public class ConfigurationClientIT extends BaseIT {
@Test @Test
public void getConfigurations() { public void getConfigurations() {
List<ConfigurationItem> cis = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block(); Map<String, ConfigurationItem> cis = daprPreviewClient.getConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2").block();
assertTrue(cis.size() == 2); assertTrue(cis.size() == 2);
assertEquals(cis.get(0).getKey(), "myconfigkey1"); assertTrue(cis.containsKey("myconfigkey1"));
assertEquals(cis.get(1).getValue(), "myconfigvalue2"); assertTrue(cis.containsKey("myconfigkey2"));
assertEquals(cis.get("myconfigkey2").getValue(), "myconfigvalue2");
} }
@Test @Test
@ -111,10 +111,13 @@ public class ConfigurationClientIT extends BaseIT {
List<String> updatedValues = new ArrayList<>(); List<String> updatedValues = new ArrayList<>();
AtomicReference<Disposable> disposable = new AtomicReference<>(); AtomicReference<Disposable> disposable = new AtomicReference<>();
Runnable subscribeTask = () -> { Runnable subscribeTask = () -> {
Flux<List<ConfigurationItem>> outFlux = daprPreviewClient Flux<Map<String, ConfigurationItem>> outFlux = daprPreviewClient
.subscribeToConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2"); .subscribeToConfiguration(CONFIG_STORE_NAME, "myconfigkey1", "myconfigkey2");
disposable.set(outFlux.subscribe(update -> { disposable.set(outFlux.subscribe(update -> {
updatedValues.add(update.get(0).getValue()); updatedValues.add(update.entrySet()
.stream()
.findFirst()
.get().getValue().getValue());
})); }));
}; };
Thread subscribeThread = new Thread(subscribeTask); Thread subscribeThread = new Thread(subscribeTask);

View File

@ -504,7 +504,7 @@ abstract class AbstractDaprClient implements DaprClient, DaprPreviewClient {
@Override @Override
public Mono<ConfigurationItem> getConfiguration(String storeName, String key) { public Mono<ConfigurationItem> getConfiguration(String storeName, String key) {
GetConfigurationRequest request = new GetConfigurationRequest(storeName, filterEmptyKeys(key)); GetConfigurationRequest request = new GetConfigurationRequest(storeName, filterEmptyKeys(key));
return this.getConfiguration(request).map(data -> data.get(0)); return this.getConfiguration(request).map(data -> data.get(key));
} }
/** /**
@ -514,14 +514,14 @@ abstract class AbstractDaprClient implements DaprClient, DaprPreviewClient {
public Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata) { public Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata) {
GetConfigurationRequest request = new GetConfigurationRequest(storeName, filterEmptyKeys(key)); GetConfigurationRequest request = new GetConfigurationRequest(storeName, filterEmptyKeys(key));
request.setMetadata(metadata); request.setMetadata(metadata);
return this.getConfiguration(request).map(data -> data.get(0)); return this.getConfiguration(request).map(data -> data.get(key));
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Mono<List<ConfigurationItem>> getConfiguration(String storeName, String... keys) { public Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, String... keys) {
List<String> listOfKeys = filterEmptyKeys(keys); List<String> listOfKeys = filterEmptyKeys(keys);
GetConfigurationRequest request = new GetConfigurationRequest(storeName, listOfKeys); GetConfigurationRequest request = new GetConfigurationRequest(storeName, listOfKeys);
return this.getConfiguration(request); return this.getConfiguration(request);
@ -531,7 +531,7 @@ abstract class AbstractDaprClient implements DaprClient, DaprPreviewClient {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Mono<List<ConfigurationItem>> getConfiguration( public Mono<Map<String, ConfigurationItem>> getConfiguration(
String storeName, String storeName,
List<String> keys, List<String> keys,
Map<String, String> metadata) { Map<String, String> metadata) {
@ -543,7 +543,7 @@ abstract class AbstractDaprClient implements DaprClient, DaprPreviewClient {
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public Flux<List<ConfigurationItem>> subscribeToConfiguration(String storeName, String... keys) { public Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(String storeName, String... keys) {
List<String> listOfKeys = filterEmptyKeys(keys); List<String> listOfKeys = filterEmptyKeys(keys);
SubscribeConfigurationRequest request = new SubscribeConfigurationRequest(storeName, listOfKeys); SubscribeConfigurationRequest request = new SubscribeConfigurationRequest(storeName, listOfKeys);
return this.subscribeToConfiguration(request); return this.subscribeToConfiguration(request);
@ -552,7 +552,7 @@ abstract class AbstractDaprClient implements DaprClient, DaprPreviewClient {
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public Flux<List<ConfigurationItem>> subscribeToConfiguration( public Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(
String storeName, String storeName,
List<String> keys, List<String> keys,
Map<String, String> metadata) { Map<String, String> metadata) {

View File

@ -63,6 +63,8 @@ import reactor.util.context.Context;
import java.io.Closeable; import java.io.Closeable;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
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;
@ -766,7 +768,7 @@ public class DaprClientGrpc extends AbstractDaprClient {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Mono<List<ConfigurationItem>> getConfiguration(GetConfigurationRequest request) { public Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request) {
try { try {
final String configurationStoreName = request.getStoreName(); final String configurationStoreName = request.getStoreName();
final Map<String, String> metadata = request.getMetadata(); final Map<String, String> metadata = request.getMetadata();
@ -791,16 +793,22 @@ public class DaprClientGrpc extends AbstractDaprClient {
} }
} }
private Mono<List<ConfigurationItem>> getConfigurationAlpha1(DaprProtos.GetConfigurationRequest envelope) { private Mono<Map<String, ConfigurationItem>> getConfigurationAlpha1(DaprProtos.GetConfigurationRequest envelope) {
return Mono.subscriberContext().flatMap( return Mono.subscriberContext().flatMap(
context -> context ->
this.<DaprProtos.GetConfigurationResponse>createMono( this.<DaprProtos.GetConfigurationResponse>createMono(
it -> intercept(context, asyncStub).getConfigurationAlpha1(envelope, it) it -> intercept(context, asyncStub).getConfigurationAlpha1(envelope, it)
) )
).map( ).map(
it -> it -> {
it.getItemsList().stream() Map<String, ConfigurationItem> configMap = new HashMap<>();
.map(this::buildConfigurationItem).collect(Collectors.toList()) Iterator<Map.Entry<String, CommonProtos.ConfigurationItem>> itr = it.getItems().entrySet().iterator();
while (itr.hasNext()) {
Map.Entry<String, CommonProtos.ConfigurationItem> entry = itr.next();
configMap.put(entry.getKey(), buildConfigurationItem(entry.getValue(), entry.getKey()));
}
return Collections.unmodifiableMap(configMap);
}
); );
} }
@ -808,7 +816,7 @@ public class DaprClientGrpc extends AbstractDaprClient {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Flux<List<ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request) { public Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request) {
try { try {
final String configurationStoreName = request.getStoreName(); final String configurationStoreName = request.getStoreName();
final List<String> keys = request.getKeys(); final List<String> keys = request.getKeys();
@ -831,9 +839,15 @@ public class DaprClientGrpc extends AbstractDaprClient {
return this.<DaprProtos.SubscribeConfigurationResponse>createFlux( return this.<DaprProtos.SubscribeConfigurationResponse>createFlux(
it -> intercept(asyncStub).subscribeConfigurationAlpha1(envelope, it) it -> intercept(asyncStub).subscribeConfigurationAlpha1(envelope, it)
).map( ).map(
it -> it -> {
it.getItemsList().stream() Map<String, ConfigurationItem> configMap = new HashMap<>();
.map(this::buildConfigurationItem).collect(Collectors.toList()) Iterator<Map.Entry<String, CommonProtos.ConfigurationItem>> itr = it.getItems().entrySet().iterator();
while (itr.hasNext()) {
Map.Entry<String, CommonProtos.ConfigurationItem> entry = itr.next();
configMap.put(entry.getKey(), buildConfigurationItem(entry.getValue(), entry.getKey()));
}
return Collections.unmodifiableMap(configMap);
}
); );
} catch (Exception ex) { } catch (Exception ex) {
return DaprException.wrapFlux(ex); return DaprException.wrapFlux(ex);
@ -847,9 +861,9 @@ public class DaprClientGrpc extends AbstractDaprClient {
* @return io.dapr.client.domain.ConfigurationItem * @return io.dapr.client.domain.ConfigurationItem
*/ */
private ConfigurationItem buildConfigurationItem( private ConfigurationItem buildConfigurationItem(
CommonProtos.ConfigurationItem configurationItem) { CommonProtos.ConfigurationItem configurationItem, String key) {
return new ConfigurationItem( return new ConfigurationItem(
configurationItem.getKey(), key,
configurationItem.getValue(), configurationItem.getValue(),
configurationItem.getVersion(), configurationItem.getVersion(),
configurationItem.getMetadataMap() configurationItem.getMetadataMap()

View File

@ -767,7 +767,7 @@ public class DaprClientHttp extends AbstractDaprClient {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Mono<List<ConfigurationItem>> getConfiguration(GetConfigurationRequest request) { public Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request) {
return DaprException.wrapMono(new UnsupportedOperationException()); return DaprException.wrapMono(new UnsupportedOperationException());
} }
@ -775,7 +775,7 @@ public class DaprClientHttp extends AbstractDaprClient {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Flux<List<ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request) { public Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request) {
return DaprException.wrapFlux(new UnsupportedOperationException()); return DaprException.wrapFlux(new UnsupportedOperationException());
} }

View File

@ -53,41 +53,42 @@ public interface DaprPreviewClient extends AutoCloseable {
Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata); Mono<ConfigurationItem> getConfiguration(String storeName, String key, Map<String, String> metadata);
/** /**
* Retrieve List of configurations based on a provided variable number of keys. * Retrieve Map of configurations based on a provided variable number of keys.
* *
* @param storeName Name of the configuration store * @param storeName Name of the configuration store
* @param keys keys of the configurations which are to be retrieved * @param keys keys of the configurations which are to be retrieved
* @return Mono of List of ConfigurationItems * @return Mono of Map of ConfigurationItems
*/ */
Mono<List<ConfigurationItem>> getConfiguration(String storeName, String... keys); Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, String... keys);
/** /**
* Retrieve List of configurations based on a provided variable number of keys. * Retrieve Map of configurations based on a provided variable number of keys.
* *
* @param storeName Name of the configuration store * @param storeName Name of the configuration store
* @param keys keys of the configurations which are to be retrieved * @param keys keys of the configurations which are to be retrieved
* @param metadata optional metadata * @param metadata optional metadata
* @return Mono of List of ConfigurationItems * @return Mono of Map of ConfigurationItems
*/ */
Mono<List<ConfigurationItem>> getConfiguration(String storeName, List<String> keys, Map<String, String> metadata); Mono<Map<String, ConfigurationItem>> getConfiguration(String storeName, List<String> keys,
Map<String, String> metadata);
/** /**
* Retrieve List of configurations based on a provided configuration request object. * Retrieve Map of configurations based on a provided configuration request object.
* *
* @param request request for retrieving Configurations for a list keys * @param request request for retrieving Configurations for a list keys
* @return Mono of List of ConfigurationItems * @return Mono of Map of ConfigurationItems
*/ */
Mono<List<ConfigurationItem>> getConfiguration(GetConfigurationRequest request); Mono<Map<String, ConfigurationItem>> getConfiguration(GetConfigurationRequest request);
/** /**
* Subscribe to the keys for any change. * Subscribe to the keys for any change.
* *
* @param storeName Name of the configuration store * @param storeName Name of the configuration store
* @param keys keys of the configurations which are to be subscribed * @param keys keys of the configurations which are to be subscribed
* @return Flux of List of configuration items * @return Flux of Map of configuration items
*/ */
Flux<List<ConfigurationItem>> subscribeToConfiguration(String storeName, String... keys); Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(String storeName, String... keys);
/** /**
* Subscribe to the keys for any change. * Subscribe to the keys for any change.
@ -95,18 +96,18 @@ public interface DaprPreviewClient extends AutoCloseable {
* @param storeName Name of the configuration store * @param storeName Name of the configuration store
* @param keys keys of the configurations which are to be subscribed * @param keys keys of the configurations which are to be subscribed
* @param metadata optional metadata * @param metadata optional metadata
* @return Flux of List of configuration items * @return Flux of Map of configuration items
*/ */
Flux<List<ConfigurationItem>> subscribeToConfiguration(String storeName, List<String> keys, Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(String storeName, List<String> keys,
Map<String, String> metadata); Map<String, String> metadata);
/** /**
* Subscribe to the keys for any change. * Subscribe to the keys for any change.
* *
* @param request request for subscribing to any change for the given keys in request * @param request request for subscribing to any change for the given keys in request
* @return Flux of List of configuration items * @return Flux of Map of configuration items
*/ */
Flux<List<ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request); Flux<Map<String, ConfigurationItem>> subscribeToConfiguration(SubscribeConfigurationRequest request);
/** /**
* Query for states using a query string. * Query for states using a query string.

View File

@ -110,7 +110,6 @@ public class DaprPreviewClientGrpcTest {
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any()); }).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1").block(); ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1").block();
assertEquals("configkey1", ci.getKey());
assertEquals("configvalue1", ci.getValue()); assertEquals("configvalue1", ci.getValue());
assertEquals("1", ci.getVersion()); assertEquals("1", ci.getVersion());
} }
@ -128,7 +127,6 @@ public class DaprPreviewClientGrpcTest {
Map<String, String> reqMetadata = new HashMap<>(); Map<String, String> reqMetadata = new HashMap<>();
reqMetadata.put("meta1", "value1"); reqMetadata.put("meta1", "value1");
ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1", reqMetadata).block(); ConfigurationItem ci = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1", reqMetadata).block();
assertEquals("configkey1", ci.getKey());
assertEquals("configvalue1", ci.getValue()); assertEquals("configvalue1", ci.getValue());
assertEquals("1", ci.getVersion()); assertEquals("1", ci.getVersion());
} }
@ -143,15 +141,14 @@ public class DaprPreviewClientGrpcTest {
return null; return null;
}).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any()); }).when(daprStub).getConfigurationAlpha1(any(DaprProtos.GetConfigurationRequest.class), any());
List<ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1","configkey2").block(); Map<String, ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, "configkey1","configkey2").block();
assertEquals(2, cis.size()); assertEquals(2, cis.size());
assertEquals("configkey1", cis.stream().findFirst().get().getKey()); assertTrue("configkey1", cis.containsKey("configkey1"));
assertEquals("configvalue1", cis.stream().findFirst().get().getValue()); assertEquals("configvalue1", cis.get("configkey1").getValue());
assertEquals("1", cis.stream().findFirst().get().getVersion()); assertEquals("1", cis.get("configkey1").getVersion());
assertTrue("configkey2", cis.containsKey("configkey2"));
assertEquals("configkey2", cis.stream().skip(1).findFirst().get().getKey()); assertEquals("configvalue2", cis.get("configkey2").getValue());
assertEquals("configvalue2", cis.stream().skip(1).findFirst().get().getValue()); assertEquals("1", cis.get("configkey2").getVersion());
assertEquals("1", cis.stream().skip(1).findFirst().get().getVersion());
} }
@Test @Test
@ -167,23 +164,24 @@ public class DaprPreviewClientGrpcTest {
Map<String, String> reqMetadata = new HashMap<>(); Map<String, String> reqMetadata = new HashMap<>();
reqMetadata.put("meta1", "value1"); reqMetadata.put("meta1", "value1");
List<String> keys = Arrays.asList("configkey1","configkey2"); List<String> keys = Arrays.asList("configkey1","configkey2");
List<ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).block(); Map<String, ConfigurationItem> cis = previewClient.getConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).block();
assertEquals(2, cis.size()); assertEquals(2, cis.size());
assertEquals("configkey1", cis.stream().findFirst().get().getKey()); assertTrue("configkey1", cis.containsKey("configkey1"));
assertEquals("configvalue1", cis.stream().findFirst().get().getValue()); assertEquals("configvalue1", cis.get("configkey1").getValue());
} }
@Test @Test
public void subscribeConfigurationTest() { public void subscribeConfigurationTest() {
Map<String, String> metadata = new HashMap<>(); Map<String, String> metadata = new HashMap<>();
metadata.put("meta1", "value1"); metadata.put("meta1", "value1");
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder() Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
.addItems(CommonProtos.ConfigurationItem.newBuilder() configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
.setKey("configkey1")
.setValue("configvalue1") .setValue("configvalue1")
.setVersion("1") .setVersion("1")
.putAllMetadata(metadata) .putAllMetadata(metadata)
.build()) .build());
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
.putAllItems(configs)
.build(); .build();
doAnswer((Answer<Void>) invocation -> { doAnswer((Answer<Void>) invocation -> {
@ -194,9 +192,9 @@ public class DaprPreviewClientGrpcTest {
return null; return null;
}).when(daprStub).subscribeConfigurationAlpha1(any(DaprProtos.SubscribeConfigurationRequest.class), any()); }).when(daprStub).subscribeConfigurationAlpha1(any(DaprProtos.SubscribeConfigurationRequest.class), any());
Iterator<List<ConfigurationItem>> itr = previewClient.subscribeToConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator(); Iterator<Map<String, ConfigurationItem>> itr = previewClient.subscribeToConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
assertTrue(itr.hasNext()); assertTrue(itr.hasNext());
assertEquals("configkey1", itr.next().get(0).getKey()); assertTrue(itr.next().containsKey("configkey1"));
assertFalse(itr.hasNext()); assertFalse(itr.hasNext());
} }
@ -204,13 +202,14 @@ public class DaprPreviewClientGrpcTest {
public void subscribeConfigurationTestWithMetadata() { public void subscribeConfigurationTestWithMetadata() {
Map<String, String> metadata = new HashMap<>(); Map<String, String> metadata = new HashMap<>();
metadata.put("meta1", "value1"); metadata.put("meta1", "value1");
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder() Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
.addItems(CommonProtos.ConfigurationItem.newBuilder() configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
.setKey("configkey1")
.setValue("configvalue1") .setValue("configvalue1")
.setVersion("1") .setVersion("1")
.putAllMetadata(metadata) .putAllMetadata(metadata)
.build()) .build());
DaprProtos.SubscribeConfigurationResponse responseEnvelope = DaprProtos.SubscribeConfigurationResponse.newBuilder()
.putAllItems(configs)
.build(); .build();
doAnswer((Answer<Void>) invocation -> { doAnswer((Answer<Void>) invocation -> {
@ -224,9 +223,9 @@ public class DaprPreviewClientGrpcTest {
Map<String, String> reqMetadata = new HashMap<>(); Map<String, String> reqMetadata = new HashMap<>();
List<String> keys = Arrays.asList("configkey1"); List<String> keys = Arrays.asList("configkey1");
Iterator<List<ConfigurationItem>> itr = previewClient.subscribeToConfiguration(CONFIG_STORE_NAME, keys, reqMetadata).toIterable().iterator(); Iterator<Map<String, ConfigurationItem>> itr = previewClient.subscribeToConfiguration(CONFIG_STORE_NAME, "configkey1").toIterable().iterator();
assertTrue(itr.hasNext()); assertTrue(itr.hasNext());
assertEquals("configkey1", itr.next().get(0).getKey()); assertTrue(itr.next().containsKey("configkey1"));
assertFalse(itr.hasNext()); assertFalse(itr.hasNext());
} }
@ -257,33 +256,34 @@ public class DaprPreviewClientGrpcTest {
private DaprProtos.GetConfigurationResponse getSingleMockResponse() { private DaprProtos.GetConfigurationResponse getSingleMockResponse() {
Map<String, String> metadata = new HashMap<>(); Map<String, String> metadata = new HashMap<>();
metadata.put("meta1", "value1"); metadata.put("meta1", "value1");
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder() Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
.addItems(CommonProtos.ConfigurationItem.newBuilder() configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
.setKey("configkey1")
.setValue("configvalue1") .setValue("configvalue1")
.setVersion("1") .setVersion("1")
.putAllMetadata(metadata) .putAllMetadata(metadata)
.build() .build());
).build(); DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
.putAllItems(configs)
.build();
return responseEnvelope; return responseEnvelope;
} }
private DaprProtos.GetConfigurationResponse getMultipleMockResponse() { private DaprProtos.GetConfigurationResponse getMultipleMockResponse() {
Map<String, String> metadata = new HashMap<>(); Map<String, String> metadata = new HashMap<>();
metadata.put("meta1", "value1"); metadata.put("meta1", "value1");
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder() Map<String, CommonProtos.ConfigurationItem> configs = new HashMap<>();
.addItems(CommonProtos.ConfigurationItem.newBuilder() configs.put("configkey1", CommonProtos.ConfigurationItem.newBuilder()
.setKey("configkey1")
.setValue("configvalue1") .setValue("configvalue1")
.setVersion("1") .setVersion("1")
.putAllMetadata(metadata) .putAllMetadata(metadata)
.build()) .build());
.addItems(CommonProtos.ConfigurationItem.newBuilder() configs.put("configkey2", CommonProtos.ConfigurationItem.newBuilder()
.setKey("configkey2")
.setValue("configvalue2") .setValue("configvalue2")
.setVersion("1") .setVersion("1")
.putAllMetadata(metadata) .putAllMetadata(metadata)
.build()) .build());
DaprProtos.GetConfigurationResponse responseEnvelope = DaprProtos.GetConfigurationResponse.newBuilder()
.putAllItems(configs)
.build(); .build();
return responseEnvelope; return responseEnvelope;
} }