mirror of https://github.com/dapr/java-sdk.git
Adding metadata endpoint (#1049)
* adding metadata endpoint Signed-off-by: salaboy <Salaboy@gmail.com> * apply formatting Signed-off-by: salaboy <Salaboy@gmail.com> * updating formatting Signed-off-by: salaboy <Salaboy@gmail.com> * updating formatting Signed-off-by: salaboy <Salaboy@gmail.com> * reverting formatting Signed-off-by: salaboy <Salaboy@gmail.com> * making domain classes final Signed-off-by: salaboy <Salaboy@gmail.com> * making domain model immutable Signed-off-by: salaboy <Salaboy@gmail.com> * equals/hashcode Signed-off-by: salaboy <Salaboy@gmail.com> * updating tests and clients Signed-off-by: salaboy <Salaboy@gmail.com> * rebasing after http client removed Signed-off-by: salaboy <Salaboy@gmail.com> * reverting delete Signed-off-by: salaboy <Salaboy@gmail.com> * adding space Signed-off-by: salaboy <Salaboy@gmail.com> * update copy and spaces Signed-off-by: salaboy <Salaboy@gmail.com> * eof line Signed-off-by: salaboy <Salaboy@gmail.com> * another new line Signed-off-by: salaboy <Salaboy@gmail.com> * adding coverage tests Signed-off-by: salaboy <Salaboy@gmail.com> * removing equals and hashcode Signed-off-by: salaboy <Salaboy@gmail.com> --------- Signed-off-by: salaboy <Salaboy@gmail.com>
This commit is contained in:
parent
502f7c0638
commit
7e09841b4a
|
@ -14,6 +14,7 @@ limitations under the License.
|
||||||
package io.dapr.client;
|
package io.dapr.client;
|
||||||
|
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
|
import io.dapr.client.domain.DaprMetadata;
|
||||||
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;
|
||||||
|
@ -671,6 +672,13 @@ public interface DaprClient extends AutoCloseable {
|
||||||
*/
|
*/
|
||||||
<T extends AbstractStub<T>> T newGrpcStub(String appId, Function<Channel, T> stubBuilder);
|
<T extends AbstractStub<T>> T newGrpcStub(String appId, Function<Channel, T> stubBuilder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches Dapr Metadata from the metadata endpoint.
|
||||||
|
*
|
||||||
|
* @return DaprMetadata containing Dapr Metadata from the metadata endpoint.
|
||||||
|
*/
|
||||||
|
Mono<DaprMetadata> getMetadata();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gracefully shutdown the dapr runtime.
|
* Gracefully shutdown the dapr runtime.
|
||||||
*
|
*
|
||||||
|
|
|
@ -20,7 +20,9 @@ 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.ComponentMetadata;
|
||||||
import io.dapr.client.domain.ConfigurationItem;
|
import io.dapr.client.domain.ConfigurationItem;
|
||||||
|
import io.dapr.client.domain.DaprMetadata;
|
||||||
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;
|
||||||
|
@ -36,11 +38,13 @@ import io.dapr.client.domain.PublishEventRequest;
|
||||||
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.RuleMetadata;
|
||||||
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.SubscribeConfigurationRequest;
|
||||||
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
import io.dapr.client.domain.SubscribeConfigurationResponse;
|
||||||
|
import io.dapr.client.domain.SubscriptionMetadata;
|
||||||
import io.dapr.client.domain.TransactionalStateOperation;
|
import io.dapr.client.domain.TransactionalStateOperation;
|
||||||
import io.dapr.client.domain.UnlockRequest;
|
import io.dapr.client.domain.UnlockRequest;
|
||||||
import io.dapr.client.domain.UnlockResponseStatus;
|
import io.dapr.client.domain.UnlockResponseStatus;
|
||||||
|
@ -58,6 +62,10 @@ import io.dapr.utils.TypeRef;
|
||||||
import io.dapr.v1.CommonProtos;
|
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.dapr.v1.DaprProtos.PubsubSubscription;
|
||||||
|
import io.dapr.v1.DaprProtos.PubsubSubscriptionRule;
|
||||||
|
import io.dapr.v1.DaprProtos.RegisteredComponents;
|
||||||
|
import io.grpc.CallOptions;
|
||||||
import io.grpc.Channel;
|
import io.grpc.Channel;
|
||||||
import io.grpc.stub.AbstractStub;
|
import io.grpc.stub.AbstractStub;
|
||||||
import io.grpc.stub.StreamObserver;
|
import io.grpc.stub.StreamObserver;
|
||||||
|
@ -118,7 +126,8 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
private final DaprHttp httpClient;
|
private final DaprHttp httpClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default access level constructor, in order to create an instance of this class use io.dapr.client.DaprClientBuilder
|
* Default access level constructor, in order to create an instance of this
|
||||||
|
* class use io.dapr.client.DaprClientBuilder
|
||||||
*
|
*
|
||||||
* @param channel Facade for the managed GRPC channel
|
* @param channel Facade for the managed GRPC channel
|
||||||
* @param asyncStub async gRPC stub
|
* @param asyncStub async gRPC stub
|
||||||
|
@ -1169,8 +1178,7 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
key,
|
key,
|
||||||
configurationItem.getValue(),
|
configurationItem.getValue(),
|
||||||
configurationItem.getVersion(),
|
configurationItem.getVersion(),
|
||||||
configurationItem.getMetadataMap()
|
configurationItem.getMetadataMap());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1231,4 +1239,43 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
public Mono<DaprMetadata> getMetadata() {
|
||||||
|
DaprProtos.GetMetadataRequest metadataRequest = DaprProtos.GetMetadataRequest.newBuilder().build();
|
||||||
|
return Mono.deferContextual(
|
||||||
|
context -> this.<DaprProtos.GetMetadataResponse>createMono(
|
||||||
|
it -> intercept(context, asyncStub).getMetadata(metadataRequest, it)))
|
||||||
|
.map(
|
||||||
|
it -> {
|
||||||
|
try {
|
||||||
|
return buildDaprMetadata(it);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw DaprException.propagate(ex);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private DaprMetadata buildDaprMetadata(
|
||||||
|
DaprProtos.GetMetadataResponse response) throws IOException {
|
||||||
|
List<RegisteredComponents> registeredComponentsList = response.getRegisteredComponentsList();
|
||||||
|
|
||||||
|
List<ComponentMetadata> components = new ArrayList<>();
|
||||||
|
for (RegisteredComponents rc : registeredComponentsList) {
|
||||||
|
components.add(new ComponentMetadata(rc.getName(), rc.getType(), rc.getVersion()));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PubsubSubscription> subscriptionsList = response.getSubscriptionsList();
|
||||||
|
List<SubscriptionMetadata> subscriptions = new ArrayList<>();
|
||||||
|
for (PubsubSubscription s : subscriptionsList) {
|
||||||
|
List<PubsubSubscriptionRule> rulesList = s.getRules().getRulesList();
|
||||||
|
List<RuleMetadata> rules = new ArrayList<>();
|
||||||
|
for (PubsubSubscriptionRule r : rulesList) {
|
||||||
|
rules.add(new RuleMetadata(r.getPath()));
|
||||||
|
}
|
||||||
|
subscriptions.add(new SubscriptionMetadata(s.getTopic(), s.getPubsubName(), s.getDeadLetterTopic(), rules));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DaprMetadata(response.getId(), response.getRuntimeVersion(), components, subscriptions);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 The Dapr Authors
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.dapr.client.domain;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ComponentMetadata describes a Dapr Component.
|
||||||
|
*/
|
||||||
|
public final class ComponentMetadata {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String type;
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for a ComponentMetadata.
|
||||||
|
*
|
||||||
|
* @param name of the component
|
||||||
|
* @param type component type
|
||||||
|
* @param version version of the component
|
||||||
|
*/
|
||||||
|
public ComponentMetadata(String name, String type, String version) {
|
||||||
|
this.name = name;
|
||||||
|
this.type = type;
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 The Dapr Authors
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.dapr.client.domain;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DaprMetadata describes the Dapr Metadata.
|
||||||
|
*/
|
||||||
|
public final class DaprMetadata {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String runtimeVersion;
|
||||||
|
private List<ComponentMetadata> components;
|
||||||
|
private List<SubscriptionMetadata> subscriptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for a DaprMetadata.
|
||||||
|
*
|
||||||
|
* @param id of the application
|
||||||
|
* @param runtimeVersion Dapr version
|
||||||
|
* @param components list of registered componnets
|
||||||
|
* @param subscriptions list of registered subscription
|
||||||
|
*/
|
||||||
|
public DaprMetadata(String id, String runtimeVersion, List<ComponentMetadata> components,
|
||||||
|
List<SubscriptionMetadata> subscriptions) {
|
||||||
|
this.id = id;
|
||||||
|
this.runtimeVersion = runtimeVersion;
|
||||||
|
this.components = components == null ? Collections.emptyList() : Collections.unmodifiableList(components);
|
||||||
|
this.subscriptions = subscriptions == null ? Collections.emptyList() : Collections.unmodifiableList(subscriptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRuntimeVersion() {
|
||||||
|
return runtimeVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ComponentMetadata> getComponents() {
|
||||||
|
return components;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<SubscriptionMetadata> getSubscriptions() {
|
||||||
|
return subscriptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 The Dapr Authors
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.dapr.client.domain;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RuleMetadata describes the Subscription Rule's Metadata.
|
||||||
|
*/
|
||||||
|
public final class RuleMetadata {
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
public RuleMetadata(String path) {
|
||||||
|
this.path = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPath() {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 The Dapr Authors
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.dapr.client.domain;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SubscriptionMetadata describes the Subscription Metadata.
|
||||||
|
*/
|
||||||
|
public final class SubscriptionMetadata {
|
||||||
|
private String topic;
|
||||||
|
private String pubsubname;
|
||||||
|
private String deadLetterTopic;
|
||||||
|
private List<RuleMetadata> rules;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for a SubscriptionMetadata.
|
||||||
|
*
|
||||||
|
* @param topic of the pubsub component
|
||||||
|
* @param pubsubname component name
|
||||||
|
* @param deadLetterTopic dead letter topic
|
||||||
|
* @param rules subscription path rules
|
||||||
|
*/
|
||||||
|
public SubscriptionMetadata(String topic, String pubsubname, String deadLetterTopic, List<RuleMetadata> rules) {
|
||||||
|
this.topic = topic;
|
||||||
|
this.pubsubname = pubsubname;
|
||||||
|
this.deadLetterTopic = deadLetterTopic;
|
||||||
|
this.rules = rules == null ? Collections.emptyList() : Collections.unmodifiableList(rules);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTopic() {
|
||||||
|
return topic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPubsubname() {
|
||||||
|
return pubsubname;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getDeadLetterTopic() {
|
||||||
|
return deadLetterTopic;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<RuleMetadata> getRules() {
|
||||||
|
return rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ 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.ConfigurationItem;
|
||||||
|
import io.dapr.client.domain.DaprMetadata;
|
||||||
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;
|
||||||
|
@ -28,12 +29,16 @@ 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.UnsubscribeConfigurationRequest;
|
||||||
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
import io.dapr.client.domain.UnsubscribeConfigurationResponse;
|
||||||
|
import io.dapr.exceptions.DaprError;
|
||||||
|
import io.dapr.exceptions.DaprException;
|
||||||
import io.dapr.serializer.DaprObjectSerializer;
|
import io.dapr.serializer.DaprObjectSerializer;
|
||||||
import io.dapr.serializer.DefaultObjectSerializer;
|
import io.dapr.serializer.DefaultObjectSerializer;
|
||||||
import io.dapr.utils.TypeRef;
|
import io.dapr.utils.TypeRef;
|
||||||
import io.dapr.v1.CommonProtos;
|
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.dapr.v1.DaprProtos.PubsubSubscription;
|
||||||
|
import io.dapr.v1.DaprProtos.RegisteredComponents;
|
||||||
import io.grpc.Status;
|
import io.grpc.Status;
|
||||||
import io.grpc.StatusRuntimeException;
|
import io.grpc.StatusRuntimeException;
|
||||||
import io.grpc.protobuf.StatusProto;
|
import io.grpc.protobuf.StatusProto;
|
||||||
|
@ -2078,4 +2083,65 @@ public class DaprClientGrpcTest {
|
||||||
|
|
||||||
return StatusProto.toStatusRuntimeException(status);
|
return StatusProto.toStatusRuntimeException(status);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Test
|
||||||
|
public void getMetadataTest() {
|
||||||
|
|
||||||
|
RegisteredComponents registeredComponents = DaprProtos.RegisteredComponents.newBuilder()
|
||||||
|
.setName("statestore")
|
||||||
|
.setType("state.redis")
|
||||||
|
.setVersion("v1")
|
||||||
|
.build();
|
||||||
|
PubsubSubscription pubsubSubscription = DaprProtos.PubsubSubscription.newBuilder()
|
||||||
|
.setDeadLetterTopic("")
|
||||||
|
.setPubsubName("pubsub")
|
||||||
|
.setTopic("topic")
|
||||||
|
.setRules(DaprProtos.PubsubSubscriptionRules.newBuilder()
|
||||||
|
.addRules(DaprProtos.PubsubSubscriptionRule.newBuilder().setPath("/events").build()).build())
|
||||||
|
.build();
|
||||||
|
DaprProtos.GetMetadataResponse responseEnvelope = DaprProtos.GetMetadataResponse.newBuilder()
|
||||||
|
.setId("app")
|
||||||
|
.setRuntimeVersion("1.1x.x")
|
||||||
|
.addAllRegisteredComponents(Collections.singletonList(registeredComponents))
|
||||||
|
.addAllSubscriptions(Collections.singletonList(pubsubSubscription))
|
||||||
|
.build();
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
StreamObserver<DaprProtos.GetMetadataResponse> observer = (StreamObserver<DaprProtos.GetMetadataResponse>) invocation
|
||||||
|
.getArguments()[1];
|
||||||
|
observer.onNext(responseEnvelope);
|
||||||
|
observer.onCompleted();
|
||||||
|
return null;
|
||||||
|
}).when(daprStub).getMetadata(any(DaprProtos.GetMetadataRequest.class), any());
|
||||||
|
|
||||||
|
Mono<DaprMetadata> result = client.getMetadata();
|
||||||
|
DaprMetadata metadata = result.block();
|
||||||
|
assertNotNull(metadata);
|
||||||
|
assertEquals("app", metadata.getId());
|
||||||
|
assertEquals("1.1x.x", metadata.getRuntimeVersion());
|
||||||
|
assertEquals(1, metadata.getComponents().size());
|
||||||
|
assertEquals(registeredComponents.getName(), metadata.getComponents().get(0).getName());
|
||||||
|
assertEquals(registeredComponents.getVersion(), metadata.getComponents().get(0).getVersion());
|
||||||
|
assertEquals(registeredComponents.getType(), metadata.getComponents().get(0).getType());
|
||||||
|
assertEquals(1, metadata.getSubscriptions().size());
|
||||||
|
assertEquals(pubsubSubscription.getPubsubName(), metadata.getSubscriptions().get(0).getPubsubname());
|
||||||
|
assertEquals(pubsubSubscription.getTopic(), metadata.getSubscriptions().get(0).getTopic());
|
||||||
|
assertEquals(1, metadata.getSubscriptions().get(0).getRules().size());
|
||||||
|
assertEquals(pubsubSubscription.getRules().getRules(0).getPath(), metadata.getSubscriptions().get(0).getRules().get(0).getPath());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMetadataExceptionTest() {
|
||||||
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
throw new RuntimeException();
|
||||||
|
}).when(daprStub).getMetadata(any(DaprProtos.GetMetadataRequest.class), any());
|
||||||
|
|
||||||
|
Mono<DaprMetadata> result = client.getMetadata();
|
||||||
|
|
||||||
|
assertThrowsDaprException(
|
||||||
|
RuntimeException.class,
|
||||||
|
"UNKNOWN",
|
||||||
|
"UNKNOWN: ",
|
||||||
|
() -> result.block());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue