83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|