😎增加性能压力测试接口

This commit is contained in:
zuohuaijun 2024-12-22 01:08:20 +08:00
parent 7f476010b5
commit e01e1989d4
2 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,38 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core.Service;
/// <summary>
/// 性能压力测试输入
/// </summary>
public class StressTestInput
{
/// <summary>
/// 请求地址
/// </summary>
/// <example>https://gitee.com/zuohuaijun/Admin.NET</example>
[Required]
public string RequestUri { get; set; }
/// <summary>
/// 并发请求数量
/// </summary>
/// <example>100</example>
public int NumberOfRequests { get; set; } = 100;
/// <summary>
/// 压测轮次
/// </summary>
/// <example>1</example>
public int NumberOfRounds { get; set; } = 1;
/// <summary>
/// 最大并发度
/// </summary>
/// <example>500</example>
public int MaxDegreeOfParallelism { get; set; } = 500;
}

View File

@ -227,4 +227,19 @@ public class SysCommonService : IDynamicApiController, ITransient
throw Oops.Oh($"获取机器码失败:{ex.Message}");
}
}
/// <summary>
/// 性能压力测试 🔖
/// </summary>
/// <returns></returns>
[DisplayName("性能压力测试")]
public async Task<StressTestHarnessResult> StressTest(StressTestInput input)
{
var httpRemoteService = App.GetRequiredService<IHttpRemoteService>();
var stressTestHarnessResult = await httpRemoteService.SendAsync(HttpRequestBuilder.StressTestHarness(input.RequestUri)
.SetNumberOfRequests(input.NumberOfRequests) // 并发请求数量
.SetNumberOfRounds(input.NumberOfRounds) // 压测轮次
.SetMaxDegreeOfParallelism(input.MaxDegreeOfParallelism)); // 最大并发度
return stressTestHarnessResult;
}
}