Skip to content

Commit 942c050

Browse files
author
Jamie Rushton
committed
Reduced data exclusion noise by introducing smaller models
1 parent 8abeb2c commit 942c050

File tree

2 files changed

+48
-43
lines changed

2 files changed

+48
-43
lines changed

test/Exceptionless.Tests/Exceptionless.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,8 @@
4141
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4242
</Content>
4343
</ItemGroup>
44+
45+
<ItemGroup>
46+
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
47+
</ItemGroup>
4448
</Project>

test/Exceptionless.Tests/Serializer/SerializerTests.cs

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,15 @@ protected virtual IJsonSerializer GetSerializer() {
1515
return new DefaultJsonSerializer();
1616
}
1717

18-
private string[] _sampleModelExcludes = { nameof(SampleModel.Collection), nameof(SampleModel.Dictionary), nameof(SampleModel.Bool), nameof(SampleModel.Number), nameof(SampleModel.Nested), "Date*" };
19-
private string[] _eventModelExcludes = { nameof(Event.Type), nameof(Event.Source), "Date", nameof(Event.Geo), nameof(Event.Count), nameof(Event.ReferenceId), nameof(Event.Tags), nameof(Event.Value) };
20-
2118
[Fact]
2219
public void CanSerialize() {
2320
var data = new SampleModel {
2421
Date = DateTime.Now,
2522
Message = "Testing"
2623
};
24+
2725
IJsonSerializer serializer = GetSerializer();
28-
string json = serializer.Serialize(data, _sampleModelExcludes);
26+
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Date) });
2927
Assert.Equal(@"{""message"":""Testing""}", json);
3028
}
3129

@@ -37,8 +35,9 @@ public void CanSerializeEvent() {
3735
};
3836
ev.Data["FirstName"] = "Blake";
3937

38+
var exclusions = new[] { nameof(Event.Type), nameof(Event.Source), "Date", nameof(Event.Geo), nameof(Event.Count), nameof(Event.ReferenceId), nameof(Event.Tags), nameof(Event.Value) };
4039
IJsonSerializer serializer = GetSerializer();
41-
string json = serializer.Serialize(ev, _eventModelExcludes);
40+
string json = serializer.Serialize(ev, exclusions);
4241
Assert.Equal(@"{""message"":""Testing"",""data"":{""FirstName"":""Blake""}}", json);
4342
}
4443

@@ -50,36 +49,32 @@ public void CanExcludeProperties() {
5049
Message = "Testing"
5150
};
5251
IJsonSerializer serializer = GetSerializer();
53-
string json = serializer.Serialize(data, _sampleModelExcludes);
52+
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Date) });
5453
Assert.Equal(@"{""message"":""Testing""}", json);
5554
}
5655

5756
[Fact]
5857
public void CanExcludeNestedProperties() {
59-
var data = new SampleModel {
60-
Date = DateTime.Now,
58+
var data = new NestedModel {
59+
Number = 1,
6160
Message = "Testing",
62-
Nested = new SampleModel {
63-
Date = DateTime.Now,
64-
Message = "Nested"
61+
Nested = new NestedModel {
62+
Message = "Nested",
63+
Number = 2
6564
}
6665
};
6766

6867
IJsonSerializer serializer = GetSerializer();
69-
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Collection), nameof(SampleModel.Dictionary), nameof(SampleModel.Bool), nameof(SampleModel.Number), "Date*" });
68+
string json = serializer.Serialize(data, new[] { nameof(NestedModel.Number) });
7069
Assert.Equal(@"{""message"":""Testing"",""nested"":{""message"":""Nested"",""nested"":null}}", json);
7170
}
7271

7372
[Fact]
7473
public void ShouldIncludeNullObjects() {
75-
var data = new SampleModel {
76-
Date = DateTime.Now,
77-
Message = "Testing",
78-
Nested = null
79-
};
74+
var data = new DefaultsModel();
8075
IJsonSerializer serializer = GetSerializer();
81-
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Collection), nameof(SampleModel.Dictionary), nameof(SampleModel.Bool), nameof(SampleModel.Number), "Date*" });
82-
Assert.Equal(@"{""message"":""Testing"",""nested"":null}", json);
76+
string json = serializer.Serialize(data);
77+
Assert.Equal(@"{""number"":0,""bool"":false,""message"":null,""collection"":null}", json);
8378
}
8479

