示例#1
0
        /// <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);
 }