public FeatureToggleResponse IsEnabled(FeatureToggleRequest request)
        {
            var response = new FeatureToggleResponse
            {
                Enabled = IsEnabled(request.ServiceName, request.UserName, request.MachineName, request.Feature)
            };

            _logger.Debug("FeatureToggle retrieved {@Request} {@Response}", request, response);

            return(response);
        }
示例#2
0
        public void feature_toggles_should_be_updated()
        {
            var toggleFetcher       = A.Fake <IToggleFetcher>();
            var toggleBackupHandler = A.Fake <IToggleBackupHandler>();

            var toggleCollection = PopulatedToggleCollection(
                new FeatureToggle("toggleFetcherCalled", false, new[] { new ActivationStrategy("custom", null) }));

            A.CallTo(() => toggleBackupHandler.Read()).Returns(toggleCollection);

            //setup fetcher
            toggleCollection = PopulatedToggleCollection(
                new FeatureToggle("toggleFetcherCalled", true, new[] { new ActivationStrategy("custom", null) }));
            var response = FeatureToggleResponse.Changed(toggleCollection);

            A.CallTo(() => toggleFetcher.FetchToggles()).Returns(response);

            //init
            var executor = A.Fake <IUnleashScheduledExecutor>();
            //ArgumentCaptor<Runnable> runnableArgumentCaptor = ArgumentCaptor.forClass(Runnable.class);
            var callback = new Capture <TimerCallback>();


            UnleashConfig config = new UnleashConfig.Builder()
                                   .AppName("test")
                                   .UnleashAPI("http://localhost:4242/api/")
                                   .FetchTogglesInterval(200L)
                                   .Build();

            //run the toggle fetcher callback
            A.CallTo(() => executor.SetInterval(callback, A <long> .Ignored, A <long> .Ignored)).Returns(new AutoResetEvent(false));

            var toggleRepository = new FeatureToggleRepository(config, executor, toggleFetcher, toggleBackupHandler);


            A.CallTo(() => toggleFetcher.FetchToggles()).MustNotHaveHappened();
            callback.Value(null);
            A.CallTo(() => toggleBackupHandler.Read()).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => toggleFetcher.FetchToggles()).MustHaveHappened(Repeated.Exactly.Once);
            Assert.True(toggleRepository.GetToggle("toggleFetcherCalled").IsEnabled);
        }