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)); }
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); }
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", }
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); }
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); } }
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" } }
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); }