😎优化压测接口(增加请求参数)

This commit is contained in:
zuohuaijun 2024-12-24 16:06:39 +08:00
parent ae6e183054
commit 544c4f7e48
3 changed files with 40 additions and 7 deletions

View File

@ -46,7 +46,7 @@
<PackageReference Include="SSH.NET" Version="2024.2.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.5.1" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1147" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1148" />
<PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup>

View File

@ -7,7 +7,7 @@
namespace Admin.NET.Core.Service;
/// <summary>
/// 性能压力测试输入
/// 接口压测输入参数
/// </summary>
public class StressTestInput
{
@ -15,24 +15,53 @@ public class StressTestInput
/// 请求地址
/// </summary>
/// <example>https://gitee.com/zuohuaijun/Admin.NET</example>
[Required]
[Required(ErrorMessage = "接口请求地址不能为空")]
public string RequestUri { get; set; }
/// <summary>
/// 并发请求数量
/// </summary>
/// <example>100</example>
[Required(ErrorMessage = "并发请求数量不能为空"), Range(1, 10000, ErrorMessage = "每轮请求量必须为1-10000")]
public int NumberOfRequests { get; set; } = 100;
/// <summary>
/// 压测轮
/// 压测轮
/// </summary>
/// <example>1</example>
[Required(ErrorMessage = "压测轮数不能为空"), Range(1, 100, ErrorMessage = "压测轮数必须为1-100")]
public int NumberOfRounds { get; set; } = 1;
/// <summary>
/// 最大并发度
/// 最大并发度(默认为当前主机逻辑处理器的数量)
/// </summary>
/// <example>500</example>
public int MaxDegreeOfParallelism { get; set; } = 500;
[Range(0, 10000, ErrorMessage = "最大并发度必须为0-10000")]
public int MaxDegreeOfParallelism { get; set; } = Environment.ProcessorCount;
///// <summary>
///// 请求方式
///// </summary>
//[Required(ErrorMessage = "请求方式不能为空")]
//public HttpMethod? RequestMethod { get; set; } = HttpMethod.Get;
/// <summary>
/// 请求标头
/// </summary>
public Dictionary<string, string> Headers { get; set; } = [];
/// <summary>
/// 请求JSON内容
/// </summary>
public List<KeyValuePair<string, string>> JsonContent { get; set; } = [];
/// <summary>
/// 路径参数(模板参数)
/// </summary>
public Dictionary<string, string> PathParameters { get; set; } = [];
/// <summary>
/// 查询参数URL参数
/// </summary>
public Dictionary<string, string> QueryParameters { get; set; } = [];
}

View File

@ -239,7 +239,11 @@ public class SysCommonService : IDynamicApiController, ITransient
var stressTestHarnessResult = await httpRemoteService.SendAsync(HttpRequestBuilder.StressTestHarness(input.RequestUri)
.SetNumberOfRequests(input.NumberOfRequests) // 并发请求数量
.SetNumberOfRounds(input.NumberOfRounds) // 压测轮次
.SetMaxDegreeOfParallelism(input.MaxDegreeOfParallelism)); // 最大并发度
.SetMaxDegreeOfParallelism(input.MaxDegreeOfParallelism), // 最大并发度
builder => builder.WithHeaders(input.Headers)
.WithQueryParameters(input.QueryParameters)
.WithPathParameters(input.PathParameters)
.SetJsonContent(input.JsonContent));
return stressTestHarnessResult;
}
}