@@ -41,13 +41,10 @@ final class APIStressTests: XCTestCase {
4141 }
4242
4343 override func setUp( ) async throws {
44- await Amplify . reset ( )
45- Amplify . Logging. logLevel = . verbose
46- let plugin = AWSAPIPlugin ( modelRegistration: TestModelRegistration ( ) )
47-
4844 do {
45+ Amplify . Logging. logLevel = . verbose
46+ let plugin = AWSAPIPlugin ( modelRegistration: TestModelRegistration ( ) )
4947 try Amplify . add ( plugin: plugin)
50-
5148 let amplifyConfig = try TestConfigHelper . retrieveAmplifyConfiguration (
5249 forResource: Self . amplifyConfiguration)
5350 try Amplify . configure ( amplifyConfig)
@@ -58,6 +55,7 @@ final class APIStressTests: XCTestCase {
5855
5956 override func tearDown( ) async throws {
6057 await Amplify . reset ( )
58+ try await Task . sleep ( seconds: 1 )
6159 }
6260
6361 // MARK: - Stress tests
@@ -75,41 +73,37 @@ final class APIStressTests: XCTestCase {
7573 let progressInvoked = expectation ( description: " progress invoked " )
7674 progressInvoked. expectedFulfillmentCount = concurrencyLimit
7775
78- let uuid = UUID ( ) . uuidString
7976 let testMethodName = String ( " \( #function) " . dropLast ( 2 ) )
8077 let title = testMethodName + " Title "
8178
8279 let sequenceActor = SequenceActor ( )
8380 DispatchQueue . concurrentPerform ( iterations: concurrencyLimit) { index in
8481 Task {
8582 let subscription = Amplify . API. subscribe ( request: . subscription( of: Post . self, type: . onCreate) )
86- Task {
87- for try await subscriptionEvent in subscription {
88- switch subscriptionEvent {
89- case . connection( let state) :
90- switch state {
91- case . connecting:
92- break
93- case . connected:
94- connectedInvoked. fulfill ( )
95- case . disconnected:
96- disconnectedInvoked. fulfill ( )
97- }
98- case . data( let result) :
99- switch result {
100- case . success( let post) :
101- if post. id == uuid {
102- progressInvoked. fulfill ( )
103- }
104- case . failure( let error) :
105- XCTFail ( " \( error) " )
83+ await sequenceActor. append ( sequence: subscription)
84+ for try await subscriptionEvent in subscription {
85+ switch subscriptionEvent {
86+ case . connection( let state) :
87+ switch state {
88+ case . connecting:
89+ break
90+ case . connected:
91+ connectedInvoked. fulfill ( )
92+ case . disconnected:
93+ disconnectedInvoked. fulfill ( )
94+ }
95+ case . data( let result) :
96+ switch result {
97+ case . success( let post) :
98+ if post. title == title {
99+ progressInvoked. fulfill ( )
106100 }
101+ case . failure( let error) :
102+ XCTFail ( " \( error) " )
107103 }
108104 }
109- completedInvoked. fulfill ( )
110105 }
111-
112- await sequenceActor. append ( sequence: subscription)
106+ completedInvoked. fulfill ( )
113107 }
114108 }
115109
@@ -118,7 +112,7 @@ final class APIStressTests: XCTestCase {
118112 let sequenceCount = await sequenceActor. sequences. count
119113 XCTAssertEqual ( sequenceCount, concurrencyLimit)
120114
121- guard try await createPost ( id: uuid , title: title) != nil else {
115+ guard try await Self . createPost ( id: UUID ( ) . uuidString , title: title) != nil else {
122116 XCTFail ( " Failed to create post " )
123117 return
124118 }
@@ -144,7 +138,7 @@ final class APIStressTests: XCTestCase {
144138 Task {
145139 let id = UUID ( ) . uuidString
146140 let title = " title " + String( index)
147- let post = try await createPost ( id: id, title: title)
141+ let post = try await APIStressTests . createPost ( id: id, title: title)
148142 XCTAssertNotNil ( post)
149143 XCTAssertEqual ( id, post? . id)
150144 XCTAssertEqual ( title, post? . title)
@@ -169,7 +163,7 @@ final class APIStressTests: XCTestCase {
169163 Task {
170164 let id = UUID ( ) . uuidString
171165 let title = " title " + String( index)
172- let post = try await createPost ( id: id, title: title)
166+ let post = try await APIStressTests . createPost ( id: id, title: title)
173167 XCTAssertNotNil ( post)
174168 XCTAssertEqual ( id, post? . id)
175169 XCTAssertEqual ( title, post? . title)
@@ -184,7 +178,7 @@ final class APIStressTests: XCTestCase {
184178 Task {
185179 var post = await postActor. posts [ index]
186180 post. title = " newTitle " + String( index)
187- let updatedPost = try await mutatePost ( post)
181+ let updatedPost = try await APIStressTests . mutatePost ( post)
188182 XCTAssertNotNil ( updatedPost)
189183 XCTAssertEqual ( post. id, updatedPost. id)
190184 XCTAssertEqual ( post. title, updatedPost. title)
@@ -211,7 +205,7 @@ final class APIStressTests: XCTestCase {
211205 Task {
212206 let id = UUID ( ) . uuidString
213207 let title = " title " + String( index)
214- let post = try await createPost ( id: id, title: title)
208+ let post = try await APIStressTests . createPost ( id: id, title: title)
215209 XCTAssertNotNil ( post)
216210 XCTAssertEqual ( id, post? . id)
217211 XCTAssertEqual ( title, post? . title)
@@ -225,7 +219,7 @@ final class APIStressTests: XCTestCase {
225219 DispatchQueue . concurrentPerform ( iterations: concurrencyLimit) { index in
226220 Task {
227221 let post = await postActor. posts [ index]
228- let deletedPost = try await deletePost ( post: post)
222+ let deletedPost = try await APIStressTests . deletePost ( post: post)
229223 XCTAssertNotNil ( deletedPost)
230224 XCTAssertEqual ( post. id, deletedPost. id)
231225 XCTAssertEqual ( post. title, deletedPost. title)
@@ -252,7 +246,7 @@ final class APIStressTests: XCTestCase {
252246 Task {
253247 let id = UUID ( ) . uuidString
254248 let title = " title " + String( index)
255- let post = try await createPost ( id: id, title: title)
249+ let post = try await APIStressTests . createPost ( id: id, title: title)
256250 XCTAssertNotNil ( post)
257251 XCTAssertEqual ( id, post? . id)
258252 XCTAssertEqual ( title, post? . title)
@@ -301,12 +295,12 @@ final class APIStressTests: XCTestCase {
301295
302296 // MARK: - Helpers
303297
304- func createPost( id: String , title: String ) async throws -> Post ? {
298+ static func createPost( id: String , title: String ) async throws -> Post ? {
305299 let post = Post ( id: id, title: title, status: . active, content: " content " )
306300 return try await createPost ( post: post)
307301 }
308302
309- func createPost( post: Post ) async throws -> Post ? {
303+ static func createPost( post: Post ) async throws -> Post ? {
310304 let data = try await Amplify . API. mutate ( request: . create( post) )
311305 switch data {
312306 case . success( let post) :
@@ -316,7 +310,7 @@ final class APIStressTests: XCTestCase {
316310 }
317311 }
318312
319- func mutatePost( _ post: Post ) async throws -> Post {
313+ static func mutatePost( _ post: Post ) async throws -> Post {
320314 let data = try await Amplify . API. mutate ( request: . update( post) )
321315 switch data {
322316 case . success( let post) :
@@ -326,7 +320,7 @@ final class APIStressTests: XCTestCase {
326320 }
327321 }
328322
329- func deletePost( post: Post ) async throws -> Post {
323+ static func deletePost( post: Post ) async throws -> Post {
330324 let data = try await Amplify . API. mutate ( request: . delete( post) )
331325 switch data {
332326 case . success( let post) :
0 commit comments