Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: custom apm #155

Draft
wants to merge 48 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4490409
add basic instrumentation setup
buenaflor Apr 27, 2023
34c70d8
format
buenaflor Apr 27, 2023
265ebef
add transaction wrappers
buenaflor Apr 28, 2023
ad838ee
add span provider
buenaflor Apr 28, 2023
02286be
improvement
buenaflor May 2, 2023
9fbd4b6
Merge branch 'main' into feat/custom-transactions
buenaflor May 2, 2023
eb51730
remove dead code
buenaflor May 2, 2023
385f8ba
add basic setup for jvm
buenaflor May 2, 2023
a9c3bb4
add tracesSampler for apple
buenaflor May 2, 2023
7d15ad0
add tests
buenaflor May 3, 2023
71c8ba4
add tests and sample code
buenaflor May 4, 2023
d924a22
adjust boolean decision
buenaflor May 4, 2023
79a82bf
remove unnecessary code
buenaflor May 4, 2023
539d6bf
change doc of SpanContexT
buenaflor May 4, 2023
9f932e4
Merge branch 'main' into feat/apm
buenaflor Nov 23, 2023
a21eb17
Update providers
buenaflor Nov 23, 2023
50688e2
Fix test
buenaflor Nov 23, 2023
201eb34
Add comments
buenaflor Nov 23, 2023
9d59d28
Formatting
buenaflor Nov 23, 2023
d9d2cc8
Adjust tests
buenaflor Nov 23, 2023
71b7218
improve
buenaflor Nov 23, 2023
39acf70
improve
buenaflor Nov 23, 2023
e29cb9c
Format
buenaflor Nov 23, 2023
9d65233
Update demos
buenaflor Nov 23, 2023
7fc7469
Update CHANGELOG
buenaflor Nov 23, 2023
aaafa5e
Update API
buenaflor Nov 23, 2023
a29e638
Fix tests
buenaflor Nov 23, 2023
816f2df
Fix sample
buenaflor Nov 23, 2023
21dcc4b
Format code
getsentry-bot Nov 23, 2023
46dc594
Formatting
buenaflor Nov 23, 2023
3869b4b
Remove instrumenter
buenaflor Nov 23, 2023
645d4b1
Format
buenaflor Nov 23, 2023
b1c3b4e
Add more startTransaction methods
buenaflor Nov 24, 2023
41a4d4b
Update tests
buenaflor Nov 24, 2023
c58cfb0
Update sample
buenaflor Nov 24, 2023
3bf1246
apiDump
buenaflor Nov 24, 2023
a460bce
Update comment
buenaflor Nov 24, 2023
4738932
Remove unnecessary test
buenaflor Nov 24, 2023
122de2a
Merge branch 'main' into feat/apm
buenaflor Dec 4, 2023
2054042
Merge branch 'main' into feat/apm
buenaflor Dec 7, 2023
e43a09d
Merge branch 'main' into feat/apm
buenaflor Dec 7, 2023
c3cf0ba
Fix jvm api error
buenaflor Dec 7, 2023
417ce29
Format code
getsentry-bot Dec 7, 2023
590bb64
trigger ci
buenaflor Dec 7, 2023
264dcdb
Retrigger ci
buenaflor Dec 7, 2023
78d7ab1
Update provider to adapter
buenaflor Dec 11, 2023
b10efb0
Revert deps bump
buenaflor Dec 11, 2023
2b27001
Fix analyze
buenaflor Dec 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### Features

