示例#1
0
        public void TestAddException()
        {
            var segment = new Segment("test", TraceId);

            var e = new EntityNotAvailableException("Test someting wrong happens");

            segment.AddException(e);

            Assert.IsTrue(segment.HasFault);
            Assert.IsFalse(segment.HasError);
            Assert.IsNotNull(segment.Cause);
            var descriptor = segment.Cause.ExceptionDescriptors[0];

            Assert.AreEqual("Test someting wrong happens", descriptor.Message);
            Assert.AreEqual("EntityNotAvailableException", descriptor.Type);
            Assert.ReferenceEquals(e, descriptor.Exception);
        }
        public void TestMultipleInnerException()
        {
            using (var recorder = AWSXRayRecorder.Instance)
            {
                recorder.BeginSegment("parent", TraceId);
                var segment = TraceContext.GetEntity();

                var innerException = new ArgumentNullException("value");
                var exception      = new EntityNotAvailableException("text", innerException);

                recorder.BeginSubsegment("child");
                recorder.AddException(exception);
                recorder.EndSubsegment();

                recorder.EndSegment();

                Assert.IsNull(segment.Cause);
                Assert.AreEqual(2, segment.Subsegments[0].Cause.ExceptionDescriptors.Count);
                Assert.AreEqual(segment.Subsegments[0].Cause.ExceptionDescriptors[0].Cause, segment.Subsegments[0].Cause.ExceptionDescriptors[1].Id);
                Assert.AreEqual("EntityNotAvailableException", segment.Subsegments[0].Cause.ExceptionDescriptors[0].Type);
                Assert.AreEqual("ArgumentNullException", segment.Subsegments[0].Cause.ExceptionDescriptors[1].Type);
            }
        }