internal override IDisposable CreateRequestHandlerScopeScope(RequestHandler requestHandler)
        {
            RequestHandlerScope requestHandlerScope = new RequestHandlerScope(requestHandler);

            this.ContextList.Add(requestHandlerScope);
            return(requestHandlerScope);
        }
        private static void ValidateRequestHandlerScope(RequestHandlerScope scope, TimeSpan?totalElapsedTime)
        {
            Assert.IsFalse(string.IsNullOrWhiteSpace(scope.Id));
            Assert.IsTrue(scope.TryGetTotalElapsedTime(out TimeSpan scopeTotalElapsedTime));
            Assert.IsTrue(scopeTotalElapsedTime > TimeSpan.Zero);

            if (totalElapsedTime.HasValue)
            {
                Assert.IsTrue(
                    scopeTotalElapsedTime <= totalElapsedTime,
                    $"RequestHandlerScope should not have larger time than the entire context. Scope: {scopeTotalElapsedTime} Total: {totalElapsedTime.Value}");
            }

            string info = scope.ToString();

            Assert.IsNotNull(info);
            JObject jObject = JObject.Parse(info.ToString());

            Assert.IsNotNull(jObject["Id"].ToString());
            string elapsedTimeFromJson = jObject["HandlerElapsedTimeInMs"].ToString();

            Assert.IsNotNull(elapsedTimeFromJson);
            double elapsedInMs = double.Parse(elapsedTimeFromJson);

            Assert.IsTrue(elapsedInMs > 0);
        }
 public abstract TResult Visit(RequestHandlerScope requestHandlerScope);
 public override void Visit(RequestHandlerScope requestHandlerScope)
 {
     Assert.IsTrue(this.isContextVisited);
     this.isRequestHandlerVisited = true;
     DiagnosticValidator.ValidateRequestHandlerScope(requestHandlerScope, this.TotalElapsedTime);
 }
 public override void Visit(RequestHandlerScope requestHandlerScope)
 {
     // This will be visited if it is gateway query plan
 }
 public abstract void Visit(RequestHandlerScope requestHandlerScope);