public async Task ExecuteAsync_should_create_trace() { var requestContext = Substitute.For <IRequestContext>(); var request = new Request("GET", new Uri("vostok/process?p1=p", UriKind.Relative)); requestContext.Request.Returns(request); requestContext.Strategy.Returns(new ParallelRequestStrategy(2)); var response = new Response(ResponseCode.Conflict); var clusterResult = new ClusterResult(ClusterResultStatus.Success, new List <ReplicaResult>(), response, request); var expectedAnnotations = new Dictionary <string, string> { [TracingAnnotationNames.Kind] = "cluster-client", [TracingAnnotationNames.Component] = "cluster-client", [TracingAnnotationNames.ClusterStrategy] = "Parallel-2", [TracingAnnotationNames.ClusterStatus] = "Success", [TracingAnnotationNames.HttpUrl] = "vostok/process", [TracingAnnotationNames.HttpMethod] = "GET", [TracingAnnotationNames.HttpRequestContentLength] = "0", [TracingAnnotationNames.HttpResponseContentLength] = "0", [TracingAnnotationNames.HttpCode] = "409", [TracingAnnotationNames.Service] = "serviceName" }; traceReporter.SendSpan(Arg.Do <Span>(span => { span.Annotations.ShouldBeEquivalentTo(expectedAnnotations); })); await tracingModule.ExecuteAsync(requestContext, x => Task.FromResult(clusterResult)).ConfigureAwait(false); traceReporter.Received().SendSpan(Arg.Any <Span>()); }
private ClusterResult Run() => module .ExecuteAsync( context, _ => Task.FromResult( new ClusterResult( ClusterResultStatus.Success, new List <ReplicaResult> { new ReplicaResult(new Uri("http://google.com"), response, ResponseVerdict.Accept, 1.Seconds()) }, response, request))) .GetAwaiter() .GetResult();