mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-06 16:16:44 +08:00
fix(cqrs-tests): 拆分 dispatcher cache 测试辅助类型
- 拆分 CqrsDispatcherCacheTests 末尾的 request、handler 与 behavior 辅助类型到同目录独立文件 - 修复 dispatcher cache 测试中的 ConfigureAwait warning,保持现有断言与分发语义不变
This commit is contained in:
parent
6cc87a9f6c
commit
9098490fbb
@ -224,124 +224,8 @@ internal sealed class CqrsDispatcherCacheTests
|
||||
/// </summary>
|
||||
private static async Task DrainAsync<T>(IAsyncEnumerable<T> stream)
|
||||
{
|
||||
await foreach (var _ in stream)
|
||||
await foreach (var _ in stream.ConfigureAwait(false))
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 request 服务类型缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheRequest : IRequest<int>;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 notification 服务类型缓存的测试通知。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheNotification : INotification;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 stream 服务类型缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheStreamRequest : IStreamRequest<int>;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 pipeline invoker 缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherPipelineCacheRequest : IRequest<int>;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证按响应类型分层 request invoker 缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherStringCacheRequest : IRequest<string>;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheRequestHandler : IRequestHandler<DispatcherCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定结果,供缓存测试验证 dispatcher 请求路径。
|
||||
/// </summary>
|
||||
public ValueTask<int> Handle(DispatcherCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult(1);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheNotification" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheNotificationHandler : INotificationHandler<DispatcherCacheNotification>
|
||||
{
|
||||
/// <summary>
|
||||
/// 消费通知,不执行额外副作用。
|
||||
/// </summary>
|
||||
public ValueTask Handle(DispatcherCacheNotification notification, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheStreamRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheStreamHandler : IStreamRequestHandler<DispatcherCacheStreamRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回一个最小流,供缓存测试命中 stream 分发路径。
|
||||
/// </summary>
|
||||
public async IAsyncEnumerable<int> Handle(
|
||||
DispatcherCacheStreamRequest request,
|
||||
[EnumeratorCancellation] CancellationToken cancellationToken)
|
||||
{
|
||||
yield return 1;
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherPipelineCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherPipelineCacheRequestHandler : IRequestHandler<DispatcherPipelineCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定结果,供 pipeline 缓存测试使用。
|
||||
/// </summary>
|
||||
public ValueTask<int> Handle(DispatcherPipelineCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult(2);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherStringCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherStringCacheRequestHandler : IRequestHandler<DispatcherStringCacheRequest, string>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定字符串,供按响应类型缓存测试验证 string 路径。
|
||||
/// </summary>
|
||||
public ValueTask<string> Handle(DispatcherStringCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult("dispatcher-cache");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为 <see cref="DispatcherPipelineCacheRequest" /> 提供最小 pipeline 行为,
|
||||
/// 用于命中 dispatcher 的 pipeline invoker 缓存分支。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherPipelineCacheBehavior : IPipelineBehavior<DispatcherPipelineCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 直接转发到下一个处理器。
|
||||
/// </summary>
|
||||
public ValueTask<int> Handle(
|
||||
DispatcherPipelineCacheRequest request,
|
||||
MessageHandlerDelegate<DispatcherPipelineCacheRequest, int> next,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return next(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 notification 服务类型缓存的测试通知。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheNotification : INotification;
|
||||
@ -0,0 +1,21 @@
|
||||
using System.Threading;
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheNotification" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheNotificationHandler : INotificationHandler<DispatcherCacheNotification>
|
||||
{
|
||||
/// <summary>
|
||||
/// 消费通知,不执行额外副作用。
|
||||
/// </summary>
|
||||
/// <param name="notification">当前通知。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>已完成任务。</returns>
|
||||
public ValueTask Handle(DispatcherCacheNotification notification, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
8
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequest.cs
Normal file
8
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequest.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 request 服务类型缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheRequest : IRequest<int>;
|
||||
21
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequestHandler.cs
Normal file
21
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheRequestHandler.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System.Threading;
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheRequestHandler : IRequestHandler<DispatcherCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定结果,供缓存测试验证 dispatcher 请求路径。
|
||||
/// </summary>
|
||||
/// <param name="request">当前请求。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>固定整数结果。</returns>
|
||||
public ValueTask<int> Handle(DispatcherCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult(1);
|
||||
}
|
||||
}
|
||||
27
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamHandler.cs
Normal file
27
GFramework.Cqrs.Tests/Cqrs/DispatcherCacheStreamHandler.cs
Normal file
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherCacheStreamRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherCacheStreamHandler : IStreamRequestHandler<DispatcherCacheStreamRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回一个最小流,供缓存测试命中 stream 分发路径。
|
||||
/// </summary>
|
||||
/// <param name="request">当前流请求。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>包含一个固定元素的异步流。</returns>
|
||||
public async IAsyncEnumerable<int> Handle(
|
||||
DispatcherCacheStreamRequest request,
|
||||
[EnumeratorCancellation] CancellationToken cancellationToken)
|
||||
{
|
||||
yield return 1;
|
||||
await Task.CompletedTask.ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 stream 服务类型缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherCacheStreamRequest : IStreamRequest<int>;
|
||||
@ -0,0 +1,26 @@
|
||||
using System.Threading;
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 为 <see cref="DispatcherPipelineCacheRequest" /> 提供最小 pipeline 行为,
|
||||
/// 用于命中 dispatcher 的 pipeline invoker 缓存分支。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherPipelineCacheBehavior : IPipelineBehavior<DispatcherPipelineCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 直接转发到下一个处理器。
|
||||
/// </summary>
|
||||
/// <param name="request">当前请求。</param>
|
||||
/// <param name="next">下一个处理器委托。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>下游处理器结果。</returns>
|
||||
public ValueTask<int> Handle(
|
||||
DispatcherPipelineCacheRequest request,
|
||||
MessageHandlerDelegate<DispatcherPipelineCacheRequest, int> next,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return next(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证 pipeline invoker 缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherPipelineCacheRequest : IRequest<int>;
|
||||
@ -0,0 +1,21 @@
|
||||
using System.Threading;
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherPipelineCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherPipelineCacheRequestHandler : IRequestHandler<DispatcherPipelineCacheRequest, int>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定结果,供 pipeline 缓存测试使用。
|
||||
/// </summary>
|
||||
/// <param name="request">当前请求。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>固定整数结果。</returns>
|
||||
public ValueTask<int> Handle(DispatcherPipelineCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult(2);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 用于验证按响应类型分层 request invoker 缓存的测试请求。
|
||||
/// </summary>
|
||||
internal sealed record DispatcherStringCacheRequest : IRequest<string>;
|
||||
@ -0,0 +1,21 @@
|
||||
using System.Threading;
|
||||
using GFramework.Cqrs.Abstractions.Cqrs;
|
||||
|
||||
namespace GFramework.Cqrs.Tests.Cqrs;
|
||||
|
||||
/// <summary>
|
||||
/// 处理 <see cref="DispatcherStringCacheRequest" />。
|
||||
/// </summary>
|
||||
internal sealed class DispatcherStringCacheRequestHandler : IRequestHandler<DispatcherStringCacheRequest, string>
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定字符串,供按响应类型缓存测试验证 string 路径。
|
||||
/// </summary>
|
||||
/// <param name="request">当前请求。</param>
|
||||
/// <param name="cancellationToken">取消令牌。</param>
|
||||
/// <returns>固定字符串结果。</returns>
|
||||
public ValueTask<string> Handle(DispatcherStringCacheRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
return ValueTask.FromResult("dispatcher-cache");
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user