- Add APM API ([#155](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/155))

### Dependencies

- Bump Java SDK from v6.33.1 to v7.0.0 ([#157](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/157))
Expand Down
4 changes: 2 additions & 2 deletions config/detekt/baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>SwallowedException:CocoaScopeProvider.kt$CocoaScopeProvider$e: Throwable</ID>
<ID>SwallowedException:ScopeAdapter.apple.kt$ScopeAdapter$e: Throwable</ID>
<ID>SwallowedException:SentryLevel.kt$SentryLevel.Companion$throwable: Throwable</ID>
<ID>TooGenericExceptionCaught:CocoaScopeProvider.kt$CocoaScopeProvider$e: Throwable</ID>
<ID>TooGenericExceptionCaught:ScopeAdapter.apple.kt$ScopeAdapter$e: Throwable</ID>
<ID>TooGenericExceptionCaught:SentryLevel.kt$SentryLevel.Companion$throwable: Throwable</ID>
<ID>TooGenericExceptionThrown:SentryKMP.kt$Sentry$throw RuntimeException("Uncaught Exception from Kotlin Multiplatform.")</ID>
</CurrentIssues>
Expand Down
13 changes: 10 additions & 3 deletions config/detekt/detekt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ style:
UnusedPrivateMember:
excludes:
- "**/Attachment.kt"
MagicNumber:
excludes:
- "**/SpanStatus*"
- "**/TransactionNameSource*"
naming:
MatchingDeclarationName:
active: false
Expand All @@ -21,12 +25,15 @@ complexity:
excludes: [
"**/SentryKMP.kt",
"**/SentryBridge.*",
"**/CocoaScopeProvider.kt",
"**/ScopeAdapter.*",
"**/Scope.kt",
"**/JvmScopeProvider.kt",
"**/Breadcrumb.kt",
]
LongMethod:
excludes:
- "**/SentryOptionsExtensions.*"
- "**/SentryOptions*"
CyclomaticComplexMethod:
excludes:
- "**/SpanStatus*"
- "**/SentryOptions*"

Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,19 @@ public final class io/sentry/kotlin/multiplatform/HttpStatusCodeRange {
public final class io/sentry/kotlin/multiplatform/HttpStatusCodeRange$Companion {
}

public final class io/sentry/kotlin/multiplatform/SamplingContext {
public fun <init> (Lio/sentry/kotlin/multiplatform/TransactionContext;Ljava/util/Map;)V
public final fun component1 ()Lio/sentry/kotlin/multiplatform/TransactionContext;
public final fun component2 ()Ljava/util/Map;
public final fun copy (Lio/sentry/kotlin/multiplatform/TransactionContext;Ljava/util/Map;)Lio/sentry/kotlin/multiplatform/SamplingContext;
public static synthetic fun copy$default (Lio/sentry/kotlin/multiplatform/SamplingContext;Lio/sentry/kotlin/multiplatform/TransactionContext;Ljava/util/Map;ILjava/lang/Object;)Lio/sentry/kotlin/multiplatform/SamplingContext;
public fun equals (Ljava/lang/Object;)Z
public final fun getCustomSamplingContext ()Ljava/util/Map;
public final fun getTransactionContext ()Lio/sentry/kotlin/multiplatform/TransactionContext;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public abstract interface class io/sentry/kotlin/multiplatform/Scope {
public abstract fun addAttachment (Lio/sentry/kotlin/multiplatform/Attachment;)V
public abstract fun addBreadcrumb (Lio/sentry/kotlin/multiplatform/protocol/Breadcrumb;)V
Expand Down Expand Up @@ -82,9 +95,14 @@ public final class io/sentry/kotlin/multiplatform/Sentry {
public final fun close ()V
public final fun configureScope (Lkotlin/jvm/functions/Function1;)V
public final fun crash ()V
public final fun getSpan ()Lio/sentry/kotlin/multiplatform/Span;
public final fun init (Landroid/content/Context;Lkotlin/jvm/functions/Function1;)V
public final fun init (Lkotlin/jvm/functions/Function1;)V
public final fun setUser (Lio/sentry/kotlin/multiplatform/protocol/User;)V
public final fun startTransaction (Lio/sentry/kotlin/multiplatform/TransactionContext;Ljava/util/Map;)Lio/sentry/kotlin/multiplatform/Span;
public final fun startTransaction (Lio/sentry/kotlin/multiplatform/TransactionContext;Ljava/util/Map;Z)Lio/sentry/kotlin/multiplatform/Span;
public final fun startTransaction (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/Span;
public final fun startTransaction (Ljava/lang/String;Ljava/lang/String;Z)Lio/sentry/kotlin/multiplatform/Span;
}

public abstract class io/sentry/kotlin/multiplatform/SentryBaseEvent {
Expand Down Expand Up @@ -178,6 +196,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
public final fun getSdk ()Lio/sentry/kotlin/multiplatform/protocol/SdkVersion;
public final fun getSessionTrackingIntervalMillis ()J
public final fun getTracesSampleRate ()Ljava/lang/Double;
public final fun getTracesSampler ()Lkotlin/jvm/functions/Function1;
public final fun setAttachScreenshot (Z)V
public final fun setAttachStackTrace (Z)V
public final fun setAttachThreads (Z)V
Expand All @@ -199,6 +218,78 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
public final fun setSdk (Lio/sentry/kotlin/multiplatform/protocol/SdkVersion;)V
public final fun setSessionTrackingIntervalMillis (J)V
public final fun setTracesSampleRate (Ljava/lang/Double;)V
public final fun setTracesSampler (Lkotlin/jvm/functions/Function1;)V
}

public abstract interface class io/sentry/kotlin/multiplatform/Span {
public abstract fun finish ()V
public abstract fun finish (Lio/sentry/kotlin/multiplatform/SpanStatus;)V
public abstract fun getData (Ljava/lang/String;)Ljava/lang/Object;
public abstract fun getDescription ()Ljava/lang/String;
public abstract fun getOperation ()Ljava/lang/String;
public abstract fun getParentSpanId ()Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public abstract fun getSpanId ()Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public abstract fun getStatus ()Lio/sentry/kotlin/multiplatform/SpanStatus;
public abstract fun getTag (Ljava/lang/String;)Ljava/lang/String;
public abstract fun isFinished ()Z
public abstract fun setData (Ljava/lang/String;Ljava/lang/Object;)V
public abstract fun setDescription (Ljava/lang/String;)V
public abstract fun setOperation (Ljava/lang/String;)V
public abstract fun setStatus (Lio/sentry/kotlin/multiplatform/SpanStatus;)V
public abstract fun setTag (Ljava/lang/String;Ljava/lang/String;)V
public abstract fun startChild (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/Span;
public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/Span;
}

public abstract interface class io/sentry/kotlin/multiplatform/SpanContext {
public abstract fun getDescription ()Ljava/lang/String;
public abstract fun getOperation ()Ljava/lang/String;
public abstract fun getParentSpanId ()Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public abstract fun getSampled ()Ljava/lang/Boolean;
public abstract fun getSpanId ()Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public abstract fun getTraceId ()Lio/sentry/kotlin/multiplatform/protocol/SentryId;
}

public final class io/sentry/kotlin/multiplatform/SpanStatus : java/lang/Enum {
public static final field ABORTED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field ALREADY_EXISTS Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field CANCELLED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field Companion Lio/sentry/kotlin/multiplatform/SpanStatus$Companion;
public static final field DATA_LOSS Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field DEADLINE_EXCEEDED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field FAILED_PRECONDITION Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field INTERNAL_ERROR Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field INVALID_ARGUMENT Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field NOT_FOUND Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field OK Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field OUT_OF_RANGE Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field PERMISSION_DENIED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field RESOURCE_EXHAUSTED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field UNAUTHENTICATED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field UNAVAILABLE Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field UNIMPLEMENTED Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field UNKNOWN Lio/sentry/kotlin/multiplatform/SpanStatus;
public static final field UNKNOWN_ERROR Lio/sentry/kotlin/multiplatform/SpanStatus;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/SpanStatus;
public static fun values ()[Lio/sentry/kotlin/multiplatform/SpanStatus;
}

public final class io/sentry/kotlin/multiplatform/SpanStatus$Companion {
public final fun fromHttpStatusCode (I)Lio/sentry/kotlin/multiplatform/SpanStatus;
public final fun fromHttpStatusCode (Ljava/lang/Integer;Lio/sentry/kotlin/multiplatform/SpanStatus;)Lio/sentry/kotlin/multiplatform/SpanStatus;
}

public abstract interface class io/sentry/kotlin/multiplatform/TransactionContext : io/sentry/kotlin/multiplatform/SpanContext {
public abstract fun getName ()Ljava/lang/String;
public abstract fun getParentSampled ()Ljava/lang/Boolean;
public abstract fun getTransactionNameSource ()Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
}

public final class io/sentry/kotlin/multiplatform/TransactionContextKt {
public static final fun TransactionContext (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/TransactionContext;
public static final fun TransactionContext (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/TransactionContext;
public static final fun TransactionContext (Ljava/lang/String;Ljava/lang/String;Z)Lio/sentry/kotlin/multiplatform/TransactionContext;
}

public final class io/sentry/kotlin/multiplatform/protocol/Breadcrumb {
Expand Down Expand Up @@ -327,6 +418,34 @@ public final class io/sentry/kotlin/multiplatform/protocol/SentryId$Companion {
public final fun getEMPTY_ID ()Lio/sentry/kotlin/multiplatform/protocol/SentryId;
}

public final class io/sentry/kotlin/multiplatform/protocol/SpanId {
public static final field Companion Lio/sentry/kotlin/multiplatform/protocol/SpanId$Companion;
public fun <init> (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public static synthetic fun copy$default (Lio/sentry/kotlin/multiplatform/protocol/SpanId;Ljava/lang/String;ILjava/lang/Object;)Lio/sentry/kotlin/multiplatform/protocol/SpanId;
public fun equals (Ljava/lang/Object;)Z
public final fun getSpanIdString ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/sentry/kotlin/multiplatform/protocol/SpanId$Companion {
public final fun getEMPTY_ID ()Lio/sentry/kotlin/multiplatform/protocol/SpanId;
}

public final class io/sentry/kotlin/multiplatform/protocol/TransactionNameSource : java/lang/Enum {
public static final field COMPONENT Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static final field CUSTOM Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static final field ROUTE Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static final field TASK Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static final field URL Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static final field VIEW Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
public static fun values ()[Lio/sentry/kotlin/multiplatform/protocol/TransactionNameSource;
}

public final class io/sentry/kotlin/multiplatform/protocol/User {
public fun <init> ()V
public fun <init> (Lio/sentry/kotlin/multiplatform/protocol/User;)V
Expand Down
Loading
Loading