DD.WellWorkover.Cloud/AsbCloudDbDemoData/ControllerLoadTester.cs
2021-10-04 15:41:47 +05:00

65 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Text;
using System.Text.Json;
using AsbCloudApp.Data;
namespace AsbCloudDevOperations
{
public class ControllerLoadTester
{
private readonly Random rand = new();
//Пример роута: "api/telemetryDataSaub/123123_";
public void TestControllerRoute(CancellationToken token = default)
{
var tasks = new List<Task>();
for (var i = 0; i < 30; i++)
{
tasks.Add(SendRequestsAsync(i, token));
};
Task.WaitAll(tasks.ToArray(), token);
Console.WriteLine("End");
}
private async Task SendRequestsAsync(int i, CancellationToken token)
{
var json = JsonSerializer.Serialize(new List<TelemetryDataSaubDto>()
{
new TelemetryDataSaubDto()
});
var stringContent = new StringContent(json, Encoding.UTF8,
"application/json");
var uid = $"123123_1";
using var httpClient = new HttpClient();
Console.WriteLine($"Sending telemetry info with uid: {uid}");
var tInfoUri = new Uri($"http://localhost:5000/api/telemetry/{uid}/info");
using var infoResponse = await httpClient.PostAsync(tInfoUri, stringContent, token);
Console.WriteLine($"Передана telemetry info с: {infoResponse.StatusCode}");
for (var j = 0; j <= 10; j++)
{
await Task.Delay(rand.Next(1000, 5000), token);
var dataSaubUri = new Uri($"http://localhost:5000/api/telemetryDataSaub/{uid}");
using var saubResponse = await httpClient.PostAsync(dataSaubUri, stringContent, token);
Console.WriteLine(saubResponse.StatusCode);
}
}
}
}