Esempio n. 1
0
            private async Task RunCacheAsync(FeatureFlagCacheService target, int refreshes, Action <int> callback = null)
            {
                var count = 0;

                _options.RefreshInterval = TimeSpan.FromMilliseconds(100);

                using (var cancellationTokenSource = new CancellationTokenSource())
                {
                    _storage
                    .Setup(s => s.GetAsync())
                    .Callback(() =>
                    {
                        count++;
                        if (count == refreshes)
                        {
                            cancellationTokenSource.Cancel();
                        }

                        callback?.Invoke(count);
                    })
                    .ReturnsAsync(_latestFlags);

                    // Act
                    await target.RunAsync(cancellationTokenSource.Token);
                }
            }
Esempio n. 2
0
            public FactsBase()
            {
                _storage   = new Mock <IFeatureFlagStorageService>();
                _telemetry = new Mock <IFeatureFlagTelemetryService>();
                _options   = new FeatureFlagOptions();

                _target = new FeatureFlagCacheService(
                    _storage.Object,
                    _options,
                    _telemetry.Object,
                    Mock.Of <ILogger <FeatureFlagCacheService> >());

                _latestFlags = FeatureFlagStateBuilder
                               .Create()
                               .WithFeature("Foo", FeatureStatus.Enabled)
                               .Build();

                _stalenessMetrics = new List <TimeSpan>();
                _telemetry
                .Setup(t => t.TrackFeatureFlagStaleness(It.IsAny <TimeSpan>()))
                .Callback((TimeSpan staleness) =>
                {
                    _stalenessMetrics.Add(staleness);
                });
            }
Esempio n. 3
0
            public async Task AllowsNullTelemetryService()
            {
                // Arrange
                var target = new FeatureFlagCacheService(
                    _storage.Object,
                    _options,
                    telemetryService: null,
                    logger: Mock.Of <ILogger <FeatureFlagCacheService> >());

                await RunCacheAsync(target, refreshes : 2);

                // Act
                var result = target.GetLatestFlagsOrNull();

                // Assert
                Assert.Same(_latestFlags, result);

                _storage.Verify(s => s.GetAsync(), Times.Exactly(2));
            }