Skip to content

Commit 4a7403a

Browse files
committed
add service loader tests for profiler and profile converter
1 parent 3f83146 commit 4a7403a

File tree

6 files changed

+110
-1
lines changed

6 files changed

+110
-1
lines changed

sentry-async-profiler/api/sentry-async-profiler.api

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public final class io/sentry/asyncprofiler/provider/AsyncProfilerProfileConverte
3030
public fun getProfileConverter ()Lio/sentry/IProfileConverter;
3131
}
3232

33+
public final class io/sentry/asyncprofiler/provider/AsyncProfilerProfileConverterProvider$AsyncProfilerProfileConverter : io/sentry/IProfileConverter {
34+
public fun <init> ()V
35+
public fun convertFromFile (Ljava/nio/file/Path;)Lio/sentry/protocol/profiling/SentryProfile;
36+
}
37+
3338
public final class io/sentry/asyncprofiler/vendor/asyncprofiler/convert/Arguments {
3439
public field alloc Z
3540
public field bci Z

sentry-async-profiler/src/main/java/io/sentry/asyncprofiler/provider/AsyncProfilerProfileConverterProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public final class AsyncProfilerProfileConverterProvider implements JavaProfileC
2121
* Internal implementation of IProfileConverter that delegates to
2222
* JfrAsyncProfilerToSentryProfileConverter.
2323
*/
24-
private static final class AsyncProfilerProfileConverter implements IProfileConverter {
24+
public static final class AsyncProfilerProfileConverter implements IProfileConverter {
2525

2626
@Override
2727
public @NotNull io.sentry.protocol.profiling.SentryProfile convertFromFile(
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.sentry.asyncprofiler
2+
3+
import io.sentry.ILogger
4+
import io.sentry.asyncprofiler.profiling.JavaContinuousProfiler
5+
import io.sentry.asyncprofiler.provider.AsyncProfilerProfileConverterProvider
6+
import io.sentry.profiling.ProfilingServiceLoader
7+
import kotlin.test.Test
8+
import org.mockito.kotlin.mock
9+
10+
class JavaContinuousProfilingServiceLoaderTest {
11+
@Test
12+
fun loadsAsyncProfilerProfileConverter() {
13+
val service = ProfilingServiceLoader.loadProfileConverter()
14+
assert(service is AsyncProfilerProfileConverterProvider.AsyncProfilerProfileConverter)
15+
}
16+
17+
@Test
18+
fun loadsJavaAsyncProfiler() {
19+
val logger = mock<ILogger>()
20+
21+
val service = ProfilingServiceLoader.loadContinuousProfiler(logger, "", 10, null)
22+
assert(service is JavaContinuousProfiler)
23+
}
24+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package io.sentry.profiling
2+
3+
import io.sentry.IContinuousProfiler
4+
import io.sentry.ILogger
5+
import io.sentry.IProfileConverter
6+
import io.sentry.ISentryExecutorService
7+
import io.sentry.ProfileLifecycle
8+
import io.sentry.TracesSampler
9+
import io.sentry.protocol.SentryId
10+
import io.sentry.protocol.profiling.SentryProfile
11+
import java.nio.file.Path
12+
import kotlin.test.Test
13+
import org.mockito.kotlin.mock
14+
15+
class ProfilingServiceLoaderTest {
16+
@Test
17+
fun loadsProfileConverterStub() {
18+
val service = ProfilingServiceLoader.loadProfileConverter()
19+
assert(service is ProfileConverterStub)
20+
}
21+
22+
@Test
23+
fun loadsProfilerStub() {
24+
val logger = mock<ILogger>()
25+
26+
val service = ProfilingServiceLoader.loadContinuousProfiler(logger, "", 10, null)
27+
assert(service is ContinuousProfilerStub)
28+
}
29+
}
30+
31+
class JavaProfileConverterProviderStub : JavaProfileConverterProvider {
32+
override fun getProfileConverter(): IProfileConverter? {
33+
return ProfileConverterStub()
34+
}
35+
}
36+
37+
class ProfileConverterStub() : IProfileConverter {
38+
override fun convertFromFile(jfrFilePath: Path): SentryProfile {
39+
TODO("Not yet implemented")
40+
}
41+
}
42+
43+
class JavaProfilerProviderStub : JavaContinuousProfilerProvider {
44+
override fun getContinuousProfiler(
45+
logger: ILogger?,
46+
profilingTracesDirPath: String?,
47+
profilingTracesHz: Int,
48+
executorService: ISentryExecutorService?,
49+
): IContinuousProfiler {
50+
return ContinuousProfilerStub()
51+
}
52+
}
53+
54+
class ContinuousProfilerStub() : IContinuousProfiler {
55+
override fun isRunning(): Boolean {
56+
TODO("Not yet implemented")
57+
}
58+
59+
override fun startProfiler(profileLifecycle: ProfileLifecycle, tracesSampler: TracesSampler) {
60+
TODO("Not yet implemented")
61+
}
62+
63+
override fun stopProfiler(profileLifecycle: ProfileLifecycle) {
64+
TODO("Not yet implemented")
65+
}
66+
67+
override fun close(isTerminating: Boolean) {
68+
TODO("Not yet implemented")
69+
}
70+
71+
override fun reevaluateSampling() {
72+
TODO("Not yet implemented")
73+
}
74+
75+
override fun getProfilerId(): SentryId {
76+
TODO("Not yet implemented")
77+
}
78+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.sentry.profiling.JavaProfilerProviderStub
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.sentry.profiling.JavaProfileConverterProviderStub

0 commit comments

Comments
 (0)