protected void CreateTopLevelExpectation(
            string url,
            string httpMethod,
            string httpStatus,
            string resourceUrl,
            string serviceVersion,
            Func <MockTracerAgent.Span, List <string> > additionalCheck = null)
        {
            var resourceName = $"{httpMethod.ToUpper()} {resourceUrl}";

            var expectation = new AspNetCoreMvcSpanExpectation(
                EnvironmentHelper.FullSampleName,
                serviceVersion,
                TopLevelOperationName,
                resourceName,
                httpStatus,
                httpMethod)
            {
                OriginalUri = url,
            };

            expectation.RegisterDelegateExpectation(additionalCheck);
            expectation.RegisterTagExpectation(HeaderTagName1, HeaderValue1);

            Expectations.Add(expectation);
        }
        protected AspNetCoreMvcSpanExpectation CreateTopLevelExpectation(
            string operationName,
            string url,
            string httpMethod,
            string httpStatus,
            string resourceUrl,
            bool addClientIpExpectation,
            Func <IMockSpan, List <string> > additionalCheck = null)
        {
            var expectation = new AspNetCoreMvcSpanExpectation(EnvironmentHelper.FullSampleName, operationName, resourceUrl, httpStatus, httpMethod, addClientIpExpectation)
            {
                OriginalUri = url,
            };

            expectation.RegisterDelegateExpectation(additionalCheck);
            return(expectation);
        }
        protected void CreateTopLevelExpectation(
            string url,
            string httpMethod,
            string httpStatus,
            string resourceUrl,
            Func <MockTracerAgent.Span, List <string> > additionalCheck = null)
        {
            var expectation = new AspNetCoreMvcSpanExpectation(EnvironmentHelper.FullSampleName, TopLevelOperationName)
            {
                OriginalUri  = url,
                HttpMethod   = httpMethod,
                ResourceName = $"{httpMethod.ToUpper()} {resourceUrl}",
                StatusCode   = httpStatus,
            };

            expectation.RegisterDelegateExpectation(additionalCheck);

            Expectations.Add(expectation);
        }
        protected void CreateTopLevelExpectation(
            string url,
            string httpMethod,
            string httpStatus,
            string resourceUrl,
            string serviceVersion,
            Func <MockTracerAgent.Span, List <string> > additionalCheck = null)
        {
            var resourceName = $"{httpMethod.ToUpper()} {resourceUrl}";

            var expectation = new AspNetCoreMvcSpanExpectation(
                EnvironmentHelper.FullSampleName,
                serviceVersion,
                TopLevelOperationName,
                resourceName,
                httpStatus,
                httpMethod)
            {
                OriginalUri = url,
            };

            expectation.RegisterDelegateExpectation(additionalCheck);

            _ = HeaderTagName1WithMapping.TryConvertToNormalizedHeaderTagName(out string normalizedHeaderTagName1WithMapping);
            expectation.RegisterTagExpectation(normalizedHeaderTagName1WithMapping, HeaderValue1);

            // For successful requests, assert that a header tag is present in both the request and response, with the prefixes "http.request.headers" and "http.response.headers", respectively
            _ = HeaderName2.TryConvertToNormalizedHeaderTagName(out string normalizedHeaderTagName2);
            expectation.RegisterTagExpectation($"{SpanContextPropagator.HttpRequestHeadersTagPrefix}.{normalizedHeaderTagName2}", HeaderValue2);
            expectation.RegisterTagExpectation($"{SpanContextPropagator.HttpResponseHeadersTagPrefix}.{normalizedHeaderTagName2}", HeaderValue2, when: (span) => span.Resource != "GET /not-found" && span.Resource != "GET bad-request");

            // Assert that a response header tag is set on successful requests and failing requests
            _ = HeaderName3.TryConvertToNormalizedHeaderTagName(out string normalizedHeaderTagName3);
            expectation.RegisterTagExpectation($"{SpanContextPropagator.HttpResponseHeadersTagPrefix}.{normalizedHeaderTagName3}", HeaderValue3, when: (span) => span.Resource != "GET bad-request");

            Expectations.Add(expectation);
        }