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); }
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); }
public void LazyValueTest_ErrorTrace() { var attribValues = new AttributeValueCollection(AttributeValueCollection.AllTargetModelTypes); LazyValueTest_SetAttribValues(attribValues); var wireModel = new ErrorTraceWireModel.ErrorTraceAttributesWireModel(attribValues, null); LazyValueTest_Assertions(wireModel.Intrinsics, wireModel.AgentAttributes, wireModel.UserAttributes); }
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); }
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); }
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); }