persistence/Persistence.Benchmark/Tests/WitsDataTest.cs

83 lines
2.5 KiB
C#
Raw Normal View History

2024-12-17 09:35:28 +05:00
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Engines;
using Microsoft.Extensions.DependencyInjection;
using Persistence.Client;
using Persistence.Client.Clients;
using Persistence.Client.Clients.Interfaces;
using Persistence.Models;
namespace Persistence.Benchmark.Tests;
[SimpleJob(RunStrategy.ColdStart, 1)]
public class WitsDataTest
{
private readonly IWitsDataClient client;
public IEnumerable<WitsDataDto> data;
public WitsDataTest()
{
var factory = new WebAppFactoryFixture();
var scope = factory.Services.CreateScope();
var persistenceClientFactory = scope.ServiceProvider
.GetRequiredService<PersistenceClientFactory>();
client = persistenceClientFactory.GetWitsDataClient();
//data = GenerateData(1_000_000);
}
[Benchmark]
[IterationCount(1)]
public async Task WithCompositePk()
{
try
{
//var data = GenerateData(1_000_000);
var response = await client.AddRange(data, CancellationToken.None);
Console.WriteLine(response.ToString());
//var discriminatorId = data.FirstOrDefault()!.DiscriminatorId;
//var date = DateTimeOffset.UtcNow.AddDays(-1);
//Console.WriteLine(date.ToString());
//var test = await client.GetPart(discriminatorId, date);
//Console.WriteLine(test.FirstOrDefault()?.DiscriminatorId.ToString());
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
[GlobalSetup]
public void GenerateData()
{
int countToCreate = 5_000_000;
var dtos = new List<WitsDataDto>();
for (var j = 0; j < countToCreate / 100 ; j++)
{
for (var i = 0; i < countToCreate && i < 100; i++)
{
var discriminatorId = Guid.NewGuid();
var timestamped = DateTimeOffset.UtcNow;
var random = new Random();
dtos.Add(new WitsDataDto()
{
DiscriminatorId = discriminatorId,
Timestamped = timestamped.AddSeconds(i),
Values = new List<WitsValueDto>()
{
new WitsValueDto()
{
RecordId = i + 1,
ItemId = i + 1,
Value = random.Next(1, 100)
}
}
});
}
}
data = dtos;
}
}