Skip to content

Commit ea434cc

Browse files
Merge pull request #144 from backtrace-labs/backtrace-data-models-refactor
Backtrace data models serialization optimization
2 parents 1955453 + 8745b71 commit ea434cc

File tree

63 files changed

+2055
-310
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2055
-310
lines changed

backtrace-library/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,17 @@ dependencies {
8181
implementation 'com.squareup:tape:1.2.3'
8282
testImplementation 'junit:junit:4.13.2'
8383
testImplementation "org.mockito:mockito-core:5.12.0"
84+
testImplementation 'org.json:json:20240303'
8485
androidTestImplementation "org.mockito:mockito-android:5.12.0"
8586
androidTestImplementation 'net.jodah:concurrentunit:0.4.4'
8687
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
8788
androidTestImplementation 'androidx.test:rules:1.6.1'
8889
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
8990
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
91+
testImplementation "com.google.guava:guava:33.3.1-jre"
9092
androidTestImplementation 'org.mockito:mockito-core:5.12.0'
9193
androidTestImplementation "org.mockito:mockito-android:5.12.0"
94+
9295
}
9396

9497
apply from: 'publish.gradle'

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientAttachmentsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void sendBacktraceExceptionAttachments() {
6161
RequestHandler rh = new RequestHandler() {
6262
@Override
6363
public BacktraceResult onRequest(BacktraceData data) {
64-
return new BacktraceResult(data.getReport(), data.report.exception.getMessage(),
64+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
6565
BacktraceResultStatus.Ok);
6666
}
6767
};
@@ -104,7 +104,7 @@ public void sendBacktraceExceptionNoAttachments() {
104104
RequestHandler rh = new RequestHandler() {
105105
@Override
106106
public BacktraceResult onRequest(BacktraceData data) {
107-
return new BacktraceResult(data.getReport(), data.report.exception.getMessage(),
107+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
108108
BacktraceResultStatus.Ok);
109109
}
110110
};

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientAttributeTests.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import net.jodah.concurrentunit.Waiter;
1313

14+
import org.junit.After;
1415
import org.junit.Before;
1516
import org.junit.Test;
1617
import org.junit.runner.RunWith;
@@ -30,19 +31,26 @@ public class BacktraceClientAttributeTests {
3031
private BacktraceCredentials credentials;
3132
private BacktraceDatabase database;
3233

34+
private BacktraceClient backtraceClient;
35+
3336
@Before
3437
public void setUp() {
3538
context = InstrumentationRegistry.getInstrumentation().getContext();
3639
credentials = new BacktraceCredentials("https://example-endpoint.com/", "");
3740
database = new BacktraceDatabase(context, context.getFilesDir().getAbsolutePath());
41+
backtraceClient = new BacktraceClient(context, credentials, database);
42+
}
43+
44+
@After
45+
public void cleanUp() {
46+
database.clear();
3847
}
3948

4049
@Test
4150
public void shouldAddASingleAttribute() {
4251
// GIVEN
4352
final String attributeKey = "test-attribute";
4453
final String attributeValue = "test-value";
45-
final BacktraceClient backtraceClient = new BacktraceClient(context, credentials, database);
4654

4755
// WHEN
4856
backtraceClient.addAttribute(attributeKey, attributeValue);
@@ -66,7 +74,6 @@ public void shouldAddMultipleAttributesAtOnce() {
6674
attributes.put(String.format("%s %d", attributeKey, attributeIteration), attributeValue);
6775
}
6876
// WHEN
69-
final BacktraceClient backtraceClient = new BacktraceClient(context, credentials, database);
7077
backtraceClient.addAttribute(attributes);
7178

7279
// THEN
@@ -85,7 +92,6 @@ public void shouldReplaceExistingAttribute() {
8592
final String newAttributeValue = "test-value-new";
8693

8794
// WHEN
88-
final BacktraceClient backtraceClient = new BacktraceClient(context, credentials, database);
8995
backtraceClient.addAttribute(attributeKey, oldAttributeValue);
9096

9197
backtraceClient.addAttribute(attributeKey, newAttributeValue);
@@ -129,14 +135,14 @@ public void attributesShouldBeAvailableInReport() {
129135
final String errorMessage = "error message";
130136
final String attributeKey = "test-attribute";
131137
final String attributeValue = "test-value";
132-
final BacktraceClient backtraceClient = new BacktraceClient(context, credentials, database);
138+
133139
backtraceClient.addAttribute(attributeKey, attributeValue);
134140
RequestHandler rh = data -> {
135141
// THEN
136-
Object value = data.attributes.get(attributeKey);
142+
Object value = data.getAttributes().get(attributeKey);
137143
assertNotNull(value);
138144
assertEquals(value, attributeValue);
139-
return new BacktraceResult(data.getReport(), data.report.exception.getMessage(),
145+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
140146
BacktraceResultStatus.Ok);
141147
};
142148
backtraceClient.setOnRequestHandler(rh);

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientBreadcrumbsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void sendBacktraceExceptionBreadcrumbs() {
7373
RequestHandler rh = new RequestHandler() {
7474
@Override
7575
public BacktraceResult onRequest(BacktraceData data) {
76-
return new BacktraceResult(data.getReport(), data.report.exception.getMessage(),
76+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
7777
BacktraceResultStatus.Ok);
7878
}
7979
};
@@ -122,7 +122,7 @@ public void sendBacktraceExceptionBreadcrumbsAddBreadcrumb() {
122122
RequestHandler rh = new RequestHandler() {
123123
@Override
124124
public BacktraceResult onRequest(BacktraceData data) {
125-
return new BacktraceResult(data.getReport(), data.report.exception.getMessage(),
125+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
126126
BacktraceResultStatus.Ok);
127127
}
128128
};
@@ -276,7 +276,7 @@ public void sendBacktraceExceptionNoBreadcrumbs() {
276276
RequestHandler rh = new RequestHandler() {
277277
@Override
278278
public BacktraceResult onRequest(BacktraceData data) {
279-
return new BacktraceResult(data.report, data.report.exception.getMessage(),
279+
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
280280
BacktraceResultStatus.Ok);
281281
}
282282
};

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientEventsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public void useBeforeSendAndRequestHandler() {
8686
RequestHandler rh = new RequestHandler() {
8787
@Override
8888
public BacktraceResult onRequest(BacktraceData data) {
89-
return new BacktraceResult(null, data.attributes.get(attributeKey),
89+
return new BacktraceResult(null, data.getAttributes().get(attributeKey),
9090
BacktraceResultStatus.Ok);
9191
}
9292
};
@@ -95,7 +95,7 @@ public BacktraceResult onRequest(BacktraceData data) {
9595
backtraceClient.setOnBeforeSendEventListener(new OnBeforeSendEventListener() {
9696
@Override
9797
public BacktraceData onEvent(BacktraceData data) {
98-
data.attributes.put(attributeKey, resultMessage);
98+
data.getAttributes().put(attributeKey, resultMessage);
9999
return data;
100100
}
101101
});

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientProguardTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void sendBacktraceReportWithStringAndAttributesProguard() {
5858
RequestHandler rh = new RequestHandler() {
5959
@Override
6060
public BacktraceResult onRequest(BacktraceData data) {
61-
assertEquals("proguard", data.symbolication);
61+
assertEquals("proguard", data.getSymbolication());
6262
return new BacktraceResult(data.getReport(), data.getReport().message,
6363
BacktraceResultStatus.Ok);
6464
}
@@ -97,7 +97,7 @@ public void sendBacktraceReportWithStringAndAttributesNoProguard() {
9797
RequestHandler rh = new RequestHandler() {
9898
@Override
9999
public BacktraceResult onRequest(BacktraceData data) {
100-
assertNull(data.symbolication);
100+
assertNull(data.getSymbolication());
101101
return new BacktraceResult(data.getReport(), data.getReport().message,
102102
BacktraceResultStatus.Ok);
103103
}
@@ -138,7 +138,7 @@ public void sendBacktraceReportWithExceptionAndAttributesProguard() {
138138
RequestHandler rh = new RequestHandler() {
139139
@Override
140140
public BacktraceResult onRequest(BacktraceData data) {
141-
assertEquals("proguard", data.symbolication);
141+
assertEquals("proguard", data.getSymbolication());
142142
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
143143
BacktraceResultStatus.Ok);
144144
}
@@ -180,7 +180,7 @@ public void sendBacktraceReportWithExceptionAndAttributesNoProguard() {
180180
RequestHandler rh = new RequestHandler() {
181181
@Override
182182
public BacktraceResult onRequest(BacktraceData data) {
183-
assertNull(data.symbolication);
183+
assertNull(data.getSymbolication());
184184
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
185185
BacktraceResultStatus.Ok);
186186
}
@@ -224,7 +224,7 @@ public void sendBacktraceExceptionProguard() {
224224
RequestHandler rh = new RequestHandler() {
225225
@Override
226226
public BacktraceResult onRequest(BacktraceData data) {
227-
assertEquals("proguard", data.symbolication);
227+
assertEquals("proguard", data.getSymbolication());
228228
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
229229
BacktraceResultStatus.Ok);
230230
}
@@ -266,7 +266,7 @@ public void sendBacktraceExceptionNoProguard() {
266266
RequestHandler rh = new RequestHandler() {
267267
@Override
268268
public BacktraceResult onRequest(BacktraceData data) {
269-
assertNull(data.symbolication);
269+
assertNull(data.getSymbolication());
270270
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
271271
BacktraceResultStatus.Ok);
272272
}
@@ -309,7 +309,7 @@ public void sendBacktraceStringProguard() {
309309
RequestHandler rh = new RequestHandler() {
310310
@Override
311311
public BacktraceResult onRequest(BacktraceData data) {
312-
assertEquals("proguard", data.symbolication);
312+
assertEquals("proguard", data.getSymbolication());
313313
return new BacktraceResult(data.getReport(), data.getReport().message,
314314
BacktraceResultStatus.Ok);
315315
}
@@ -351,7 +351,7 @@ public void sendBacktraceStringNoProguard() {
351351
RequestHandler rh = new RequestHandler() {
352352
@Override
353353
public BacktraceResult onRequest(BacktraceData data) {
354-
assertNull(data.symbolication);
354+
assertNull(data.getSymbolication());
355355
return new BacktraceResult(data.getReport(), data.getReport().message,
356356
BacktraceResultStatus.Ok);
357357
}

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientSendTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public void sendExceptionWithManyCause() {
119119
fail(e.getMessage());
120120
}
121121

122-
return new BacktraceResult(data.getReport(), data.report.message,
122+
return new BacktraceResult(data.getReport(), data.getReport().message,
123123
BacktraceResultStatus.Ok);
124124
};
125125
backtraceClient.setOnRequestHandler(rh);

backtrace-library/src/androidTest/java/backtraceio/library/SettingAttributesTest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import backtraceio.library.models.BacktraceResult;
3030
import backtraceio.library.models.database.BacktraceDatabaseSettings;
3131
import backtraceio.library.models.json.BacktraceAttributes;
32+
import backtraceio.library.models.json.BacktraceReport;
3233
import backtraceio.library.models.types.BacktraceResultStatus;
3334

3435

@@ -46,9 +47,9 @@ public void setUp() {
4647
context = InstrumentationRegistry.getInstrumentation().getContext();
4748
final String url = "https://backtrace.io/";
4849
backtraceCredentials = new BacktraceCredentials(url);
49-
clientAttributes = new HashMap<>();
50-
51-
clientAttributes.put(customClientAttributeKey, customClientAttributeValue);
50+
clientAttributes = new HashMap<String, Object>() {{
51+
put(customClientAttributeKey, customClientAttributeValue);
52+
}};
5253
}
5354

5455
@Test
@@ -176,10 +177,13 @@ public void run() {
176177
@Override
177178
public BacktraceResult onRequest(BacktraceData data) {
178179
// THEN
179-
waiter.assertTrue(data.getReport().attributes.containsKey(customClientAttributeKey));
180-
waiter.assertEquals(customClientAttributeValue, data.getReport().attributes.get(customClientAttributeKey));
180+
181+
final BacktraceReport dataReport = data.getReport();
182+
waiter.assertTrue(dataReport.attributes.containsKey(customClientAttributeKey));
183+
waiter.assertEquals(customClientAttributeValue, dataReport.attributes.get(customClientAttributeKey));
181184
waiter.assertEquals(exceptionMessage, data.getReport().exception.getMessage());
182-
waiter.assertEquals(data.getReport().attributes.get(BacktraceAttributeConsts.ErrorType), BacktraceAttributeConsts.UnhandledExceptionAttributeType);
185+
waiter.assertEquals(dataReport.attributes.get(BacktraceAttributeConsts.ErrorType), BacktraceAttributeConsts.UnhandledExceptionAttributeType);
186+
183187
waiter.resume();
184188
return new BacktraceResult(data.getReport(), "", BacktraceResultStatus.Ok);
185189
}

backtrace-library/src/androidTest/java/backtraceio/library/database/BacktraceDatabaseContextTest.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,13 @@ public void setUp() {
3838
this.context = InstrumentationRegistry.getInstrumentation().getContext();
3939
this.dbPath = this.context.getFilesDir().getAbsolutePath();
4040
this.databaseSettings = new BacktraceDatabaseSettings(this.dbPath, RetryOrder.Queue);
41-
this.databaseContext = new BacktraceDatabaseContext(this.context, this.databaseSettings);
41+
this.databaseContext = new BacktraceDatabaseContext(this.databaseSettings);
4242
}
43-
4443
@After
4544
public void after() {
4645
this.databaseContext.clear();
4746
}
4847

49-
5048
@Test
5149
public void firstFromDatabaseContextQueue() {
5250
// GIVEN
@@ -79,7 +77,7 @@ public void lastFromDatabaseContextQueue() {
7977
public void firstFromDatabaseContextStack() {
8078
// GIVEN
8179
BacktraceDatabaseSettings settings = new BacktraceDatabaseSettings(this.dbPath, RetryOrder.Stack);
82-
this.databaseContext = new BacktraceDatabaseContext(this.context, settings);
80+
this.databaseContext = new BacktraceDatabaseContext(settings);
8381
List<BacktraceDatabaseRecord> records = fillDatabase();
8482

8583
// WHEN
@@ -94,7 +92,7 @@ public void firstFromDatabaseContextStack() {
9492
public void lastFromDatabaseContextStack() {
9593
// GIVEN
9694
BacktraceDatabaseSettings settings = new BacktraceDatabaseSettings(this.dbPath, RetryOrder.Stack);
97-
this.databaseContext = new BacktraceDatabaseContext(this.context, settings);
95+
this.databaseContext = new BacktraceDatabaseContext(settings);
9896
List<BacktraceDatabaseRecord> records = fillDatabase();
9997

10098
// WHEN
@@ -147,7 +145,7 @@ public void notContainsInDatabaseContext() {
147145
// GIVEN
148146
fillDatabase();
149147
BacktraceReport report = new BacktraceReport(this.testMessage);
150-
BacktraceData data = new BacktraceData(this.context, report, null);
148+
BacktraceData data = new BacktraceData.Builder(report).setAttributes(this.context, null).build();
151149
BacktraceDatabaseRecord record = new BacktraceDatabaseRecord(data, this.dbPath);
152150

153151
// WHEN
@@ -236,7 +234,7 @@ public void tryDeleteNotExistingRecordFromDatabaseContext() {
236234
// GIVEN
237235
fillDatabase();
238236
BacktraceReport report = new BacktraceReport(this.testMessage);
239-
BacktraceData data = new BacktraceData(this.context, report, null);
237+
BacktraceData data = new BacktraceData.Builder(report).setAttributes(this.context, null).build();
240238
BacktraceDatabaseRecord record = new BacktraceDatabaseRecord(data, this.dbPath);
241239

242240
// WHEN
@@ -261,9 +259,9 @@ private List<BacktraceDatabaseRecord> fillDatabase() {
261259
BacktraceReport report = new BacktraceReport(this.testMessage);
262260
BacktraceReport report2 = new BacktraceReport(this.testMessage);
263261
BacktraceReport report3 = new BacktraceReport(this.testMessage);
264-
BacktraceData data = new BacktraceData(this.context, report, null);
265-
BacktraceData data2 = new BacktraceData(this.context, report2, null);
266-
BacktraceData data3 = new BacktraceData(this.context, report3, null);
262+
BacktraceData data = new BacktraceData.Builder(report).setAttributes(this.context, null).build();
263+
BacktraceData data2 = new BacktraceData.Builder(report2).setAttributes(this.context, null).build();
264+
BacktraceData data3 = new BacktraceData.Builder(report3).setAttributes(this.context, null).build();
267265
result.add(databaseContext.add(data));
268266
result.add(databaseContext.add(data2));
269267
result.add(databaseContext.add(data3));

0 commit comments

Comments
 (0)