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); } }