From 5b5cf896871efdb110ae831fd7fc34fb78ec2243 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 16 Nov 2014 08:32:16 +0000 Subject: http: TypedData C-API conversion This provides some extra type safety if combined with other C extensions, as well as allowing us to account for memory usage of the HTTP parser in ObjectSpace. This requires Ruby 1.9.3+ and has remained a stable API since then. This will become officially supported when Ruby 2.3.0 is released later this month. This API has only been documented in doc/extension.rdoc (formerly README.EXT) in the Ruby source tree since April 2015, r50318 --- test/unit/test_http_parser.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test/unit/test_http_parser.rb') diff --git a/test/unit/test_http_parser.rb b/test/unit/test_http_parser.rb index 431ede5..c72f7f2 100644 --- a/test/unit/test_http_parser.rb +++ b/test/unit/test_http_parser.rb @@ -851,4 +851,18 @@ class HttpParserTest < Test::Unit::TestCase File.readable?(LINUX_PROC_PID_STATUS) && !defined?(RUBY_ENGINE) + def test_memsize + require 'objspace' + if ObjectSpace.respond_to?(:memsize_of) + n = ObjectSpace.memsize_of(Unicorn::HttpParser.new) + assert_kind_of Integer, n + # need to update this when 128-bit machines come out + # n.b. actual struct size on 64-bit is 56 bytes + 40 bytes for RVALUE + # Ruby <= 2.2 objspace did not count the 40-byte RVALUE, 2.3 does. + assert_operator n, :<=, 96 + assert_operator n, :>, 0 + end + rescue LoadError + # not all Ruby implementations have objspace + end end -- cgit v1.2.3-24-ge0c7