/// <summary> /// Associates telemetry item to a SQL command object to to avoid duplicate tracking. /// When there is an existing telemetry item in the corresponding to the given SQL REQUEST, we return the existing telemetry and associate the same with the SQL REQUEST. /// </summary> /// <param name="telemetry">Telemetry object that needs to be associated with the web request.</param> /// <param name="sqlRequest">SQL request object which is used as a key to store in the tables.</param> /// <returns>Dependency telemetry item with an associated dependency telemetry item.</returns> public static DependencyTelemetry AssociateTelemetryWithSqlRequest(this DependencyTelemetry telemetry, SqlCommand sqlRequest) { if (sqlRequest == null) { DependencyCollectorEventSource.Log.WebRequestIsNullWarning(); return(null); } if (telemetry == null) { DependencyCollectorEventSource.Log.TelemetryToTrackIsNullWarning(); return(null); } var telemetryTuple = ClientServerDependencyTracker.GetTupleForSqlDependencies(sqlRequest); if (telemetryTuple != null) { return(telemetryTuple.Item1 as DependencyTelemetry); } else { ClientServerDependencyTracker.AddTupleForSqlDependencies(sqlRequest, telemetry, true); } return(telemetry); }
public void AddTupleForSqlDependenciesThrowsExceptionIfExists() { var telemetry = new DependencyTelemetry(); var falseTelemetry = new DependencyTelemetry(); ClientServerDependencyTracker.AddTupleForSqlDependencies(this.sqlRequest, falseTelemetry, false); ClientServerDependencyTracker.AddTupleForSqlDependencies(this.sqlRequest, telemetry, false); }
public void AddTupleForSqlDependenciesAddsTelemetryTupleToTheTable() { var telemetry = new DependencyTelemetry(); ClientServerDependencyTracker.AddTupleForSqlDependencies(this.sqlRequest, telemetry, false); var tuple = ClientServerDependencyTracker.GetTupleForSqlDependencies(this.sqlRequest); Assert.IsNotNull(tuple); Assert.IsNotNull(tuple.Item1); Assert.AreEqual(telemetry, tuple.Item1); }
public void AddTupleForSqlDependenciesThrowsArgumentNullExceptionForNullTelemetry() { ClientServerDependencyTracker.AddTupleForSqlDependencies(new SqlCommand("select * from table;"), null, false); }
public void AddTupleForSqlDependenciesThrowsArgumentNullExceptionForNullSqlRequest() { ClientServerDependencyTracker.AddTupleForSqlDependencies(null, new DependencyTelemetry(), false); }