Skip to content

Commit a47828e

Browse files
committed
Changed it to pass the AttributeValidator in as a parameter to the handled exception, so it can be replaced for testing
1 parent ac96dc0 commit a47828e

File tree

5 files changed

+46
-23
lines changed

5 files changed

+46
-23
lines changed

Agent/General/NewRelicAgentInternal.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
#import "NRMAUDIDManager.h"
5555
#import "NRMASupportMetricHelper.h"
5656
#import "NRAutoLogCollector.h"
57+
#import "NRMAAttributeValidator.h"
5758

5859

5960
// Support for teardown and re-setup of the agent within a process lifetime for our test harness
@@ -568,7 +569,8 @@ - (void) onSessionStart {
568569
sessionStartTime:self.appSessionStartDate
569570
agentConfiguration:self.agentConfiguration
570571
platform:[NewRelicInternalUtils osName]
571-
sessionId:[self currentSessionId]];
572+
sessionId:[self currentSessionId]
573+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
572574

573575
if (status != NotReachable) { // Because we support offline mode check if we're online before sending the handled exceptions
574576
[self.handledExceptionsController processAndPublishPersistedReports];

Agent/HandledException/NRMAHandledExceptions.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ extern const NSString* kHexBackupStoreFolder;
2424
sessionStartTime:(NSDate*)sessionStartDate
2525
agentConfiguration:(NRMAAgentConfiguration*)agentConfiguration
2626
platform:(NSString*)platform
27-
sessionId:(NSString*)sessionId;
27+
sessionId:(NSString*)sessionId
28+
attributeValidator:(id<AttributeValidatorProtocol>) attributeValidator;
2829

2930
- (void) recordHandledException:(NSException*) exception
3031
attributes:(NSDictionary* _Nullable)attributes;

Agent/HandledException/NRMAHandledExceptions.mm

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ - (void) dealloc {
5151

5252
self.sessionId = nil;
5353
self.sessionStartDate = nil;
54-
_attributeValidator = nil;
54+
[_attributeValidator release];
5555

5656
[super dealloc];
5757
}
@@ -60,7 +60,8 @@ - (instancetype) initWithAnalyticsController:(NRMAAnalytics*)analytics
6060
sessionStartTime:(NSDate*)sessionStartDate
6161
agentConfiguration:(NRMAAgentConfiguration*)agentConfiguration
6262
platform:(NSString*)platform
63-
sessionId:(NSString*)sessionId {
63+
sessionId:(NSString*)sessionId
64+
attributeValidator:(id<AttributeValidatorProtocol>) attributeValidator {
6465
if (analytics == nil || sessionStartDate == nil || [agentConfiguration applicationToken] == nil || platform == nil || sessionId == nil) {
6566
NSMutableArray* missingParams = [[NSMutableArray new] autorelease];
6667
if ([agentConfiguration applicationToken] == nil) [missingParams addObject:@"appToken"];
@@ -75,7 +76,7 @@ - (instancetype) initWithAnalyticsController:(NRMAAnalytics*)analytics
7576
if (self) {
7677
analyticsParent = analytics;
7778

78-
_attributeValidator = [[NRMAAttributeValidator alloc] init];
79+
_attributeValidator = [attributeValidator retain];
7980

8081
_analytics = std::shared_ptr<NewRelic::AnalyticsController>([analytics analyticsController]);
8182
self.sessionStartDate = sessionStartDate;

Tests/Stress-Tests/Handled Exception Tests/NRMAHandledExcaptionStressor.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ - (void)setUp {
4545
sessionStartTime:[NSDate date]
4646
agentConfiguration:_agentConfiguration
4747
platform:@"iOS"
48-
sessionId:@"id"];
48+
sessionId:@"id"
49+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
4950

5051
NSUInteger procCount = [[NSProcessInfo processInfo] processorCount];
5152
self.semaphore = dispatch_semaphore_create(procCount);

Tests/Unit-Tests/NewRelicAgentTests/Handled-Exception-Tests/TestHandledExceptionController.mm

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#import "NRMAAgentConfiguration.h"
1414

1515
#import "NewRelicInternalUtils.h"
16+
#import "NRMAAttributeValidator.h"
1617

1718
#import <Hex/HexContext.hpp>
1819
#import "NRAgentTestBase.h"
@@ -63,14 +64,16 @@ - (void) testBadParams {
6364
sessionStartTime:0
6465
agentConfiguration:nil
6566
platform:nil
66-
sessionId:nil]);
67+
sessionId:nil
68+
attributeValidator:nil]);
6769

6870
NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
6971
NRMAHandledExceptions* exceptions = [[NRMAHandledExceptions alloc] initWithAnalyticsController:nil
7072
sessionStartTime:0
7173
agentConfiguration:nil
7274
platform:nil
73-
sessionId:nil];
75+
sessionId:nil
76+
attributeValidator:nil];
7477

7578

7679
XCTAssertTrue(exceptions == nil);
@@ -81,7 +84,8 @@ - (void) testBadParams {
8184
sessionStartTime:0
8285
agentConfiguration:nil
8386
platform:nil
84-
sessionId:nil];
87+
sessionId:nil
88+
attributeValidator:nil];
8589

8690
XCTAssertTrue(exceptions == nil);
8791

@@ -94,7 +98,8 @@ - (void) testBadParams {
9498
sessionStartTime:0
9599
agentConfiguration:agentConfig
96100
platform:nil
97-
sessionId:nil];
101+
sessionId:nil
102+
attributeValidator:nil];
98103

99104
XCTAssertTrue(exceptions == nil);
100105

