aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-07-24 21:39:22 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-07-24 21:39:22 +0900
commit3a9e9905ad8f564e2850e449e447a86906b0f00b (patch)
treeb2a8a5350550981d6878d06e3222b9b80c6b6973
parent71faf894c1cb9bc9e21078f0fcfa82ba5d2fd0ef (diff)
downloadplum-3a9e9905ad8f564e2850e449e447a86906b0f00b.tar.gz
test: hpack_huffman: encoding insensitive compare
-rw-r--r--test/hpack_encoder_test.rb6
-rw-r--r--test/hpack_huffman_test.rb4
-rw-r--r--test/server_state_test.rb49
-rw-r--r--test/test_helper.rb1
-rw-r--r--test/utils.rb46
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