public async Task TryDeleteStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency) { await using var client = TestClient.CreateForDaprClient(); var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode }; var request = await client.CaptureGrpcRequestAsync(async daprClient => { return await daprClient.TryDeleteStateAsync("testStore", "test", "Test_Etag", stateOptions); }); request.Dismiss(); // Get Request and validate var envelope = await request.GetRequestEnvelopeAsync<Autogenerated.DeleteStateRequest>(); envelope.StoreName.Should().Be("testStore"); envelope.Key.Should().Be("test"); envelope.Etag.Value.Should().Be("Test_Etag"); envelope.Options.Concurrency.Should().Be(expectedConcurrency); envelope.Options.Consistency.Should().Be(expectedConsistency); }
public async Task TryDeleteStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency) { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode }; var task = daprClient.TryDeleteStateAsync("testStore", "test", "Test_Etag", stateOptions); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var request = await GrpcUtils.GetRequestFromRequestMessageAsync <Autogenerated.DeleteStateRequest>(entry.Request); request.StoreName.Should().Be("testStore"); request.Key.Should().Be("test"); request.Etag.Should().Be("Test_Etag"); request.Options.Concurrency.Should().Be(expectedConcurrency); request.Options.Consistency.Should().Be(expectedConsistency); }
public async Task TrySaveStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency) { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); var widget = new Widget() { Size = "small", Color = "yellow", }; var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode }; 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 httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var request = await GrpcUtils.GetRequestFromRequestMessageAsync <Autogenerated.SaveStateRequest>(entry.Request); request.StoreName.Should().Be("testStore"); request.States.Count.Should().Be(1); var state = request.States[0]; state.Key.Should().Be("test"); state.Etag.Should().Be("Test_Etag"); state.Metadata.Count.Should().Be(2); state.Metadata.Keys.Contains("key1").Should().BeTrue(); state.Metadata.Keys.Contains("key2").Should().BeTrue(); state.Metadata["key1"].Should().Be("value1"); state.Metadata["key2"].Should().Be("value2"); state.Options.Concurrency.Should().Be(expectedConcurrency); state.Options.Consistency.Should().Be(expectedConsistency); var stateJson = state.Value.ToStringUtf8(); var stateFromRequest = JsonSerializer.Deserialize <Widget>(stateJson); stateFromRequest.Size.Should().Be(widget.Size); stateFromRequest.Color.Should().Be(widget.Color); }
public async Task SaveStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency) { await using var client = TestClient.CreateForDaprClient(); var widget = new Widget() { Size = "small", Color = "yellow", }; var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode }; var metadata = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }; var request = await client.CaptureGrpcRequestAsync(async daprClient => { await daprClient.SaveStateAsync("testStore", "test", widget, stateOptions, metadata); }); request.Dismiss(); // Get Request and validate var envelope = await request.GetRequestEnvelopeAsync <Autogenerated.SaveStateRequest>(); envelope.StoreName.Should().Be("testStore"); envelope.States.Count.Should().Be(1); var state = envelope.States[0]; state.Key.Should().Be("test"); state.Metadata.Count.Should().Be(2); state.Metadata.Keys.Contains("key1").Should().BeTrue(); state.Metadata.Keys.Contains("key2").Should().BeTrue(); state.Metadata["key1"].Should().Be("value1"); state.Metadata["key2"].Should().Be("value2"); state.Options.Concurrency.Should().Be(expectedConcurrency); state.Options.Consistency.Should().Be(expectedConsistency); var stateJson = state.Value.ToStringUtf8(); var stateFromRequest = JsonSerializer.Deserialize <Widget>(stateJson, client.InnerClient.JsonSerializerOptions); stateFromRequest.Size.Should().Be(widget.Size); stateFromRequest.Color.Should().Be(widget.Color); }
public async Task TryDeleteStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, RetryMode retryMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency, RetryPattern expectedRetryMode) { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode, RetryOptions = new RetryOptions { RetryInterval = TimeSpan.FromSeconds(5), RetryMode = retryMode, RetryThreshold = 10 } }; var task = daprClient.TryDeleteStateAsync("testStore", "test", "Test_Etag", stateOptions); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var request = await GrpcUtils.GetRequestFromRequestMessageAsync <Autogenerated.DeleteStateRequest>(entry.Request); request.StoreName.Should().Be("testStore"); request.Key.Should().Be("test"); request.Etag.Should().Be("Test_Etag"); request.Options.Concurrency.Should().Be(expectedConcurrency); request.Options.Consistency.Should().Be(expectedConsistency); request.Options.RetryPolicy.Pattern.Should().Be(expectedRetryMode); request.Options.RetryPolicy.Threshold.Should().Be(10); request.Options.RetryPolicy.Interval.Seconds.Should().Be(5); }
public async Task SaveStateAsync_ValidateOptions( ConsistencyMode consistencyMode, ConcurrencyMode concurrencyMode, RetryMode retryMode, StateConsistency expectedConsistency, StateConcurrency expectedConcurrency, RetryPattern expectedRetryMode) { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); var widget = new Widget() { Size = "small", Color = "yellow", }; var stateOptions = new StateOptions { Concurrency = concurrencyMode, Consistency = consistencyMode, RetryOptions = new RetryOptions { RetryInterval = TimeSpan.FromSeconds(5), RetryMode = retryMode, RetryThreshold = 10 } }; var metadata = new Dictionary <string, string>(); metadata.Add("key1", "value1"); metadata.Add("key2", "value2"); var task = daprClient.SaveStateAsync("testStore", "test", widget, stateOptions, metadata); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var request = await GrpcUtils.GetRequestFromRequestMessageAsync <Autogenerated.SaveStateRequest>(entry.Request); request.StoreName.Should().Be("testStore"); request.States.Count.Should().Be(1); var state = request.States[0]; state.Key.Should().Be("test"); state.Metadata.Count.Should().Be(2); state.Metadata.Keys.Contains("key1").Should().BeTrue(); state.Metadata.Keys.Contains("key2").Should().BeTrue(); state.Metadata["key1"].Should().Be("value1"); state.Metadata["key2"].Should().Be("value2"); state.Options.Concurrency.Should().Be(expectedConcurrency); state.Options.Consistency.Should().Be(expectedConsistency); state.Options.RetryPolicy.Pattern.Should().Be(expectedRetryMode); state.Options.RetryPolicy.Threshold.Should().Be(10); state.Options.RetryPolicy.Interval.Seconds.Should().Be(5); var stateJson = state.Value.ToStringUtf8(); var stateFromRequest = JsonSerializer.Deserialize <Widget>(stateJson); stateFromRequest.Size.Should().Be(widget.Size); stateFromRequest.Color.Should().Be(widget.Color); }