Skip to content

Commit 98e03f7

Browse files
authored
Merge b2ac8ec into b292090
2 parents b292090 + b2ac8ec commit 98e03f7

20 files changed

+113
-261
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66

77
- No longer send out empty log envelopes ([#4497](https://github.com/getsentry/sentry-java/pull/4497))
88

9+
### Internal
10+
11+
- Flattened PerformanceCollectionData ([#4505](https://github.com/getsentry/sentry-java/pull/4505))
12+
913
### Dependencies
1014

1115
- Bump Gradle from v8.14.1 to v8.14.2 ([#4473](https://github.com/getsentry/sentry-java/pull/4473))

sentry-android-core/src/main/java/io/sentry/android/core/AndroidCpuCollector.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
import android.os.SystemClock;
44
import android.system.Os;
55
import android.system.OsConstants;
6-
import io.sentry.CpuCollectionData;
76
import io.sentry.ILogger;
87
import io.sentry.IPerformanceSnapshotCollector;
98
import io.sentry.PerformanceCollectionData;
109
import io.sentry.SentryLevel;
11-
import io.sentry.SentryNanotimeDate;
1210
import io.sentry.util.FileUtils;
1311
import io.sentry.util.Objects;
1412
import java.io.File;
@@ -72,11 +70,8 @@ public void collect(final @NotNull PerformanceCollectionData performanceCollecti
7270
// number from 0 to 100, so we are going to multiply it by 100
7371
final double cpuUsagePercentage = cpuNanosDiff / (double) realTimeNanosDiff;
7472

75-
CpuCollectionData cpuData =
76-
new CpuCollectionData(
77-
(cpuUsagePercentage / (double) numCores) * 100.0, new SentryNanotimeDate());
78-
79-
performanceCollectionData.addCpuData(cpuData);
73+
performanceCollectionData.setCpuUsagePercentage(
74+
(cpuUsagePercentage / (double) numCores) * 100.0);
8075
}
8176

8277
/** Read the /proc/self/stat file and parses the result. */

sentry-android-core/src/main/java/io/sentry/android/core/AndroidMemoryCollector.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import android.os.Debug;
44
import io.sentry.IPerformanceSnapshotCollector;
5-
import io.sentry.MemoryCollectionData;
65
import io.sentry.PerformanceCollectionData;
7-
import io.sentry.SentryNanotimeDate;
86
import org.jetbrains.annotations.ApiStatus;
97
import org.jetbrains.annotations.NotNull;
108

@@ -18,8 +16,7 @@ public void setup() {}
1816
public void collect(final @NotNull PerformanceCollectionData performanceCollectionData) {
1917
long usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
2018
long usedNativeMemory = Debug.getNativeHeapSize() - Debug.getNativeHeapFreeSize();
21-
MemoryCollectionData memoryData =
22-
new MemoryCollectionData(usedMemory, usedNativeMemory, new SentryNanotimeDate());
23-
performanceCollectionData.addMemoryData(memoryData);
19+
performanceCollectionData.setUsedHeapMemory(usedMemory);
20+
performanceCollectionData.setUsedNativeMemory(usedNativeMemory);
2421
}
2522
}

sentry-android-core/src/main/java/io/sentry/android/core/AndroidProfiler.java

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
import android.os.Debug;
55
import android.os.Process;
66
import android.os.SystemClock;
7-
import io.sentry.CpuCollectionData;
87
import io.sentry.DateUtils;
98
import io.sentry.ILogger;
109
import io.sentry.ISentryExecutorService;
1110
import io.sentry.ISentryLifecycleToken;
12-
import io.sentry.MemoryCollectionData;
1311
import io.sentry.PerformanceCollectionData;
1412
import io.sentry.SentryDate;
1513
import io.sentry.SentryLevel;
@@ -318,32 +316,28 @@ private void putPerformanceCollectionDataInMeasurements(
318316
new ArrayDeque<>(performanceCollectionData.size());
319317

320318
synchronized (performanceCollectionData) {
321-
for (PerformanceCollectionData performanceData : performanceCollectionData) {
322-
CpuCollectionData cpuData = performanceData.getCpuData();
323-
MemoryCollectionData memoryData = performanceData.getMemoryData();
324-
if (cpuData != null) {
319+
for (final @NotNull PerformanceCollectionData data : performanceCollectionData) {
320+
final long nanoTimestamp = data.getNanoTimestamp();
321+
final long relativeStartNs = nanoTimestamp + timestampDiff;
322+
final @Nullable Double cpuUsagePercentage = data.getCpuUsagePercentage();
323+
final @Nullable Long usedHeapMemory = data.getUsedHeapMemory();
324+
final @Nullable Long usedNativeMemory = data.getUsedNativeMemory();
325+
326+
if (cpuUsagePercentage != null) {
325327
cpuUsageMeasurements.add(
326-
new ProfileMeasurementValue(
327-
cpuData.getTimestamp().nanoTimestamp() + timestampDiff,
328-
cpuData.getCpuUsagePercentage(),
329-
cpuData.getTimestamp()));
328+
new ProfileMeasurementValue(relativeStartNs, cpuUsagePercentage, nanoTimestamp));
330329
}
331-
if (memoryData != null && memoryData.getUsedHeapMemory() > -1) {
330+
if (usedHeapMemory != null) {
332331
memoryUsageMeasurements.add(
333-
new ProfileMeasurementValue(
334-
memoryData.getTimestamp().nanoTimestamp() + timestampDiff,
335-
memoryData.getUsedHeapMemory(),
336-
memoryData.getTimestamp()));
332+
new ProfileMeasurementValue(relativeStartNs, usedHeapMemory, nanoTimestamp));
337333
}
338-
if (memoryData != null && memoryData.getUsedNativeMemory() > -1) {
334+
if (usedNativeMemory != null) {
339335
nativeMemoryUsageMeasurements.add(
340-
new ProfileMeasurementValue(
341-
memoryData.getTimestamp().nanoTimestamp() + timestampDiff,
342-
memoryData.getUsedNativeMemory(),
343-
memoryData.getTimestamp()));
336+
new ProfileMeasurementValue(relativeStartNs, usedNativeMemory, nanoTimestamp));
344337
}
345338
}
346339
}
340+
347341
if (!cpuUsageMeasurements.isEmpty()) {
348342
measurementsMap.put(
349343
ProfileMeasurement.ID_CPU_USAGE,

sentry-android-core/src/test/java/io/sentry/android/core/AndroidContinuousProfilerTest.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@ import android.os.Build
55
import androidx.test.core.app.ApplicationProvider
66
import androidx.test.ext.junit.runners.AndroidJUnit4
77
import io.sentry.CompositePerformanceCollector
8-
import io.sentry.CpuCollectionData
98
import io.sentry.DataCategory
109
import io.sentry.IConnectionStatusProvider
1110
import io.sentry.ILogger
1211
import io.sentry.IScopes
13-
import io.sentry.MemoryCollectionData
1412
import io.sentry.PerformanceCollectionData
1513
import io.sentry.ProfileLifecycle
1614
import io.sentry.Sentry
1715
import io.sentry.SentryLevel
18-
import io.sentry.SentryNanotimeDate
1916
import io.sentry.SentryTracer
2017
import io.sentry.TracesSampler
2118
import io.sentry.TransactionContext
@@ -433,10 +430,11 @@ class AndroidContinuousProfilerTest {
433430
@Test
434431
fun `profiler sends chunk with measurements`() {
435432
val performanceCollector = mock<CompositePerformanceCollector>()
436-
val collectionData = PerformanceCollectionData()
433+
val collectionData = PerformanceCollectionData(10)
437434

438-
collectionData.addMemoryData(MemoryCollectionData(2, 3, SentryNanotimeDate()))
439-
collectionData.addCpuData(CpuCollectionData(3.0, SentryNanotimeDate()))
435+
collectionData.usedHeapMemory = 2
436+
collectionData.usedNativeMemory = 3
437+
collectionData.cpuUsagePercentage = 3.0
440438
whenever(performanceCollector.stop(any<String>())).thenReturn(listOf(collectionData))
441439

442440
fixture.options.compositePerformanceCollector = performanceCollector

sentry-android-core/src/test/java/io/sentry/android/core/AndroidCpuCollectorTest.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,19 @@ class AndroidCpuCollectorTest {
3131

3232
@Test
3333
fun `collect works only after setup`() {
34-
val data = PerformanceCollectionData()
34+
val data = PerformanceCollectionData(10)
3535
fixture.getSut().collect(data)
36-
assertNull(data.cpuData)
36+
assertNull(data.cpuUsagePercentage)
3737
}
3838

3939
@Test
4040
fun `when collect cpu is collected`() {
41-
val data = PerformanceCollectionData()
41+
val data = PerformanceCollectionData(10)
4242
val collector = fixture.getSut()
4343
collector.setup()
4444
collector.collect(data)
45-
val cpuData = data.cpuData
45+
val cpuData = data.cpuUsagePercentage
4646
assertNotNull(cpuData)
47-
assertNotEquals(0.0, cpuData.cpuUsagePercentage)
48-
assertNotEquals(0, cpuData.timestamp.nanoTimestamp())
47+
assertNotEquals(0.0, cpuData)
4948
}
5049
}

sentry-android-core/src/test/java/io/sentry/android/core/AndroidMemoryCollectorTest.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@ class AndroidMemoryCollectorTest {
1818

1919
@Test
2020
fun `when collect, both native and heap memory are collected`() {
21-
val data = PerformanceCollectionData()
21+
val data = PerformanceCollectionData(10)
2222
val usedNativeMemory = Debug.getNativeHeapSize() - Debug.getNativeHeapFreeSize()
2323
val usedMemory = fixture.runtime.totalMemory() - fixture.runtime.freeMemory()
2424
fixture.collector.collect(data)
25-
val memoryData = data.memoryData
26-
assertNotNull(memoryData)
27-
assertNotEquals(-1, memoryData.usedNativeMemory)
28-
assertEquals(usedNativeMemory, memoryData.usedNativeMemory)
29-
assertEquals(usedMemory, memoryData.usedHeapMemory)
30-
assertNotEquals(0, memoryData.timestamp.nanoTimestamp())
25+
assertNotNull(data.usedHeapMemory)
26+
assertNotNull(data.usedNativeMemory)
27+
assertNotEquals(-1, data.usedNativeMemory)
28+
assertEquals(usedNativeMemory, data.usedNativeMemory)
29+
assertEquals(usedMemory, data.usedHeapMemory)
3130
}
3231
}

sentry-android-core/src/test/java/io/sentry/android/core/AndroidProfilerTest.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ package io.sentry.android.core
33
import android.content.Context
44
import androidx.test.core.app.ApplicationProvider
55
import androidx.test.ext.junit.runners.AndroidJUnit4
6-
import io.sentry.CpuCollectionData
76
import io.sentry.ILogger
87
import io.sentry.ISentryExecutorService
9-
import io.sentry.MemoryCollectionData
108
import io.sentry.PerformanceCollectionData
11-
import io.sentry.SentryDate
129
import io.sentry.SentryExecutorService
1310
import io.sentry.SentryLevel
1411
import io.sentry.android.core.internal.util.SentryFrameMetricsCollector
@@ -258,15 +255,15 @@ class AndroidProfilerTest {
258255
fun `profiler includes performance measurements when passed on end`() {
259256
val profiler = fixture.getSut()
260257
val performanceCollectionData = ArrayList<PerformanceCollectionData>()
261-
var singleData = PerformanceCollectionData()
262-
val t1 = mock<SentryDate>()
263-
val t2 = mock<SentryDate>()
264-
singleData.addMemoryData(MemoryCollectionData(2, 3, t1))
265-
singleData.addCpuData(CpuCollectionData(1.4, t1))
258+
var singleData = PerformanceCollectionData(10)
259+
singleData.usedHeapMemory = 2
260+
singleData.usedNativeMemory = 3
261+
singleData.cpuUsagePercentage = 1.4
266262
performanceCollectionData.add(singleData)
267263

268-
singleData = PerformanceCollectionData()
269-
singleData.addMemoryData(MemoryCollectionData(3, 4, t2))
264+
singleData = PerformanceCollectionData(20)
265+
singleData.usedHeapMemory = 3
266+
singleData.usedNativeMemory = 4
270267
performanceCollectionData.add(singleData)
271268

272269
profiler.start()

sentry-android-core/src/test/java/io/sentry/android/core/AndroidTransactionProfilerTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import android.content.Context
44
import android.os.Build
55
import androidx.test.core.app.ApplicationProvider
66
import androidx.test.ext.junit.runners.AndroidJUnit4
7-
import io.sentry.CpuCollectionData
87
import io.sentry.ILogger
98
import io.sentry.IScopes
109
import io.sentry.ISentryExecutorService
11-
import io.sentry.MemoryCollectionData
1210
import io.sentry.PerformanceCollectionData
1311
import io.sentry.ProfilingTraceData
1412
import io.sentry.SentryLevel
@@ -459,13 +457,15 @@ class AndroidTransactionProfilerTest {
459457
fun `profiler includes performance measurements when passed on transaction finish`() {
460458
val profiler = fixture.getSut(context)
461459
val performanceCollectionData = ArrayList<PerformanceCollectionData>()
462-
var singleData = PerformanceCollectionData()
463-
singleData.addMemoryData(MemoryCollectionData(2, 3, mock()))
464-
singleData.addCpuData(CpuCollectionData(1.4, mock()))
460+
var singleData = PerformanceCollectionData(10)
461+
singleData.usedHeapMemory = 2
462+
singleData.usedNativeMemory = 3
463+
singleData.cpuUsagePercentage = 1.4
465464
performanceCollectionData.add(singleData)
466465

467-
singleData = PerformanceCollectionData()
468-
singleData.addMemoryData(MemoryCollectionData(3, 4, mock()))
466+
singleData = PerformanceCollectionData(20)
467+
singleData.usedHeapMemory = 3
468+
singleData.usedNativeMemory = 4
469469
performanceCollectionData.add(singleData)
470470

471471
profiler.start()

sentry/api/sentry.api

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,6 @@ public abstract interface class io/sentry/CompositePerformanceCollector {
334334
public abstract fun stop (Ljava/lang/String;)Ljava/util/List;
335335
}
336336

337-
public final class io/sentry/CpuCollectionData {
338-
public fun <init> (DLio/sentry/SentryDate;)V
339-
public fun getCpuUsagePercentage ()D
340-
public fun getTimestamp ()Lio/sentry/SentryDate;
341-
}
342-
343337
public final class io/sentry/CustomSamplingContext {
344338
public fun <init> ()V
345339
public fun get (Ljava/lang/String;)Ljava/lang/Object;
@@ -791,10 +785,6 @@ public abstract interface class io/sentry/ILogger {
791785
public abstract fun log (Lio/sentry/SentryLevel;Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)V
792786
}
793787

794-
public abstract interface class io/sentry/IMemoryCollector {
795-
public abstract fun collect ()Lio/sentry/MemoryCollectionData;
796-
}
797-
798788
public abstract interface class io/sentry/IOptionsObserver {
799789
public abstract fun setDist (Ljava/lang/String;)V
800790
public abstract fun setEnvironment (Ljava/lang/String;)V
@@ -1349,14 +1339,6 @@ public final class io/sentry/MeasurementUnit$Information : java/lang/Enum, io/se
13491339
public static fun values ()[Lio/sentry/MeasurementUnit$Information;
13501340
}
13511341

1352-
public final class io/sentry/MemoryCollectionData {
1353-
public fun <init> (JJLio/sentry/SentryDate;)V
1354-
public fun <init> (JLio/sentry/SentryDate;)V
1355-
public fun getTimestamp ()Lio/sentry/SentryDate;
1356-
public fun getUsedHeapMemory ()J
1357-
public fun getUsedNativeMemory ()J
1358-
}
1359-
13601342
public final class io/sentry/MonitorConfig : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
13611343
public fun <init> (Lio/sentry/MonitorSchedule;)V
13621344
public fun getCheckinMargin ()Ljava/lang/Long;
@@ -1931,11 +1913,14 @@ public final class io/sentry/OutboxSender : io/sentry/IEnvelopeSender {
19311913
}
19321914

19331915
public final class io/sentry/PerformanceCollectionData {
1934-
public fun <init> ()V
1935-
public fun addCpuData (Lio/sentry/CpuCollectionData;)V
1936-
public fun addMemoryData (Lio/sentry/MemoryCollectionData;)V
1937-
public fun getCpuData ()Lio/sentry/CpuCollectionData;
1938-
public fun getMemoryData ()Lio/sentry/MemoryCollectionData;
1916+
public fun <init> (J)V
1917+
public fun getCpuUsagePercentage ()Ljava/lang/Double;
1918+
public fun getNanoTimestamp ()J
1919+
public fun getUsedHeapMemory ()Ljava/lang/Long;
1920+
public fun getUsedNativeMemory ()Ljava/lang/Long;
1921+
public fun setCpuUsagePercentage (Ljava/lang/Double;)V
1922+
public fun setUsedHeapMemory (Ljava/lang/Long;)V
1923+
public fun setUsedNativeMemory (Ljava/lang/Long;)V
19391924
}
19401925

19411926
public final class io/sentry/ProfileChunk : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
@@ -4915,6 +4900,7 @@ public final class io/sentry/profilemeasurements/ProfileMeasurement$JsonKeys {
49154900

49164901
public final class io/sentry/profilemeasurements/ProfileMeasurementValue : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
49174902
public fun <init> ()V
4903+
public fun <init> (Ljava/lang/Long;Ljava/lang/Number;J)V
49184904
public fun <init> (Ljava/lang/Long;Ljava/lang/Number;Lio/sentry/SentryDate;)V
49194905
public fun equals (Ljava/lang/Object;)Z
49204906
public fun getRelativeStartNs ()Ljava/lang/String;

0 commit comments

Comments
 (0)