Esempio n. 1
0
        public void should_be_disabled_when_missing_user_id()
        {
            var context = UnleashContext.CreateBuilder().Build();
            var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

            Assert.False(gradualRolloutStrategy.IsEnabled(new Dictionary <string, string>(), context));
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var unleashConfig = new UnleashConfig.Builder()
                                .AppName("c-sharp-test")
                                .InstanceId("instance y")
                                .UnleashAPI("https://unleash.herokuapp.com/api/")
                                .FetchTogglesInterval(1)
                                .SendMetricsInterval(2)
                                .Build();

            var context = UnleashContext.CreateBuilder()
                          .SessionId(new Random().Next(10000) + "")
                          .UserId(new Random().Next(10000) + "")
                          .RemoteAddress("192.168.1.1")
                          .Build();

            // var executor = new UnleashScheduledExecutorImpl();
            // var repository = new FeatureToggleRepository(
            //         unleashConfig,
            //         executor,
            //         new HttpToggleFetcher(unleashConfig),
            //         new ToggleBackupHandlerFile(unleashConfig));
            var unleash = new DefaultUnleash(unleashConfig,
                                             //repository,
                                             new ActiveForUserWithIdStrategy()
                                             );


            //var test =  executor.SetInterval(s => repository.UpdateToggles(s).Wait(), 0, unleashConfig.FetchTogglesInterval);

            Run(unleash, context, "test", 200);
        }
Esempio n. 3
0
        public void should_not_be_enabled_when_0percent_rollout()
        {
            var context = UnleashContext.CreateBuilder().SessionId("1574576830").Build();
            var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

            var parms  = BuildParams(0, "innfinn");
            var actual = gradualRolloutStrategy.IsEnabled(parms, context);

            Assert.False(actual); //"should not be enabled when 0% rollout",
        }
Esempio n. 4
0
        public void should_be_enabled_when_using_100percent_rollout()
        {
            var context = UnleashContext.CreateBuilder().SessionId("1574576830").Build();
            var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

            var parms  = BuildParams(100, "innfinn");
            var result = gradualRolloutStrategy.IsEnabled(parms, context);

            Assert.True(result);
        }
Esempio n. 5
0
        public void should_have_same_result_for_multiple_executions()
        {
            var context = UnleashContext.CreateBuilder().SessionId("1574576830").Build();
            var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

            var  parms          = BuildParams(1, "innfinn");
            bool firstRunResult = gradualRolloutStrategy.IsEnabled(parms, context);

            for (int i = 0; i < 10; i++)
            {
                bool subsequentRunResult = gradualRolloutStrategy.IsEnabled(parms, context);
                Assert.Equal(
                    subsequentRunResult,
                    firstRunResult);
            }
        }
Esempio n. 6
0
        public void should_be_enabled_above_minimum_percentage()
        {
            const string sessionId         = "1574576830";
            const string groupId           = "";
            var          minimumPercentage = StrategyUtils.GetNormalizedNumber(sessionId, groupId);

            var context = UnleashContext.CreateBuilder().SessionId(sessionId).Build();

            var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

            for (int p = minimumPercentage; p <= 100; p++)
            {
                var parms  = BuildParams(p, groupId);
                var actual = gradualRolloutStrategy.IsEnabled(parms, context);
                Assert.True(actual); //"should be enabled when " + p + "% rollout"
            }
        }
Esempio n. 7
0
        private int CheckRandomLoginIDs(int numberOfIDs, int percentage)
        {
            int numberOfEnabledUsers = 0;

            for (int i = 0; i < numberOfIDs; i++)
            {
                var sessionId = GetRandomLoginId();
                var context   = UnleashContext.CreateBuilder().SessionId(sessionId.ToString()).Build();

                var gradualRolloutStrategy = new GradualRolloutSessionIdStrategy();

                var parms   = BuildParams(percentage, "");
                var enabled = gradualRolloutStrategy.IsEnabled(parms, context);
                if (enabled)
                {
                    numberOfEnabledUsers++;
                }
            }
            return(numberOfEnabledUsers);
        }