public void Dispatch_SpanContextSampledNull()
        {
            var spanContext = _fixture.Create <SpanContext>();

            spanContext.Sampled = null;
            var span = new Span(spanContext);

            SetupMockReporters(span);

            var dispatcher = new AsyncActionBlockDispatcher(
                new[] { _mockReporter1.Object, _mockReporter2.Object });

            Assert.Throws <Exception>(() => dispatcher.Dispatch(span));
        }
        public void Dispatch_SpanContextSampledFalse()
        {
            var span  = _fixture.Create <Span>();
            var trace = _fixture.Create <SpanContext>();

            trace.Sampled = false;

            SetupMockReporters(span);

            var dispatcher = new AsyncActionBlockDispatcher(
                new[] { _mockReporter1.Object, _mockReporter2.Object });

            dispatcher.Dispatch(span);

            // Wait for processing of spans to complete
            while (!dispatcher.IsCompleted())
            {
                Thread.Sleep(50);
            }

            _mockReporter1.Verify(r => r.ReportAsync(It.IsAny <Span>()), Times.Never);
            _mockReporter2.Verify(r => r.ReportAsync(It.IsAny <Span>()), Times.Never);
        }
        public void Dispatch_Success()
        {
            var spanContext = _fixture.Create <SpanContext>();

            spanContext.Sampled = true;
            var span = new Span(spanContext);

            SetupMockReporters(span);

            var dispatcher = new AsyncActionBlockDispatcher(
                new [] { _mockReporter1.Object, _mockReporter2.Object });

            dispatcher.Dispatch(span);

            // Wait for processing of spans to complete
            while (!dispatcher.IsCompleted())
            {
                Thread.Sleep(50);
            }

            _mockReporter1.VerifyAll();
            _mockReporter2.VerifyAll();
        }