Skip to content

Commit d9018d1

Browse files
committed
update test
1 parent 6c54534 commit d9018d1

File tree

1 file changed

+38
-42
lines changed

1 file changed

+38
-42
lines changed

Tests/NIOHTTP2Tests/SimpleClientServerFramePayloadStreamTests.swift

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2849,7 +2849,7 @@ class SimpleClientServerFramePayloadStreamTests: XCTestCase {
28492849
XCTAssertNoThrow(try self.serverChannel.finish())
28502850
}
28512851

2852-
func testFrameDelegateIsCalledForDATAFrames() throws {
2852+
func testFrameDelegateIsCalled() throws {
28532853
// Cap the frame size to 2^14 = 16_384
28542854
let settings = [HTTP2Setting(parameter: .maxFrameSize, value: 1 << 14)]
28552855

@@ -2898,20 +2898,47 @@ class SimpleClientServerFramePayloadStreamTests: XCTestCase {
28982898
self.clientChannel.embeddedEventLoop.run()
28992899
try stream.closeFuture.wait()
29002900

2901-
XCTAssertEqual(delegate.events.count, 6)
2902-
XCTAssertTrue(delegate.events[0].0.isHeaders)
2903-
XCTAssertTrue(delegate.events.allSatisfy { $0.1 == HTTP2StreamID(1) })
2901+
var events = delegate.events
2902+
XCTAssertEqual(events.count, 8)
29042903

2904+
// First the server writes its own SETTINGS.
2905+
events.popFirst()?.assertSettingsFrame(expectedSettings: settings, ack: false)
2906+
// Then it acks the client SETTINGS.
2907+
events.popFirst()?.assertSettingsFrame(expectedSettings: [], ack: true)
2908+
2909+
// Then writes HEADERS on stream 1
2910+
events.popFirst()?.assertHeadersFrame(
2911+
endStream: false,
2912+
streamID: 1,
2913+
headers: headers.headers
2914+
)
2915+
2916+
// Now 5 DATA frames on stream 1.
2917+
//
29052918
// The max frame size is set to 2^14 and the initial connection window
29062919
// size is (2^16)-1, so the write of size 2^16 is split up over five frames.
29072920
// The first three are the max frame size of 2^14, the fourth is (2^14) - 1
29082921
// as that's all that remains of the connection window. The final byte of the
29092922
// message is sent later, after the server sends a WINDOW_UPDATE frame.
2910-
XCTAssertEqual(delegate.events[1].0.dataByteCount, 1 << 14)
2911-
XCTAssertEqual(delegate.events[2].0.dataByteCount, 1 << 14)
2912-
XCTAssertEqual(delegate.events[3].0.dataByteCount, 1 << 14)
2913-
XCTAssertEqual(delegate.events[4].0.dataByteCount, (1 << 14) - 1)
2914-
XCTAssertEqual(delegate.events[5].0.dataByteCount, 1)
2923+
for _ in 1 ... 3 {
2924+
events.popFirst()?.assertDataFrame(
2925+
endStream: false,
2926+
streamID: 1,
2927+
payload: ByteBuffer(repeating: 42, count: 1 << 14)
2928+
)
2929+
}
2930+
events.popFirst()?.assertDataFrame(
2931+
endStream: false,
2932+
streamID: 1,
2933+
payload: ByteBuffer(repeating: 42, count: (1 << 14) - 1)
2934+
)
2935+
events.popFirst()?.assertDataFrame(
2936+
endStream: true,
2937+
streamID: 1,
2938+
payload: ByteBuffer(repeating: 42, count: 1)
2939+
)
2940+
2941+
XCTAssertNil(events.popFirst())
29152942
}
29162943
}
29172944

@@ -2975,44 +3002,13 @@ final class OkHandler: ChannelInboundHandler {
29753002
}
29763003

29773004
final class RecordingFrameDelegate: NIOHTTP2FrameDelegate {
2978-
enum Frame {
2979-
case data(Int)
2980-
case headers
2981-
2982-
var isHeaders: Bool {
2983-
switch self {
2984-
case .headers:
2985-
return true
2986-
default:
2987-
return false
2988-
}
2989-
}
2990-
2991-
var dataByteCount: Int? {
2992-
switch self {
2993-
case .data(let byteCount):
2994-
return byteCount
2995-
default:
2996-
return nil
2997-
}
2998-
}
2999-
3000-
}
3001-
3002-
private(set) var events: [(Frame, HTTP2StreamID)]
3005+
private(set) var events: CircularBuffer<HTTP2Frame>
30033006

30043007
init() {
30053008
self.events = []
30063009
}
30073010

30083011
func wroteFrame(_ frame: HTTP2Frame) {
3009-
switch frame.payload {
3010-
case .data(let data):
3011-
self.events.append((.data(data.data.readableBytes), streamID: frame.streamID))
3012-
case .headers(let headers):
3013-
self.events.append((.headers, streamID: frame.streamID))
3014-
default:
3015-
()
3016-
}
3012+
self.events.append(frame)
30173013
}
30183014
}

0 commit comments

Comments
 (0)