@@ -104,7 +109,8 @@ - (void) testBadParams {
104109
sessionStartTime:0
105110
agentConfiguration:agentConfig
106111
platform:@"iOS"
107-
sessionId:nil];
112+
sessionId:nil
113+
attributeValidator:nil];
108114

109115
XCTAssertTrue(exceptions == nil);
110116

@@ -119,14 +125,16 @@ - (void) testBadParamsNewEventSystem {
119125
sessionStartTime:0
120126
agentConfiguration:nil
121127
platform:nil
122-
sessionId:nil]);
128+
sessionId:nil
129+
attributeValidator:nil]);
123130

124131
NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
125132
NRMAHandledExceptions* exceptions = [[NRMAHandledExceptions alloc] initWithAnalyticsController:nil
126133
sessionStartTime:0
127134
agentConfiguration:nil
128135
platform:nil
129-
sessionId:nil];
136+
sessionId:nil
137+
attributeValidator:nil];
130138

131139

132140
XCTAssertTrue(exceptions == nil);
@@ -137,7 +145,8 @@ - (void) testBadParamsNewEventSystem {
137145
sessionStartTime:0
138146
agentConfiguration:nil
139147
platform:nil
140-
sessionId:nil];
148+
sessionId:nil
149+
attributeValidator:nil];
141150

142151
XCTAssertTrue(exceptions == nil);
143152

@@ -150,7 +159,8 @@ - (void) testBadParamsNewEventSystem {
150159
sessionStartTime:0
151160
agentConfiguration:agentConfig
152161
platform:nil
153-
sessionId:nil];
162+
sessionId:nil
163+
attributeValidator:nil];
154164

155165
XCTAssertTrue(exceptions == nil);
156166

@@ -160,7 +170,8 @@ - (void) testBadParamsNewEventSystem {
160170
sessionStartTime:0
161171
agentConfiguration:agentConfig
162172
platform:@"iOS"
163-
sessionId:nil];
173+
sessionId:nil
174+
attributeValidator:nil];
164175

165176
XCTAssertTrue(exceptions == nil);
166177

@@ -180,7 +191,8 @@ - (void) testHandleException {
180191
sessionStartTime:[NSDate new]
181192
agentConfiguration:agentConfig
182193
platform:[NewRelicInternalUtils osName]
183-
sessionId:@"sessionId"];
194+
sessionId:@"sessionId"
195+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
184196

185197
XCTAssertNoThrow([hexController recordHandledException:[NSException exceptionWithName:@"Hot Tea Exception"
186198
reason:@"the Tea is too hot"
@@ -211,7 +223,8 @@ - (void) testHandleExceptionWithStackTrace {
211223
sessionStartTime:[NSDate new]
212224
agentConfiguration:agentConfig
213225
platform:[NewRelicInternalUtils osName]
214-
sessionId:@"sessionId"];
226+
sessionId:@"sessionId"
227+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
215228

216229
id dict = @{@"name": @"Exception name not found",
217230
@"reason": @"Reason not found",
@@ -238,7 +251,8 @@ - (void) testHandleExceptionWithStackTraceNewEventSystem {
238251
sessionStartTime:[NSDate new]
239252
agentConfiguration:agentConfig
240253
platform:[NewRelicInternalUtils osName]
241-
sessionId:@"sessionId"];
254+
sessionId:@"sessionId"
255+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
242256

243257
id dict = @{@"name": @"Exception name not found",
244258
@"reason": @"Reason not found",
@@ -266,7 +280,8 @@ - (void) testPlatform {
266280
sessionStartTime:[NSDate new]
267281
agentConfiguration:agentConfig
268282
platform:[NewRelicInternalUtils osName]
269-
sessionId:@"sessionId"];
283+
sessionId:@"sessionId"
284+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
270285
XCTAssertTrue([hexController fbsPlatformFromString:@"iOS"] == com::newrelic::mobile::fbs::Platform_iOS, @"Method returned %d, but should be %d", [hexController fbsPlatformFromString:@"iOS"],com::newrelic::mobile::fbs::Platform_iOS );
271286
XCTAssertTrue([hexController fbsPlatformFromString:@"tvOS"] == com::newrelic::mobile::fbs::Platform_tvOS,@"Method returned %d, but should be %d", [hexController fbsPlatformFromString:@"tvOS"],com::newrelic::mobile::fbs::Platform_tvOS);
272287

@@ -284,7 +299,8 @@ - (void) testDontRecordUnThrownExceptions {
284299
sessionStartTime:[NSDate new]
285300
agentConfiguration:agentConfig
286301
platform:[NewRelicInternalUtils osName]
287-
sessionId:@"sessionId"];
302+
sessionId:@"sessionId"
303+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
288304

289305
id mockLogger = [OCMockObject mockForClass:[NRLogger class]];
290306

@@ -319,7 +335,8 @@ - (void) testRecordError {
319335
sessionStartTime:[NSDate new]
320336
agentConfiguration:agentConfig
321337
platform:[NewRelicInternalUtils osName]
322-
sessionId:@"sessionId"];
338+
sessionId:@"sessionId"
339+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
323340

324341

325342
NSError* error = [NSError errorWithDomain:@"" code:NSURLErrorUnknown userInfo:@{}];
@@ -351,7 +368,8 @@ - (void) testRecordErrorNewEventSystem {
351368
sessionStartTime:[NSDate new]
352369
agentConfiguration:agentConfig
353370
platform:[NewRelicInternalUtils osName]
354-
sessionId:@"sessionId"];
371+
sessionId:@"sessionId"
372+
attributeValidator:[[NRMAAttributeValidator alloc] init]];
355373

356374

357375
NSError* error = [NSError errorWithDomain:@"" code:NSURLErrorUnknown userInfo:@{}];

0 commit comments

Comments
 (0)