public static IUnleashServiceCollection WithMemoryToggleCollectionCache(this IUnleashServiceCollection serviceCollection, Action <MemoryToggleCollectionCacheSettings> settingsConfigurator = null) { if (serviceCollection == null) { throw new ArgumentNullException(nameof(serviceCollection)); } var settings = new MemoryToggleCollectionCacheSettings(); if (serviceCollection.UnleashConfiguration != null) { var section = serviceCollection.UnleashConfiguration.GetSection("Caching:Memory"); section.Bind(settings); } settingsConfigurator?.Invoke(settings); SettingsValidator.Validate(settings); serviceCollection.AddSingleton(settings); serviceCollection.AddMemoryCache(); serviceCollection.WithToggleCollectionCache <MemoryToggleCollectionCache>(); return(serviceCollection); }
public async Task Load_WhenTogglesOrEtagFileDoesNotExists_ReturnsEmptyResult( bool toggleCollectionExists, bool etagExists, [Frozen] MemoryToggleCollectionCacheSettings settings, [Frozen] MemoryCache memoryCache, MemoryToggleCollectionCache cache ) { settings.EtagKeyName = "Etag"; settings.ToggleCollectionKeyName = "Toggles"; if (toggleCollectionExists) { var toggleCollection = new ToggleCollection(); memoryCache.Set(settings.ToggleCollectionKeyName, toggleCollection); } if (toggleCollectionExists && etagExists) { var etag = Guid.NewGuid().ToString(); memoryCache.Set(settings.EtagKeyName, etag); } var result = await cache.Load(CancellationToken.None); Assert.Equal(string.Empty, result.InitialETag); Assert.Null(result.InitialToggleCollection); }
public async Task Load_WhenValidToggleAndEtagFilesExist_ReturnsExpectedResult( [Frozen] MemoryToggleCollectionCacheSettings settings, [Frozen] MemoryCache memoryCache, ToggleCollection toggleCollection, string etag ) { settings.EtagKeyName = "Etag"; settings.ToggleCollectionKeyName = "Toggles"; memoryCache.Set(settings.ToggleCollectionKeyName, toggleCollection); memoryCache.Set(settings.EtagKeyName, etag); var cache = new MemoryToggleCollectionCache(settings, memoryCache); var result = await cache.Load(CancellationToken.None); Assert.Equal(etag, result.InitialETag); Assert.Same(toggleCollection, result.InitialToggleCollection); }