File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -118,6 +118,7 @@ struct WebSocketStateMachine {
118118 }
119119 // creating random payload
120120 let random = ( 0 ..< Self . pingDataSize) . map { _ in UInt8 . random ( in: 0 ... 255 ) }
121+ state. pingData. clear ( )
121122 state. pingData. writeBytes ( random)
122123 state. lastPingTime = . now
123124 self . state = . open( state)
Original file line number Diff line number Diff line change @@ -96,4 +96,34 @@ final class WebSocketStateMachineTests: XCTestCase {
9696 return
9797 }
9898 }
99+
100+ // Verify ping buffer size doesnt grow
101+ func testPingBufferSize( ) async throws {
102+ var stateMachine = WebSocketStateMachine ( autoPingSetup: . enabled( timePeriod: . milliseconds( 1 ) ) )
103+ var currentBuffer = ByteBuffer ( )
104+ var count = 0
105+ while true {
106+ switch stateMachine. sendPing ( ) {
107+ case . sendPing( let buffer) :
108+ XCTAssertEqual ( buffer. readableBytes, 16 )
109+ currentBuffer = buffer
110+ count += 1
111+ if count > 4 {
112+ return
113+ }
114+
115+ case . wait( let time) :
116+ try await Task . sleep ( for: time)
117+ stateMachine. receivedPong ( frameData: currentBuffer)
118+
119+ case . closeConnection:
120+ XCTFail ( " Should not timeout " )
121+ return
122+
123+ case . stop:
124+ XCTFail ( " Should not stop " )
125+ return
126+ }
127+ }
128+ }
99129}
You can’t perform that action at this time.
0 commit comments