mirror of https://github.com/dapr/dotnet-sdk.git
Apply linting suggestions (#492)
We've had a list of linting-related messages piling up for a while now.
This change bulk-applies these suggestions with usually relate to
simplification or use or newer language features like ??=
The only changes I did manually here are:
Removing some usage of Task.GetAwaiter().GetResult() where it was
just laziness
Removing some dead code in methods and parameters of internal APIs.
This commit is contained in:
parent
d54419526f
commit
776156298e
|
|
@ -67,13 +67,12 @@ namespace DaprDemoActor
|
||||||
return this.UnregisterReminderAsync("TestReminder");
|
return this.UnregisterReminderAsync("TestReminder");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ReceiveReminderAsync(string reminderName, byte[] state, TimeSpan dueTime, TimeSpan period)
|
public async Task ReceiveReminderAsync(string reminderName, byte[] state, TimeSpan dueTime, TimeSpan period)
|
||||||
{
|
{
|
||||||
// This method is invoked when an actor reminder is fired.
|
// This method is invoked when an actor reminder is fired.
|
||||||
var actorState = this.StateManager.GetStateAsync<MyData>(StateName).GetAwaiter().GetResult();
|
var actorState = await this.StateManager.GetStateAsync<MyData>(StateName);
|
||||||
actorState.PropertyB = $"Reminder triggered at '{DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")}'";
|
actorState.PropertyB = $"Reminder triggered at '{DateTime.Now:yyyy-MM-ddTHH:mm:ss}'";
|
||||||
this.StateManager.SetStateAsync<MyData>(StateName, actorState);
|
await this.StateManager.SetStateAsync<MyData>(StateName, actorState);
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class TimerParams
|
class TimerParams
|
||||||
|
|
@ -121,15 +120,14 @@ namespace DaprDemoActor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data">Timer input data.</param>
|
/// <param name="data">Timer input data.</param>
|
||||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||||
public Task TimerCallback(byte[] data)
|
public async Task TimerCallback(byte[] data)
|
||||||
{
|
{
|
||||||
var state = this.StateManager.GetStateAsync<MyData>(StateName).GetAwaiter().GetResult();
|
var state = await this.StateManager.GetStateAsync<MyData>(StateName);
|
||||||
state.PropertyA = $"Timer triggered at '{DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")}'";
|
state.PropertyA = $"Timer triggered at '{DateTime.Now:yyyyy-MM-ddTHH:mm:s}'";
|
||||||
this.StateManager.SetStateAsync<MyData>(StateName, state);
|
await this.StateManager.SetStateAsync<MyData>(StateName, state);
|
||||||
var timerParams = JsonSerializer.Deserialize<TimerParams>(data);
|
var timerParams = JsonSerializer.Deserialize<TimerParams>(data);
|
||||||
Console.WriteLine("Timer parameter1: " + timerParams.IntParam);
|
Console.WriteLine("Timer parameter1: " + timerParams.IntParam);
|
||||||
Console.WriteLine("Timer parameter2: " + timerParams.StringParam);
|
Console.WriteLine("Timer parameter2: " + timerParams.StringParam);
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<AccountBalance> GetAccountBalance()
|
public async Task<AccountBalance> GetAccountBalance()
|
||||||
|
|
|
||||||
|
|
@ -164,9 +164,12 @@ namespace DaprClient
|
||||||
var value = new Widget() { Size = "small", Color = "yellow", };
|
var value = new Widget() { Size = "small", Color = "yellow", };
|
||||||
var request1 = new StateTransactionRequest("mystate", JsonSerializer.SerializeToUtf8Bytes(value), StateOperationType.Upsert);
|
var request1 = new StateTransactionRequest("mystate", JsonSerializer.SerializeToUtf8Bytes(value), StateOperationType.Upsert);
|
||||||
var request2 = new StateTransactionRequest("mystate", null, StateOperationType.Delete);
|
var request2 = new StateTransactionRequest("mystate", null, StateOperationType.Delete);
|
||||||
var requests = new List<StateTransactionRequest>();
|
var requests = new List<StateTransactionRequest>
|
||||||
requests.Add(request1);
|
{
|
||||||
requests.Add(request2);
|
request1,
|
||||||
|
request2
|
||||||
|
};
|
||||||
|
|
||||||
Console.WriteLine("Executing transaction - save state and delete state");
|
Console.WriteLine("Executing transaction - save state and delete state");
|
||||||
await client.ExecuteStateTransactionAsync(storeName, requests);
|
await client.ExecuteStateTransactionAsync(storeName, requests);
|
||||||
Console.WriteLine("Executed State Transaction!");
|
Console.WriteLine("Executed State Transaction!");
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,6 @@ namespace Dapr.Actors.Builder
|
||||||
// build the proxy generator
|
// build the proxy generator
|
||||||
result.ProxyGenerator = this.CreateProxyGenerator(
|
result.ProxyGenerator = this.CreateProxyGenerator(
|
||||||
proxyInterfaceType,
|
proxyInterfaceType,
|
||||||
methodBodyTypesResultsMap,
|
|
||||||
result.ProxyActivatorType);
|
result.ProxyActivatorType);
|
||||||
|
|
||||||
context.Complete();
|
context.Complete();
|
||||||
|
|
@ -236,14 +235,6 @@ namespace Dapr.Actors.Builder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ActorProxyGenerator CreateProxyGenerator(
|
|
||||||
Type proxyInterfaceType,
|
|
||||||
IDictionary<InterfaceDescription, MethodBodyTypesBuildResult> methodBodyTypesResultsMap,
|
|
||||||
Type proxyActivatorType)
|
|
||||||
{
|
|
||||||
return this.CreateProxyGenerator(proxyInterfaceType, proxyActivatorType);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ActorProxyGenerator CreateProxyGenerator(
|
protected ActorProxyGenerator CreateProxyGenerator(
|
||||||
Type proxyInterfaceType,
|
Type proxyInterfaceType,
|
||||||
Type proxyActivatorType)
|
Type proxyActivatorType)
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ namespace Dapr.Actors.Builder
|
||||||
this.AssemblyNamespace = assemblyNamespace;
|
this.AssemblyNamespace = assemblyNamespace;
|
||||||
this.enableDebugging = enableDebugging;
|
this.enableDebugging = enableDebugging;
|
||||||
|
|
||||||
this.AssemblyBuilder = CodeBuilderUtils.CreateAssemblyBuilder(assemblyName, this.enableDebugging);
|
this.AssemblyBuilder = CodeBuilderUtils.CreateAssemblyBuilder(assemblyName);
|
||||||
this.ModuleBuilder = CodeBuilderUtils.CreateModuleBuilder(this.AssemblyBuilder, assemblyName, this.enableDebugging);
|
this.ModuleBuilder = CodeBuilderUtils.CreateModuleBuilder(this.AssemblyBuilder, assemblyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssemblyBuilder AssemblyBuilder { get; }
|
public AssemblyBuilder AssemblyBuilder { get; }
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace Dapr.Actors.Builder
|
||||||
DmAttrIsRequiredPropInfo = dmAttrType.GetProperty("IsRequired");
|
DmAttrIsRequiredPropInfo = dmAttrType.GetProperty("IsRequired");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AssemblyBuilder CreateAssemblyBuilder(string assemblyName, bool saveOnDisk = false)
|
public static AssemblyBuilder CreateAssemblyBuilder(string assemblyName)
|
||||||
{
|
{
|
||||||
return AssemblyBuilder.DefineDynamicAssembly(
|
return AssemblyBuilder.DefineDynamicAssembly(
|
||||||
new AssemblyName(assemblyName),
|
new AssemblyName(assemblyName),
|
||||||
|
|
@ -42,8 +42,7 @@ namespace Dapr.Actors.Builder
|
||||||
|
|
||||||
public static ModuleBuilder CreateModuleBuilder(
|
public static ModuleBuilder CreateModuleBuilder(
|
||||||
AssemblyBuilder assemblyBuilder,
|
AssemblyBuilder assemblyBuilder,
|
||||||
string moduleName,
|
string moduleName)
|
||||||
bool saveOnDisk = false)
|
|
||||||
{
|
{
|
||||||
return assemblyBuilder.DefineDynamicModule(moduleName);
|
return assemblyBuilder.DefineDynamicModule(moduleName);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,7 @@ namespace Dapr.Actors.Builder
|
||||||
LocalBuilder castedObject,
|
LocalBuilder castedObject,
|
||||||
MethodBodyTypes methodBodyTypes)
|
MethodBodyTypes methodBodyTypes)
|
||||||
{
|
{
|
||||||
LocalBuilder wrappedRequest = null;
|
var wrappedRequest = ilGen.DeclareLocal(typeof(object));
|
||||||
wrappedRequest = ilGen.DeclareLocal(typeof(object));
|
|
||||||
|
|
||||||
var getValueMethod = typeof(WrappedMessage).GetProperty("Value").GetGetMethod();
|
var getValueMethod = typeof(WrappedMessage).GetProperty("Value").GetGetMethod();
|
||||||
ilGen.Emit(OpCodes.Ldarg_3); // request object
|
ilGen.Emit(OpCodes.Ldarg_3); // request object
|
||||||
|
|
@ -183,7 +182,6 @@ namespace Dapr.Actors.Builder
|
||||||
elseLabel: elseLable,
|
elseLabel: elseLable,
|
||||||
castedObject: castedObject,
|
castedObject: castedObject,
|
||||||
methodDescription: methodDescription,
|
methodDescription: methodDescription,
|
||||||
interfaceName: interfaceDescription.InterfaceType.FullName,
|
|
||||||
methodBodyTypes: methodBodyTypesBuildResult.MethodBodyTypesMap[methodDescription.Name]);
|
methodBodyTypes: methodBodyTypesBuildResult.MethodBodyTypesMap[methodDescription.Name]);
|
||||||
|
|
||||||
ilGen.MarkLabel(elseLable);
|
ilGen.MarkLabel(elseLable);
|
||||||
|
|
@ -197,7 +195,6 @@ namespace Dapr.Actors.Builder
|
||||||
Label elseLabel,
|
Label elseLabel,
|
||||||
LocalBuilder castedObject,
|
LocalBuilder castedObject,
|
||||||
MethodDescription methodDescription,
|
MethodDescription methodDescription,
|
||||||
string interfaceName,
|
|
||||||
MethodBodyTypes methodBodyTypes)
|
MethodBodyTypes methodBodyTypes)
|
||||||
{
|
{
|
||||||
ilGen.Emit(OpCodes.Ldarg_1);
|
ilGen.Emit(OpCodes.Ldarg_1);
|
||||||
|
|
|
||||||
|
|
@ -207,7 +207,6 @@ namespace Dapr.Actors.Client
|
||||||
new ActorRequestMessage(
|
new ActorRequestMessage(
|
||||||
headers,
|
headers,
|
||||||
requestMsgBodyValue),
|
requestMsgBodyValue),
|
||||||
methodName,
|
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
|
|
||||||
return responseMsg?.GetBody();
|
return responseMsg?.GetBody();
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,11 @@ namespace Dapr.Actors.Communication
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
else if (obj is IActorReference && typeof(IActor).IsAssignableFrom(targetType) &&
|
else if (obj is IActorReference reference &&
|
||||||
|
typeof(IActor).IsAssignableFrom(targetType) &&
|
||||||
!typeof(IActorReference).IsAssignableFrom(targetType))
|
!typeof(IActorReference).IsAssignableFrom(targetType))
|
||||||
{
|
{
|
||||||
return ((IActorReference)obj).Bind(targetType);
|
return reference.Bind(targetType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ namespace Dapr.Actors.Communication
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActorMethodDispatcherBase GetDispatcher(int interfaceId, int methodId)
|
public ActorMethodDispatcherBase GetDispatcher(int interfaceId)
|
||||||
{
|
{
|
||||||
if (!this.map.TryGetValue(interfaceId, out var methodDispatcher))
|
if (!this.map.TryGetValue(interfaceId, out var methodDispatcher))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ namespace Dapr.Actors.Communication.Client
|
||||||
|
|
||||||
public async Task<IActorResponseMessage> InvokeAsync(
|
public async Task<IActorResponseMessage> InvokeAsync(
|
||||||
IActorRequestMessage remotingRequestMessage,
|
IActorRequestMessage remotingRequestMessage,
|
||||||
string methodName,
|
|
||||||
CancellationToken cancellationToken)
|
CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return await this.daprInteractor.InvokeActorMethodWithRemotingAsync(this.serializersManager, remotingRequestMessage, cancellationToken);
|
return await this.daprInteractor.InvokeActorMethodWithRemotingAsync(this.serializersManager, remotingRequestMessage, cancellationToken);
|
||||||
|
|
|
||||||
|
|
@ -330,15 +330,6 @@ namespace Dapr.Actors
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ActorMessageSerializersManager IntializeSerializationManager(
|
|
||||||
IActorMessageBodySerializationProvider serializationProvider)
|
|
||||||
{
|
|
||||||
// TODO serializer settings
|
|
||||||
return new ActorMessageSerializersManager(
|
|
||||||
serializationProvider,
|
|
||||||
new ActorMessageHeaderSerializer());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends an HTTP get request to cluster http gateway.
|
/// Sends an HTTP get request to cluster http gateway.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ namespace Dapr.Actors.Runtime
|
||||||
}
|
}
|
||||||
|
|
||||||
var timerInfo = new TimerInfo(callback, callbackParams, dueTime, period);
|
var timerInfo = new TimerInfo(callback, callbackParams, dueTime, period);
|
||||||
var actorTimer = new ActorTimer(this, timerName, timerInfo);
|
var actorTimer = new ActorTimer(timerName, timerInfo);
|
||||||
var serializedTimer = JsonSerializer.Serialize<TimerInfo>(timerInfo);
|
var serializedTimer = JsonSerializer.Serialize<TimerInfo>(timerInfo);
|
||||||
await ActorRuntime.DaprInteractor.RegisterTimerAsync(this.actorTypeName, this.Id.ToString(), timerName, serializedTimer);
|
await ActorRuntime.DaprInteractor.RegisterTimerAsync(this.actorTypeName, this.Id.ToString(), timerName, serializedTimer);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ namespace Dapr.Actors.Runtime
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call the method on the method dispatcher using the Func below.
|
// Call the method on the method dispatcher using the Func below.
|
||||||
var methodDispatcher = this.methodDispatcherMap.GetDispatcher(actorMessageHeader.InterfaceId, actorMessageHeader.MethodId);
|
var methodDispatcher = this.methodDispatcherMap.GetDispatcher(actorMessageHeader.InterfaceId);
|
||||||
|
|
||||||
// Create a Func to be invoked by common method.
|
// Create a Func to be invoked by common method.
|
||||||
async Task<Tuple<string, byte[]>> RequestFunc(Actor actor, CancellationToken ct)
|
async Task<Tuple<string, byte[]>> RequestFunc(Actor actor, CancellationToken ct)
|
||||||
|
|
@ -189,7 +189,7 @@ namespace Dapr.Actors.Runtime
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async Task FireTimerAsync(ActorId actorId, string timerName, Stream requestBodyStream, CancellationToken cancellationToken = default)
|
internal async Task FireTimerAsync(ActorId actorId, Stream requestBodyStream, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var timerData = await JsonSerializer.DeserializeAsync<TimerInfo>(requestBodyStream);
|
var timerData = await JsonSerializer.DeserializeAsync<TimerInfo>(requestBodyStream);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,7 @@ namespace Dapr.Actors.Runtime
|
||||||
{
|
{
|
||||||
var actorTypeInfo = ActorTypeInformation.Get(typeof(TActor));
|
var actorTypeInfo = ActorTypeInformation.Get(typeof(TActor));
|
||||||
var registration = new ActorRegistration(actorTypeInfo);
|
var registration = new ActorRegistration(actorTypeInfo);
|
||||||
if (configure != null)
|
configure?.Invoke(registration);
|
||||||
{
|
|
||||||
configure(registration);
|
|
||||||
}
|
|
||||||
this.Add(registration);
|
this.Add(registration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ namespace Dapr.Actors.Runtime
|
||||||
{
|
{
|
||||||
using(this.logger.BeginScope("ActorType: {ActorType}, ActorId: {ActorId}, TimerName: {Timer}", actorTypeName, actorId, timerName))
|
using(this.logger.BeginScope("ActorType: {ActorType}, ActorId: {ActorId}, TimerName: {Timer}", actorTypeName, actorId, timerName))
|
||||||
{
|
{
|
||||||
return GetActorManager(actorTypeName).FireTimerAsync(new ActorId(actorId), timerName, requestBodyStream, cancellationToken);
|
return GetActorManager(actorTypeName).FireTimerAsync(new ActorId(actorId), requestBodyStream, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,13 @@ namespace Dapr.Actors.Runtime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ActorTimer
|
public class ActorTimer
|
||||||
{
|
{
|
||||||
private readonly Actor owner;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The constructor
|
/// The constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ActorTimer(
|
public ActorTimer(
|
||||||
Actor owner,
|
|
||||||
string timerName,
|
string timerName,
|
||||||
TimerInfo timerInfo)
|
TimerInfo timerInfo)
|
||||||
{
|
{
|
||||||
this.owner = owner;
|
|
||||||
this.Name = timerName;
|
this.Name = timerName;
|
||||||
this.TimerInfo = timerInfo;
|
this.TimerInfo = timerInfo;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,13 @@ namespace Dapr.Actors.Runtime
|
||||||
var days = hours / 24;
|
var days = hours / 24;
|
||||||
hours %= 24;
|
hours %= 24;
|
||||||
|
|
||||||
var minutesSpan = spanOfValue.Slice(hIndex + 1, mIndex - (hIndex + 1));
|
var minutesSpan = spanOfValue[(hIndex + 1)..mIndex];
|
||||||
var minutes = int.Parse(minutesSpan);
|
var minutes = int.Parse(minutesSpan);
|
||||||
|
|
||||||
var secondsSpan = spanOfValue.Slice(mIndex + 1, sIndex - (mIndex + 1));
|
var secondsSpan = spanOfValue[(mIndex + 1)..sIndex];
|
||||||
var seconds = int.Parse(secondsSpan);
|
var seconds = int.Parse(secondsSpan);
|
||||||
|
|
||||||
var millisecondsSpan = spanOfValue.Slice(sIndex + 1, msIndex - (sIndex + 1));
|
var millisecondsSpan = spanOfValue[(sIndex + 1)..msIndex];
|
||||||
var milliseconds = int.Parse(millisecondsSpan);
|
var milliseconds = int.Parse(millisecondsSpan);
|
||||||
|
|
||||||
return new TimeSpan(days, hours, minutes, seconds, milliseconds);
|
return new TimeSpan(days, hours, minutes, seconds, milliseconds);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace Dapr.Actors.Runtime
|
||||||
|
|
||||||
if (stringResult.Length != 0)
|
if (stringResult.Length != 0)
|
||||||
{
|
{
|
||||||
T typedResult = default;
|
T typedResult;
|
||||||
|
|
||||||
// perform default json de-serialization if custom serializer was not provided.
|
// perform default json de-serialization if custom serializer was not provided.
|
||||||
if (this.actorStateSerializer != null)
|
if (this.actorStateSerializer != null)
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ namespace Dapr.Client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class DaprClientBuilder
|
public sealed class DaprClientBuilder
|
||||||
{
|
{
|
||||||
private const string defaultDaprGrpcPort = "50001";
|
private const string DefaultDaprGrpcPort = "50001";
|
||||||
private string daprEndpoint;
|
private string daprEndpoint;
|
||||||
private JsonSerializerOptions jsonSerializerOptions;
|
private JsonSerializerOptions jsonSerializerOptions;
|
||||||
private GrpcChannelOptions gRPCChannelOptions;
|
private GrpcChannelOptions gRPCChannelOptions;
|
||||||
|
|
@ -35,7 +35,7 @@ namespace Dapr.Client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DaprClientBuilder()
|
public DaprClientBuilder()
|
||||||
{
|
{
|
||||||
var daprGrpcPort = Environment.GetEnvironmentVariable("DAPR_GRPC_PORT") ?? defaultDaprGrpcPort;
|
var daprGrpcPort = Environment.GetEnvironmentVariable("DAPR_GRPC_PORT") ?? DefaultDaprGrpcPort;
|
||||||
this.daprEndpoint = $"http://127.0.0.1:{daprGrpcPort}";
|
this.daprEndpoint = $"http://127.0.0.1:{daprGrpcPort}";
|
||||||
this.jsonSerializerOptions = new JsonSerializerOptions
|
this.jsonSerializerOptions = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
|
@ -79,7 +79,7 @@ namespace Dapr.Client
|
||||||
// Set correct switch to make insecure gRPC service calls. This switch must be set before creating the GrpcChannel.
|
// Set correct switch to make insecure gRPC service calls. This switch must be set before creating the GrpcChannel.
|
||||||
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
||||||
}
|
}
|
||||||
this.gRPCChannelOptions = this.gRPCChannelOptions ?? new GrpcChannelOptions(){ ThrowOperationCanceledOnCancellation = true };
|
this.gRPCChannelOptions ??= new GrpcChannelOptions(){ ThrowOperationCanceledOnCancellation = true };
|
||||||
var channel = GrpcChannel.ForAddress(this.daprEndpoint, this.gRPCChannelOptions);
|
var channel = GrpcChannel.ForAddress(this.daprEndpoint, this.gRPCChannelOptions);
|
||||||
var client = new Autogenerated.Dapr.DaprClient(channel);
|
var client = new Autogenerated.Dapr.DaprClient(channel);
|
||||||
return new DaprClientGrpc(client, this.jsonSerializerOptions);
|
return new DaprClientGrpc(client, this.jsonSerializerOptions);
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,7 @@ namespace Dapr.Client
|
||||||
var getBulkStateEnvelope = new Autogenerated.GetBulkStateRequest()
|
var getBulkStateEnvelope = new Autogenerated.GetBulkStateRequest()
|
||||||
{
|
{
|
||||||
StoreName = storeName,
|
StoreName = storeName,
|
||||||
Parallelism = parallelism ?? default(int)
|
Parallelism = parallelism ?? default
|
||||||
};
|
};
|
||||||
|
|
||||||
getBulkStateEnvelope.Keys.AddRange(keys);
|
getBulkStateEnvelope.Keys.AddRange(keys);
|
||||||
|
|
@ -317,9 +317,9 @@ namespace Dapr.Client
|
||||||
CancellationToken cancellationToken = default)
|
CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var protoHTTPExtension = new Autogenerated.HTTPExtension();
|
var protoHTTPExtension = new Autogenerated.HTTPExtension();
|
||||||
var contentType = "";
|
|
||||||
Metadata headers = null;
|
Metadata headers = null;
|
||||||
|
|
||||||
|
string contentType;
|
||||||
if (httpOptions != null)
|
if (httpOptions != null)
|
||||||
{
|
{
|
||||||
protoHTTPExtension.Verb = ConvertHTTPVerb(httpOptions.Method);
|
protoHTTPExtension.Verb = ConvertHTTPVerb(httpOptions.Method);
|
||||||
|
|
@ -453,10 +453,8 @@ namespace Dapr.Client
|
||||||
var rpcError = detail.Unpack<Google.Rpc.ErrorInfo>();
|
var rpcError = detail.Unpack<Google.Rpc.ErrorInfo>();
|
||||||
var grpcStatusCode = (StatusCode)status.Code;
|
var grpcStatusCode = (StatusCode)status.Code;
|
||||||
|
|
||||||
string innerHttpErrorCode = null;
|
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpCodeMetadata, out var innerHttpErrorCode);
|
||||||
string innerHttpErrorMessage = null;
|
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpErrorMetadata, out var innerHttpErrorMessage);
|
||||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpCodeMetadata, out innerHttpErrorCode);
|
|
||||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpErrorMetadata, out innerHttpErrorMessage);
|
|
||||||
if(innerHttpErrorCode != null || innerHttpErrorMessage != null)
|
if(innerHttpErrorCode != null || innerHttpErrorMessage != null)
|
||||||
{
|
{
|
||||||
// Response returned by Http server
|
// Response returned by Http server
|
||||||
|
|
@ -476,11 +474,6 @@ namespace Dapr.Client
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsResponseFromHttpCallee(Dictionary<string,byte[]> headers)
|
|
||||||
{
|
|
||||||
return headers.ContainsKey(DaprHttpStatusHeader);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region State Apis
|
#region State Apis
|
||||||
|
|
@ -684,10 +677,11 @@ namespace Dapr.Client
|
||||||
|
|
||||||
foreach (var state in states)
|
foreach (var state in states)
|
||||||
{
|
{
|
||||||
var stateOperation = new Autogenerated.TransactionalStateOperation();
|
var stateOperation = new Autogenerated.TransactionalStateOperation
|
||||||
|
{
|
||||||
stateOperation.OperationType = state.OperationType.ToString().ToLower();
|
OperationType = state.OperationType.ToString().ToLower(),
|
||||||
stateOperation.Request = ToAutogeneratedStateItem(state);
|
Request = ToAutogeneratedStateItem(state)
|
||||||
|
};
|
||||||
|
|
||||||
executeStateTransactionRequestEnvelope.Operations.Add(stateOperation);
|
executeStateTransactionRequestEnvelope.Operations.Add(stateOperation);
|
||||||
|
|
||||||
|
|
@ -706,8 +700,10 @@ namespace Dapr.Client
|
||||||
|
|
||||||
private Autogenerated.StateItem ToAutogeneratedStateItem(StateTransactionRequest state)
|
private Autogenerated.StateItem ToAutogeneratedStateItem(StateTransactionRequest state)
|
||||||
{
|
{
|
||||||
var stateOperation = new Autogenerated.StateItem();
|
var stateOperation = new Autogenerated.StateItem
|
||||||
stateOperation.Key = state.Key;
|
{
|
||||||
|
Key = state.Key
|
||||||
|
};
|
||||||
|
|
||||||
if (state.Value != null)
|
if (state.Value != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,6 @@ namespace Dapr.Extensions.Configuration.DaprSecretStore
|
||||||
|
|
||||||
private readonly IEnumerable<DaprSecretDescriptor> secretDescriptors;
|
private readonly IEnumerable<DaprSecretDescriptor> secretDescriptors;
|
||||||
|
|
||||||
const string localhost = "127.0.0.1";
|
|
||||||
|
|
||||||
static string daprPort => Environment.GetEnvironmentVariable("DAPR_GRPC_PORT") ?? "50001";
|
|
||||||
|
|
||||||
private readonly DaprClient client;
|
private readonly DaprClient client;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -57,14 +57,14 @@ namespace Dapr.Actors.Test
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveTestState()
|
public Task SaveTestState()
|
||||||
{
|
{
|
||||||
this.SaveStateAsync().GetAwaiter().GetResult();
|
return this.SaveStateAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetTestStateAsync()
|
public Task ResetTestStateAsync()
|
||||||
{
|
{
|
||||||
this.ResetStateAsync().GetAwaiter().GetResult();
|
return this.ResetStateAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TimerCallbackNonTaskReturnType()
|
public void TimerCallbackNonTaskReturnType()
|
||||||
|
|
|
||||||
|
|
@ -7,22 +7,21 @@ namespace Dapr.Actors.Test
|
||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
|
using System.Linq;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Dapr.Actors;
|
using Dapr.Actors;
|
||||||
using Dapr.Actors.Runtime;
|
using Dapr.Actors.Runtime;
|
||||||
using Xunit;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System.Linq;
|
using Xunit;
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
public sealed class ActorRuntimeTests
|
public sealed class ActorRuntimeTests
|
||||||
{
|
{
|
||||||
private const string RenamedActorTypeName = "MyRenamedActor";
|
private const string RenamedActorTypeName = "MyRenamedActor";
|
||||||
private ILoggerFactory loggerFactory = new LoggerFactory();
|
private readonly ILoggerFactory loggerFactory = new LoggerFactory();
|
||||||
private ActorActivatorFactory activatorFactory = new DefaultActorActivatorFactory();
|
private readonly ActorActivatorFactory activatorFactory = new DefaultActorActivatorFactory();
|
||||||
|
|
||||||
private interface ITestActor : IActor
|
private interface ITestActor : IActor
|
||||||
{
|
{
|
||||||
|
|
@ -97,7 +96,7 @@ namespace Dapr.Actors.Test
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TestActorSettings()
|
public async Task TestActorSettings()
|
||||||
{
|
{
|
||||||
var actorType = typeof(TestActor);
|
var actorType = typeof(TestActor);
|
||||||
|
|
||||||
|
|
@ -113,7 +112,7 @@ namespace Dapr.Actors.Test
|
||||||
Assert.Contains(actorType.Name, runtime.RegisteredActors.Select(a => a.Type.ActorTypeName), StringComparer.InvariantCulture);
|
Assert.Contains(actorType.Name, runtime.RegisteredActors.Select(a => a.Type.ActorTypeName), StringComparer.InvariantCulture);
|
||||||
|
|
||||||
ArrayBufferWriter<byte> writer = new ArrayBufferWriter<byte>();
|
ArrayBufferWriter<byte> writer = new ArrayBufferWriter<byte>();
|
||||||
runtime.SerializeSettingsAndRegisteredTypes(writer).GetAwaiter().GetResult();
|
await runtime.SerializeSettingsAndRegisteredTypes(writer);
|
||||||
|
|
||||||
// read back the serialized json
|
// read back the serialized json
|
||||||
var array = writer.WrittenSpan.ToArray();
|
var array = writer.WrittenSpan.ToArray();
|
||||||
|
|
|
||||||
|
|
@ -26,22 +26,22 @@ namespace Dapr.Actors.Test.Runtime
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TestSaveState()
|
public async Task TestSaveState()
|
||||||
{
|
{
|
||||||
var mockStateManager = new Mock<IActorStateManager>();
|
var mockStateManager = new Mock<IActorStateManager>();
|
||||||
mockStateManager.Setup(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()));
|
mockStateManager.Setup(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()));
|
||||||
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
||||||
testDemoActor.SaveTestState();
|
await testDemoActor.SaveTestState();
|
||||||
mockStateManager.Verify(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()), Times.Once);
|
mockStateManager.Verify(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TestResetStateAsync()
|
public async Task TestResetStateAsync()
|
||||||
{
|
{
|
||||||
var mockStateManager = new Mock<IActorStateManager>();
|
var mockStateManager = new Mock<IActorStateManager>();
|
||||||
mockStateManager.Setup(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()));
|
mockStateManager.Setup(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()));
|
||||||
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
||||||
testDemoActor.ResetTestStateAsync();
|
await testDemoActor.ResetTestStateAsync();
|
||||||
mockStateManager.Verify(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()), Times.Once);
|
mockStateManager.Verify(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Dapr
|
||||||
internal class StateTestClient : DaprClientGrpc
|
internal class StateTestClient : DaprClientGrpc
|
||||||
{
|
{
|
||||||
public Dictionary<string, object> State { get; } = new Dictionary<string, object>();
|
public Dictionary<string, object> State { get; } = new Dictionary<string, object>();
|
||||||
static GrpcChannel channel = GrpcChannel.ForAddress("http://localhost");
|
private static readonly GrpcChannel channel = GrpcChannel.ForAddress("http://localhost");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="DaprClientGrpc"/> class.
|
/// Initializes a new instance of the <see cref="DaprClientGrpc"/> class.
|
||||||
|
|
|
||||||
|
|
@ -110,9 +110,11 @@ namespace Dapr.AspNetCore.Test
|
||||||
private async Task SendResponseWithState<T>(T state, TestHttpClient.Entry entry)
|
private async Task SendResponseWithState<T>(T state, TestHttpClient.Entry entry)
|
||||||
{
|
{
|
||||||
var stateData = TypeConverters.ToJsonByteString(state);
|
var stateData = TypeConverters.ToJsonByteString(state);
|
||||||
var stateResponse = new GetStateResponse();
|
var stateResponse = new GetStateResponse
|
||||||
stateResponse.Data = stateData;
|
{
|
||||||
stateResponse.Etag = "test";
|
Data = stateData,
|
||||||
|
Etag = "test",
|
||||||
|
};
|
||||||
|
|
||||||
var streamContent = await GrpcUtils.CreateResponseContent(stateResponse);
|
var streamContent = await GrpcUtils.CreateResponseContent(stateResponse);
|
||||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
||||||
|
|
|
||||||
|
|
@ -185,8 +185,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -242,8 +244,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -272,8 +276,10 @@ namespace Dapr.Client.Test
|
||||||
Request request = new Request() { RequestParameter = "Hello " };
|
Request request = new Request() { RequestParameter = "Hello " };
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -292,8 +298,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -419,8 +427,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -450,8 +460,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -482,8 +494,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -547,9 +561,11 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
invokeResponse.ContentType = Constants.ContentTypeApplicationJson;
|
Data = TypeConverters.ToAny(data),
|
||||||
|
ContentType = Constants.ContentTypeApplicationJson
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -636,8 +652,10 @@ namespace Dapr.Client.Test
|
||||||
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
||||||
// var dataBytes = new byte[]{1,2,3};
|
// var dataBytes = new byte[]{1,2,3};
|
||||||
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName };
|
{
|
||||||
|
Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName }
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -687,8 +705,10 @@ namespace Dapr.Client.Test
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
||||||
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName };
|
{
|
||||||
|
Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName }
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -739,8 +759,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -805,8 +827,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
var client = new MockClient();
|
var client = new MockClient();
|
||||||
var data = new Response() { Name = "Look, I was invoked!" };
|
var data = new Response() { Name = "Look, I was invoked!" };
|
||||||
var invokeResponse = new InvokeResponse();
|
var invokeResponse = new InvokeResponse
|
||||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
{
|
||||||
|
Data = TypeConverters.ToAny(data)
|
||||||
|
};
|
||||||
|
|
||||||
var response =
|
var response =
|
||||||
client.Call<InvokeResponse>()
|
client.Call<InvokeResponse>()
|
||||||
|
|
@ -952,25 +976,16 @@ namespace Dapr.Client.Test
|
||||||
private async Task SendResponse<T>(T data, TestHttpClient.Entry entry, JsonSerializerOptions options = null)
|
private async Task SendResponse<T>(T data, TestHttpClient.Entry entry, JsonSerializerOptions options = null)
|
||||||
{
|
{
|
||||||
var dataAny = TypeConverters.ToAny(data, options);
|
var dataAny = TypeConverters.ToAny(data, options);
|
||||||
var dataResponse = new InvokeResponse();
|
var dataResponse = new InvokeResponse
|
||||||
dataResponse.Data = dataAny;
|
{
|
||||||
|
Data = dataAny
|
||||||
|
};
|
||||||
|
|
||||||
var streamContent = await GrpcUtils.CreateResponseContent(dataResponse);
|
var streamContent = await GrpcUtils.CreateResponseContent(dataResponse);
|
||||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
||||||
entry.Completion.SetResult(response);
|
entry.Completion.SetResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void SendResponseFromHttpServer<T>(T data, TestHttpClient.Entry entry, JsonSerializerOptions options = null)
|
|
||||||
{
|
|
||||||
var dataAny = TypeConverters.ToAny(data, options);
|
|
||||||
var dataResponse = new InvokeResponse();
|
|
||||||
dataResponse.Data = dataAny;
|
|
||||||
|
|
||||||
var streamContent = await GrpcUtils.CreateResponseContent(dataResponse);
|
|
||||||
var response = GrpcUtils.CreateResponseFromHttpServer(HttpStatusCode.OK, streamContent);
|
|
||||||
entry.Completion.SetResult(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Request
|
private class Request
|
||||||
{
|
{
|
||||||
public string RequestParameter { get; set; }
|
public string RequestParameter { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,11 @@ namespace Dapr.Client.Test
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
||||||
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata);
|
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata);
|
||||||
|
|
||||||
|
|
@ -59,9 +61,11 @@ namespace Dapr.Client.Test
|
||||||
CancellationToken ct = ctSource.Token;
|
CancellationToken ct = ctSource.Token;
|
||||||
ctSource.Cancel();
|
ctSource.Cancel();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
||||||
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata, ct);
|
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata, ct);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,9 @@ namespace Dapr.Client
|
||||||
public class InvokeApiCallBuilder<TResponse>
|
public class InvokeApiCallBuilder<TResponse>
|
||||||
{
|
{
|
||||||
private TResponse response;
|
private TResponse response;
|
||||||
private Metadata headers;
|
private readonly Metadata headers;
|
||||||
private Status status;
|
private Status status;
|
||||||
private Metadata trailers;
|
private readonly Metadata trailers;
|
||||||
|
|
||||||
public InvokeApiCallBuilder()
|
public InvokeApiCallBuilder()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,11 @@ namespace Dapr.Client.Test
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||||
|
|
||||||
// Get Request and validate
|
// Get Request and validate
|
||||||
|
|
@ -52,9 +54,11 @@ namespace Dapr.Client.Test
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||||
|
|
||||||
// Get Request and validate
|
// Get Request and validate
|
||||||
|
|
@ -69,8 +73,10 @@ namespace Dapr.Client.Test
|
||||||
request.Metadata["key2"].Should().Be("value2");
|
request.Metadata["key2"].Should().Be("value2");
|
||||||
|
|
||||||
// Create Response & Respond
|
// Create Response & Respond
|
||||||
var secrets = new Dictionary<string, string>();
|
var secrets = new Dictionary<string, string>
|
||||||
secrets.Add("redis_secret", "Guess_Redis");
|
{
|
||||||
|
{ "redis_secret", "Guess_Redis" }
|
||||||
|
};
|
||||||
await SendResponseWithSecrets(secrets, entry);
|
await SendResponseWithSecrets(secrets, entry);
|
||||||
|
|
||||||
// Get response and validate
|
// Get response and validate
|
||||||
|
|
@ -89,9 +95,11 @@ namespace Dapr.Client.Test
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||||
|
|
||||||
// Get Request and validate
|
// Get Request and validate
|
||||||
|
|
@ -106,9 +114,11 @@ namespace Dapr.Client.Test
|
||||||
request.Metadata["key2"].Should().Be("value2");
|
request.Metadata["key2"].Should().Be("value2");
|
||||||
|
|
||||||
// Create Response & Respond
|
// Create Response & Respond
|
||||||
var secrets = new Dictionary<string, string>();
|
var secrets = new Dictionary<string, string>
|
||||||
secrets.Add("redis_secret", "Guess_Redis");
|
{
|
||||||
secrets.Add("kafka_secret", "Guess_Kafka");
|
{ "redis_secret", "Guess_Redis" },
|
||||||
|
{ "kafka_secret", "Guess_Kafka" }
|
||||||
|
};
|
||||||
await SendResponseWithSecrets(secrets, entry);
|
await SendResponseWithSecrets(secrets, entry);
|
||||||
|
|
||||||
// Get response and validate
|
// Get response and validate
|
||||||
|
|
@ -129,9 +139,11 @@ namespace Dapr.Client.Test
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient, ThrowOperationCanceledOnCancellation = true })
|
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient, ThrowOperationCanceledOnCancellation = true })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
|
|
||||||
var ctSource = new CancellationTokenSource();
|
var ctSource = new CancellationTokenSource();
|
||||||
CancellationToken ct = ctSource.Token;
|
CancellationToken ct = ctSource.Token;
|
||||||
|
|
|
||||||
|
|
@ -275,8 +275,10 @@ namespace Dapr.Client.Test
|
||||||
{
|
{
|
||||||
{"a", "b" }
|
{"a", "b" }
|
||||||
};
|
};
|
||||||
var options1 = new StateOptions();
|
var options1 = new StateOptions
|
||||||
options1.Concurrency = ConcurrencyMode.LastWrite;
|
{
|
||||||
|
Concurrency = ConcurrencyMode.LastWrite
|
||||||
|
};
|
||||||
|
|
||||||
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(stateValue1), StateOperationType.Upsert, "testEtag", metadata1, options1);
|
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(stateValue1), StateOperationType.Upsert, "testEtag", metadata1, options1);
|
||||||
var stateValue2 = 100;
|
var stateValue2 = 100;
|
||||||
|
|
@ -285,10 +287,12 @@ namespace Dapr.Client.Test
|
||||||
var stateValue3 = "teststring";
|
var stateValue3 = "teststring";
|
||||||
var state3 = new StateTransactionRequest("stateKey3", JsonSerializer.SerializeToUtf8Bytes(stateValue3), StateOperationType.Upsert);
|
var state3 = new StateTransactionRequest("stateKey3", JsonSerializer.SerializeToUtf8Bytes(stateValue3), StateOperationType.Upsert);
|
||||||
|
|
||||||
var states = new List<StateTransactionRequest>();
|
var states = new List<StateTransactionRequest>
|
||||||
states.Add(state1);
|
{
|
||||||
states.Add(state2);
|
state1,
|
||||||
states.Add(state3);
|
state2,
|
||||||
|
state3
|
||||||
|
};
|
||||||
|
|
||||||
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
||||||
|
|
||||||
|
|
@ -337,8 +341,10 @@ namespace Dapr.Client.Test
|
||||||
|
|
||||||
var widget1 = new Widget() { Size = "small", Color = "yellow", };
|
var widget1 = new Widget() { Size = "small", Color = "yellow", };
|
||||||
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(widget1), StateOperationType.Upsert);
|
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(widget1), StateOperationType.Upsert);
|
||||||
var states = new List<StateTransactionRequest>();
|
var states = new List<StateTransactionRequest>
|
||||||
states.Add(state1);
|
{
|
||||||
|
state1
|
||||||
|
};
|
||||||
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
||||||
|
|
||||||
// Create Response & Respond
|
// Create Response & Respond
|
||||||
|
|
@ -363,8 +369,10 @@ namespace Dapr.Client.Test
|
||||||
ctSource.Cancel();
|
ctSource.Cancel();
|
||||||
|
|
||||||
var operation = new StateTransactionRequest("test", null, StateOperationType.Delete);
|
var operation = new StateTransactionRequest("test", null, StateOperationType.Delete);
|
||||||
var operations = new List<StateTransactionRequest>();
|
var operations = new List<StateTransactionRequest>
|
||||||
operations.Add(operation);
|
{
|
||||||
|
operation
|
||||||
|
};
|
||||||
await FluentActions.Awaiting(async () => await daprClient.ExecuteStateTransactionAsync("testStore", operations, new Dictionary<string, string>(), cancellationToken: ct))
|
await FluentActions.Awaiting(async () => await daprClient.ExecuteStateTransactionAsync("testStore", operations, new Dictionary<string, string>(), cancellationToken: ct))
|
||||||
.Should().ThrowAsync<OperationCanceledException>();
|
.Should().ThrowAsync<OperationCanceledException>();
|
||||||
}
|
}
|
||||||
|
|
@ -558,9 +566,11 @@ namespace Dapr.Client.Test
|
||||||
Consistency = consistencyMode
|
Consistency = consistencyMode
|
||||||
};
|
};
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var task = daprClient.SaveStateAsync("testStore", "test", widget, stateOptions, metadata);
|
var task = daprClient.SaveStateAsync("testStore", "test", widget, stateOptions, metadata);
|
||||||
|
|
||||||
// Get Request and validate
|
// Get Request and validate
|
||||||
|
|
@ -608,9 +618,11 @@ namespace Dapr.Client.Test
|
||||||
Consistency = consistencyMode
|
Consistency = consistencyMode
|
||||||
};
|
};
|
||||||
|
|
||||||
var metadata = new Dictionary<string, string>();
|
var metadata = new Dictionary<string, string>
|
||||||
metadata.Add("key1", "value1");
|
{
|
||||||
metadata.Add("key2", "value2");
|
{ "key1", "value1" },
|
||||||
|
{ "key2", "value2" }
|
||||||
|
};
|
||||||
var task = daprClient.TrySaveStateAsync("testStore", "test", widget, "Test_Etag", stateOptions, metadata);
|
var task = daprClient.TrySaveStateAsync("testStore", "test", widget, "Test_Etag", stateOptions, metadata);
|
||||||
|
|
||||||
// Get Request and validate
|
// Get Request and validate
|
||||||
|
|
@ -707,8 +719,10 @@ namespace Dapr.Client.Test
|
||||||
private async Task SendResponseWithState<T>(T state, TestHttpClient.Entry entry, string etag = null)
|
private async Task SendResponseWithState<T>(T state, TestHttpClient.Entry entry, string etag = null)
|
||||||
{
|
{
|
||||||
var stateDate = TypeConverters.ToJsonByteString(state);
|
var stateDate = TypeConverters.ToJsonByteString(state);
|
||||||
var stateResponse = new Autogenerated.GetStateResponse();
|
var stateResponse = new Autogenerated.GetStateResponse
|
||||||
stateResponse.Data = stateDate;
|
{
|
||||||
|
Data = stateDate
|
||||||
|
};
|
||||||
|
|
||||||
if (etag != null)
|
if (etag != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue