public void ShouldDisableCacheIfTooManyConnectionStrings() { const string connectionStringTemplate = "Server=myServerName{0};Database=myDataBase;User Id=myUsername;Password=myPassword;"; var spanContext = new SpanContext(Mock.Of <ISpanContext>(), Mock.Of <ITraceContext>(), "test"); var span = new Span(spanContext, null); // Fill-up the cache and test the logic with cache enabled for (int i = 0; i <= DbCommandCache.MaxConnectionStrings; i++) { var connectionString = string.Format(connectionStringTemplate, i); span.AddTagsFromDbCommand(CreateDbCommand(connectionString)); Assert.NotNull(DbCommandCache.Cache); Assert.Equal("myServerName" + i, span.GetTag(Tags.OutHost)); } // Test the logic with cache disabled for (int i = 0; i <= 10; i++) { var connectionString = string.Format(connectionStringTemplate, "NoCache" + i); span.AddTagsFromDbCommand(CreateDbCommand(connectionString)); Assert.Null(DbCommandCache.Cache); Assert.Equal("myServerName" + "NoCache" + i, span.GetTag(Tags.OutHost)); } }
public void SetSpanTypeToSql() { const string connectionString = "Server=myServerName;Database=myDataBase;User Id=myUsername;Password=myPassword;"; const string commandText = "SELECT * FROM Table ORDER BY id"; var spanContext = new SpanContext(Mock.Of <ISpanContext>(), Mock.Of <ITraceContext>(), "test"); var span = new Span(spanContext, null); span.AddTagsFromDbCommand(CreateDbCommand(connectionString, commandText)); Assert.Equal(SpanTypes.Sql, span.Type); Assert.Equal(commandText, span.ResourceName); }
public void AddTagsFromDbCommandWithoutStatement() { var traceContext = new TraceContext(Tracer.Instance); var spanContext = new SpanContext(null, traceContext, "UsesCommandText"); var span = new Span(spanContext, null); var command = new Mock <IDbCommand>(); command.Setup(cmd => cmd.Connection.ConnectionString).Returns("Provider=Some.Provider.1.0;Data Source=Source.mdb"); command.Setup(cmd => cmd.CommandText).Returns(statement); span.AddTagsFromDbCommand(command.Object); Assert.Same(statement, span.Tags["db.statement"]); Assert.Contains("Field='123'", span.Tags["db.statement"]); }
public void ExtractProperTagsFromConnectionString( string connectionString, string expectedDbName, string expectedUserId, string expectedHost) { var spanContext = new SpanContext(Mock.Of <ISpanContext>(), Mock.Of <ITraceContext>(), "test"); var span = new Span(spanContext, null); span.AddTagsFromDbCommand(CreateDbCommand(connectionString)); Assert.Equal(expectedDbName, span.GetTag(Tags.DbName)); Assert.Equal(expectedUserId, span.GetTag(Tags.DbUser)); Assert.Equal(expectedHost, span.GetTag(Tags.OutHost)); }