Esempio n. 1
0
    private async Task SetCacheItemsAsync(
        string providerName,
        string providerKey,
        string currentName,
        FeatureValueCacheItem currentCacheItem)
    {
        var featureDefinitions = FeatureDefinitionManager.GetAll();
        var featuresDictionary = (await FeatureValueRepository.GetListAsync(providerName, providerKey))
                                 .ToDictionary(s => s.Name, s => s.Value);

        var cacheItems = new List <KeyValuePair <string, FeatureValueCacheItem> >();

        foreach (var featureDefinition in featureDefinitions)
        {
            var featureValue = featuresDictionary.GetOrDefault(featureDefinition.Name);

            cacheItems.Add(
                new KeyValuePair <string, FeatureValueCacheItem>(
                    CalculateCacheKey(featureDefinition.Name, providerName, providerKey),
                    new FeatureValueCacheItem(featureValue)
                    )
                );

            if (featureDefinition.Name == currentName)
            {
                currentCacheItem.Value = featureValue;
            }
        }

        await Cache.SetManyAsync(cacheItems, considerUow : true);
    }
Esempio n. 2
0
    public async Task Cache_Should_Invalidator_WhenFeatureChanged()
    {
        // Arrange cache feature.
        (await _featureManagementStore.GetOrNullAsync(
             TestFeatureDefinitionProvider.SocialLogins,
             EditionFeatureValueProvider.ProviderName,
             TestEditionIds.Regular.ToString()
             )
        ).ShouldNotBeNull();

        var feature = await _featureValueRepository.FindAsync(
            TestFeatureDefinitionProvider.SocialLogins,
            EditionFeatureValueProvider.ProviderName,
            TestEditionIds.Regular.ToString()
            );

        // Act
        await _featureValueRepository.DeleteAsync(feature);

        // Assert
        (await _cache.GetAsync(
             FeatureValueCacheItem.CalculateCacheKey(
                 TestFeatureDefinitionProvider.SocialLogins,
                 EditionFeatureValueProvider.ProviderName,
                 TestEditionIds.Regular.ToString()
                 )
             )
        ).ShouldBeNull();
    }
Esempio n. 3
0
    protected virtual async Task <FeatureValueCacheItem> GetCacheItemAsync(string name, string providerName, string providerKey)
    {
        var cacheKey  = CalculateCacheKey(name, providerName, providerKey);
        var cacheItem = await Cache.GetAsync(cacheKey, considerUow : true);

        if (cacheItem != null)
        {
            return(cacheItem);
        }

        cacheItem = new FeatureValueCacheItem(null);

        await SetCacheItemsAsync(providerName, providerKey, name, cacheItem);

        return(cacheItem);
    }
Esempio n. 4
0
    public async Task Cache_Should_Invalidator_WhenSettingChanged_Between_Tenant_And_Host()
    {
        var tenantId = Guid.NewGuid();

        using (_currentTenant.Change(tenantId))
        {
            // Arrange cache feature.
            (await _featureManagementStore.GetOrNullAsync(
                 TestFeatureDefinitionProvider.SocialLogins,
                 EditionFeatureValueProvider.ProviderName,
                 TestEditionIds.Regular.ToString()
                 )
            ).ShouldNotBeNull();
        }

        using (_currentTenant.Change(null))
        {
            await _featureManagementStore.SetAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                   false.ToString(),
                                                   EditionFeatureValueProvider.ProviderName,
                                                   TestEditionIds.Regular.ToString());
        }

        using (_currentTenant.Change(tenantId))
        {
            // Arrange cache feature.
            (await _cache.GetAsync(
                 FeatureValueCacheItem.CalculateCacheKey(
                     TestFeatureDefinitionProvider.SocialLogins,
                     EditionFeatureValueProvider.ProviderName,
                     TestEditionIds.Regular.ToString()
                     )
                 )
            ).ShouldBeNull();
        }
    }
Esempio n. 5
0
 protected virtual string CalculateCacheKey(string name, string providerName, string providerKey)
 {
     return(FeatureValueCacheItem.CalculateCacheKey(name, providerName, providerKey));
 }