예제 #1
0
        public void Create()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                const string method = "PUT";
                Uri uri             = new Uri("http://127.0.0.1/api/events");

                // act
                using (ServerRequestActivity.Create(method, uri, null))
                {
                    // do nothing here
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(method, e.Payload[2]);
                    Assert.Equal(uri.ToString(), e.Payload[3]);
                },
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(0, e.Payload[3]);
                    Assert.Equal("UNKNOWN", e.Payload[4]);
                });
            });
        }
예제 #2
0
        public void Create_OuterActivity()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                const string method = "GET";
                Uri uri             = new Uri("http://127.0.0.1/api/events");

                // act
                using (Activity.Create("Outer activity"))
                {
                    using (ServerRequestActivity.Create(method, uri, null))
                    {
                        // do nothing here
                    }
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e => Assert.Equal("Outer activities are not allowed when creating a server-side message activity.", e.Message),
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(method, e.Payload[2]);
                    Assert.Equal(uri.ToString(), e.Payload[3]);
                },
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(0, e.Payload[3]);
                    Assert.Equal("UNKNOWN", e.Payload[4]);
                });
            });
        }
예제 #3
0
        public void SetResponse()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                const string method  = "GET";
                Uri uri              = new Uri("http://127.0.0.1/api/events");
                const int statusCode = 200;
                Guid userId          = Guid.NewGuid();

                // act
                using (ServerRequestActivity activity = ServerRequestActivity.Create(method, uri, null))
                {
                    activity.SetResponse(statusCode, userId);
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(method, e.Payload[2]);
                    Assert.Equal(uri.ToString(), e.Payload[3]);
                },
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(userId, e.Payload[2]);
                    Assert.Equal(statusCode, e.Payload[3]);
                    Assert.Equal("OK", e.Payload[4]);
                });
            });
        }
예제 #4
0
        public void Create_HttpRequest()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                HttpRequest request = new HttpRequest
                {
                    Method = "PUT",
                    Uri    = "http://127.0.0.1/api/events"
                };

                // act
                using (ServerRequestActivity.Create(request, null))
                {
                    // do nothing here
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(request.Method, e.Payload[2]);
                    Assert.Equal(request.Uri, e.Payload[3]);
                },
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(0, e.Payload[3]);
                    Assert.Equal("UNKNOWN", e.Payload[4]);
                });
            });
        }
예제 #5
0
        public void HandleException()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                const string method = "PUT";
                Uri uri             = new Uri("http://127.0.0.1/api/events");
                Exception exception = new Exception();

                // act
                using (ServerRequestActivity activity = ServerRequestActivity.Create(method, uri, null))
                {
                    activity.HandleException(exception);
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(method, e.Payload[2]);
                    Assert.Equal(uri.ToString(), e.Payload[3]);
                },
                                  e => Assert.Equal("Internal server error occurred.", e.Message),
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(0, e.Payload[3]);
                    Assert.Equal("UNKNOWN", e.Payload[4]);
                });
            });
        }
예제 #6
0
        public void OnHttpRequestInStart(HttpContext httpContext)
        {
            Uri requestUri = new Uri(httpContext.Request.GetDisplayUrl());
            ServerRequestActivity activity = ServerRequestActivity.Create(httpContext.Request.Method,
                                                                          requestUri, httpContext.Request.GetActivityId());

            httpContext.Features.Set(activity);
        }
예제 #7
0
        public void OnHttpRequestInStop(HttpContext httpContext)
        {
            ServerRequestActivity activity = httpContext.Features.Get <ServerRequestActivity>();

            if (activity != null)
            {
                activity.SetResponse(httpContext.Response.StatusCode, httpContext.User.GetId());
                activity.Dispose();
            }
        }
예제 #8
0
        public void Create_HttpRequest_RequestNull()
        {
            // arrange
            HttpRequest request = null;

            // act
            Action verify = () => ServerRequestActivity.Create(request, null);

            // assert
            Assert.Throws <ArgumentNullException>("request", verify);
        }
예제 #9
0
        public void Create_UriNull()
        {
            // arrange
            const string method = "GET";
            Uri          uri    = null;

            // act
            Action verify = () => ServerRequestActivity.Create(method, uri, null);

            // assert
            Assert.Throws <ArgumentNullException>("uri", verify);
        }
예제 #10
0
        public void Create_MethodNull()
        {
            // arrange
            const string method = null;
            Uri          uri    = new Uri("http://127.0.0.1/api/events");

            // act
            Action verify = () => ServerRequestActivity.Create(method, uri, null);

            // assert
            Assert.Throws <ArgumentNullException>("method", verify);
        }
예제 #11
0
        public void SetResponse_HttpResponse_ResponseNull()
        {
            // arrange
            const string          method   = "POST";
            Uri                   uri      = new Uri("http://127.0.0.1/api/events");
            HttpResponse          response = null;
            ServerRequestActivity activity = ServerRequestActivity.Create(method, uri, null);

            // act
            Action verify = () => activity.SetResponse(response);

            // assert
            Assert.Throws <ArgumentNullException>("response", verify);
        }
예제 #12
0
        public void HandleException_ExceptionNull()
        {
            // arrange
            const string          method    = "GET";
            Uri                   uri       = new Uri("http://127.0.0.1/api/events");
            Exception             exception = null;
            ServerRequestActivity activity  = ServerRequestActivity.Create(method, uri, null);

            // act
            Action verify = () => activity.HandleException(exception);

            // assert
            Assert.Throws <ArgumentNullException>("exception", verify);
        }
예제 #13
0
        public void Create_HttpRequest_ParentActivity()
        {
            RequestActivityEventSource.Log.Listen(listener =>
            {
                // arrange
                HttpRequest request = new HttpRequest
                {
                    Method = "GET",
                    Uri    = "http://127.0.0.1/api/events"
                };
                Guid parentId = Guid.NewGuid();

                // act
                using (ServerRequestActivity.Create(request, parentId))
                {
                    // do nothing here
                }

                // assert
                Assert.Collection(listener.OrderedEvents,
                                  e => Assert.Equal("Begin activity transfer", e.Message),
                                  e =>
                {
                    Assert.Equal("Request {2} {3}", e.Message);
                    Assert.Equal(request.Method, e.Payload[2]);
                    Assert.Equal(request.Uri, e.Payload[3]);
                },
                                  e => Assert.Equal("End activity transfer", e.Message),
                                  e =>
                {
                    Assert.Equal("Response {3} {4}", e.Message);
                    Assert.Equal(0, e.Payload[3]);
                    Assert.Equal("UNKNOWN", e.Payload[4]);
                });
            });
        }