public IDictionary <string, FeatureFlag> FlagsForUser(User user)
 {
     readWriteLock.EnterReadLock();
     try
     {
         return(inMemoryCache.RetrieveFlags(user));
     }
     finally
     {
         readWriteLock.ExitReadLock();
     }
 }
        public void CacheFlagsShouldAlsoStoreFlagsInMemoryCache()
        {
            var flagCacheManager  = ManagerWithCachedFlags();
            var cachedDeviceFlags = inMemoryCache.RetrieveFlags(user);

            Assert.Equal(15, cachedDeviceFlags["int-flag"].value.ToObject <int>());
            Assert.Equal("*****@*****.**", cachedDeviceFlags["string-flag"].value.ToString());
            Assert.Equal(13.14159, cachedDeviceFlags["float-flag"].value.ToObject <double>());
        }
        public void CacheFlagsShouldAlsoStoreFlagsInMemoryCache()
        {
            var flagCacheManager  = ManagerWithCachedFlags();
            var cachedDeviceFlags = inMemoryCache.RetrieveFlags(user);

            Assert.Equal(15, cachedDeviceFlags["int-flag"].value.AsInt);
            Assert.Equal("*****@*****.**", cachedDeviceFlags["string-flag"].value.AsString);
            Assert.Equal(13.5, cachedDeviceFlags["float-flag"].value.AsFloat);
        }
        public void CanCacheFlagsInMemory()
        {
            var jsonFlags = @"{""flag1"":{""value"":1},""flag2"":{""value"":2}}";
            var flags     = TestUtil.DecodeFlagsJson(jsonFlags);

            inMemoryCache.CacheFlagsForUser(flags, user1);
            var flagsRetrieved = inMemoryCache.RetrieveFlags(user1);

            Assert.Equal(2, flagsRetrieved.Count);
            Assert.Equal(flags["flag1"], flagsRetrieved["flag1"]);
            Assert.Equal(flags["flag2"], flagsRetrieved["flag2"]);
        }
        public FlagCacheManager(IUserFlagCache inMemoryCache,
                                IUserFlagCache deviceCache,
                                IFlagListenerUpdater flagListenerUpdater,
                                User user)
        {
            this.inMemoryCache       = inMemoryCache;
            this.deviceCache         = deviceCache;
            this.flagListenerUpdater = flagListenerUpdater;

            var flagsFromDevice = deviceCache.RetrieveFlags(user);

            inMemoryCache.CacheFlagsForUser(flagsFromDevice, user);
        }
Esempio n. 6
0
        public void CanCacheFlagsInMemory()
        {
            var text  = JSONReader.FeatureFlagJSON();
            var flags = JsonConvert.DeserializeObject <IDictionary <string, FeatureFlag> >(text);

            inMemoryCache.CacheFlagsForUser(flags, user1);
            var flagsRetrieved = inMemoryCache.RetrieveFlags(user1);

            Assert.Equal(flags.Count, flagsRetrieved.Count);
            var secondFlag          = flags.Values.ToList()[1];
            var secondFlagRetrieved = flagsRetrieved.Values.ToList()[1];

            Assert.Equal(secondFlag, secondFlagRetrieved);
        }
Esempio n. 7
0
        public FlagCacheManager(IUserFlagCache inMemoryCache,
                                IUserFlagCache deviceCache,
                                IFlagChangedEventManager flagChangedEventManager,
                                User user)
        {
            this.inMemoryCache           = inMemoryCache;
            this.deviceCache             = deviceCache;
            this.flagChangedEventManager = flagChangedEventManager;

            var flagsFromDevice = deviceCache.RetrieveFlags(user);

            if (flagsFromDevice != null)
            {
                inMemoryCache.CacheFlagsForUser(flagsFromDevice, user);
            }
        }
 public IImmutableDictionary <string, FeatureFlag> FlagsForUser(User user)
 {
     return(_flagCache.RetrieveFlags(user));
 }