@@ -110,7 +110,6 @@ class HTTP2CodecTestOmitParsePreface : public HTTP2CodecTest {
110110};
111111
112112TEST_F (HTTP2CodecTest, NoExHeaders) {
113- // do not emit ENABLE_EX_HEADERS setting, if disabled
114113 SetUpUpstreamTest ();
115114
116115 EXPECT_EQ (callbacks_.settings , 0 );
@@ -125,98 +124,6 @@ TEST_F(HTTP2CodecTest, NoExHeaders) {
125124 EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
126125}
127126
128- TEST_F (HTTP2CodecTest, IgnoreExHeadersSetting) {
129- // disable EX_HEADERS on egress
130- downstreamCodec_.getEgressSettings ()->setSetting (
131- SettingsId::ENABLE_EX_HEADERS, 0 );
132- auto ptr = downstreamCodec_.getEgressSettings ()->getSetting (
133- SettingsId::ENABLE_EX_HEADERS);
134- EXPECT_EQ (0 , ptr->value );
135-
136- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
137- SettingsId::ENABLE_EX_HEADERS);
138- EXPECT_EQ (nullptr , ptr);
139- EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
140-
141- // attempt to enable EX_HEADERS on ingress
142- http2::writeSettings (output_,
143- {SettingPair (SettingsId::ENABLE_EX_HEADERS, 1 )});
144- parse ();
145-
146- EXPECT_EQ (callbacks_.settings , 1 );
147- EXPECT_EQ (callbacks_.sessionErrors , 0 );
148- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
149- SettingsId::ENABLE_EX_HEADERS);
150- EXPECT_EQ (nullptr , ptr);
151- EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
152-
153- // attempt to disable EX_HEADERS on ingress
154- callbacks_.reset ();
155- http2::writeSettings (output_,
156- {SettingPair (SettingsId::ENABLE_EX_HEADERS, 0 )});
157- parse ();
158-
159- EXPECT_EQ (callbacks_.settings , 1 );
160- EXPECT_EQ (callbacks_.sessionErrors , 0 );
161- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
162- SettingsId::ENABLE_EX_HEADERS);
163- EXPECT_EQ (nullptr , ptr);
164- EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
165- }
166-
167- TEST_F (HTTP2CodecTest, EnableExHeadersSetting) {
168- // enable EX_HEADERS on egress
169- downstreamCodec_.getEgressSettings ()->setSetting (
170- SettingsId::ENABLE_EX_HEADERS, 1 );
171-
172- auto ptr = downstreamCodec_.getEgressSettings ()->getSetting (
173- SettingsId::ENABLE_EX_HEADERS);
174- EXPECT_EQ (1 , ptr->value );
175-
176- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
177- SettingsId::ENABLE_EX_HEADERS);
178- EXPECT_EQ (nullptr , ptr);
179- EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
180-
181- // attempt to enable EX_HEADERS on ingress
182- http2::writeSettings (output_,
183- {SettingPair (SettingsId::ENABLE_EX_HEADERS, 1 )});
184- parse ();
185-
186- EXPECT_EQ (callbacks_.settings , 1 );
187- EXPECT_EQ (callbacks_.sessionErrors , 0 );
188- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
189- SettingsId::ENABLE_EX_HEADERS);
190- EXPECT_EQ (1 , ptr->value );
191- EXPECT_EQ (true , downstreamCodec_.supportsExTransactions ());
192-
193- // attempt to disable EX_HEADERS on ingress
194- callbacks_.reset ();
195- http2::writeSettings (output_,
196- {SettingPair (SettingsId::ENABLE_EX_HEADERS, 0 )});
197- parse ();
198-
199- EXPECT_EQ (callbacks_.settings , 1 );
200- EXPECT_EQ (callbacks_.sessionErrors , 0 );
201- ptr = downstreamCodec_.getIngressSettings ()->getSetting (
202- SettingsId::ENABLE_EX_HEADERS);
203- EXPECT_EQ (0 , ptr->value );
204- EXPECT_EQ (false , downstreamCodec_.supportsExTransactions ());
205- }
206-
207- TEST_F (HTTP2CodecTest, InvalidExHeadersSetting) {
208- // enable EX_HEADERS on egress
209- downstreamCodec_.getEgressSettings ()->setSetting (
210- SettingsId::ENABLE_EX_HEADERS, 1 );
211-
212- // attempt to set a invalid ENABLE_EX_HEADERS value
213- http2::writeSettings (output_,
214- {SettingPair (SettingsId::ENABLE_EX_HEADERS, 110 )});
215- parse ();
216-
217- EXPECT_EQ (callbacks_.sessionErrors , 1 );
218- }
219-
220127TEST_F (HTTP2CodecTest, BasicHeader) {
221128 HTTPMessage req = getGetRequest (" /guacamole" );
222129 req.getHeaders ().add (HTTP_HEADER_USER_AGENT, " coolio" );
@@ -257,38 +164,6 @@ TEST_F(HTTP2CodecTest, GenerateExtraHeaders) {
257164 EXPECT_EQ (" u=0" , headers.getSingleOrEmpty (HTTP_HEADER_PRIORITY));
258165}
259166
260- TEST_F (HTTP2CodecTest, RequestFromServer) {
261- // this is to test EX_HEADERS frame, which carrys the HTTP request initiated
262- // by server side
263- upstreamCodec_.getEgressSettings ()->setSetting (SettingsId::ENABLE_EX_HEADERS,
264- 1 );
265- SetUpUpstreamTest ();
266- proxygen::http2::writeSettings (
267- output_, {{proxygen::SettingsId::ENABLE_EX_HEADERS, 1 }});
268-
269- HTTPMessage req = getGetRequest (" /guacamole" );
270- req.getHeaders ().add (HTTP_HEADER_USER_AGENT, " coolio" );
271- req.getHeaders ().add (" tab-hdr" , " coolio\t v2" );
272- // Connection header will get dropped
273- req.getHeaders ().add (HTTP_HEADER_CONNECTION, " Love" );
274- req.setSecure (true );
275-
276- HTTPCodec::StreamID stream = folly::Random::rand32 (10 , 1024 ) * 2 ;
277- HTTPCodec::StreamID controlStream = folly::Random::rand32 (10 , 1024 ) * 2 + 1 ;
278- upstreamCodec_.generateExHeader (
279- output_, stream, req, HTTPCodec::ExAttributes (controlStream, true ), true );
280-
281- parseUpstream ();
282- EXPECT_EQ (controlStream, callbacks_.controlStreamId );
283- EXPECT_TRUE (callbacks_.isUnidirectional );
284- callbacks_.expectMessage (true , 3 , " /guacamole" );
285- EXPECT_TRUE (callbacks_.msg ->isSecure ());
286- const auto & headers = callbacks_.msg ->getHeaders ();
287- EXPECT_EQ (" coolio" , headers.getSingleOrEmpty (HTTP_HEADER_USER_AGENT));
288- EXPECT_EQ (" coolio\t v2" , headers.getSingleOrEmpty (" tab-hdr" ));
289- EXPECT_EQ (" www.foo.com" , headers.getSingleOrEmpty (HTTP_HEADER_HOST));
290- }
291-
292167TEST_F (HTTP2CodecTestOmitParsePreface, OmitSettingsAfterConnPrefaceError) {
293168 HTTPMessage req = getGetRequest (" /test" );
294169 req.getHeaders ().add (HTTP_HEADER_USER_AGENT, " rand-user" );
@@ -304,86 +179,6 @@ TEST_F(HTTP2CodecTestOmitParsePreface, OmitSettingsAfterConnPrefaceError) {
304179 ErrorCode::PROTOCOL_ERROR);
305180}
306181
307- TEST_F (HTTP2CodecTest, ResponseFromClient) {
308- // this is to test EX_HEADERS frame, which carrys the HTTP response replied by
309- // client side
310- downstreamCodec_.getEgressSettings ()->setSetting (
311- SettingsId::ENABLE_EX_HEADERS, 1 );
312- proxygen::http2::writeSettings (
313- output_, {{proxygen::SettingsId::ENABLE_EX_HEADERS, 1 }});
314-
315- HTTPMessage resp;
316- resp.setStatusCode (200 );
317- resp.setStatusMessage (" nifty-nice" );
318- resp.getHeaders ().add (HTTP_HEADER_CONTENT_TYPE, " x-coolio" );
319-
320- HTTPCodec::StreamID stream = folly::Random::rand32 (10 , 1024 ) * 2 ;
321- HTTPCodec::StreamID controlStream = folly::Random::rand32 (10 , 1024 ) * 2 + 1 ;
322- downstreamCodec_.generateExHeader (
323- output_,
324- stream,
325- resp,
326- HTTPCodec::ExAttributes (controlStream, true ),
327- true );
328-
329- parse ();
330- EXPECT_EQ (controlStream, callbacks_.controlStreamId );
331- EXPECT_TRUE (callbacks_.isUnidirectional );
332- EXPECT_EQ (" OK" , callbacks_.msg ->getStatusMessage ());
333- callbacks_.expectMessage (true , 2 , 200 );
334- const auto & headers = callbacks_.msg ->getHeaders ();
335- EXPECT_EQ (" OK" , callbacks_.msg ->getStatusMessage ());
336- EXPECT_TRUE (callbacks_.msg ->getHeaders ().exists (HTTP_HEADER_DATE));
337- EXPECT_EQ (" x-coolio" , headers.getSingleOrEmpty (HTTP_HEADER_CONTENT_TYPE));
338- }
339-
340- TEST_F (HTTP2CodecTest, ExHeadersWithPriority) {
341- downstreamCodec_.getEgressSettings ()->setSetting (
342- SettingsId::ENABLE_EX_HEADERS, 1 );
343- proxygen::http2::writeSettings (
344- output_, {{proxygen::SettingsId::ENABLE_EX_HEADERS, 1 }});
345-
346- auto req = getGetRequest ();
347- // Test empty path
348- req.setURL (" " );
349- upstreamCodec_.generateExHeader (
350- output_, 3 , req, HTTPCodec::ExAttributes (1 , true ));
351-
352- parse ();
353- EXPECT_EQ (callbacks_.streamErrors , 0 );
354- EXPECT_EQ (callbacks_.sessionErrors , 0 );
355- }
356-
357- TEST_F (HTTP2CodecTest, DuplicateExHeaders) {
358- downstreamCodec_.getEgressSettings ()->setSetting (
359- SettingsId::ENABLE_EX_HEADERS, 1 );
360- proxygen::http2::writeSettings (
361- output_, {{proxygen::SettingsId::ENABLE_EX_HEADERS, 1 }});
362-
363- auto req = getGetRequest ();
364- upstreamCodec_.generateExHeader (
365- output_, 3 , req, HTTPCodec::ExAttributes (1 , true ), /* eom=*/ false );
366- upstreamCodec_.generateExHeader (
367- output_, 3 , req, HTTPCodec::ExAttributes (1 , true ), /* eom=*/ true );
368-
369- parse ();
370- EXPECT_EQ (callbacks_.streamErrors , 0 );
371- EXPECT_EQ (callbacks_.sessionErrors , 1 );
372- }
373-
374- TEST_F (HTTP2CodecTest, IgnoreExHeadersIfNotEnabled) {
375- downstreamCodec_.getEgressSettings ()->setSetting (
376- SettingsId::ENABLE_EX_HEADERS, 0 );
377-
378- HTTPMessage req = getGetRequest (" /guacamole" );
379- downstreamCodec_.generateExHeader (
380- output_, 3 , req, HTTPCodec::ExAttributes (1 , true ));
381-
382- parse ();
383- EXPECT_EQ (callbacks_.streamErrors , 0 );
384- EXPECT_EQ (callbacks_.sessionErrors , 0 );
385- }
386-
387182TEST_F (HTTP2CodecTest, BadHeaders) {
388183 static const std::string v1 (" GET" );
389184 static const std::string v2 (" /" );
@@ -2289,7 +2084,6 @@ TEST_F(HTTP2CodecTest, TestAllEgressFrameTypeCallbacks) {
22892084 http2::FrameType::GOAWAY,
22902085 http2::FrameType::WINDOW_UPDATE,
22912086 http2::FrameType::CONTINUATION,
2292- http2::FrameType::EX_HEADERS,
22932087 };
22942088
22952089 for (http2::FrameType type : expectedTypes) {
@@ -2333,11 +2127,6 @@ TEST_F(HTTP2CodecTest, TestAllEgressFrameTypeCallbacks) {
23332127
23342128 upstreamCodec_.generateWindowUpdate (output_, 0 , 10 );
23352129
2336- HTTPCodec::StreamID stream = folly::Random::rand32 (10 , 1024 ) * 2 ;
2337- HTTPCodec::StreamID controlStream = folly::Random::rand32 (10 , 1024 ) * 2 + 1 ;
2338- downstreamCodec_.generateExHeader (
2339- output_, stream, req, HTTPCodec::ExAttributes (controlStream, true ));
2340-
23412130 // Tests the continuation frame
23422131 req = getBigGetRequest ();
23432132 upstreamCodec_.generateHeader (output_, id, req, true /* eom */ );
0 commit comments