diff --git a/AsbCloudWebApi.Tests/CacheTests/CacheTest.cs b/AsbCloudWebApi.Tests/CacheTests/CacheTest.cs deleted file mode 100644 index f67a0a46..00000000 --- a/AsbCloudWebApi.Tests/CacheTests/CacheTest.cs +++ /dev/null @@ -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 UsersCache = new List { - 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(); - return dto; - } - } -} diff --git a/AsbCloudWebApi.Tests/CacheTests/TelemetryDataCacheTest.cs b/AsbCloudWebApi.Tests/CacheTests/TelemetryDataCacheTest.cs deleted file mode 100644 index 5ae1d78c..00000000 --- a/AsbCloudWebApi.Tests/CacheTests/TelemetryDataCacheTest.cs +++ /dev/null @@ -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 dbMock; - - private TelemetryDataCache 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(); - dbMock - .AddDbSetMock(wellData) - .AddDbSetMock(telemetryData); - - cacheTest = TelemetryDataCache.GetInstance(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)); - } - } -} diff --git a/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs index b13cab4e..d39eb3f1 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/EventServiceTest.cs @@ -20,8 +20,8 @@ public class EventServiceTest context = TestHelpter.MakeRealTestContext(); var telemetryTracker = new Mock(); var imezoneServiceMock = new Mock(); - 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] diff --git a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs index 6d395cf2..153de97f 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs @@ -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.GetInstance(context, out Task _); var info = new TelemetryInfoDto diff --git a/ConsoleApp1/ServiceFactory.cs b/ConsoleApp1/ServiceFactory.cs index 1dcc9c08..836f975e 100644 --- a/ConsoleApp1/ServiceFactory.cs +++ b/ConsoleApp1/ServiceFactory.cs @@ -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 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());