Добавлен предсказуемый генератор данных

This commit is contained in:
Пытков Роман
2025-09-19 22:51:21 +03:00
parent 38f3880be8
commit c27e78cffe
11 changed files with 234 additions and 130 deletions

View File

@@ -7,17 +7,34 @@ using Domain.Dto;
using MessagePack;
using NetworkTest;
using Server;
using Server.DataGenerator;
if (args.Length < 2)
if (args.Length < 3)
{
System.Console.WriteLine("Pass twp arg: test/http/tcp and json/bin");
System.Console.WriteLine("Pass three args: test/http/tcp, json/bin, and random/predictable");
return -1;
}
var dataGenerator = new DataGenerator(generationInterval: TimeSpan.FromMilliseconds(1));
var protocol = args[0];
var serialization = args[1];
var generatorType = args[2];
int delay = 0;
if (generatorType == "predictable" && args.Length > 3)
{
if (!int.TryParse(args[3], out delay))
{
System.Console.WriteLine("Invalid delay value. Must be an integer.");
return -1;
}
}
IDataGenerator dataGenerator = generatorType switch
{
"random" => new RandomDataGenerator(generationInterval: TimeSpan.FromMilliseconds(1)),
"predictable" => new PredictableDataGenerator(delay),
_ => throw new ArgumentException("Generator type must be 'random' or 'predictable'")
};
if (protocol == "test")
{
@@ -31,7 +48,7 @@ if (protocol == "test")
var json = serialization == "json";
while (true)
{
var data = dataGenerator.GetPackage(index);
var data = dataGenerator.GetPackage();
if (data == null)
{
nullCount++;
@@ -65,9 +82,9 @@ if (protocol == "test")
IServer? server = protocol switch
{
"http" => new HttpServer(index => dataGenerator.GetPackage(index),
"http" => new HttpServer(() => dataGenerator.GetPackage(),
serialization == "json" ? PrepareResponseJson : PrepareResponseMessagePack),
"tcp" => new TcpServer(index => dataGenerator.GetPackage(index),
"tcp" => new TcpServer(() => dataGenerator.GetPackage(),
serialization == "json" ? PrepareBytesJson : PrepareBytesMessagePack),
_ => null
};