Skip to content

Commit

Permalink
feat(profiling): add private feature flag for continuous mode (#3831)
Browse files Browse the repository at this point in the history
  • Loading branch information
armcknight committed Apr 5, 2024
1 parent c3e8f71 commit b35ccd0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
4 changes: 4 additions & 0 deletions Sources/Sentry/SentryOptions.m
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ - (instancetype)init
#if SENTRY_TARGET_PROFILING_SUPPORTED
_enableProfiling = NO;
self.profilesSampleRate = nil;
_enableContinuousProfiling = NO;
#endif // SENTRY_TARGET_PROFILING_SUPPORTED
self.enableCoreDataTracing = YES;
_enableSwizzling = YES;
Expand Down Expand Up @@ -472,6 +473,9 @@ - (BOOL)validateOptions:(NSDictionary<NSString *, id> *)options

[self setBool:options[NSStringFromSelector(@selector(enableAppLaunchProfiling))]
block:^(BOOL value) { self->_enableAppLaunchProfiling = value; }];

[self setBool:options[@"enableContinuousProfiling"]
block:^(BOOL value) { self->_enableContinuousProfiling = value; }];
#endif // SENTRY_TARGET_PROFILING_SUPPORTED

[self setBool:options[@"sendClientReports"]
Expand Down
1 change: 1 addition & 0 deletions Sources/Sentry/include/SentryOptions+Private.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ FOUNDATION_EXPORT NSString *const kSentryDefaultEnvironment;
SentryOptions ()
#if SENTRY_TARGET_PROFILING_SUPPORTED
@property (nonatomic, assign) BOOL enableProfiling_DEPRECATED_TEST_ONLY;
@property (nonatomic, assign) BOOL enableContinuousProfiling;
#endif // SENTRY_TARGET_PROFILING_SUPPORTED

SENTRY_EXTERN BOOL isValidSampleRate(NSNumber *sampleRate);
Expand Down
21 changes: 13 additions & 8 deletions Tests/SentryTests/SentryOptionsTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,7 @@ - (void)assertDefaultValues:(SentryOptions *)options
# pragma clang diagnostic pop
XCTAssertNil(options.profilesSampleRate);
XCTAssertNil(options.profilesSampler);
XCTAssertFalse(options.enableContinuousProfiling);
#endif

XCTAssertTrue([options.spotlightUrl isEqualToString:@"http://localhost:8969/stream"]);
Expand Down Expand Up @@ -1005,17 +1006,20 @@ - (void)testEnableProfiling
[self testBooleanField:@"enableProfiling" defaultValue:NO];
}

- (void)testEnableContinuousProfiling
{
[self testBooleanField:@"enableContinuousProfiling" defaultValue:NO];
}

- (void)testProfilesSampleRate
{
SentryOptions *options = [self getValidOptions:@{ @"profilesSampleRate" : @0.1 }];

XCTAssertEqual(options.profilesSampleRate.doubleValue, 0.1);
}

- (void)testDefaultProfilesSampleRate
{
SentryOptions *options = [self getValidOptions:@{}];

XCTAssertEqual(options.profilesSampleRate.doubleValue, 0);
}

Expand Down Expand Up @@ -1063,20 +1067,23 @@ - (void)testIsProfilingEnabled_NothingSet_IsDisabled
{
SentryOptions *options = [[SentryOptions alloc] init];
XCTAssertFalse(options.isProfilingEnabled);
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testIsProfilingEnabled_ProfilesSampleRateSetToZero_IsDisabled
{
SentryOptions *options = [[SentryOptions alloc] init];
options.profilesSampleRate = @0.00;
XCTAssertFalse(options.isProfilingEnabled);
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testIsProfilingEnabled_ProfilesSampleRateSet_IsEnabled
{
SentryOptions *options = [[SentryOptions alloc] init];
options.profilesSampleRate = @0.01;
XCTAssertTrue(options.isProfilingEnabled);
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testIsProfilingEnabled_ProfilesSamplerSet_IsEnabled
Expand All @@ -1087,6 +1094,7 @@ - (void)testIsProfilingEnabled_ProfilesSamplerSet_IsEnabled
return @0.0;
};
XCTAssertTrue(options.isProfilingEnabled);
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testIsProfilingEnabled_EnableProfilingSet_IsEnabled
Expand All @@ -1097,11 +1105,7 @@ - (void)testIsProfilingEnabled_EnableProfilingSet_IsEnabled
options.enableProfiling = YES;
# pragma clang diagnostic pop
XCTAssertTrue(options.isProfilingEnabled);
}

- (double)profilesSamplerCallback:(NSDictionary *)context
{
return 0.1;
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testProfilesSampler
Expand All @@ -1115,6 +1119,7 @@ - (void)testProfilesSampler

SentrySamplingContext *context = [[SentrySamplingContext alloc] init];
XCTAssertEqual(options.profilesSampler(context), @1.0);
XCTAssertFalse(options.enableContinuousProfiling);
}

- (void)testDefaultProfilesSampler
Expand All @@ -1129,7 +1134,7 @@ - (void)testGarbageProfilesSampler_ReturnsNil
XCTAssertNil(options.profilesSampler);
}

#endif
#endif // SENTRY_TARGET_PROFILING_SUPPORTED

- (void)testInAppIncludes
{
Expand Down

0 comments on commit b35ccd0

Please sign in to comment.