Skip to content

Commit 745cd56

Browse files
jakeouellettemrwillis21
authored andcommitted
Add tests and serialization of ndkpayload
1 parent 7a76a10 commit 745cd56

File tree

4 files changed

+100
-17
lines changed

4 files changed

+100
-17
lines changed

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/common/NativeSessionFileGzipperTest.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,17 @@ public void testProcessNativeSessions_putsFilesInCorrectLocation() throws IOExce
6565
}
6666

6767
@Test
68-
public void testProcessNativeSessionsWhenDataIsNull_putsFilesInCorrectLocation()
69-
throws IOException {
70-
// String fileBackedSessionName = "file";
71-
// String byteBackedSessionName = "byte";
72-
// FileBackedNativeSessionFile fileSession =
73-
// new FileBackedNativeSessionFile(fileBackedSessionName, missingFile);
74-
// BytesBackedNativeSessionFile byteSession =
75-
// new BytesBackedNativeSessionFile(byteBackedSessionName, testContents);
76-
// List<NativeSessionFile> files = Arrays.asList(fileSession, byteSession);
77-
// NativeSessionFileGzipper.processNativeSessions(gzipDir, files);
78-
//
79-
// assertEquals(Sets.newSet(
80-
// new File(gzipDir, byteBackedSessionName)),
81-
// Sets.newSet(gzipDir.listFiles()));
68+
public void testProcessNativeSessionsWhenDataIsNull_putsFilesInCorrectLocation() {
69+
String fileBackedSessionName = "file";
70+
String byteBackedSessionName = "byte";
71+
FileBackedNativeSessionFile fileSession =
72+
new FileBackedNativeSessionFile(fileBackedSessionName, missingFile);
73+
BytesBackedNativeSessionFile byteSession =
74+
new BytesBackedNativeSessionFile(byteBackedSessionName, testContents);
75+
List<NativeSessionFile> files = Arrays.asList(fileSession, byteSession);
76+
NativeSessionFileGzipper.processNativeSessions(gzipDir, files);
77+
78+
assertEquals(
79+
Sets.newSet(new File(gzipDir, byteBackedSessionName)), Sets.newSet(gzipDir.listFiles()));
8280
}
8381
}

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistenceTest.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,29 @@ public void testLoadFinalizedReports_reportWithUserId_returnsReportWithProperUse
375375

376376
@Test
377377
public void testFinalizeSessionWithNativeEvent_writesNativeSessions() {
378-
// FIXME:
378+
byte[] testContents = {0, 2, 20, 10};
379+
CrashlyticsReport.FilesPayload filesPayload =
380+
CrashlyticsReport.FilesPayload.builder()
381+
.setOrgId("orgId")
382+
.setFiles(
383+
ImmutableList.from(
384+
CrashlyticsReport.FilesPayload.File.builder()
385+
.setContents(testContents)
386+
.setFilename("bytes")
387+
.build()))
388+
.build();
389+
390+
CrashlyticsReport report = makeTestNativeReport();
391+
List<CrashlyticsReport> finalizedReports = reportPersistence.loadFinalizedReports();
392+
393+
assertEquals(0, finalizedReports.size());
394+
395+
reportPersistence.finalizeSessionWithNativeEvent("sessionId", report, filesPayload);
396+
397+
finalizedReports = reportPersistence.loadFinalizedReports();
398+
assertEquals(1, finalizedReports.size());
399+
assertEquals(
400+
report.withNdkPayload(filesPayload).withOrganizationId("orgId"), finalizedReports.get(0));
379401
}
380402

381403
@Test
@@ -580,6 +602,17 @@ private static CrashlyticsReport makeTestReport(String sessionId) {
580602
.build();
581603
}
582604

605+
private static CrashlyticsReport makeTestNativeReport() {
606+
return CrashlyticsReport.builder()
607+
.setSdkVersion("sdkVersion")
608+
.setGmpAppId("gmpAppId")
609+
.setPlatform(1)
610+
.setInstallationUuid("installationId")
611+
.setBuildVersion("1")
612+
.setDisplayVersion("1.0.0")
613+
.build();
614+
}
615+
583616
private static CrashlyticsReport.Session makeTestSession(String sessionId) {
584617
return Session.builder()
585618
.setGenerator("generator")

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ private static CrashlyticsReport parseReport(JsonReader jsonReader) throws IOExc
9797
case "session":
9898
builder.setSession(parseSession(jsonReader));
9999
break;
100+
case "ndkPayload":
101+
builder.setNdkPayload(parseNdkPayload(jsonReader));
102+
break;
100103
default:
101104
jsonReader.skipValue();
102105
break;
@@ -157,6 +160,55 @@ private static CrashlyticsReport.Session parseSession(JsonReader jsonReader) thr
157160
return builder.build();
158161
}
159162

163+
private static CrashlyticsReport.FilesPayload parseNdkPayload(JsonReader jsonReader)
164+
throws IOException {
165+
final CrashlyticsReport.FilesPayload.Builder builder = CrashlyticsReport.FilesPayload.builder();
166+
167+
jsonReader.beginObject();
168+
while (jsonReader.hasNext()) {
169+
String name = jsonReader.nextName();
170+
switch (name) {
171+
case "files":
172+
builder.setFiles(parseArray(jsonReader, CrashlyticsReportJsonTransform::parseFile));
173+
break;
174+
case "orgId":
175+
builder.setOrgId(jsonReader.nextString());
176+
break;
177+
default:
178+
jsonReader.skipValue();
179+
break;
180+
}
181+
}
182+
jsonReader.endObject();
183+
184+
return builder.build();
185+
}
186+
187+
private static CrashlyticsReport.FilesPayload.File parseFile(JsonReader jsonReader)
188+
throws IOException {
189+
final CrashlyticsReport.FilesPayload.File.Builder builder =
190+
CrashlyticsReport.FilesPayload.File.builder();
191+
192+
jsonReader.beginObject();
193+
while (jsonReader.hasNext()) {
194+
String name = jsonReader.nextName();
195+
switch (name) {
196+
case "filename":
197+
builder.setFilename(jsonReader.nextString());
198+
break;
199+
case "contents":
200+
builder.setContents(Base64.decode(jsonReader.nextString(), Base64.NO_WRAP));
201+
break;
202+
default:
203+
jsonReader.skipValue();
204+
break;
205+
}
206+
}
207+
jsonReader.endObject();
208+
209+
return builder.build();
210+
}
211+
160212
private static CrashlyticsReport.Session.User parseUser(JsonReader jsonReader)
161213
throws IOException {
162214
final CrashlyticsReport.Session.User.Builder builder = CrashlyticsReport.Session.User.builder();

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@ public void deleteFinalizedReport(String sessionId) {
169169

170170
public void finalizeSessionWithNativeEvent(
171171
String sessionId, CrashlyticsReport crashlyticsReport, CrashlyticsReport.FilesPayload files) {
172-
CrashlyticsReport report = crashlyticsReport.withNdkPayload(files);
172+
crashlyticsReport = crashlyticsReport.withNdkPayload(files);
173173
final File outputDirectory = prepareDirectory(nativeReportsDirectory);
174-
writeTextFile(new File(outputDirectory, sessionId), TRANSFORM.reportToJson(report));
174+
writeTextFile(new File(outputDirectory, sessionId), TRANSFORM.reportToJson(crashlyticsReport));
175175
}
176176

177177
// TODO: Deal with potential runtime exceptions

0 commit comments

Comments
 (0)