示例#1
0
            public void when_default_fixture_values_are_used_then_serializes_correctly()
            {
                var attribValues = new AttributeValueCollection(AttributeDestinations.ErrorTrace);

                var attributes     = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, _stackTrace);
                var errorTraceData = new ErrorTraceWireModel(_timestamp, _path, _message, _exceptionClassName, attributes, _guid);

                var expectedResult =
                    "["
                    + _timestamp.ToUnixTimeMilliseconds()
                    + ",\"" + _path + "\",\""
                    + _message + "\",\""
                    + _exceptionClassName + "\",{"
                    + "\"stack_trace\":"
                    +
                    "[\"System.Exception: Inner Exception\",\"at WebApplication.Contact.Baz() in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 50\",\"at WebApplication.Contact.Foo() in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 40\",\"--- End of inner exception stack trace ---\",\"at WebApplication.Contact.Foo() in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 46\",\"at WebApplication.Contact.Bar() in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 28\",\"--- End of inner exception stack trace ---\",\"at WebApplication.Contact.Bar() in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 34\",\"at WebApplication.Contact.Page_Load(Object sender, EventArgs e) in c:\\\\code\\\\dotnet_agent\\\\Agent\\\\NewRelic\\\\Profiler\\\\WebApplication1\\\\Contact.aspx.cs:line 22\",\"at System.Web.UI.Control.LoadRecursive()\",\"at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)\",\"at System.Web.UI.Page.HandleError(Exception e)\",\"at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)\",\"at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)\",\"at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)\",\"at System.Web.UI.Page.ProcessRequest()\",\"at System.Web.UI.Page.ProcessRequest(HttpContext context)\",\"at ASP.contact_aspx.ProcessRequest(HttpContext context) in c:\\\\Windows\\\\Microsoft.NET\\\\Framework64\\\\v4.0.30319\\\\Temporary ASP.NET Files\\\\webapplication1\\\\734e4ee5\\\\213b041b\\\\App_Web_lag4whrl.2.cs:line 0\",\"at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\",\"at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\",\"at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)}\"],"
                    + "\"" + AgentAttributesKey + "\":{},"
                    + "\"" + UserAttributesKey + "\":{},"
                    + "\"" + IntrinsicsKey + "\":{}},"
                    + "\"123\"]";

                var actualResult = JsonConvert.SerializeObject(errorTraceData);

                Assert.AreEqual(expectedResult, actualResult);
            }
示例#2
0
            public void when_construtor_used_guid_property_is_set()
            {
                var attribValues = new AttributeValueCollection(AttributeDestinations.ErrorTrace);

                var attributes     = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, _stackTrace);
                var errorTraceData = new ErrorTraceWireModel(_timestamp, _path, _message, _exceptionClassName, attributes, _guid);

                Assert.AreEqual(_guid, errorTraceData.Guid);
            }
示例#3
0
            public void when_attributes_are_empty_then_it_does_not_show_up()
            {
                var attribValues = new AttributeValueCollection(AttributeDestinations.ErrorTrace);

                // ACT
                var attributes         = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, _stackTrace);
                var errorTraceData     = new ErrorTraceWireModel(_timestamp, _path, _message, _exceptionClassName, attributes, _guid);
                var errorTraceDataJson = JsonConvert.SerializeObject(errorTraceData);

                // ASSERT
                StringAssert.Contains(@"""agentAttributes"":{}", errorTraceDataJson);
                StringAssert.Contains(@"""intrinsics"":{}", errorTraceDataJson);
                StringAssert.Contains(@"""userAttributes"":{}", errorTraceDataJson);
            }
示例#4
0
            public void when_userAttributes_are_supplied_then_they_show_up_in_json()
            {
                // ARRANGE
                var attribValues = new AttributeValueCollection(AttributeDestinations.ErrorTrace);

                _attribDefs.GetCustomAttributeForError("Foo").TrySetValue(attribValues, "Bar");

                // ACT
                var attributes         = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, _stackTrace);
                var errorTraceData     = new ErrorTraceWireModel(_timestamp, _path, _message, _exceptionClassName, attributes, _guid);
                var errorTraceDataJson = JsonConvert.SerializeObject(errorTraceData);

                // ASSERT
                StringAssert.Contains(@"""userAttributes"":{""Foo"":""Bar""}", errorTraceDataJson);
            }
示例#5
0
            public void when_agentAttributes_are_supplied_then_they_show_up_in_json()
            {
                // ARRANGE
                var attribValues = new AttributeValueCollection(AttributeDestinations.ErrorTrace);

                _attribDefs.OriginalUrl.TrySetValue(attribValues, "www.test.com");

                // ACT
                var attributes         = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, _stackTrace);
                var errorTraceData     = new ErrorTraceWireModel(_timestamp, _path, _message, _exceptionClassName, attributes, _guid);
                var errorTraceDataJson = JsonConvert.SerializeObject(errorTraceData);

                // ASSERT
                StringAssert.Contains(@"""agentAttributes"":{""original_url"":""www.test.com""}", errorTraceDataJson);
            }
示例#6
0
        public static IDictionary <string, object> GetAttributes(this ErrorTraceWireModel errorTrace, AttributeClassification attributeClassification)
        {
            switch (attributeClassification)
            {
            case AttributeClassification.Intrinsics:
                return(errorTrace.Attributes.Intrinsics.ToDictionary());

            case AttributeClassification.AgentAttributes:
                return(errorTrace.Attributes.AgentAttributes.ToDictionary());

            case AttributeClassification.UserAttributes:
                return(errorTrace.Attributes.UserAttributes.ToDictionary());

            default:
                throw new NotImplementedException();
            }
        }
示例#7
0
        public static void ErrorTraceDoesNotHaveAttributes(IEnumerable <string> unexpectedAttributes, AttributeClassification attributeClassification, ErrorTraceWireModel errorTrace)
        {
            var errorMessageBuilder   = new StringBuilder();
            var actualAttributes      = errorTrace.GetAttributes(attributeClassification);
            var allAttributesNotFound = ExpectedAttribute.CheckIfAllAttributesNotFound(actualAttributes, unexpectedAttributes, errorMessageBuilder);

            Assert.True(allAttributesNotFound, errorMessageBuilder.ToString());
        }
示例#8
0
        public static void ErrorTraceHasAttributes(IEnumerable <ExpectedAttribute> expectedAttributes, AttributeClassification attributeClassification, ErrorTraceWireModel errorTrace)
        {
            var errorMessageBuilder = new StringBuilder();
            var actualAttributes    = errorTrace.GetAttributes(attributeClassification);
            var allAttributesMatch  = ExpectedAttribute.CheckIfAllAttributesMatch(actualAttributes, expectedAttributes, errorMessageBuilder);

            Assert.True(allAttributesMatch, errorMessageBuilder.ToString());
        }