public void AddsTogglerToFeatureContext(FeatureContextBuilder sut, IFeatureToggler featureToggler)
        {
            IFeatureContext context = sut.WithToggler(featureToggler)
                                      .GetContext();

            Assert.Same(featureToggler, context.TogglerSource.GetFeatureToggles().Single());
        }
示例#2
0
        public MigrateTask(Lazy <IDbFactory> db, IIntegrationDatabaseConfiguration configuration, IKernel kernel, IMigrationDbs dbs, IFeatureToggler featureToggler)
        {
            _kernel         = kernel;
            _featureToggler = featureToggler;

            if (!configuration.Disabled)
            {
                string connectionString = EnsureIntegrationDb(db.Value, configuration.CheckExistsAndCreateDatabaseIfNotFound, out _databaseCreated);

                var integrationDb = new IntegrationMigrationDb(
                    configuration.DatabaseServer,
                    ConnectionString.FromText(connectionString),
                    typeof(M1_Baseline).Assembly,
                    typeof(M1_Baseline).Namespace);

                MigrationRunner runner = CreateRunner(integrationDb, out _);

                long latestVersion = runner.VersionLoader.VersionInfo.Latest();
                _disabledFeatures = DisableFeatures(latestVersion);

                dbs = dbs.WithIntegrationDb(integrationDb);
            }

            _dbs = dbs.ToArray();
        }
示例#3
0
        public void IsEnabledCallsIsEnabledOnToggle([Frozen] IFeatureTogglerSource togglerSource, IFeature feature,
                                                    IFeatureToggler featureToggler, bool expected, FeatureContext sut)
        {
            A.CallTo(() => featureToggler.IsEnabled(sut, feature))
            .Returns(expected);
            A.CallTo(() => togglerSource.GetFeatureToggles())
            .Returns(new[] { featureToggler });

            bool result = sut.IsEnabled(feature);

            A.CallTo(() => featureToggler.IsEnabled(sut, feature))
            .MustHaveHappened();
            Assert.Equal(expected, result);
        }
示例#4
0
        public DbDistributedMutex(IDbFactory db, IIntegrationDatabaseConfiguration configuration, IRuntimeSettings settings, IFeatureToggler featureToggler, IShutdown shutdown)
        {
            _db             = db;
            _configuration  = configuration;
            _featureToggler = featureToggler;
            _shutdown       = shutdown;

            if (!TimeSpan.TryParse(settings[QueryLockIntervalKey], out TimeSpan queryLockInterval))
            {
                queryLockInterval = TimeSpan.FromSeconds(5);
            }

            _queryLockInterval = queryLockInterval;
        }
示例#5
0
        public void IsEnabledUsesFirstToggleProviderResult([Frozen] IFeatureTogglerSource togglerSource,
                                                           IFeature feature, IFeatureToggler skippedToggler, IFeatureToggler enabledToggler, IFeatureToggler endToggler,
                                                           bool expected, FeatureContext sut)
        {
            A.CallTo(() => enabledToggler.IsEnabled(sut, feature))
            .Returns(expected);
            A.CallTo(() => togglerSource.GetFeatureToggles())
            .Returns(new[] { skippedToggler, enabledToggler, endToggler });

            bool result = sut.IsEnabled(feature);

            Assert.Equal(expected, result);
            A.CallTo(() => endToggler.IsEnabled(sut, feature))
            .MustNotHaveHappened();
        }
示例#6
0
        public static void Run()
        {
            using (var context = ApplicationContext.Create(application => application
                                                           .Database(database => database
                                                                     .IntegrationDb(integrationDb => integrationDb
                                                                                    .Disable()))
                                                           .Services(services => services
                                                                     .Advanced(advanced => advanced
                                                                               .Register <MyFeature>()))))
            {
                MyFeature myFeature = context.Resolve <MyFeature>();

                IFeatureToggler toggler = context.Resolve <IFeatureToggler>();
                toggler.Disable <MyFeature>();

                myFeature.DoThing();

                toggler.Enable <MyFeature>();

                myFeature.DoThing();
            }
        }
 public override void Disable(IFeatureToggler toggler)
 {
     toggler.Disable <DbDistributedMutex>();
 }
 public abstract void Enable(IFeatureToggler toggler);
 public DbLogger(IDbFactory db, IIntegrationDatabaseConfiguration configuration, IFeatureToggler featureToggler)
 {
     _db             = db;
     _configuration  = configuration;
     _featureToggler = featureToggler;
 }
示例#10
0
 public ITogglerBuilder AddToggler(IFeatureToggler featureToggler)
 {
     _togglers.Add(featureToggler);
     return(this);
 }
示例#11
0
 public FeatureContextBuilder WithToggler(IFeatureToggler toggler)
 {
     _togglers.Add(toggler);
     return(this);
 }
示例#12
0
 public override void Disable(IFeatureToggler toggler)
 {
     toggler.Disable <DbLogger>();
 }
示例#13
0
 public MyFeature(IConsoleWriter console, IFeatureToggler feature)
 {
     _console = console;
     _feature = feature;
 }