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");
|
||||
}
|
||||
|
||||
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.
|
||||
var actorState = this.StateManager.GetStateAsync<MyData>(StateName).GetAwaiter().GetResult();
|
||||
actorState.PropertyB = $"Reminder triggered at '{DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")}'";
|
||||
this.StateManager.SetStateAsync<MyData>(StateName, actorState);
|
||||
return Task.CompletedTask;
|
||||
var actorState = await this.StateManager.GetStateAsync<MyData>(StateName);
|
||||
actorState.PropertyB = $"Reminder triggered at '{DateTime.Now:yyyy-MM-ddTHH:mm:ss}'";
|
||||
await this.StateManager.SetStateAsync<MyData>(StateName, actorState);
|
||||
}
|
||||
|
||||
class TimerParams
|
||||
|
|
@ -121,15 +120,14 @@ namespace DaprDemoActor
|
|||
/// </summary>
|
||||
/// <param name="data">Timer input data.</param>
|
||||
/// <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();
|
||||
state.PropertyA = $"Timer triggered at '{DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")}'";
|
||||
this.StateManager.SetStateAsync<MyData>(StateName, state);
|
||||
var state = await this.StateManager.GetStateAsync<MyData>(StateName);
|
||||
state.PropertyA = $"Timer triggered at '{DateTime.Now:yyyyy-MM-ddTHH:mm:s}'";
|
||||
await this.StateManager.SetStateAsync<MyData>(StateName, state);
|
||||
var timerParams = JsonSerializer.Deserialize<TimerParams>(data);
|
||||
Console.WriteLine("Timer parameter1: " + timerParams.IntParam);
|
||||
Console.WriteLine("Timer parameter2: " + timerParams.StringParam);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public async Task<AccountBalance> GetAccountBalance()
|
||||
|
|
|
|||
|
|
@ -161,12 +161,15 @@ namespace DaprClient
|
|||
|
||||
internal static async Task ExecuteStateTransactionAsync(DaprClient client)
|
||||
{
|
||||
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 request2 = new StateTransactionRequest("mystate", null, StateOperationType.Delete);
|
||||
var requests = new List<StateTransactionRequest>();
|
||||
requests.Add(request1);
|
||||
requests.Add(request2);
|
||||
var requests = new List<StateTransactionRequest>
|
||||
{
|
||||
request1,
|
||||
request2
|
||||
};
|
||||
|
||||
Console.WriteLine("Executing transaction - save state and delete state");
|
||||
await client.ExecuteStateTransactionAsync(storeName, requests);
|
||||
Console.WriteLine("Executed State Transaction!");
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ namespace Dapr.Actors.Builder
|
|||
// build the proxy generator
|
||||
result.ProxyGenerator = this.CreateProxyGenerator(
|
||||
proxyInterfaceType,
|
||||
methodBodyTypesResultsMap,
|
||||
result.ProxyActivatorType);
|
||||
|
||||
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(
|
||||
Type proxyInterfaceType,
|
||||
Type proxyActivatorType)
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ namespace Dapr.Actors.Builder
|
|||
this.AssemblyNamespace = assemblyNamespace;
|
||||
this.enableDebugging = enableDebugging;
|
||||
|
||||
this.AssemblyBuilder = CodeBuilderUtils.CreateAssemblyBuilder(assemblyName, this.enableDebugging);
|
||||
this.ModuleBuilder = CodeBuilderUtils.CreateModuleBuilder(this.AssemblyBuilder, assemblyName, this.enableDebugging);
|
||||
this.AssemblyBuilder = CodeBuilderUtils.CreateAssemblyBuilder(assemblyName);
|
||||
this.ModuleBuilder = CodeBuilderUtils.CreateModuleBuilder(this.AssemblyBuilder, assemblyName);
|
||||
}
|
||||
|
||||
public AssemblyBuilder AssemblyBuilder { get; }
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace Dapr.Actors.Builder
|
|||
DmAttrIsRequiredPropInfo = dmAttrType.GetProperty("IsRequired");
|
||||
}
|
||||
|
||||
public static AssemblyBuilder CreateAssemblyBuilder(string assemblyName, bool saveOnDisk = false)
|
||||
public static AssemblyBuilder CreateAssemblyBuilder(string assemblyName)
|
||||
{
|
||||
return AssemblyBuilder.DefineDynamicAssembly(
|
||||
new AssemblyName(assemblyName),
|
||||
|
|
@ -42,8 +42,7 @@ namespace Dapr.Actors.Builder
|
|||
|
||||
public static ModuleBuilder CreateModuleBuilder(
|
||||
AssemblyBuilder assemblyBuilder,
|
||||
string moduleName,
|
||||
bool saveOnDisk = false)
|
||||
string moduleName)
|
||||
{
|
||||
return assemblyBuilder.DefineDynamicModule(moduleName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,8 +113,7 @@ namespace Dapr.Actors.Builder
|
|||
LocalBuilder castedObject,
|
||||
MethodBodyTypes methodBodyTypes)
|
||||
{
|
||||
LocalBuilder wrappedRequest = null;
|
||||
wrappedRequest = ilGen.DeclareLocal(typeof(object));
|
||||
var wrappedRequest = ilGen.DeclareLocal(typeof(object));
|
||||
|
||||
var getValueMethod = typeof(WrappedMessage).GetProperty("Value").GetGetMethod();
|
||||
ilGen.Emit(OpCodes.Ldarg_3); // request object
|
||||
|
|
@ -183,7 +182,6 @@ namespace Dapr.Actors.Builder
|
|||
elseLabel: elseLable,
|
||||
castedObject: castedObject,
|
||||
methodDescription: methodDescription,
|
||||
interfaceName: interfaceDescription.InterfaceType.FullName,
|
||||
methodBodyTypes: methodBodyTypesBuildResult.MethodBodyTypesMap[methodDescription.Name]);
|
||||
|
||||
ilGen.MarkLabel(elseLable);
|
||||
|
|
@ -197,7 +195,6 @@ namespace Dapr.Actors.Builder
|
|||
Label elseLabel,
|
||||
LocalBuilder castedObject,
|
||||
MethodDescription methodDescription,
|
||||
string interfaceName,
|
||||
MethodBodyTypes methodBodyTypes)
|
||||
{
|
||||
ilGen.Emit(OpCodes.Ldarg_1);
|
||||
|
|
|
|||
|
|
@ -205,9 +205,8 @@ namespace Dapr.Actors.Client
|
|||
|
||||
var responseMsg = await this.actorRemotingClient.InvokeAsync(
|
||||
new ActorRequestMessage(
|
||||
headers,
|
||||
requestMsgBodyValue),
|
||||
methodName,
|
||||
headers,
|
||||
requestMsgBodyValue),
|
||||
cancellationToken);
|
||||
|
||||
return responseMsg?.GetBody();
|
||||
|
|
|
|||
|
|
@ -42,10 +42,11 @@ namespace Dapr.Actors.Communication
|
|||
{
|
||||
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))
|
||||
{
|
||||
return ((IActorReference)obj).Bind(targetType);
|
||||
return reference.Bind(targetType);
|
||||
}
|
||||
|
||||
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))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ namespace Dapr.Actors.Communication.Client
|
|||
|
||||
public async Task<IActorResponseMessage> InvokeAsync(
|
||||
IActorRequestMessage remotingRequestMessage,
|
||||
string methodName,
|
||||
CancellationToken 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>
|
||||
/// Sends an HTTP get request to cluster http gateway.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ namespace Dapr.Actors.Runtime
|
|||
}
|
||||
|
||||
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);
|
||||
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.
|
||||
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.
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,7 @@ namespace Dapr.Actors.Runtime
|
|||
{
|
||||
var actorTypeInfo = ActorTypeInformation.Get(typeof(TActor));
|
||||
var registration = new ActorRegistration(actorTypeInfo);
|
||||
if (configure != null)
|
||||
{
|
||||
configure(registration);
|
||||
}
|
||||
configure?.Invoke(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))
|
||||
{
|
||||
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>
|
||||
public class ActorTimer
|
||||
{
|
||||
private readonly Actor owner;
|
||||
|
||||
/// <summary>
|
||||
/// The constructor
|
||||
/// </summary>
|
||||
public ActorTimer(
|
||||
Actor owner,
|
||||
string timerName,
|
||||
TimerInfo timerInfo)
|
||||
{
|
||||
this.owner = owner;
|
||||
this.Name = timerName;
|
||||
this.TimerInfo = timerInfo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,13 +36,13 @@ namespace Dapr.Actors.Runtime
|
|||
var days = 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 secondsSpan = spanOfValue.Slice(mIndex + 1, sIndex - (mIndex + 1));
|
||||
var secondsSpan = spanOfValue[(mIndex + 1)..sIndex];
|
||||
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);
|
||||
|
||||
return new TimeSpan(days, hours, minutes, seconds, milliseconds);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace Dapr.Actors.Runtime
|
|||
|
||||
if (stringResult.Length != 0)
|
||||
{
|
||||
T typedResult = default;
|
||||
T typedResult;
|
||||
|
||||
// perform default json de-serialization if custom serializer was not provided.
|
||||
if (this.actorStateSerializer != null)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace Dapr.Client
|
|||
/// </summary>
|
||||
public sealed class DaprClientBuilder
|
||||
{
|
||||
private const string defaultDaprGrpcPort = "50001";
|
||||
private const string DefaultDaprGrpcPort = "50001";
|
||||
private string daprEndpoint;
|
||||
private JsonSerializerOptions jsonSerializerOptions;
|
||||
private GrpcChannelOptions gRPCChannelOptions;
|
||||
|
|
@ -35,7 +35,7 @@ namespace Dapr.Client
|
|||
/// </summary>
|
||||
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.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.
|
||||
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 client = new Autogenerated.Dapr.DaprClient(channel);
|
||||
return new DaprClientGrpc(client, this.jsonSerializerOptions);
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ namespace Dapr.Client
|
|||
var getBulkStateEnvelope = new Autogenerated.GetBulkStateRequest()
|
||||
{
|
||||
StoreName = storeName,
|
||||
Parallelism = parallelism ?? default(int)
|
||||
Parallelism = parallelism ?? default
|
||||
};
|
||||
|
||||
getBulkStateEnvelope.Keys.AddRange(keys);
|
||||
|
|
@ -317,9 +317,9 @@ namespace Dapr.Client
|
|||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var protoHTTPExtension = new Autogenerated.HTTPExtension();
|
||||
var contentType = "";
|
||||
Metadata headers = null;
|
||||
|
||||
string contentType;
|
||||
if (httpOptions != null)
|
||||
{
|
||||
protoHTTPExtension.Verb = ConvertHTTPVerb(httpOptions.Method);
|
||||
|
|
@ -453,10 +453,8 @@ namespace Dapr.Client
|
|||
var rpcError = detail.Unpack<Google.Rpc.ErrorInfo>();
|
||||
var grpcStatusCode = (StatusCode)status.Code;
|
||||
|
||||
string innerHttpErrorCode = null;
|
||||
string innerHttpErrorMessage = null;
|
||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpCodeMetadata, out innerHttpErrorCode);
|
||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpErrorMetadata, out innerHttpErrorMessage);
|
||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpCodeMetadata, out var innerHttpErrorCode);
|
||||
rpcError.Metadata.TryGetValue(DaprErrorInfoHttpErrorMetadata, out var innerHttpErrorMessage);
|
||||
if(innerHttpErrorCode != null || innerHttpErrorMessage != null)
|
||||
{
|
||||
// Response returned by Http server
|
||||
|
|
@ -476,11 +474,6 @@ namespace Dapr.Client
|
|||
}
|
||||
}
|
||||
|
||||
private bool IsResponseFromHttpCallee(Dictionary<string,byte[]> headers)
|
||||
{
|
||||
return headers.ContainsKey(DaprHttpStatusHeader);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region State Apis
|
||||
|
|
@ -684,10 +677,11 @@ namespace Dapr.Client
|
|||
|
||||
foreach (var state in states)
|
||||
{
|
||||
var stateOperation = new Autogenerated.TransactionalStateOperation();
|
||||
|
||||
stateOperation.OperationType = state.OperationType.ToString().ToLower();
|
||||
stateOperation.Request = ToAutogeneratedStateItem(state);
|
||||
var stateOperation = new Autogenerated.TransactionalStateOperation
|
||||
{
|
||||
OperationType = state.OperationType.ToString().ToLower(),
|
||||
Request = ToAutogeneratedStateItem(state)
|
||||
};
|
||||
|
||||
executeStateTransactionRequestEnvelope.Operations.Add(stateOperation);
|
||||
|
||||
|
|
@ -706,8 +700,10 @@ namespace Dapr.Client
|
|||
|
||||
private Autogenerated.StateItem ToAutogeneratedStateItem(StateTransactionRequest state)
|
||||
{
|
||||
var stateOperation = new Autogenerated.StateItem();
|
||||
stateOperation.Key = state.Key;
|
||||
var stateOperation = new Autogenerated.StateItem
|
||||
{
|
||||
Key = state.Key
|
||||
};
|
||||
|
||||
if (state.Value != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -21,10 +21,6 @@ namespace Dapr.Extensions.Configuration.DaprSecretStore
|
|||
|
||||
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;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -72,4 +68,4 @@ namespace Dapr.Extensions.Configuration.DaprSecretStore
|
|||
Data = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,14 +57,14 @@ namespace Dapr.Actors.Test
|
|||
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()
|
||||
|
|
|
|||
|
|
@ -7,22 +7,21 @@ namespace Dapr.Actors.Test
|
|||
{
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Dapr.Actors;
|
||||
using Dapr.Actors.Runtime;
|
||||
using Xunit;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Xunit;
|
||||
|
||||
public sealed class ActorRuntimeTests
|
||||
{
|
||||
private const string RenamedActorTypeName = "MyRenamedActor";
|
||||
private ILoggerFactory loggerFactory = new LoggerFactory();
|
||||
private ActorActivatorFactory activatorFactory = new DefaultActorActivatorFactory();
|
||||
private readonly ILoggerFactory loggerFactory = new LoggerFactory();
|
||||
private readonly ActorActivatorFactory activatorFactory = new DefaultActorActivatorFactory();
|
||||
|
||||
private interface ITestActor : IActor
|
||||
{
|
||||
|
|
@ -97,7 +96,7 @@ namespace Dapr.Actors.Test
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void TestActorSettings()
|
||||
public async Task TestActorSettings()
|
||||
{
|
||||
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);
|
||||
|
||||
ArrayBufferWriter<byte> writer = new ArrayBufferWriter<byte>();
|
||||
runtime.SerializeSettingsAndRegisteredTypes(writer).GetAwaiter().GetResult();
|
||||
await runtime.SerializeSettingsAndRegisteredTypes(writer);
|
||||
|
||||
// read back the serialized json
|
||||
var array = writer.WrittenSpan.ToArray();
|
||||
|
|
|
|||
|
|
@ -26,22 +26,22 @@ namespace Dapr.Actors.Test.Runtime
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void TestSaveState()
|
||||
public async Task TestSaveState()
|
||||
{
|
||||
var mockStateManager = new Mock<IActorStateManager>();
|
||||
mockStateManager.Setup(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()));
|
||||
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
||||
testDemoActor.SaveTestState();
|
||||
await testDemoActor.SaveTestState();
|
||||
mockStateManager.Verify(manager => manager.SaveStateAsync(It.IsAny<CancellationToken>()), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestResetStateAsync()
|
||||
public async Task TestResetStateAsync()
|
||||
{
|
||||
var mockStateManager = new Mock<IActorStateManager>();
|
||||
mockStateManager.Setup(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()));
|
||||
var testDemoActor = this.CreateTestDemoActor(mockStateManager.Object);
|
||||
testDemoActor.ResetTestStateAsync();
|
||||
await testDemoActor.ResetTestStateAsync();
|
||||
mockStateManager.Verify(manager => manager.ClearCacheAsync(It.IsAny<CancellationToken>()), Times.Once);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace Dapr
|
|||
internal class StateTestClient : DaprClientGrpc
|
||||
{
|
||||
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>
|
||||
/// 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)
|
||||
{
|
||||
var stateData = TypeConverters.ToJsonByteString(state);
|
||||
var stateResponse = new GetStateResponse();
|
||||
stateResponse.Data = stateData;
|
||||
stateResponse.Etag = "test";
|
||||
var stateResponse = new GetStateResponse
|
||||
{
|
||||
Data = stateData,
|
||||
Etag = "test",
|
||||
};
|
||||
|
||||
var streamContent = await GrpcUtils.CreateResponseContent(stateResponse);
|
||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
||||
|
|
|
|||
|
|
@ -185,8 +185,10 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
|
|
@ -242,8 +244,10 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
|
|
@ -272,8 +276,10 @@ namespace Dapr.Client.Test
|
|||
Request request = new Request() { RequestParameter = "Hello " };
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
|
|
@ -292,8 +298,10 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
|
|
@ -419,9 +427,11 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -450,9 +460,11 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -482,9 +494,11 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -547,10 +561,12 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
invokeResponse.ContentType = Constants.ContentTypeApplicationJson;
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data),
|
||||
ContentType = Constants.ContentTypeApplicationJson
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -636,9 +652,11 @@ namespace Dapr.Client.Test
|
|||
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
||||
// var dataBytes = new byte[]{1,2,3};
|
||||
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName };
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName }
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -687,9 +705,11 @@ namespace Dapr.Client.Test
|
|||
var client = new MockClient();
|
||||
var responseBody = new Response() { Name = "Look, I was invoked!" };
|
||||
var responseBytes = JsonSerializer.SerializeToUtf8Bytes(responseBody);
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName };
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = new Any { Value = ByteString.CopyFrom(responseBytes), TypeUrl = typeof(byte[]).FullName }
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -739,9 +759,11 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -805,9 +827,11 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
var client = new MockClient();
|
||||
var data = new Response() { Name = "Look, I was invoked!" };
|
||||
var invokeResponse = new InvokeResponse();
|
||||
invokeResponse.Data = TypeConverters.ToAny(data);
|
||||
|
||||
var invokeResponse = new InvokeResponse
|
||||
{
|
||||
Data = TypeConverters.ToAny(data)
|
||||
};
|
||||
|
||||
var response =
|
||||
client.Call<InvokeResponse>()
|
||||
.SetResponse(invokeResponse)
|
||||
|
|
@ -952,25 +976,16 @@ namespace Dapr.Client.Test
|
|||
private async Task SendResponse<T>(T data, TestHttpClient.Entry entry, JsonSerializerOptions options = null)
|
||||
{
|
||||
var dataAny = TypeConverters.ToAny(data, options);
|
||||
var dataResponse = new InvokeResponse();
|
||||
dataResponse.Data = dataAny;
|
||||
var dataResponse = new InvokeResponse
|
||||
{
|
||||
Data = dataAny
|
||||
};
|
||||
|
||||
var streamContent = await GrpcUtils.CreateResponseContent(dataResponse);
|
||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
||||
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
|
||||
{
|
||||
public string RequestParameter { get; set; }
|
||||
|
|
|
|||
|
|
@ -26,9 +26,11 @@ namespace Dapr.Client.Test
|
|||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||
.Build();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
||||
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata);
|
||||
|
||||
|
|
@ -59,9 +61,11 @@ namespace Dapr.Client.Test
|
|||
CancellationToken ct = ctSource.Token;
|
||||
ctSource.Cancel();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " };
|
||||
var task = daprClient.InvokeBindingAsync<InvokeRequest>("test", "create", invokeRequest, metadata, ct);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@ namespace Dapr.Client
|
|||
public class InvokeApiCallBuilder<TResponse>
|
||||
{
|
||||
private TResponse response;
|
||||
private Metadata headers;
|
||||
private readonly Metadata headers;
|
||||
private Status status;
|
||||
private Metadata trailers;
|
||||
private readonly Metadata trailers;
|
||||
|
||||
public InvokeApiCallBuilder()
|
||||
{
|
||||
|
|
@ -75,4 +75,4 @@ namespace Dapr.Client
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,9 +26,11 @@ namespace Dapr.Client.Test
|
|||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||
.Build();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||
|
||||
// Get Request and validate
|
||||
|
|
@ -52,9 +54,11 @@ namespace Dapr.Client.Test
|
|||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||
.Build();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||
|
||||
// Get Request and validate
|
||||
|
|
@ -69,8 +73,10 @@ namespace Dapr.Client.Test
|
|||
request.Metadata["key2"].Should().Be("value2");
|
||||
|
||||
// Create Response & Respond
|
||||
var secrets = new Dictionary<string, string>();
|
||||
secrets.Add("redis_secret", "Guess_Redis");
|
||||
var secrets = new Dictionary<string, string>
|
||||
{
|
||||
{ "redis_secret", "Guess_Redis" }
|
||||
};
|
||||
await SendResponseWithSecrets(secrets, entry);
|
||||
|
||||
// Get response and validate
|
||||
|
|
@ -89,9 +95,11 @@ namespace Dapr.Client.Test
|
|||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
||||
.Build();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var task = daprClient.GetSecretAsync("testStore", "test_key", metadata);
|
||||
|
||||
// Get Request and validate
|
||||
|
|
@ -106,9 +114,11 @@ namespace Dapr.Client.Test
|
|||
request.Metadata["key2"].Should().Be("value2");
|
||||
|
||||
// Create Response & Respond
|
||||
var secrets = new Dictionary<string, string>();
|
||||
secrets.Add("redis_secret", "Guess_Redis");
|
||||
secrets.Add("kafka_secret", "Guess_Kafka");
|
||||
var secrets = new Dictionary<string, string>
|
||||
{
|
||||
{ "redis_secret", "Guess_Redis" },
|
||||
{ "kafka_secret", "Guess_Kafka" }
|
||||
};
|
||||
await SendResponseWithSecrets(secrets, entry);
|
||||
|
||||
// Get response and validate
|
||||
|
|
@ -129,9 +139,11 @@ namespace Dapr.Client.Test
|
|||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient, ThrowOperationCanceledOnCancellation = true })
|
||||
.Build();
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
|
||||
var ctSource = new CancellationTokenSource();
|
||||
CancellationToken ct = ctSource.Token;
|
||||
|
|
|
|||
|
|
@ -275,8 +275,10 @@ namespace Dapr.Client.Test
|
|||
{
|
||||
{"a", "b" }
|
||||
};
|
||||
var options1 = new StateOptions();
|
||||
options1.Concurrency = ConcurrencyMode.LastWrite;
|
||||
var options1 = new StateOptions
|
||||
{
|
||||
Concurrency = ConcurrencyMode.LastWrite
|
||||
};
|
||||
|
||||
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(stateValue1), StateOperationType.Upsert, "testEtag", metadata1, options1);
|
||||
var stateValue2 = 100;
|
||||
|
|
@ -285,10 +287,12 @@ namespace Dapr.Client.Test
|
|||
var stateValue3 = "teststring";
|
||||
var state3 = new StateTransactionRequest("stateKey3", JsonSerializer.SerializeToUtf8Bytes(stateValue3), StateOperationType.Upsert);
|
||||
|
||||
var states = new List<StateTransactionRequest>();
|
||||
states.Add(state1);
|
||||
states.Add(state2);
|
||||
states.Add(state3);
|
||||
var states = new List<StateTransactionRequest>
|
||||
{
|
||||
state1,
|
||||
state2,
|
||||
state3
|
||||
};
|
||||
|
||||
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
||||
|
||||
|
|
@ -337,8 +341,10 @@ namespace Dapr.Client.Test
|
|||
|
||||
var widget1 = new Widget() { Size = "small", Color = "yellow", };
|
||||
var state1 = new StateTransactionRequest("stateKey1", JsonSerializer.SerializeToUtf8Bytes(widget1), StateOperationType.Upsert);
|
||||
var states = new List<StateTransactionRequest>();
|
||||
states.Add(state1);
|
||||
var states = new List<StateTransactionRequest>
|
||||
{
|
||||
state1
|
||||
};
|
||||
var task = daprClient.ExecuteStateTransactionAsync("testStore", states);
|
||||
|
||||
// Create Response & Respond
|
||||
|
|
@ -363,8 +369,10 @@ namespace Dapr.Client.Test
|
|||
ctSource.Cancel();
|
||||
|
||||
var operation = new StateTransactionRequest("test", null, StateOperationType.Delete);
|
||||
var operations = new List<StateTransactionRequest>();
|
||||
operations.Add(operation);
|
||||
var operations = new List<StateTransactionRequest>
|
||||
{
|
||||
operation
|
||||
};
|
||||
await FluentActions.Awaiting(async () => await daprClient.ExecuteStateTransactionAsync("testStore", operations, new Dictionary<string, string>(), cancellationToken: ct))
|
||||
.Should().ThrowAsync<OperationCanceledException>();
|
||||
}
|
||||
|
|
@ -558,9 +566,11 @@ namespace Dapr.Client.Test
|
|||
Consistency = consistencyMode
|
||||
};
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var task = daprClient.SaveStateAsync("testStore", "test", widget, stateOptions, metadata);
|
||||
|
||||
// Get Request and validate
|
||||
|
|
@ -608,9 +618,11 @@ namespace Dapr.Client.Test
|
|||
Consistency = consistencyMode
|
||||
};
|
||||
|
||||
var metadata = new Dictionary<string, string>();
|
||||
metadata.Add("key1", "value1");
|
||||
metadata.Add("key2", "value2");
|
||||
var metadata = new Dictionary<string, string>
|
||||
{
|
||||
{ "key1", "value1" },
|
||||
{ "key2", "value2" }
|
||||
};
|
||||
var task = daprClient.TrySaveStateAsync("testStore", "test", widget, "Test_Etag", stateOptions, metadata);
|
||||
|
||||
// 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)
|
||||
{
|
||||
var stateDate = TypeConverters.ToJsonByteString(state);
|
||||
var stateResponse = new Autogenerated.GetStateResponse();
|
||||
stateResponse.Data = stateDate;
|
||||
var stateResponse = new Autogenerated.GetStateResponse
|
||||
{
|
||||
Data = stateDate
|
||||
};
|
||||
|
||||
if (etag != null)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue