Skip to content

Commit 4ef85d2

Browse files
ref: Pass reachability to init for HTTPTransport (#6991)
Instead of retrieving the reachability class via the DependencyContainer, pass it in via the init method.
1 parent 3da037d commit 4ef85d2

10 files changed

+43
-24
lines changed

Sources/Sentry/SentryClient.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,12 @@ - (_Nullable instancetype)initWithOptions:(SentryOptions *)options
7272
return nil;
7373
}
7474

75-
NSArray<id<SentryTransport>> *transports =
76-
[SentryTransportFactory initTransports:options
77-
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
78-
sentryFileManager:fileManager
79-
rateLimits:SentryDependencyContainer.sharedInstance.rateLimits];
75+
NSArray<id<SentryTransport>> *transports = [SentryTransportFactory
76+
initTransports:options
77+
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
78+
sentryFileManager:fileManager
79+
rateLimits:SentryDependencyContainer.sharedInstance.rateLimits
80+
reachability:SentryDependencyContainer.sharedInstance.reachability];
8081

8182
SentryTransportAdapter *transportAdapter =
8283
[[SentryTransportAdapter alloc] initWithTransports:transports options:options];

Sources/Sentry/SentryHttpTransport.m

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ @interface SentryHttpTransport () <SentryReachabilityObserver>
2525
@property (nonatomic, strong) SentryDispatchQueueWrapper *dispatchQueue;
2626
@property (nonatomic, strong) dispatch_group_t dispatchGroup;
2727
@property (nonatomic, strong) id<SentryCurrentDateProvider> dateProvider;
28+
@property (nonatomic, strong) SentryReachability *reachability;
2829

2930
#if defined(SENTRY_TEST) || defined(SENTRY_TEST_CI) || defined(DEBUG)
3031
@property (nullable, nonatomic, strong) void (^startFlushCallback)(void);
@@ -63,6 +64,7 @@ - (id)initWithDsn:(SentryDsn *)dsn
6364
rateLimits:(id<SentryRateLimits>)rateLimits
6465
envelopeRateLimit:(SentryEnvelopeRateLimit *)envelopeRateLimit
6566
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
67+
reachability:(SentryReachability *)reachability
6668
{
6769
if (self = [super init]) {
6870
self.dsn = dsn;
@@ -76,6 +78,7 @@ - (id)initWithDsn:(SentryDsn *)dsn
7678
self.dispatchQueue = dispatchQueueWrapper;
7779
self.dateProvider = dateProvider;
7880
self.dispatchGroup = dispatch_group_create();
81+
self.reachability = reachability;
7982
_isSending = NO;
8083
_isFlushing = NO;
8184
self.discardedEvents = [NSMutableDictionary new];
@@ -90,7 +93,7 @@ - (id)initWithDsn:(SentryDsn *)dsn
9093

9194
[self sendAllCachedEnvelopes];
9295

93-
[SentryDependencyContainer.sharedInstance.reachability addObserver:self];
96+
[self.reachability addObserver:self];
9497
}
9598
return self;
9699
}
@@ -107,7 +110,7 @@ - (void)connectivityChanged:(BOOL)connected typeDescription:(nonnull NSString *)
107110

108111
- (void)dealloc
109112
{
110-
[SentryDependencyContainer.sharedInstance.reachability removeObserver:self];
113+
[self.reachability removeObserver:self];
111114
}
112115

113116
- (void)sendEnvelope:(SentryEnvelope *)envelope

Sources/Sentry/SentryTransportFactory.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ @implementation SentryTransportFactory
2121
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
2222
sentryFileManager:(SentryFileManager *)sentryFileManager
2323
rateLimits:(id<SentryRateLimits>)rateLimits
24+
reachability:(SentryReachability *)reachability
2425
{
2526
NSMutableArray<id<SentryTransport>> *transports = [NSMutableArray array];
2627

@@ -60,7 +61,8 @@ @implementation SentryTransportFactory
6061
requestBuilder:requestBuilder
6162
rateLimits:rateLimits
6263
envelopeRateLimit:envelopeRateLimit
63-
dispatchQueueWrapper:dispatchQueueWrapper];
64+
dispatchQueueWrapper:dispatchQueueWrapper
65+
reachability:reachability];
6466

