-
-
Notifications
You must be signed in to change notification settings - Fork 1
chore(Dapr): Add keyed services support for health check #1012
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
8ed9534 to
4e9cdc5
Compare
Codecov Report❌ Patch coverage is
❌ Your patch check has failed because the patch coverage (75.00%) is below the target coverage (80.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #1012 +/- ##
==========================================
- Coverage 95.32% 95.30% -0.03%
==========================================
Files 203 203
Lines 3487 3490 +3
Branches 596 597 +1
==========================================
+ Hits 3324 3326 +2
Misses 116 116
- Partials 47 48 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
4e9cdc5 to
ef3d4c8
Compare
ef3d4c8 to
3c2592c
Compare
WalkthroughDapr health check now resolves the DaprClient using a keyed service when DaprOptions.KeyedService is provided (non-empty); otherwise it falls back to the default DaprClient from the service provider. Added the KeyedService option, tests for keyed resolution, and README wording/examples updates. Changes
Sequence Diagram(s)sequenceDiagram
participant HC as DaprHealthCheck
participant SP as IServiceProvider
participant DC as DaprClient
HC->>SP: Read DaprOptions (options)
alt options.KeyedService provided (non-empty)
HC->>SP: GetRequiredKeyedService(key)
SP-->>DC: keyed DaprClient
else no key provided
HC->>SP: GetRequiredService<DaprClient>()
SP-->>DC: default DaprClient
end
HC->>DC: perform probe (with timeout/cancellation)
DC-->>HC: probe result / exception
HC->>HC: build HealthCheckResult (healthy/unhealthy)
note right of HC `#EEF6F6`: Keyed resolution used when key present
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
90fe3ac to
b36f229
Compare
|
@CodeRabbit generate docstrings |
✅ Actions performedInitiated docstring generation; will generate only if new commits exist. |
|
Note Docstrings generation - SUCCESS |
Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs (1)
194-226: Good test coverage for keyed service path.The test properly validates that a keyed
DaprClientis resolved and used whenKeyedServiceis specified. The test setup is clean and assertions are appropriate.Consider adding an additional test case to validate that when both a default and keyed service are registered, the correct one is selected:
[Test] public async Task CheckHealthAsync_WithKeyedService_PrefersKeyedOverDefault() { // Arrange const string testName = "Test"; const string serviceKey = "test-key"; var options = new DaprOptions { KeyedService = serviceKey, Timeout = 100 }; var optionsMonitor = Substitute.For<IOptionsMonitor<DaprOptions>>(); _ = optionsMonitor.Get(testName).Returns(options); var defaultClient = Substitute.For<DaprClient>(); _ = defaultClient.CheckHealthAsync(Arg.Any<CancellationToken>()).Returns(false); // Returns unhealthy var keyedClient = Substitute.For<DaprClient>(); _ = keyedClient.CheckHealthAsync(Arg.Any<CancellationToken>()).Returns(true); // Returns healthy var serviceProvider = new ServiceCollection() .AddSingleton(defaultClient) .AddKeyedSingleton(serviceKey, keyedClient) .BuildServiceProvider(); var healthCheck = new DaprHealthCheck(serviceProvider, optionsMonitor); var context = new HealthCheckContext { Registration = new HealthCheckRegistration(testName, healthCheck, HealthStatus.Unhealthy, null), }; // Act var result = await healthCheck.CheckHealthAsync(context, CancellationToken.None); // Assert - Should be Healthy (from keyed service), not Degraded (from default) using (Assert.Multiple()) { _ = await Assert.That(result.Status).IsEqualTo(HealthStatus.Healthy); _ = await Assert.That(result.Description).IsEqualTo($"{testName}: Healthy"); } }This would more explicitly verify that the keyed service takes precedence when configured.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (3)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs(1 hunks)src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
🔇 Additional comments (2)
src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs (1)
10-17: LGTM! Well-documented property addition.The
KeyedServiceproperty is properly typed as nullable and includes clear XML documentation explaining the resolution behavior. The documentation accurately describes whenGetRequiredKeyedServicevs.GetRequiredServicewill be used.src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs (1)
23-25: LGTM! Clean implementation of keyed service resolution.The conditional logic correctly resolves
DaprClientvia keyed services whenKeyedServiceis specified, falling back to the default service resolution when not. The use ofIsNullOrWhiteSpaceappropriately handles null, empty, or whitespace-only values. The project targets .NET 8.0 and 9.0, both of which support keyed services, so the implementation is framework-compatible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs (2)
194-226: Good test coverage for the keyed service happy path.The test correctly verifies that a keyed DaprClient is resolved and used when
DaprOptions.KeyedServiceis configured. The mock setup and assertions are appropriate.Consider adding edge case tests for:
- KeyedService set but the keyed service is not registered (to verify proper error handling)
- KeyedService with whitespace or empty string values
228-266: Excellent precedence verification.This test effectively validates that the keyed DaprClient takes priority over the default instance when both are registered. The differentiation via return values (false for default, true for keyed) clearly demonstrates which client was resolved.
The setup code is nearly identical to the previous test. Consider extracting a helper method to reduce duplication:
private static (DaprHealthCheck, HealthCheckContext) CreateHealthCheckWithKeyedService( string testName, string serviceKey, DaprClient keyedClient, DaprClient? defaultClient = null) { var options = new DaprOptions { KeyedService = serviceKey, Timeout = 100 }; var optionsMonitor = Substitute.For<IOptionsMonitor<DaprOptions>>(); _ = optionsMonitor.Get(testName).Returns(options); var services = new ServiceCollection(); if (defaultClient is not null) { _ = services.AddSingleton(defaultClient); } _ = services.AddKeyedSingleton(serviceKey, keyedClient); var serviceProvider = services.BuildServiceProvider(); var healthCheck = new DaprHealthCheck(serviceProvider, optionsMonitor); var context = new HealthCheckContext { Registration = new HealthCheckRegistration(testName, healthCheck, HealthStatus.Unhealthy, null), }; return (healthCheck, context); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (1)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
62ab529 to
a6f40a6
Compare
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs (1)
14-19: Consider completing the XML documentation.The documentation is helpful, but could be improved:
- The
<returns>tag describesHealthCheckResult, but the method returnsValueTask<HealthCheckResult>.- The
cancellationTokenparameter is not documented.Apply this diff to enhance the documentation:
/// <summary> /// Performs the Dapr health probe and produces a HealthCheckResult for the specified check name. /// </summary> /// <param name="name">The health check name used when constructing the result.</param> /// <param name="options">DaprOptions that configure the probe (e.g., Timeout and KeyedService).</param> -/// <returns>`HealthCheckResult` representing a healthy state only if the Dapr client reports healthy and the probe result is true; otherwise an unhealthy result for the given name.</returns> +/// <param name="cancellationToken">The cancellation token to observe during the health check operation.</param> +/// <returns>A ValueTask containing a HealthCheckResult representing a healthy state only if the Dapr client reports healthy and the probe result is true; otherwise an unhealthy result for the given name.</returns>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (3)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs(4 hunks)src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs
🔇 Additional comments (3)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs (1)
194-266: LGTM! Excellent test coverage for keyed service behavior.Both test methods effectively verify the new keyed service functionality:
CheckHealthAsync_WithKeyedService_ShouldUseKeyedServiceconfirms that keyed resolution works when only a keyed service is registered.CheckHealthAsync_WithKeyedService_PrefersKeyedOverDefaultvalidates that keyed services take precedence over default services when both are available.The test setup, mocking, and assertions are appropriate and thorough.
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs (2)
29-31: LGTM! Keyed service resolution logic is correct.The conditional resolution appropriately checks for a configured keyed service name and falls back to the default service when not specified. The use of
string.IsNullOrWhiteSpaceproperly handles null, empty, and whitespace-only values.
33-38: LGTM! Health check execution is properly implemented.The health check correctly:
- Invokes the Dapr client's health endpoint with the provided cancellation token
- Applies the configured timeout
- Uses
ConfigureAwait(false)for optimal async behavior- Combines both the timeout success flag and the health result in the final determination
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
e485d39 to
049c0e6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (3)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs(4 hunks)src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs
- src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs
🔇 Additional comments (3)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs (3)
20-27: Verify the intended use of thefailureStatusparameter.The
failureStatusparameter is marked as unused (line 23) but is part of the method signature. At line 38, the return statement callsHealthCheckState(isHealthy && result, name)without usingfailureStatus. Please confirm whether:
- This parameter is required by the
ConfigurableHealthChecksource generator but intentionally unused in this implementation, or- The
failureStatusshould be passed toHealthCheckStateto properly report failure status.If
failureStatusshould be used, consider applying a diff similar to:-return HealthCheckState(isHealthy && result, name); +return HealthCheckState(isHealthy && result, name, failureStatus);
29-31: LGTM: Keyed service resolution logic is correct.The conditional logic properly resolves
DaprClientas a keyed service whenKeyedServiceis specified, falling back to the default service otherwise. This implementation aligns with the PR objectives.
33-38: LGTM: Health check invocation and timeout handling are correct.The health check properly:
- Invokes
CheckHealthAsyncwith the cancellation token- Applies timeout via
WithTimeoutAsyncusing the configured timeout value- Uses
ConfigureAwait(false)for optimal library performance- Combines the health status and result correctly in the return statement
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
049c0e6 to
ea1ff0b
Compare
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
ea1ff0b to
bdb2f84
Compare
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
bcab984 to
1ecd456
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs (1)
194-266: Consider adding edge case tests for completeness.While the current tests cover the primary scenarios well, consider adding tests for the following edge cases to ensure robust behavior:
- Empty string
KeyedService: Verify that an empty string is treated the same as null (falls back to default service)- Missing keyed service: Verify behavior when
KeyedServiceis set to a key that doesn't exist in the service provider (should throwInvalidOperationExceptionfromGetRequiredKeyedService)- Whitespace-only
KeyedService: Clarify whether whitespace should be treated as a valid key or handled like empty/nullExample test skeleton for empty string handling:
[Test] public async Task CheckHealthAsync_WithEmptyKeyedService_ShouldUseDefaultService() { // Arrange const string testName = "Test"; var options = new DaprOptions { KeyedService = string.Empty, Timeout = 100 }; var optionsMonitor = Substitute.For<IOptionsMonitor<DaprOptions>>(); _ = optionsMonitor.Get(testName).Returns(options); var mockClient = Substitute.For<DaprClient>(); _ = mockClient.CheckHealthAsync(Arg.Any<CancellationToken>()).Returns(true); var serviceProvider = new ServiceCollection() .AddSingleton(mockClient) .BuildServiceProvider(); var healthCheck = new DaprHealthCheck(serviceProvider, optionsMonitor); var context = new HealthCheckContext { Registration = new HealthCheckRegistration(testName, healthCheck, HealthStatus.Unhealthy, null), }; // Act var result = await healthCheck.CheckHealthAsync(context, CancellationToken.None); // Assert _ = await Assert.That(result.Status).IsEqualTo(HealthStatus.Healthy); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (3)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs(2 hunks)src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs
🔇 Additional comments (2)
tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs (2)
194-226: LGTM! Solid test for keyed service usage.The test correctly verifies that when
KeyedServiceis specified, the health check resolves and uses the keyedDaprClient. The test structure follows the AAA pattern and includes appropriate assertions.
228-266: LGTM! Excellent test for keyed service precedence.This test effectively demonstrates that the keyed service takes precedence over the default service when
KeyedServiceis specified. The scenario with a failing default client and healthy keyed client clearly validates the expected behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (2)
src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)src/NetEvolve.HealthChecks.Dapr/README.md(2 hunks)
🧰 Additional context used
🪛 GitHub Actions: Build & Tests
src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs
[error] 10-10: csharpier check failed. File is not formatted. Expected around line 10: '///
Gets or sets the key used to resolve the DaprClient from the service provider.'
🪛 LanguageTool
src/NetEvolve.HealthChecks.Dapr/README.md
[style] ~53-~53: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ch. This approach is recommended if you want to configure the health check programmatic...
(REP_WANT_TO_VB)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (csharp)
🔇 Additional comments (1)
src/NetEvolve.HealthChecks.Dapr/README.md (1)
29-29: LGTM! Documentation improvements enhance clarity.The editorial changes improve consistency and readability:
- Properly hyphenating compound adjectives ("configuration-based", "builder-based")
- Clearer explanatory text for each variant
Also applies to: 32-33, 52-53
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
0e10a96 to
907c334
Compare
* chore(Dapr): Add keyed services support * chore(Dapr): Add unit test for keyed service retrieval * 📝 Add docstrings to `chore/dapr-keyed-services` Docstrings generation was requested by @Hnogared. * #1012 (comment) The following files were modified: * `src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs` --------- Signed-off-by: Hnogared <[email protected]> Co-authored-by: Hnogared <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
907c334 to
41ee22b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
src/NetEvolve.HealthChecks.Dapr/README.md (2)
41-50: Add KeyedService to the configuration example.The JSON configuration example should include the new
KeyedServiceproperty to help users understand how to configure keyed service resolution.Apply this diff:
{ ..., // other configuration "HealthChecks": { "DaprSidecar": { + "KeyedService": "<service-key>", // optional, resolves DaprClient using keyed service when specified "Timeout": "<timeout>" // optional, default is 100 milliseconds } } }
57-61: Add KeyedService to the builder example.The builder-based example should demonstrate the new
KeyedServiceproperty, as it's the primary feature added in this PR.Apply this diff:
builder.AddDapr(options => { + options.KeyedService = "<service-key>"; // optional, resolves DaprClient using keyed service when specified options.Timeout = "<timeout>"; // optional, default is 100 milliseconds });
🧹 Nitpick comments (1)
src/NetEvolve.HealthChecks.Dapr/README.md (1)
52-53: Consider rewording to reduce repetition.The phrasing "if you want to configure" is repeated from line 33. While clear, varying the sentence structure would improve readability.
Consider:
-The second approach is to use the builder-based approach. This approach is recommended if you want to configure the health check programmatically with dynamic values. +The second approach is to use the builder-based approach. This approach is recommended for programmatic configuration with dynamic values.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (4)
src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs(2 hunks)src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs(1 hunks)src/NetEvolve.HealthChecks.Dapr/README.md(2 hunks)tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tests/NetEvolve.HealthChecks.Tests.Unit/Dapr/DaprHealthCheckTests.cs
- src/NetEvolve.HealthChecks.Dapr/DaprHealthCheck.cs
🧰 Additional context used
🪛 LanguageTool
src/NetEvolve.HealthChecks.Dapr/README.md
[style] ~53-~53: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ch. This approach is recommended if you want to configure the health check programmatic...
(REP_WANT_TO_VB)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: TestGroup 'Z05TestGroup' / Testing .NET solution
- GitHub Check: TestGroup 'Z03TestGroup' / Testing .NET solution
- GitHub Check: TestGroup 'Z04TestGroup' / Testing .NET solution
- GitHub Check: TestGroup 'Z01TestGroup' / Testing .NET solution
- GitHub Check: TestGroup 'Z02TestGroup' / Testing .NET solution
- GitHub Check: TestGroup 'Z00TestGroup' / Testing .NET solution
- GitHub Check: Analyze (csharp)
- GitHub Check: submit-nuget
🔇 Additional comments (1)
src/NetEvolve.HealthChecks.Dapr/DaprOptions.cs (1)
10-17: LGTM! Property addition is well-documented.The
KeyedServiceproperty is properly defined with clear XML documentation. The remarks accurately describe the conditional resolution behavior (using keyed service when specified, falling back to default service when null/empty/whitespace). Previous formatting and documentation concerns have been addressed.
Add keyed services support for the Dapr health check.
Summary by CodeRabbit
New Features
Documentation
Tests