Beispiel #1
0
        public async void SubmitsOutOfOrderSpans()
        {
            using (var agent = new MockZipkinCollector(collectorPort))
            {
                var scope1 = _tracer.StartActive("op1");
                var scope2 = _tracer.StartActive("op2");
                scope1.Close();
                scope2.Close();

                await _httpRecorder.WaitForCompletion(1);

                Assert.Single(_httpRecorder.Requests);
                Assert.Single(_httpRecorder.Responses);
                Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

                var trace = _httpRecorder.ZipkinTraces;
                ZipkinHelpers.AssertSpanEqual(scope1.Span, trace[0][0]);
                ZipkinHelpers.AssertSpanEqual(scope2.Span, trace[0][1]);

                // Check root span for mandatory tags.
                Assert.Contains(scope1.Span.Tags, kvp => kvp.Key == Tags.Language && kvp.Value == TracerConstants.Language);
                Assert.Contains(scope1.Span.Tags, kvp => kvp.Key == Tags.Version && kvp.Value == TracerConstants.AssemblyVersion);

                // Child spans should not have root spans tags.
                Assert.Null(scope2.Span.Tags);
            }
        }
Beispiel #2
0
        public async void MinimalSpan()
        {
            using (var agent = new MockZipkinCollector(collectorPort))
            {
                var scope = _tracer.StartActive("Operation");
                scope.Span.SetTag(Tags.SpanKind, SpanKinds.Client);
                scope.Dispose();

                await _httpRecorder.WaitForCompletion(1);

                Assert.Single(_httpRecorder.Requests);
                Assert.Single(_httpRecorder.Responses);
                Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

                var trace = _httpRecorder.ZipkinTraces.Single();
                ZipkinHelpers.AssertSpanEqual(scope.Span, trace);
            }
        }
Beispiel #3
0
        public async void MinimalSpan()
        {
            using var mockZipkinCollector = new MockZipkinCollector();

            var span = (OpenTracingSpan)_tracer.BuildSpan("Operation")
                       .Start();

            span.Finish();

            // Check that the HTTP calls went as expected
            await _httpRecorder.WaitForCompletion(1);

            Assert.Single(_httpRecorder.Requests);
            Assert.Single(_httpRecorder.Responses);
            Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

            var trace = _httpRecorder.ZipkinTraces.Single();

            ZipkinHelpers.AssertSpanEqual(span.Span, trace.Single());
        }
Beispiel #4
0
        public async void Utf8Everywhere()
        {
            using (var agent = new MockZipkinCollector(collectorPort))
            {
                var scope = _tracer.StartActive("Aᛗᚪᚾᚾᚪ", serviceName: "На берегу пустынных волн");
                scope.Span.ResourceName = "η γλώσσα μου έδωσαν ελληνική";
                scope.Span.SetTag("யாமறிந்த", "ნუთუ კვლა");
                scope.Span.Log("யாமறிந்த", "ნუთუ კვლა");
                scope.Span.Log("யாமறிந்த", "ნუთუ კვლა");
                scope.Dispose();

                await _httpRecorder.WaitForCompletion(1);

                Assert.Single(_httpRecorder.Requests);
                Assert.Single(_httpRecorder.Responses);
                Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

                var trace = _httpRecorder.ZipkinTraces.Single();
                ZipkinHelpers.AssertSpanEqual(scope.Span, trace);
            }
        }
Beispiel #5
0
        public async void Utf8Everywhere()
        {
            using var mockZipkinCollector = new MockZipkinCollector();

            var span = (OpenTracingSpan)_tracer.BuildSpan("Aᛗᚪᚾᚾᚪ")
                       .WithTag(Tags.ResourceName, "η γλώσσα μου έδωσαν ελληνική")
                       .WithTag(CustomTags.ServiceName, "На берегу пустынных волн")
                       .WithTag("யாமறிந்த", "ნუთუ კვლა")
                       .Start();

            span.Finish();

            // Check that the HTTP calls went as expected
            await _httpRecorder.WaitForCompletion(1);

            Assert.Single(_httpRecorder.Requests);
            Assert.Single(_httpRecorder.Responses);
            Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

            var trace = _httpRecorder.ZipkinTraces.Single();

            ZipkinHelpers.AssertSpanEqual(span.Span, trace.Single());
        }
        public async void CustomServiceName(bool serviceNamePerSpanEnabled)
        {
            var savedServiceNamePerSpanSetting = _tracer.Settings.ServiceNamePerSpanEnabled;

            try
            {
                _tracer.Settings.ServiceNamePerSpanEnabled = serviceNamePerSpanEnabled;

                using (var agent = new MockZipkinCollector(collectorPort))
                {
                    const string serviceName = "MyService";

                    var scope = _tracer.StartActive("Operation-From-SendTracesToZipkinCollector", serviceName: serviceName);
                    scope.Span.ResourceName = "This is a resource";
                    scope.Dispose();

                    agent.WaitForSpans(1);
                    await _httpRecorder.WaitForCompletion(1);

                    Assert.Single(_httpRecorder.Requests);
                    Assert.Single(_httpRecorder.Responses);
                    Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

                    var trace = _httpRecorder.ZipkinTraces.Single();

                    var expectedServiceName = serviceNamePerSpanEnabled
                                                  ? serviceName
                                                  : _tracer.DefaultServiceName;

                    ZipkinHelpers.AssertSpanEqual(scope.Span, trace, expectedServiceName);
                }
            }
            finally
            {
                _tracer.Settings.ServiceNamePerSpanEnabled = savedServiceNamePerSpanSetting;
            }
        }
Beispiel #7
0
        public async void CustomServiceName()
        {
            using var mockZipkinCollector = new MockZipkinCollector();

            const string ServiceName = "MyService";

            var span = (OpenTracingSpan)_tracer.BuildSpan("Operation-From-OpenTracingSendTracesToAgent")
                       .WithTag(Tags.ResourceName, "This is a resource")
                       .WithTag(CustomTags.ServiceName, ServiceName)
                       .Start();

            span.Finish();

            // Check that the HTTP calls went as expected
            await _httpRecorder.WaitForCompletion(1);

            Assert.Single(_httpRecorder.Requests);
            Assert.Single(_httpRecorder.Responses);
            Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode));

            var trace = _httpRecorder.ZipkinTraces.Single();

            ZipkinHelpers.AssertSpanEqual(span.Span, trace.Single());
        }