コード例 #1
0
        public void AChildSpan()
        {
            var tracer             = new MockTracer();
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, _fixture.TestMongoDb.ConnectionString);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            using (var scope = tracer.BuildSpan("parentSpan").StartActive(true))
            {
                var doughnut = new Doughnut
                {
                    Price = 3,
                    Color = "gold"
                };
                doughnutCollection.InsertOne(doughnut);
            }

            var insertSpan = tracer.FinishedSpans().FirstOrDefault(span => span.OperationName.Equals("mongodb.insert"));

            insertSpan.Should().NotBeNull();

            var parentSpan = tracer.FinishedSpans().FirstOrDefault(span => span.OperationName.Equals("parentSpan"));

            parentSpan.Should().NotBeNull();

            insertSpan.ParentId.Should().Be(parentSpan.Context.SpanId);
        }
コード例 #2
0
        public void TwoDistinctSpans()
        {
            var tracer             = new MockTracer();
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, _fixture.TestMongoDb.ConnectionString);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            var doughnutRed = new Doughnut
            {
                Price = 1,
                Color = "red"
            };

            doughnutCollection.InsertOne(doughnutRed);

            var doughnutGreen = new Doughnut
            {
                Price = 2,
                Color = "green"
            };

            doughnutCollection.InsertOne(doughnutGreen);

            var firstSpan = tracer.FinishedSpans().Last();
            var lastSpan  = tracer.FinishedSpans().First();

            firstSpan.Should().NotBeNull();
            lastSpan.Should().NotBeNull();

            firstSpan.ParentId.Should().BeNullOrEmpty();
            lastSpan.ParentId.Should().BeNullOrEmpty();
        }
コード例 #3
0
        public void ASpanWithDefaultFields()
        {
            var tracer             = new MockTracer();
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, _fixture.TestMongoDb.ConnectionString);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            var doughnut = new Doughnut
            {
                Price = 12,
                Color = "red"
            };

            doughnutCollection.InsertOne(doughnut);

            var insertSpan = tracer.FinishedSpans().FirstOrDefault(sp => sp.OperationName.StartsWith("mongodb."));

            insertSpan.Should().NotBeNull();
            insertSpan.OperationName.Should().StartWith("mongodb.");
            insertSpan.Tags.Count.Should().Be(7);
            insertSpan.Tags.Should().ContainKey(Tags.SpanKind.Key);
            insertSpan.Tags.Should().ContainKey(Tags.Component.Key);
            insertSpan.Tags.Should().ContainKey(Tags.DbStatement.Key);
            insertSpan.Tags.Should().ContainKey(Tags.DbInstance.Key);
            insertSpan.Tags.Should().ContainKey(Tags.DbType.Key);
            insertSpan.Tags.Should().ContainKey("mongodb.reply");
            insertSpan.Tags.Should().ContainKey("db.host");
        }
コード例 #4
0
        public void ASpanAndCallOtherRegisteredEventHandlers()
        {
            var tracer         = new MockTracer();
            var clientSettings = MongoClientSettings.FromConnectionString(_fixture.TestMongoDb.ConnectionString);
            var testHandler    = new EventListenerTestDouble();

            clientSettings.ClusterConfigurator = builder =>
            {
                builder
                .Subscribe <CommandStartedEvent>(@event =>
                {
                    testHandler.StartEventHandler();
                });
            };
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, clientSettings);
            var doughnutCollection = mongoClient.GetDatabase(_fixture.DATABASE_NAME).GetCollection <Doughnut>(_fixture.COLLECTION_NAME);

            doughnutCollection.InsertOne(new Doughnut
            {
                Price = 1,
                Color = "red"
            });

            var finishedSpan = tracer.FinishedSpans().FirstOrDefault(span => span.OperationName.Equals("mongodb.insert"));

            finishedSpan.Should().NotBeNull();
            testHandler.Counter.Should().BeGreaterOrEqualTo(1);
        }
コード例 #5
0
        public void DefaultConstructorAndTracerInstance()
        {
            var tracer             = new MockTracer();
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            doughnutCollection.InsertOne(new Doughnut
            {
                Price = 1,
                Color = "red"
            });

            tracer
            .FinishedSpans()
            .FirstOrDefault(span => span.OperationName.Equals("mongodb.insert"))
            .Should().NotBeNull();
        }
コード例 #6
0
        public void MongoSettingsAndTracerInstance()
        {
            var tracer             = new MockTracer();
            var clientSettings     = MongoClientSettings.FromConnectionString(_fixture.TestMongoDb.ConnectionString);
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, clientSettings);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            doughnutCollection.InsertOne(new Doughnut
            {
                Price = 1,
                Color = "red"
            });

            tracer
            .FinishedSpans()
            .FirstOrDefault(span => span.OperationName.Equals("mongodb.insert"))
            .Should().NotBeNull();
        }
コード例 #7
0
        public void ASpanForDefaultMongoEvent()
        {
            var tracer             = new MockTracer();
            var mongoClient        = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, _fixture.TestMongoDb.ConnectionString);
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            var doughnut = new Doughnut
            {
                Price = 12,
                Color = "red"
            };

            doughnutCollection.InsertOne(doughnut);

            var insertSpan = tracer.FinishedSpans().FirstOrDefault(sp => sp.OperationName == "mongodb.insert");

            insertSpan.Should().NotBeNull();
            insertSpan.OperationName.Should().Be("mongodb.insert");
        }
コード例 #8
0
        public void ASpanWhenMongoEventIsNotWhitelisted()
        {
            var tracer      = new MockTracer();
            var mongoClient = new OpenTracing.Contrib.Mongo.TracingMongoClient(tracer, _fixture.TestMongoDb.ConnectionString, options =>
            {
                options.WhitelistedEvents = new[] { "update", "delete" };
            });
            var doughnutCollection = _fixture.GetDoughnutCollection(mongoClient);

            var doughnut = new Doughnut
            {
                Price = 12,
                Color = "red"
            };

            doughnutCollection.InsertOne(doughnut);

            tracer.FinishedSpans().Should().BeEmpty();
        }