diff --git a/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs b/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs index 470667ec..ee8c549a 100644 --- a/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs +++ b/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs @@ -224,124 +224,8 @@ internal sealed class CqrsDispatcherCacheTests /// private static async Task DrainAsync(IAsyncEnumerable stream) { - await foreach (var _ in stream) + await foreach (var _ in stream.ConfigureAwait(false)) { } } } - -/// -/// 用于验证 request 服务类型缓存的测试请求。 -/// -internal sealed record DispatcherCacheRequest : IRequest; - -/// -/// 用于验证 notification 服务类型缓存的测试通知。 -/// -internal sealed record DispatcherCacheNotification : INotification; - -/// -/// 用于验证 stream 服务类型缓存的测试请求。 -/// -internal sealed record DispatcherCacheStreamRequest : IStreamRequest; - -/// -/// 用于验证 pipeline invoker 缓存的测试请求。 -/// -internal sealed record DispatcherPipelineCacheRequest : IRequest; - -/// -/// 用于验证按响应类型分层 request invoker 缓存的测试请求。 -/// -internal sealed record DispatcherStringCacheRequest : IRequest; - -/// -/// 处理 。 -/// -internal sealed class DispatcherCacheRequestHandler : IRequestHandler -{ - /// - /// 返回固定结果,供缓存测试验证 dispatcher 请求路径。 - /// - public ValueTask Handle(DispatcherCacheRequest request, CancellationToken cancellationToken) - { - return ValueTask.FromResult(1); - } -} - -/// -/// 处理 。 -/// -internal sealed class DispatcherCacheNotificationHandler : INotificationHandler -{ - /// - /// 消费通知,不执行额外副作用。 - /// - public ValueTask Handle(DispatcherCacheNotification notification, CancellationToken cancellationToken) - { - return ValueTask.CompletedTask; - } -} - -/// -/// 处理 。 -/// -internal sealed class DispatcherCacheStreamHandler : IStreamRequestHandler -{ - /// - /// 返回一个最小流,供缓存测试命中 stream 分发路径。 - /// - public async IAsyncEnumerable Handle( - DispatcherCacheStreamRequest request, - [EnumeratorCancellation] CancellationToken cancellationToken) - { - yield return 1; - await Task.CompletedTask; - } -} - -/// -/// 处理 。 -/// -internal sealed class DispatcherPipelineCacheRequestHandler : IRequestHandler -{ - /// - /// 返回固定结果,供 pipeline 缓存测试使用。 - /// - public ValueTask Handle(DispatcherPipelineCacheRequest request, CancellationToken cancellationToken) - { - return ValueTask.FromResult(2); - } -} - -/// -/// 处理 。 -/// -internal sealed class DispatcherStringCacheRequestHandler : IRequestHandler -{ - /// - /// 返回固定字符串,供按响应类型缓存测试验证 string 路径。 - /// - public ValueTask Handle(DispatcherStringCacheRequest request, CancellationToken cancellationToken) - { - return ValueTask.FromResult("dispatcher-cache"); - } -} - -/// -/// 为 提供最小 pipeline 行为, -/// 用于命中 dispatcher 的 pipeline invoker 缓存分支。 -/// -internal sealed class DispatcherPipelineCacheBehavior : IPipelineBehavior -{ - /// - /// 直接转发到下一个处理器。 - /// - public ValueTask Handle( - DispatcherPipelineCacheRequest request, - MessageHandlerDelegate next, - CancellationToken cancellationToken) - { - return next(request, cancellationToken); - } -} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotification.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotification.cs new file mode 100644 index 00000000..00a2535c --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotification.cs @@ -0,0 +1,8 @@ +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 用于验证 notification 服务类型缓存的测试通知。 +/// +internal sealed record DispatcherCacheNotification : INotification; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotificationHandler.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotificationHandler.cs new file mode 100644 index 00000000..b023398a --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheNotificationHandler.cs @@ -0,0 +1,21 @@ +using System.Threading; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 处理 。 +/// +internal sealed class DispatcherCacheNotificationHandler : INotificationHandler +{ + /// + /// 消费通知,不执行额外副作用。 + /// + /// 当前通知。 + /// 取消令牌。 + /// 已完成任务。 + public ValueTask Handle(DispatcherCacheNotification notification, CancellationToken cancellationToken) + { + return ValueTask.CompletedTask; + } +} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequest.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequest.cs new file mode 100644 index 00000000..005b06d0 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequest.cs @@ -0,0 +1,8 @@ +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 用于验证 request 服务类型缓存的测试请求。 +/// +internal sealed record DispatcherCacheRequest : IRequest; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequestHandler.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequestHandler.cs new file mode 100644 index 00000000..acd1f043 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequestHandler.cs @@ -0,0 +1,21 @@ +using System.Threading; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 处理 。 +/// +internal sealed class DispatcherCacheRequestHandler : IRequestHandler +{ + /// + /// 返回固定结果,供缓存测试验证 dispatcher 请求路径。 + /// + /// 当前请求。 + /// 取消令牌。 + /// 固定整数结果。 + public ValueTask Handle(DispatcherCacheRequest request, CancellationToken cancellationToken) + { + return ValueTask.FromResult(1); + } +} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamHandler.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamHandler.cs new file mode 100644 index 00000000..476cbe43 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamHandler.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 处理 。 +/// +internal sealed class DispatcherCacheStreamHandler : IStreamRequestHandler +{ + /// + /// 返回一个最小流,供缓存测试命中 stream 分发路径。 + /// + /// 当前流请求。 + /// 取消令牌。 + /// 包含一个固定元素的异步流。 + public async IAsyncEnumerable Handle( + DispatcherCacheStreamRequest request, + [EnumeratorCancellation] CancellationToken cancellationToken) + { + yield return 1; + await Task.CompletedTask.ConfigureAwait(false); + } +} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamRequest.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamRequest.cs new file mode 100644 index 00000000..e09b23cb --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamRequest.cs @@ -0,0 +1,8 @@ +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 用于验证 stream 服务类型缓存的测试请求。 +/// +internal sealed record DispatcherCacheStreamRequest : IStreamRequest; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheBehavior.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheBehavior.cs new file mode 100644 index 00000000..7335616c --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheBehavior.cs @@ -0,0 +1,26 @@ +using System.Threading; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 为 提供最小 pipeline 行为, +/// 用于命中 dispatcher 的 pipeline invoker 缓存分支。 +/// +internal sealed class DispatcherPipelineCacheBehavior : IPipelineBehavior +{ + /// + /// 直接转发到下一个处理器。 + /// + /// 当前请求。 + /// 下一个处理器委托。 + /// 取消令牌。 + /// 下游处理器结果。 + public ValueTask Handle( + DispatcherPipelineCacheRequest request, + MessageHandlerDelegate next, + CancellationToken cancellationToken) + { + return next(request, cancellationToken); + } +} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequest.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequest.cs new file mode 100644 index 00000000..53cd733d --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequest.cs @@ -0,0 +1,8 @@ +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 用于验证 pipeline invoker 缓存的测试请求。 +/// +internal sealed record DispatcherPipelineCacheRequest : IRequest; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequestHandler.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequestHandler.cs new file mode 100644 index 00000000..d52636a1 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherPipelineCacheRequestHandler.cs @@ -0,0 +1,21 @@ +using System.Threading; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 处理 。 +/// +internal sealed class DispatcherPipelineCacheRequestHandler : IRequestHandler +{ + /// + /// 返回固定结果,供 pipeline 缓存测试使用。 + /// + /// 当前请求。 + /// 取消令牌。 + /// 固定整数结果。 + public ValueTask Handle(DispatcherPipelineCacheRequest request, CancellationToken cancellationToken) + { + return ValueTask.FromResult(2); + } +} diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequest.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequest.cs new file mode 100644 index 00000000..65821391 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequest.cs @@ -0,0 +1,8 @@ +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 用于验证按响应类型分层 request invoker 缓存的测试请求。 +/// +internal sealed record DispatcherStringCacheRequest : IRequest; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequestHandler.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequestHandler.cs new file mode 100644 index 00000000..83082053 --- /dev/null +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherStringCacheRequestHandler.cs @@ -0,0 +1,21 @@ +using System.Threading; +using GFramework.Cqrs.Abstractions.Cqrs; + +namespace GFramework.Cqrs.Tests.Cqrs; + +/// +/// 处理 。 +/// +internal sealed class DispatcherStringCacheRequestHandler : IRequestHandler +{ + /// + /// 返回固定字符串,供按响应类型缓存测试验证 string 路径。 + /// + /// 当前请求。 + /// 取消令牌。 + /// 固定字符串结果。 + public ValueTask Handle(DispatcherStringCacheRequest request, CancellationToken cancellationToken) + { + return ValueTask.FromResult("dispatcher-cache"); + } +}