forked from ddrilling/AsbCloudServer
fix tests
This commit is contained in:
parent
3bd6c7d0fb
commit
c94a2f2904
@ -1,61 +0,0 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.EfCache;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using Mapster;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace AsbCloudWebApi.Tests.CacheTests
|
||||
{
|
||||
public class CacheTest
|
||||
{
|
||||
private readonly string userCacheTag = "Users";
|
||||
private static readonly TimeSpan cacheObsolence = TimeSpan.FromMinutes(15);
|
||||
public IEnumerable<User> UsersCache = new List<User> {
|
||||
new User { Id = 1, Name = "test1", Email = "test1@mail.com" },
|
||||
new User { Id = 2, Name = "test2", Email = "test2@mail.com" },
|
||||
new User { Id = 3, Name = "test3", Email = "test3@mail.com" },
|
||||
new User { Id = 4, Name = "test4", Email = "test4@mail.com" },
|
||||
new User { Id = 5, Name = "test5", Email = "test5@mail.com" },
|
||||
new User { Id = 6, Name = "test6", Email = "test6@mail.com" },
|
||||
new User { Id = 7, Name = "test7", Email = "test7@mail.com" }
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public void Send_n_requests_cache_user()
|
||||
{
|
||||
const int iterations = 1230;
|
||||
var cache = UsersCache.AsQueryable();
|
||||
var cacheCount = UsersCache.Count();
|
||||
var fail = false;
|
||||
|
||||
var tasks = new int[iterations].Select(_=> new Task(() =>
|
||||
{
|
||||
var data = cache.FromCache(userCacheTag, cacheObsolence, Convert).ToArray();
|
||||
if (data.Count() != cacheCount)
|
||||
fail = true;
|
||||
}))
|
||||
.ToArray();
|
||||
|
||||
foreach(var task in tasks)
|
||||
task.Start();
|
||||
|
||||
Task.WaitAll(tasks);
|
||||
Assert.False(fail);
|
||||
}
|
||||
|
||||
private UserExtendedDto Convert(User entity)
|
||||
{
|
||||
var dto = entity.Adapt<UserExtendedDto>();
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Services.SAUB;
|
||||
using Moq;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace AsbCloudWebApi.Tests.CacheTests
|
||||
{
|
||||
public class TelemetryDataCacheTest
|
||||
{
|
||||
private const int IdTelemetryOk = 10;
|
||||
private static readonly DateTime baseDate = DateTime.Now;
|
||||
private static readonly SimpleTimezone timezone = new() { Hours = TimeZoneInfo.Local.BaseUtcOffset.TotalHours };
|
||||
|
||||
private static readonly Well[] wellData = new Well[]{
|
||||
new(){ Id = 1, IdTelemetry = IdTelemetryOk, IdState = 1, Caption = "", Timezone = timezone}
|
||||
};
|
||||
private static readonly TTelemetryData[] telemetryData = new TTelemetryData[]{
|
||||
new ( IdTelemetryOk, baseDate.AddSeconds(1), timezone.Hours ),
|
||||
new ( IdTelemetryOk, baseDate.AddSeconds(2), timezone.Hours ),
|
||||
new ( IdTelemetryOk, baseDate.AddSeconds(3), timezone.Hours ),
|
||||
new ( IdTelemetryOk, baseDate.AddSeconds(4), timezone.Hours ),
|
||||
};
|
||||
private readonly Mock<IAsbCloudDbContext> dbMock;
|
||||
|
||||
private TelemetryDataCache<TTelemetryData> cacheTest;
|
||||
|
||||
public class TTelemetryData : ITelemetryData, AsbCloudApp.Data.ITelemetryData
|
||||
{
|
||||
private DateTimeOffset _dateTime;
|
||||
|
||||
public TTelemetryData(int idTelemetry, DateTime dateTime, double hoursOffset)
|
||||
{
|
||||
IdTelemetry = idTelemetry;
|
||||
DateTime = dateTime;
|
||||
var offset = TimeSpan.FromHours(hoursOffset);
|
||||
var dateTimeUTC = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified);
|
||||
_dateTime = new DateTimeOffset(dateTimeUTC, offset)
|
||||
.ToUniversalTime();
|
||||
}
|
||||
|
||||
public int IdTelemetry { get; set; }
|
||||
public DateTime DateTime { get; set; }
|
||||
DateTimeOffset ITelemetryData.DateTime { get => _dateTime; set => _dateTime = value; }
|
||||
}
|
||||
|
||||
public TelemetryDataCacheTest()
|
||||
{
|
||||
dbMock = new Mock<IAsbCloudDbContext>();
|
||||
dbMock
|
||||
.AddDbSetMock(wellData)
|
||||
.AddDbSetMock(telemetryData);
|
||||
|
||||
cacheTest = TelemetryDataCache<TTelemetryData>.GetInstance<TTelemetryData>(dbMock.Object, out Task cacheInitialization);
|
||||
cacheInitialization.Wait();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Get_existing_cache_returns_some()
|
||||
{
|
||||
var startDate = baseDate.AddSeconds(3);
|
||||
var data = cacheTest.GetOrDefault(IdTelemetryOk, startDate, 600, 600);
|
||||
Assert.NotNull(data);
|
||||
Assert.NotEmpty(data);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Get_non_existing_cache_returns_null()
|
||||
{
|
||||
var startDate = baseDate.AddSeconds(-1);
|
||||
var data = cacheTest.GetOrDefault(IdTelemetryOk, startDate, 600, 600);
|
||||
Assert.Null(data);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Add_new_data_should_replace_IdTelemetry()
|
||||
{
|
||||
var startDate = baseDate.AddSeconds(4);
|
||||
var newTelemetryData = new TTelemetryData[]{
|
||||
new ( 0, startDate, timezone.Hours),
|
||||
new ( 0, startDate.AddSeconds(1), timezone.Hours),
|
||||
};
|
||||
cacheTest.AddRange(IdTelemetryOk, newTelemetryData);
|
||||
var data = cacheTest.GetOrDefault(IdTelemetryOk, startDate, 600, 600);
|
||||
|
||||
Assert.NotNull(data);
|
||||
Assert.True(data?.Count() > 2);
|
||||
Assert.All(data!, p => Assert.Equal(IdTelemetryOk, p.IdTelemetry));
|
||||
}
|
||||
}
|
||||
}
|
@ -20,8 +20,8 @@ public class EventServiceTest
|
||||
context = TestHelpter.MakeRealTestContext();
|
||||
var telemetryTracker = new Mock<ITelemetryTracker>();
|
||||
var imezoneServiceMock = new Mock<ITimezoneService>();
|
||||
var telemetryService = new TelemetryService(context, telemetryTracker.Object, imezoneServiceMock.Object);
|
||||
service = new EventService(context, telemetryService);
|
||||
var telemetryService = new TelemetryService(context, TestHelpter.MemoryCache, telemetryTracker.Object, imezoneServiceMock.Object);
|
||||
service = new EventService(context, TestHelpter.MemoryCache, telemetryService);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -40,7 +40,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
||||
.Returns(timezone);
|
||||
|
||||
context = TestHelpter.MakeRealTestContext();
|
||||
telemetryService = new TelemetryService(context, telemetryTracker.Object, timezoneService.Object);
|
||||
telemetryService = new TelemetryService(context, TestHelpter.MemoryCache, telemetryTracker.Object, timezoneService.Object);
|
||||
telemetryUserService = new TelemetryUserService(context, telemetryService, TestHelpter.MemoryCache);
|
||||
telemetryDataSaubCache = TelemetryDataCache<TelemetryDataSaubDto>.GetInstance<TelemetryDataSaub>(context, out Task _);
|
||||
var info = new TelemetryInfoDto
|
||||
|
@ -53,7 +53,7 @@ namespace ConsoleApp1
|
||||
public static AsbCloudDbContext MakeContext()
|
||||
=> MakeContext(options);
|
||||
|
||||
public static IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());
|
||||
public static IMemoryCache MemoryCache = new MemoryCache(new MemoryCacheOptions());
|
||||
|
||||
public static AsbCloudDbContext MakeContext(DbContextOptions<AsbCloudDbContext> options)
|
||||
=> new (options);
|
||||
@ -65,19 +65,19 @@ namespace ConsoleApp1
|
||||
=> AsbCloudInfrastructure.DependencyInjection.MapsterSetup();
|
||||
|
||||
public static TelemetryTracker MakeTelemetryTracker()
|
||||
=> new (ConfigurationService, memoryCache);
|
||||
=> new (ConfigurationService, MemoryCache);
|
||||
|
||||
public static TelemetryService MakeTelemetryService()
|
||||
=> new (Context, MakeTelemetryTracker(), TimezoneService);
|
||||
=> new (Context, MemoryCache, MakeTelemetryTracker(), TimezoneService);
|
||||
|
||||
public static WellService MakeWellService()
|
||||
=> new (Context, memoryCache, MakeTelemetryService(), TimezoneService);
|
||||
=> new (Context, MemoryCache, MakeTelemetryService(), TimezoneService);
|
||||
|
||||
public static WellOperationRepository MakeWellOperationRepository()
|
||||
=> new (Context, memoryCache, MakeWellService());
|
||||
=> new (Context, MemoryCache, MakeWellService());
|
||||
|
||||
public static OperationsStatService MakeOperationsStatService()
|
||||
=> new (Context, memoryCache, MakeWellService());
|
||||
=> new (Context, MemoryCache, MakeWellService());
|
||||
|
||||
public static ScheduleReportService MakeScheduleReportService()
|
||||
=> new(MakeOperationsStatService(), MakeWellService());
|
||||
|
Loading…
Reference in New Issue
Block a user