8580
[Fact]
@@ -104,44 +99,40 @@ public void CanExcludeMultiwordProperties() {
10499

105100
[Fact]
106101
public void ShouldIncludeDefaultValues() {
107-
var data = new SampleModel {
108-
Number = 0,
109-
Bool = false
110-
};
102+
var data = new DefaultsModel();
111103
IJsonSerializer serializer = GetSerializer();
112-
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Collection), nameof(SampleModel.Dictionary), nameof(SampleModel.Nested), "Date*" });
113-
Assert.Equal(@"{""number"":0,""bool"":false,""message"":null}", json);
114-
var model = serializer.Deserialize<SampleModel>(json);
104+
string json = serializer.Serialize(data);
105+
Assert.Equal(@"{""number"":0,""bool"":false,""message"":null,""collection"":null}", json);
106+
var model = serializer.Deserialize<DefaultsModel>(json);
115107
Assert.Equal(data.Number, model.Number);
116108
Assert.Equal(data.Bool, model.Bool);
117109
}
118110

119111
[Fact]
120112
public void CanSetMaxDepth() {
121-
var data = new SampleModel {
113+
var data = new NestedModel {
122114
Message = "Level 1",
123-
Nested = new SampleModel {
115+
Nested = new NestedModel {
124116
Message = "Level 2",
125-
Nested = new SampleModel {
117+
Nested = new NestedModel {
126118
Message = "Level 3"
127119
}
128120
}
129121
};
130122
IJsonSerializer serializer = GetSerializer();
131-
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Bool), nameof(SampleModel.Number), nameof(SampleModel.Collection), nameof(SampleModel.Dictionary), "Date*" }, maxDepth: 2);
123+
string json = serializer.Serialize(data, new[] { nameof(NestedModel.Number) }, maxDepth: 2);
132124
Assert.Equal(@"{""message"":""Level 1"",""nested"":{""message"":""Level 2""}}", json);
133125
}
134126

135127
[Fact]
136128
public void WillIgnoreEmptyCollections() {
137-
var data = new SampleModel {
138-
Date = DateTime.Now,
129+
var data = new DefaultsModel {
139130
Message = "Testing",
140131
Collection = new Collection<string>()
141132
};
142133
IJsonSerializer serializer = GetSerializer();
143-
string json = serializer.Serialize(data, new[] { nameof(SampleModel.Nested), nameof(SampleModel.Bool), nameof(SampleModel.Number), "Date*" });
144-
Assert.Equal(@"{""message"":""Testing"",""dictionary"":null}", json);
134+
string json = serializer.Serialize(data, new[] { nameof(DefaultsModel.Bool), nameof(DefaultsModel.Number) });
135+
Assert.Equal(@"{""message"":""Testing""}", json);
145136
}
146137

147138
// TODO: Ability to deserialize objects without underscores
@@ -174,21 +165,24 @@ public void WillSerializeDeepExceptionWithStackInformation() {
174165
try {
175166
try {
176167
throw new ArgumentException("This is the innermost argument exception", "wrongArg");
177-
} catch (Exception e1) {
168+
}
169+
catch (Exception e1) {
178170
throw new TargetInvocationException("Target invocation exception.", e1);
179171
}
180-
} catch (Exception e2) {
172+
}
173+
catch (Exception e2) {
181174
throw new TargetInvocationException("Outer Exception. This is some text of the outer exception.", e2);
182175
}
183-
} catch (Exception ex) {
176+
}
177+
catch (Exception ex) {
184178
var client = CreateClient();
185179
var error = ex.ToErrorModel(client);
186180
var ev = new Event();
187181
ev.Data[Event.KnownDataKeys.Error] = error;
188182

189183
IJsonSerializer serializer = GetSerializer();
190184
string json = serializer.Serialize(ev);
191-
185+
192186
Assert.Contains(String.Format("\"line_number\":{0}", error.Inner.Inner.StackTrace.Single().LineNumber), json);
193187
}
194188
}
@@ -209,15 +203,22 @@ public class Blah {
209203
public string BlahId { get; set; }
210204
}
211205

206+
public class NestedModel {
207+
public int Number { get; set; }
208+
public string Message { get; set; }
209+
public NestedModel Nested { get; set; }
210+
}
211+
212212
public class SampleModel {
213+
public DateTime Date { get; set; }
214+
public string Message { get; set; }
215+
}
216+
217+
public class DefaultsModel {
213218
public int Number { get; set; }
214219
public bool Bool { get; set; }
215220
public string Message { get; set; }
216-
public DateTime Date { get; set; }
217-
public DateTimeOffset DateOffset { get; set; }
218-
public IDictionary<string, string> Dictionary { get; set; }
219-
public ICollection<string> Collection { get; set; }
220-
public SampleModel Nested { get; set; }
221+
public ICollection<string> Collection { get; set; }
221222
}
222223

223224
public class User {

0 commit comments

Comments
 (0)