Skip to content

Commit

Permalink
refactor: remove manual serializers for NDK layer
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Dec 7, 2023
1 parent e3af057 commit 2fe3c99
Show file tree
Hide file tree
Showing 13 changed files with 43 additions and 273 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -331,11 +331,12 @@ protected void installSignals() {
boolean is32bit = deviceArchitecture.is32BitDevice();
logger.logDeveloper("EmbraceNDKService", "Installing signal handlers. 32bit=" + is32bit + ", crashId=" + nativeCrashId);

String initialMetaData = new NativeCrashMetadata(
NativeCrashMetadata payload = new NativeCrashMetadata(
this.metadataService.getLightweightAppInfo(),
this.metadataService.getLightweightDeviceInfo(),
this.userService.getUserInfo(),
this.sessionProperties.get()).toJson();
this.sessionProperties.get());
String initialMetaData = serializer.toJson(payload);

delegate._installSignalHandlers(
reportBasePath,
Expand Down Expand Up @@ -687,11 +688,12 @@ private void updateDeviceMetaData() {
}

private String getMetaData(Boolean includeSessionProperties) {
return new NativeCrashMetadata(
NativeCrashMetadata payload = new NativeCrashMetadata(
this.metadataService.getAppInfo(),
this.metadataService.getDeviceInfo(),
this.userService.getUserInfo(),
includeSessionProperties ? this.sessionProperties.get() : null).toJson();
includeSessionProperties ? this.sessionProperties.get() : null);
return serializer.toJson(payload);
}

private void uninstallSignals() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.embrace.android.embracesdk.payload

import com.google.gson.annotations.SerializedName
import io.embrace.android.embracesdk.internal.utils.MessageUtils

internal data class AppInfo(
/**
Expand Down Expand Up @@ -119,26 +118,4 @@ internal data class AppInfo(
*/
@SerializedName("usv")
val hostedSdkVersion: String? = null,
) {
fun toJson(): String {
return "{\"v\": " + MessageUtils.withNull(appVersion) +
",\"f\": " + appFramework +
",\"bi\":" + MessageUtils.withNull(buildId) +
",\"bt\":" + MessageUtils.withNull(buildType) +
",\"fl\":" + MessageUtils.withNull(buildFlavor) +
",\"e\":" + MessageUtils.withNull(environment) +
",\"vu\":" + MessageUtils.boolToStr(appUpdated) +
",\"vul\":" + MessageUtils.boolToStr(appUpdatedThisLaunch) +
",\"bv\":" + MessageUtils.withNull(bundleVersion) +
",\"ou\":" + MessageUtils.boolToStr(osUpdated) +
",\"oul\":" + MessageUtils.boolToStr(osUpdatedThisLaunch) +
",\"sdk\":" + MessageUtils.withNull(sdkVersion) +
",\"sdc\":" + MessageUtils.withNull(sdkSimpleVersion) +
",\"rn\":" + MessageUtils.withNull(reactNativeBundleId) +
",\"jsp\":" + MessageUtils.withNull(javaScriptPatchNumber) +
",\"rnv\":" + MessageUtils.withNull(reactNativeVersion) +
",\"unv\":" + MessageUtils.withNull(hostedPlatformVersion) +
",\"ubg\":" + MessageUtils.withNull(buildGuid) +
",\"usv\":" + MessageUtils.withNull(hostedSdkVersion) + "}"
}
}
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.embrace.android.embracesdk.payload

import com.google.gson.annotations.SerializedName
import io.embrace.android.embracesdk.internal.utils.MessageUtils

internal data class DeviceInfo(

Expand Down Expand Up @@ -48,24 +47,5 @@ internal data class DeviceInfo(
val cpuName: String? = null,

@SerializedName("gp")
private val egl: String? = null
) {

fun toJson(): String {
return "{\"dm\": " + MessageUtils.withNull(manufacturer) +
",\"do\": " + MessageUtils.withNull(model) +
",\"da\":" + MessageUtils.withNull(architecture) +
",\"jb\":" + MessageUtils.boolToStr(jailbroken) +
",\"lc\":" + MessageUtils.withNull(locale) +
",\"ms\":" + MessageUtils.withNull(internalStorageTotalCapacity) +
",\"os\":" + MessageUtils.withNull(operatingSystemType) +
",\"ov\":" + MessageUtils.withNull(operatingSystemVersion) +
",\"oc\":" + MessageUtils.withNull(operatingSystemVersionCode) +
",\"sr\":" + MessageUtils.withNull(screenResolution) +
",\"tz\":" + MessageUtils.withNull(timezoneDescription) +
",\"up\":" + MessageUtils.withNull(uptime) +
",\"nc\":" + MessageUtils.withNull(cores) +
",\"pt\":" + MessageUtils.withNull(cpuName) +
",\"gp\":" + MessageUtils.withNull(egl) + "}"
}
}
val egl: String? = null
)
Original file line number Diff line number Diff line change
@@ -1,26 +1,10 @@
package io.embrace.android.embracesdk.payload

import com.google.gson.annotations.SerializedName
import io.embrace.android.embracesdk.internal.utils.MessageUtils.withMap

internal class NativeCrashMetadata(
@SerializedName("a") val appInfo: AppInfo,
@SerializedName("d") val deviceInfo: DeviceInfo,
@SerializedName("u") val userInfo: UserInfo,
@SerializedName("sp") val sessionProperties: Map<String?, String?>?
) {

fun toJson(): String {
val sb = StringBuilder()
sb.append("{\"a\":")
sb.append(appInfo.toJson())
sb.append(",\"d\":")
sb.append(deviceInfo.toJson())
sb.append(",\"u\":")
sb.append(userInfo.toJson())
sb.append(",\"sp\":")
sb.append(withMap(sessionProperties))
sb.append("}")
return sb.toString()
}
}
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.embrace.android.embracesdk.payload

import com.google.gson.annotations.SerializedName
import io.embrace.android.embracesdk.internal.utils.MessageUtils
import io.embrace.android.embracesdk.prefs.PreferencesService

/**
Expand All @@ -22,13 +21,6 @@ internal data class UserInfo(
var personas: Set<String>? = null
) {

fun toJson(): String {
return "{\"id\": " + MessageUtils.withNull(userId) +
",\"em\": " + MessageUtils.withNull(email) +
",\"un\":" + MessageUtils.withNull(username) +
",\"per\":" + MessageUtils.withSet(personas) + "}"
}

companion object {
const val PERSONA_NEW_USER = "new_user"
const val PERSONA_POWER_USER = "power_user"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import io.embrace.android.embracesdk.fakes.FakeProcessStateService
import io.embrace.android.embracesdk.fakes.fakeAutoDataCaptureBehavior
import io.embrace.android.embracesdk.fakes.fakeSdkModeBehavior
import io.embrace.android.embracesdk.internal.BuildInfo
import io.embrace.android.embracesdk.internal.serialization.EmbraceSerializer
import io.embrace.android.embracesdk.prefs.EmbracePreferencesService
import io.mockk.clearAllMocks
import io.mockk.every
Expand All @@ -40,6 +41,7 @@ internal class EmbraceMetadataServiceTest {
companion object {
private val context: Context = mockk(relaxed = true)
private val packageInfo = PackageInfo()
private val serializer = EmbraceSerializer()
private val preferencesService: EmbracePreferencesService = mockk(relaxed = true)
private val fakeClock = FakeClock()
private val cpuInfoDelegate: EmbraceCpuInfoDelegate = mockk(relaxed = true)
Expand Down Expand Up @@ -192,7 +194,7 @@ internal class EmbraceMetadataServiceTest {
.replace("{versionCode}", BuildConfig.VERSION_CODE)
.filter { !it.isWhitespace() }

val appInfo = getMetadataService().getAppInfo().toJson()
val appInfo = serializer.toJson(getMetadataService().getAppInfo())
assertEquals(expectedInfo, appInfo.replace(" ", ""))
}

Expand All @@ -216,7 +218,7 @@ internal class EmbraceMetadataServiceTest {

metadataService.setReactNativeBundleId(context, "1234")

val appInfo = metadataService.getAppInfo().toJson()
val appInfo = serializer.toJson(metadataService.getAppInfo())
assertEquals(expectedInfo, appInfo.replace(" ", ""))
}

Expand Down Expand Up @@ -245,7 +247,7 @@ internal class EmbraceMetadataServiceTest {
every { MetadataUtils.getLocale() }.returns("en-US")
every { MetadataUtils.getSystemUptime() }.returns(123L)

val deviceInfo = getMetadataService().getDeviceInfo().toJson()
val deviceInfo = serializer.toJson(getMetadataService().getDeviceInfo())

verify(exactly = 1) { MetadataUtils.getDeviceManufacturer() }
verify(exactly = 1) { MetadataUtils.getModel() }
Expand Down Expand Up @@ -289,7 +291,7 @@ internal class EmbraceMetadataServiceTest {
lazy { packageInfo.versionCode.toString() }
)

val deviceInfo = metadataService.getDeviceInfo().toJson()
val deviceInfo = serializer.toJson(metadataService.getDeviceInfo())

verify(exactly = 1) { MetadataUtils.getDeviceManufacturer() }
verify(exactly = 1) { MetadataUtils.getModel() }
Expand All @@ -300,9 +302,6 @@ internal class EmbraceMetadataServiceTest {
verify(exactly = 1) { MetadataUtils.getOperatingSystemVersionCode() }
verify(exactly = 1) { MetadataUtils.getTimezoneId() }
verify(exactly = 1) { MetadataUtils.getSystemUptime() }

assertTrue(deviceInfo.contains("\"jb\":null"))
assertTrue(deviceInfo.contains("\"sr\":null"))
assertTrue(deviceInfo.contains("\"da\":\"arm64-v8a\""))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import io.embrace.android.embracesdk.fakes.FakeDeviceArchitecture
import io.embrace.android.embracesdk.fakes.FakePreferenceService
import io.embrace.android.embracesdk.fakes.FakeProcessStateService
import io.embrace.android.embracesdk.internal.BuildInfo
import io.embrace.android.embracesdk.internal.serialization.EmbraceSerializer
import io.embrace.android.embracesdk.session.lifecycle.ProcessStateService
import io.mockk.clearAllMocks
import io.mockk.every
Expand All @@ -34,6 +35,7 @@ internal class EmbraceMetadataUnityTest {
private val fakeClock = FakeClock()
private lateinit var context: Context
private val packageInfo = PackageInfo()
private val serializer = EmbraceSerializer()
private lateinit var buildInfo: BuildInfo
private lateinit var configService: ConfigService
private lateinit var preferencesService: FakePreferenceService
Expand Down Expand Up @@ -123,7 +125,7 @@ internal class EmbraceMetadataUnityTest {
preferencesService.unityBuildIdNumber = "unityBuildIdNumber"

val metadataService = getMetadataService()
val appInfo = metadataService.getAppInfo().toJson()
val appInfo = serializer.toJson(metadataService.getAppInfo())

assertTrue(appInfo.contains("\"unv\":\"unityVersionNumber\""))
assertTrue(appInfo.contains("\"ubg\":\"unityBuildIdNumber\""))
Expand All @@ -139,7 +141,7 @@ internal class EmbraceMetadataUnityTest {
preferencesService.unityVersionNumber = "unityVersionNumber"
preferencesService.unityBuildIdNumber = "unityBuildIdNumber"

val appInfo = metadataService.getAppInfo().toJson()
val appInfo = serializer.toJson(metadataService.getAppInfo())

assertTrue(appInfo.contains("\"unv\":\"unityVersionNumber\""))
assertTrue(appInfo.contains("\"ubg\":\"unityBuildIdNumber\""))
Expand Down
Loading

0 comments on commit 2fe3c99

Please sign in to comment.