diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-07-24 21:39:22 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-07-24 21:39:22 +0900 |
commit | 3a9e9905ad8f564e2850e449e447a86906b0f00b (patch) | |
tree | b2a8a5350550981d6878d06e3222b9b80c6b6973 | |
parent | 71faf894c1cb9bc9e21078f0fcfa82ba5d2fd0ef (diff) | |
download | plum-3a9e9905ad8f564e2850e449e447a86906b0f00b.tar.gz |
test: hpack_huffman: encoding insensitive compare
-rw-r--r-- | test/hpack_encoder_test.rb | 6 | ||||
-rw-r--r-- | test/hpack_huffman_test.rb | 4 | ||||
-rw-r--r-- | test/server_state_test.rb | 49 | ||||
-rw-r--r-- | test/test_helper.rb | 1 | ||||
-rw-r--r-- | test/utils.rb | 46 |
5 files changed, 52 insertions, 54 deletions
diff --git a/test/hpack_encoder_test.rb b/test/hpack_encoder_test.rb index fdeb8a8..9c64942 100644 --- a/test/hpack_encoder_test.rb +++ b/test/hpack_encoder_test.rb @@ -4,19 +4,19 @@ class HPACKEncoderTest < Minitest::Test # C.1.1 def test_hpack_encode_integer_small result = new_encoder.__send__(:encode_integer, 10, 5) - assert_equal([0b00001010].pack("C*").b, result) + assert_equal([0b00001010].pack("C*"), result) end # C.1.2 def test_hpack_encode_integer_big result = new_encoder.__send__(:encode_integer, 1337, 5) - assert_equal([0b00011111, 0b10011010, 0b00001010].pack("C*").b, result) + assert_equal([0b00011111, 0b10011010, 0b00001010].pack("C*"), result) end # C.1.3 def test_hpack_encode_integer_8prefix result = new_encoder.__send__(:encode_integer, 42, 8) - assert_equal([0b00101010].pack("C*").b, result) + assert_equal([0b00101010].pack("C*"), result) end def test_hpack_encode_single diff --git a/test/hpack_huffman_test.rb b/test/hpack_huffman_test.rb index 508d3fd..4c2a358 100644 --- a/test/hpack_huffman_test.rb +++ b/test/hpack_huffman_test.rb @@ -4,12 +4,12 @@ class HPACKHuffmanTest < Minitest::Test def test_hpack_huffman_encode text = "\x10\x60\x2a\x1d\x94\x47\x82\x2c\x3d\x19\xbf\x8e\xd9\x24\xba\xe6\xb4\x1a\xe1\x5c\x39\x0f\x61\xf4\x3b\x08\x62\x54\x15\x0c" expected = "\xff\xff\xfe\xdf\xff\xbf\x3f\xff\xff\xf3\xff\xff\xdd\x8b\xff\xf9\xfe\xa0\xff\xff\xff\x5f\xff\xfe\x3f\xff\xfd\x7f\xff\xe5\xff\xcf\xff\xfc\x7f\xff\xe8\xff\xff\xdb\xff\xff\xfe\xdf\xff\xfe\x7f\xff\xc1\xff\xff\xff\xec\x1f\xff\xff\xe7\xfb\xff\xff\xfe\x88\xf7\xff\xff\xff\x97\xff\xff\xf5\x7f" - assert_equal(expected, Plum::HPACK::Huffman.encode(text)) + assert_equal(expected.force_encoding(Encoding::BINARY), Plum::HPACK::Huffman.encode(text).force_encoding(Encoding::BINARY)) end def test_hpack_huffman_decode encoded = "\xff\xff\xfe\xdf\xff\xbf\x3f\xff\xff\xf3\xff\xff\xdd\x8b\xff\xf9\xfe\xa0\xff\xff\xff\x5f\xff\xfe\x3f\xff\xfd\x7f\xff\xe5\xff\xcf\xff\xfc\x7f\xff\xe8\xff\xff\xdb\xff\xff\xfe\xdf\xff\xfe\x7f\xff\xc1\xff\xff\xff\xec\x1f\xff\xff\xe7\xfb\xff\xff\xfe\x88\xf7\xff\xff\xff\x97\xff\xff\xf5\x7f" expected = "\x10\x60\x2a\x1d\x94\x47\x82\x2c\x3d\x19\xbf\x8e\xd9\x24\xba\xe6\xb4\x1a\xe1\x5c\x39\x0f\x61\xf4\x3b\x08\x62\x54\x15\x0c" - assert_equal(expected, Plum::HPACK::Huffman.decode(encoded)) + assert_equal(expected.force_encoding(Encoding::BINARY), Plum::HPACK::Huffman.decode(encoded).force_encoding(Encoding::BINARY)) end end diff --git a/test/server_state_test.rb b/test/server_state_test.rb index 0fddfca..45ecd57 100644 --- a/test/server_state_test.rb +++ b/test/server_state_test.rb @@ -19,53 +19,4 @@ class ServerStateTest < Minitest::Test end end end - - private - # Starts a HTTP/2 server and returns Thread object - def start_server(server_handler = nil, &blk) - ctx = OpenSSL::SSL::SSLContext.new - ctx.alpn_select_cb = -> protocols { "h2" } - ctx.cert = OpenSSL::X509::Certificate.new File.read(File.expand_path("../server.crt", __FILE__)) - ctx.key = OpenSSL::PKey::RSA.new File.read(File.expand_path("../server.key", __FILE__)) - tcp_server = TCPServer.new("127.0.0.1", LISTEN_PORT) - ssl_server = OpenSSL::SSL::SSLServer.new(tcp_server, ctx) - - server_thread = Thread.new { - begin - timeout(3) { - sock = ssl_server.accept - plum = Plum::ServerConnection.new(sock) - server_handler.call(plum) if server_handler - plum.start - } - rescue TimeoutError - flunk "server timeout" - ensure - tcp_server.close - end - } - client_thread = Thread.new { - begin - timeout(3) { blk.call } - rescue TimeoutError - flunk "client timeout" - end - } - client_thread.join - server_thread.join - end - - # Connect to server and returns client socket - def start_client(ctx = nil, &blk) - ctx ||= OpenSSL::SSL::SSLContext.new.tap {|ctx| - ctx.alpn_protocols = ["h2"] - } - - sock = TCPSocket.new("127.0.0.1", LISTEN_PORT) - ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) - ssl.connect - blk.call(ssl) - ensure - ssl.close - end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 7039812..9e0f16b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,5 +7,6 @@ require "minitest" require "minitest/unit" require "minitest/autorun" require "minitest/pride" +require "utils" LISTEN_PORT = ENV["PLUM_LISTEN_PORT"] || 40444 diff --git a/test/utils.rb b/test/utils.rb new file mode 100644 index 0000000..ec527a6 --- /dev/null +++ b/test/utils.rb @@ -0,0 +1,46 @@ +def start_server(server_handler = nil, &blk) + ctx = OpenSSL::SSL::SSLContext.new + ctx.alpn_select_cb = -> protocols { "h2" } + ctx.cert = OpenSSL::X509::Certificate.new File.read(File.expand_path("../server.crt", __FILE__)) + ctx.key = OpenSSL::PKey::RSA.new File.read(File.expand_path("../server.key", __FILE__)) + tcp_server = TCPServer.new("127.0.0.1", LISTEN_PORT) + ssl_server = OpenSSL::SSL::SSLServer.new(tcp_server, ctx) + + server_thread = Thread.new { + begin + timeout(3) { + sock = ssl_server.accept + plum = Plum::ServerConnection.new(sock) + server_handler.call(plum) if server_handler + plum.start + } + rescue TimeoutError + flunk "server timeout" + ensure + tcp_server.close + end + } + client_thread = Thread.new { + begin + timeout(3) { blk.call } + rescue TimeoutError + flunk "client timeout" + end + } + client_thread.join + server_thread.join +end + +# Connect to server and returns client socket +def start_client(ctx = nil, &blk) + ctx ||= OpenSSL::SSL::SSLContext.new.tap {|ctx| + ctx.alpn_protocols = ["h2"] + } + + sock = TCPSocket.new("127.0.0.1", LISTEN_PORT) + ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) + ssl.connect + blk.call(ssl) +ensure + ssl.close +end |