You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2015/09/18 17:48:10 UTC
[3/3] trafficserver git commit: TS-3827: Add tests for
http2_are_frame_flags_valid
TS-3827: Add tests for http2_are_frame_flags_valid
This closes #295
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/7ab08da1
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/7ab08da1
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/7ab08da1
Branch: refs/heads/master
Commit: 7ab08da1a1204f1ff12d2ae8a4020baef648ac37
Parents: b457420
Author: Masaori Koshiba <mk...@yahoo-corp.jp>
Authored: Fri Sep 18 15:08:25 2015 +0900
Committer: James Peach <jp...@apache.org>
Committed: Fri Sep 18 08:47:52 2015 -0700
----------------------------------------------------------------------
proxy/http2/HTTP2.cc | 115 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7ab08da1/proxy/http2/HTTP2.cc
----------------------------------------------------------------------
diff --git a/proxy/http2/HTTP2.cc b/proxy/http2/HTTP2.cc
index 6f0d4c8..e5d3b94 100644
--- a/proxy/http2/HTTP2.cc
+++ b/proxy/http2/HTTP2.cc
@@ -1171,4 +1171,119 @@ REGRESSION_TEST(HPACK_Decode)(RegressionTest *t, int, int *pstatus)
}
}
+/***********************************************************************************
+ * *
+ * Regression test for HTTP/2 *
+ * *
+ ***********************************************************************************/
+
+
+const static struct {
+ uint8_t ftype;
+ uint8_t fflags;
+ bool valid;
+} http2_frame_flags_test_case[] = {{HTTP2_FRAME_TYPE_DATA, 0x00, true},
+ {HTTP2_FRAME_TYPE_DATA, 0x01, true},
+ {HTTP2_FRAME_TYPE_DATA, 0x02, false},
+ {HTTP2_FRAME_TYPE_DATA, 0x04, false},
+ {HTTP2_FRAME_TYPE_DATA, 0x08, true},
+ {HTTP2_FRAME_TYPE_DATA, 0x10, false},
+ {HTTP2_FRAME_TYPE_DATA, 0x20, false},
+ {HTTP2_FRAME_TYPE_DATA, 0x40, false},
+ {HTTP2_FRAME_TYPE_DATA, 0x80, false},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x00, true},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x01, true},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x02, false},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x04, true},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x08, true},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x10, false},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x20, true},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x40, false},
+ {HTTP2_FRAME_TYPE_HEADERS, 0x80, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x00, true},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x01, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x02, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x04, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x08, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x10, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x20, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x40, false},
+ {HTTP2_FRAME_TYPE_PRIORITY, 0x80, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x00, true},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x01, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x02, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x04, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x08, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x10, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x20, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x40, false},
+ {HTTP2_FRAME_TYPE_RST_STREAM, 0x80, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x00, true},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x01, true},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x02, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x04, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x08, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x10, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x20, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x40, false},
+ {HTTP2_FRAME_TYPE_SETTINGS, 0x80, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x00, true},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x01, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x02, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x04, true},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x08, true},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x10, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x20, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x40, false},
+ {HTTP2_FRAME_TYPE_PUSH_PROMISE, 0x80, false},
+ {HTTP2_FRAME_TYPE_PING, 0x00, true},
+ {HTTP2_FRAME_TYPE_PING, 0x01, true},
+ {HTTP2_FRAME_TYPE_PING, 0x02, false},
+ {HTTP2_FRAME_TYPE_PING, 0x04, false},
+ {HTTP2_FRAME_TYPE_PING, 0x08, false},
+ {HTTP2_FRAME_TYPE_PING, 0x10, false},
+ {HTTP2_FRAME_TYPE_PING, 0x20, false},
+ {HTTP2_FRAME_TYPE_PING, 0x40, false},
+ {HTTP2_FRAME_TYPE_PING, 0x80, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x00, true},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x01, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x02, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x04, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x08, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x10, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x20, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x40, false},
+ {HTTP2_FRAME_TYPE_GOAWAY, 0x80, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x00, true},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x01, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x02, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x04, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x08, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x10, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x20, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x40, false},
+ {HTTP2_FRAME_TYPE_WINDOW_UPDATE, 0x80, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x00, true},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x01, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x02, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x04, true},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x08, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x10, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x20, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x40, false},
+ {HTTP2_FRAME_TYPE_CONTINUATION, 0x80, false}};
+
+REGRESSION_TEST(HTTP2_FRAME_FLAGS)(RegressionTest *t, int, int *pstatus)
+{
+ TestBox box(t, pstatus);
+ box = REGRESSION_TEST_PASSED;
+
+ for (unsigned int i = 0; i < sizeof(http2_frame_flags_test_case) / sizeof(http2_frame_flags_test_case[0]); ++i) {
+ box.check(http2_are_frame_flags_valid(http2_frame_flags_test_case[i].ftype, http2_frame_flags_test_case[i].fflags) ==
+ http2_frame_flags_test_case[i].valid,
+ "Validation of frame flags (type: %d, flags: %d) are expected %d, but not", http2_frame_flags_test_case[i].ftype,
+ http2_frame_flags_test_case[i].fflags, http2_frame_flags_test_case[i].valid);
+ }
+}
+
#endif /* TS_HAS_TESTS */