Пример #1
0
        public async Task <bool> IsActiveAsync(string featureName)
        {
            var active = false;

            var headerName = await _runtimeParameterAccessor
                             .GetValueAsync <string>(featureName, _descriptors[0]);

            var percentage = await _runtimeParameterAccessor
                             .GetValueAsync <double>(featureName, _descriptors[1]);

            if (headerName != null)
            {
                var headerValues = _httpContextAccessor.HttpContext.Request
                                   .Headers[headerName];

                var value = headerValues[0] ?? DEFAULT_HEADER_VALUE;

                var assignedPartition = JenkinsPartitioner.ResolveToLogicalPartition(value, NUMBER_OF_PARTITIONS);

                return(assignedPartition <= ((NUMBER_OF_PARTITIONS * percentage) / 100));
            }
            else
            {
                _logger.LogWarning($"The header name {_descriptors[0].Name} for feature {featureName} on RollupHeaderValueActivator is not configured correctly.");
            }

            return(active);
        }
Пример #2
0
        public async Task <bool> IsActiveAsync(string featureName)
        {
            var percentage = await _runtimeParameterAccessor
                             .GetValueAsync <double>(featureName, _descriptors[0]);

            var username = await _userProvider
                           .GetUserNameAsync() ?? ANONYMOUS_USER;

            var assignedPartition = JenkinsPartitioner.ResolveToLogicalPartition(username, NUMBER_OF_PARTITIONS);

            return(assignedPartition <= ((NUMBER_OF_PARTITIONS * percentage) / 100));
        }