Esempio n. 1
0
        // private methods
        private void ThreadStart()
        {
            _state = DnsMonitorState.Running;

            try
            {
                Monitor();
            }
            catch (OperationCanceledException)
            {
                // ignore OperationCanceledException
            }
            catch (Exception exception)
            {
                _unhandledException = exception;

                if (_sdamInformationEventHandler != null)
                {
                    var message = $"Unhandled exception in DnsMonitor: {exception}.";
                    var sdamInformationEvent = new SdamInformationEvent(() => message);
                    _sdamInformationEventHandler(sdamInformationEvent);
                }

                _state = DnsMonitorState.Failed;
                return;
            }

            _state = DnsMonitorState.Stopped;
        }
Esempio n. 2
0
        // constructors
        public DnsMonitor(IDnsMonitoringCluster cluster, IDnsResolver dnsResolver, string lookupDomainName, IEventSubscriber eventSubscriber, CancellationToken cancellationToken)
        {
            _cluster           = Ensure.IsNotNull(cluster, nameof(cluster));
            _dnsResolver       = Ensure.IsNotNull(dnsResolver, nameof(dnsResolver));
            _lookupDomainName  = EnsureLookupDomainNameIsValid(lookupDomainName);
            _cancellationToken = cancellationToken;
            _service           = "_mongodb._tcp." + _lookupDomainName;
            _state             = DnsMonitorState.Created;

            eventSubscriber?.TryGetEventHandler(out _sdamInformationEventHandler);
        }
Esempio n. 3
0
        public void Start_should_set_state_to_Running_when_starting()
        {
            var             mockCluster = new Mock <IDnsMonitoringCluster>();
            var             subject     = CreateSubject(cluster: mockCluster.Object);
            DnsMonitorState actualState = (DnsMonitorState)(-1);

            mockCluster
            .Setup(m => m.ShouldDnsMonitorStop())
            .Returns(() => { actualState = subject.State; return(true); });

            var thread = subject.Start();

            thread.Join();

            actualState.Should().Be(DnsMonitorState.Running);
        }