Skip to content

Commit 051ed7d

Browse files
committed
fix ut
1 parent ab3393b commit 051ed7d

4 files changed

Lines changed: 15 additions & 6 deletions

File tree

Tests/AmplitudeTests/AutocaptureRemoteConfigTests.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,8 @@ class RemoteConfigUrlProtocol: URLProtocol {
662662
// Configs keyed by API key for test isolation
663663
static var configsByApiKey: [String: [RemoteConfigClient.RemoteConfig]] = [:]
664664

665+
private static let responseQueue = DispatchQueue(label: "RemoteConfigUrlProtocol.responseQueue")
666+
665667
static func setConfig(_ config: RemoteConfigClient.RemoteConfig, forApiKey apiKey: String) {
666668
configsByApiKey[apiKey, default: []].append(config)
667669
}
@@ -710,7 +712,7 @@ class RemoteConfigUrlProtocol: URLProtocol {
710712
headerFields: ["Content-Type": "application/json"])!
711713
let data = try? JSONSerialization.data(withJSONObject: ["configs": config])
712714

713-
DispatchQueue.global().asyncAfter(deadline: .now() + DispatchTimeInterval.milliseconds(200)) { [self] in
715+
Self.responseQueue.asyncAfter(deadline: .now() + DispatchTimeInterval.milliseconds(100)) { [self] in
714716
client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed)
715717
if let data {
716718
client?.urlProtocol(self, didLoad: data)

Tests/AmplitudeTests/Supports/FakeURLProtocol.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import Foundation
1010
class FakeURLProtocol: URLProtocol {
1111
static var mockResponses: [MockResponse] = []
1212

13+
private static let responseQueue = DispatchQueue(label: "FakeURLProtocol.responseQueue")
14+
1315
struct MockResponse {
1416
let statusCode: Int
1517
let data: Data?
@@ -65,7 +67,7 @@ class FakeURLProtocol: URLProtocol {
6567

6668
let delay = mockResponse.delay
6769

68-
DispatchQueue.global().asyncAfter(deadline: .now() + delay) { [weak self] in
70+
Self.responseQueue.asyncAfter(deadline: .now() + delay) { [weak self] in
6971
guard let self = self else { return }
7072

7173
self.client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed)

Tests/AmplitudeTests/Supports/TestUtilities.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ class FakeHttpClient: HttpClient {
137137
var uploadExpectations: [XCTestExpectation] = []
138138
var uploadResults: [Result<Int, Error>] = []
139139

140+
let completionQueue = DispatchQueue(label: "FakeHttpClient.completionQueue")
141+
140142
override func upload(events: String, completion: @escaping (_ result: Result<Int, Error>) -> Void)
141143
-> URLSessionDataTask?
142144
{
@@ -150,7 +152,7 @@ class FakeHttpClient: HttpClient {
150152
result = uploadResults.removeFirst()
151153
}
152154

153-
DispatchQueue.global().async { [weak self] in
155+
completionQueue.async { [weak self] in
154156
completion(result)
155157

156158
if let self, !self.uploadExpectations.isEmpty {

Tests/AmplitudeTests/Utilities/EventPipelineTests.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,14 @@ final class EventPipelineTests: XCTestCase {
204204
]
205205

206206
pipeline.flush()
207-
wait(for: [uploadExpectations[0], uploadExpectations[1]], timeout: 2)
207+
// Expected: upload 0 (instant) + upload 1 (1s retry delay)
208+
wait(for: [uploadExpectations[0], uploadExpectations[1]], timeout: 5)
208209

209210
XCTAssertEqual(httpClient.uploadCount, 2)
210211
XCTAssertEqual(pipeline.configuration.offline, false)
211212

212-
wait(for: [uploadExpectations[2]], timeout: 3)
213+
// Expected: upload 2 (2s retry delay)
214+
wait(for: [uploadExpectations[2]], timeout: 5)
213215

214216
XCTAssertEqual(httpClient.uploadCount, 3)
215217
XCTAssertEqual(pipeline.configuration.offline, true)
@@ -219,7 +221,7 @@ final class EventPipelineTests: XCTestCase {
219221
pipeline.flush {
220222
flushExpectation.fulfill()
221223
}
222-
wait(for: [uploadExpectations[3], flushExpectation], timeout: 1)
224+
wait(for: [uploadExpectations[3], flushExpectation], timeout: 2)
223225

224226
XCTAssertEqual(httpClient.uploadCount, 4)
225227
}
@@ -256,6 +258,7 @@ final class EventPipelineTests: XCTestCase {
256258
}
257259

258260
wait(for: uploadExpectations + [flushExpectation], timeout: 1)
261+
259262
XCTAssertEqual(httpClient.uploadCount, 3)
260263
XCTAssertEqual(pipeline.configuration.offline, false)
261264
}

0 commit comments

Comments
 (0)