< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.KafkaBinding
Assembly: CoreWCF.Kafka
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Kafka/src/CoreWCF/Channels/KafkaBinding.cs
Line coverage
68%
Covered lines: 31
Uncovered lines: 14
Coverable lines: 45
Total lines: 117
Line coverage: 68.8%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
.ctor(...)100%11100%
.ctor(...)100%110%
Initialize()100%11100%
CreateBindingElements()66.66%6685.71%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Kafka/src/CoreWCF/Channels/KafkaBinding.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using Confluent.Kafka;
 6
 7namespace CoreWCF.Channels
 8{
 9    public class KafkaBinding : Binding
 10    {
 4411        private KafkaSecurity _security = new();
 12        private KafkaTransportBindingElement _transport;
 13        private BinaryMessageEncodingBindingElement _binaryEncoding;
 14        private TextMessageEncodingBindingElement _textEncoding;
 15
 4416        public KafkaBinding()
 17        {
 4418            Initialize();
 4419        }
 20
 21        public KafkaBinding(KafkaDeliverySemantics deliverySemantics)
 422            : this()
 23        {
 424            _transport.DeliverySemantics = deliverySemantics;
 425        }
 26
 27        public KafkaBinding(KafkaSecurityMode securityMode, KafkaDeliverySemantics deliverySemantics = KafkaDeliverySema
 028            : this(deliverySemantics)
 29        {
 030            _security.Mode = securityMode;
 031        }
 32
 33        private void Initialize()
 34        {
 4435            _transport = new KafkaTransportBindingElement();
 4436            _binaryEncoding = new BinaryMessageEncodingBindingElement();
 4437            _textEncoding = new TextMessageEncodingBindingElement();
 4438        }
 39
 40        public override BindingElementCollection CreateBindingElements()
 41        {
 88242            BindingElementCollection elements = new();
 43
 44            // TODO: Add Message security.
 88245            SecurityBindingElement securityBindingElement = _security.CreateMessageSecurity();
 88246            if (securityBindingElement != null)
 47            {
 048                elements.Add(securityBindingElement);
 49            }
 50
 88251            MessageEncodingBindingElement encodingBindingElement = MessageEncoding switch
 88252            {
 1353                KafkaMessageEncoding.Binary => _binaryEncoding,
 86954                KafkaMessageEncoding.Text => _textEncoding,
 055                _ => _textEncoding
 88256            };
 57
 88258            elements.Add(encodingBindingElement);
 59
 88260            _security.ApplySecurity(_transport);
 61
 88262            elements.Add(_transport);
 63
 88264            return elements;
 65        }
 66
 067        public override string Scheme => _transport.Scheme;
 68
 69        public string GroupId
 70        {
 071            get => _transport.GroupId;
 4272            set => _transport.GroupId = value;
 73        }
 74
 75        public KafkaDeliverySemantics DeliverySemantics
 76        {
 077            get => _transport.DeliverySemantics;
 3978            set => _transport.DeliverySemantics = value;
 79        }
 80
 81        public KafkaMessageEncoding MessageEncoding
 82        {
 88283            get => _transport.MessageEncoding;
 284            set => _transport.MessageEncoding = value;
 85        }
 86
 87        public KafkaErrorHandlingStrategy ErrorHandlingStrategy
 88        {
 089            get => _transport.ErrorHandlingStrategy;
 290            set => _transport.ErrorHandlingStrategy = value;
 91        }
 92
 93        public string DeadLetterQueueTopic
 94        {
 095            get => _transport.DeadLetterQueueTopic;
 296            set => _transport.DeadLetterQueueTopic = value;
 97        }
 98
 99        public AutoOffsetReset? AutoOffsetReset
 100        {
 0101            get => _transport.AutoOffsetReset;
 43102            set => _transport.AutoOffsetReset = value;
 103        }
 104
 105        public IsolationLevel? IsolationLevel
 106        {
 0107            get => _transport.IsolationLevel;
 0108            set => _transport.IsolationLevel = value;
 109        }
 110
 111        public KafkaSecurity Security
 112        {
 0113            get => _security;
 8114            set => _security = value ?? throw new ArgumentNullException(nameof(value));
 115        }
 116    }
 117}