6567
[transports addObject:httpTransport];
6668
} else {

Sources/Sentry/include/SentryHttpTransport.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
@class SentryNSURLRequestBuilder;
99
@class SentryDsn;
1010
@class SentryFileManager;
11+
@class SentryReachability;
1112
@protocol SentryCurrentDateProvider;
1213
@protocol SentryRateLimits;
1314

@@ -25,7 +26,8 @@ SENTRY_NO_INIT
2526
requestBuilder:(SentryNSURLRequestBuilder *)requestBuilder
2627
rateLimits:(id<SentryRateLimits>)rateLimits
2728
envelopeRateLimit:(SentryEnvelopeRateLimit *)envelopeRateLimit
28-
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper;
29+
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
30+
reachability:(SentryReachability *)reachability;
2931

3032
@end
3133

Sources/Sentry/include/SentryTransportFactory.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
@class SentryFileManager;
44
@class SentryOptions;
5+
@class SentryReachability;
56
@protocol SentryCurrentDateProvider;
67
@protocol SentryRateLimits;
78

@@ -13,7 +14,8 @@ NS_SWIFT_NAME(TransportInitializer)
1314
+ (NSArray<id<SentryTransport>> *)initTransports:(SentryOptions *)options
1415
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
1516
sentryFileManager:(SentryFileManager *)sentryFileManager
16-
rateLimits:(id<SentryRateLimits>)rateLimits;
17+
rateLimits:(id<SentryRateLimits>)rateLimits
18+
reachability:(SentryReachability *)reachability;
1719

1820
@end
1921

Tests/SentryTests/Networking/SentryHttpTransportFlushIntegrationTests.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ final class SentryHttpTransportFlushIntegrationTests: XCTestCase {
178178

179179
let rateLimits = DefaultRateLimits(retryAfterHeaderParser: RetryAfterHeaderParser(httpDateParser: HttpDateParser(), currentDateProvider: currentDate), andRateLimitParser: RateLimitParser(currentDateProvider: currentDate), currentDateProvider: currentDate)
180180

181-
return (SentryHttpTransport(
181+
let transport = SentryHttpTransport(
182182
dsn: try XCTUnwrap(options.parsedDsn),
183183
sendClientReports: options.sendClientReports,
184184
cachedEnvelopeSendDelay: 0.0,
@@ -188,8 +188,11 @@ final class SentryHttpTransportFlushIntegrationTests: XCTestCase {
188188
requestBuilder: TestNSURLRequestBuilder(),
189189
rateLimits: rateLimits,
190190
envelopeRateLimit: EnvelopeRateLimit(rateLimits: rateLimits),
191-
dispatchQueueWrapper: dispatchQueueWrapper
192-
), requestManager, fileManager, dispatchQueueWrapper)
191+
dispatchQueueWrapper: dispatchQueueWrapper,
192+
reachability: TestSentryReachability()
193+
)
194+
195+
return (transport, requestManager, fileManager, dispatchQueueWrapper)
193196
}
194197

195198
private func waitForEnvelopeToBeStored(_ dispatchQueueWrapper: SentryDispatchQueueWrapper) {

Tests/SentryTests/Networking/SentryHttpTransportTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ class SentryHttpTransportTests: XCTestCase {
2929
return dqw
3030
}()
3131

32-
#if !os(watchOS)
3332
let reachability = TestSentryReachability()
34-
#endif // !os(watchOS)
3533

3634
let flushTimeout: TimeInterval = 2.0
3735

@@ -127,7 +125,8 @@ class SentryHttpTransportTests: XCTestCase {
127125

128126
func getSut(
129127
fileManager: SentryFileManager? = nil,
130-
dispatchQueueWrapper: SentryDispatchQueueWrapper? = nil
128+
dispatchQueueWrapper: SentryDispatchQueueWrapper? = nil,
129+
reachability: SentryReachability? = nil
131130
) throws -> SentryHttpTransport {
132131
return SentryHttpTransport(
133132
dsn: try XCTUnwrap(options.parsedDsn),
@@ -139,7 +138,8 @@ class SentryHttpTransportTests: XCTestCase {
139138
requestBuilder: requestBuilder,
140139
rateLimits: rateLimits,
141140
envelopeRateLimit: EnvelopeRateLimit(rateLimits: rateLimits),
142-
dispatchQueueWrapper: dispatchQueueWrapper ?? self.dispatchQueueWrapper
141+
dispatchQueueWrapper: dispatchQueueWrapper ?? self.dispatchQueueWrapper,
142+
reachability: reachability ?? self.reachability
143143
)
144144
}
145145
}

Tests/SentryTests/Networking/SentryTransportFactoryTests.swift

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ class SentryTransportFactoryTests: XCTestCase {
3030
options,
3131
dateProvider: dateProvider,
3232
sentryFileManager: fileManager,
33-
rateLimits: rateLimiting()
33+
rateLimits: rateLimiting(),
34+
reachability: TestSentryReachability()
3435
)
3536
let httpTransport = transports.first
3637
let requestManager = try XCTUnwrap(Dynamic(httpTransport).requestManager.asObject as? SentryQueueableRequestManager)
@@ -70,7 +71,8 @@ class SentryTransportFactoryTests: XCTestCase {
7071
options,
7172
dateProvider: dateProvider,
7273
sentryFileManager: fileManager,
73-
rateLimits: rateLimiting()
74+
rateLimits: rateLimiting(),
75+
reachability: TestSentryReachability()
7476
)
7577

7678
let httpTransport = transports.first
@@ -103,7 +105,8 @@ class SentryTransportFactoryTests: XCTestCase {
103105
dateProvider: dateProvider,
104106
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
105107
),
106-
rateLimits: rateLimiting()
108+
rateLimits: rateLimiting(),
109+
reachability: TestSentryReachability()
107110
)
108111

109112
// -- Assert --
@@ -133,7 +136,8 @@ class SentryTransportFactoryTests: XCTestCase {
133136
dateProvider: dateProvider,
134137
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
135138
),
136-
rateLimits: rateLimiting()
139+
rateLimits: rateLimiting(),
140+
reachability: TestSentryReachability()
137141
)
138142

139143
// -- Assert --
@@ -157,7 +161,8 @@ class SentryTransportFactoryTests: XCTestCase {
157161
dateProvider: dateProvider,
158162
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
159163
),
160-
rateLimits: rateLimiting()
164+
rateLimits: rateLimiting(),
165+
reachability: TestSentryReachability()
161166
)
162167

163168
// -- Assert --

Tests/SentryTests/Networking/SentryTransportInitializerTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class SentryTransportInitializerTests: XCTestCase {
3131
options,
3232
dateProvider: dateProvider,
3333
sentryFileManager: fileManager,
34-
rateLimits: rateLimits
34+
rateLimits: rateLimits,
35+
reachability: TestSentryReachability()
3536
)
3637
XCTAssertEqual(result.count, 1)
3738

Tests/SentryTests/SentryClientTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import XCTest
44

55
extension SentryClientInternal {
66
convenience init(options: Options, fileManager: SentryFileManager) {
7-
let transports = TransportInitializer.initTransports(options, dateProvider: SentryDependencyContainer.sharedInstance().dateProvider, sentryFileManager: fileManager, rateLimits: SentryDependencyContainer.sharedInstance().rateLimits)
7+
let transports = TransportInitializer.initTransports(options, dateProvider: SentryDependencyContainer.sharedInstance().dateProvider, sentryFileManager: fileManager, rateLimits: SentryDependencyContainer.sharedInstance().rateLimits, reachability: TestSentryReachability())
88

99
let transportAdapter = SentryTransportAdapter(transports: transports, options: options)
1010

0 commit comments

Comments
 (0)