Diff of the two buildlogs: -- --- b1/build.log 2024-06-08 10:11:34.555019109 +0000 +++ b2/build.log 2024-06-08 10:12:47.251927206 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Jul 11 04:33:45 -12 2025 -I: pbuilder-time-stamp: 1752251625 +I: Current time: Sat Jul 12 06:34:43 +14 2025 +I: pbuilder-time-stamp: 1752251683 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -27,52 +27,84 @@ dpkg-source: info: applying 0001-Drop-spec-hpack_test_spec.rb-since-there-is-no-raw-d.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/4085443/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/D01_modify_environment starting +debug: Running on codethink03-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jul 11 16:34 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='0a60e46861b8459e920d9a21ad059bb5' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='4085443' - PS1='# ' - PS2='> ' + INVOCATION_ID=ea9679865a9c4b109154a613f7291066 + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=1778131 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KM87F5Us/pbuilderrc_qRgS --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KM87F5Us/b1 --logfile b1/build.log ruby-http-2_0.11.0-1.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KM87F5Us/pbuilderrc_EN9k --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KM87F5Us/b2 --logfile b2/build.log ruby-http-2_0.11.0-1.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink01-arm64 6.1.0-21-cloud-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-cloud-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Jun 5 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/4085443/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -266,7 +298,7 @@ Get: 148 http://deb.debian.org/debian unstable/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 149 http://deb.debian.org/debian unstable/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 150 http://deb.debian.org/debian unstable/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 42.8 MB in 0s (129 MB/s) +Fetched 42.8 MB in 1s (84.0 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19762 files and directories currently installed.) @@ -763,8 +795,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri Jul 11 16:34:13 UTC 2025. -Universal Time is now: Fri Jul 11 16:34:13 UTC 2025. +Local time is now: Fri Jul 11 16:35:23 UTC 2025. +Universal Time is now: Fri Jul 11 16:35:23 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -900,7 +932,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-http-2-0.11.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-http-2_0.11.0-1_source.changes +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-http-2-0.11.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-http-2_0.11.0-1_source.changes dpkg-buildpackage: info: source package ruby-http-2 dpkg-buildpackage: info: source version 0.11.0-1 dpkg-buildpackage: info: source distribution unstable @@ -929,7 +965,7 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-http-2/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-http-2-0.11.0/debian/ruby-http-2 -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250711-4100604-c8qq9h/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250712-1799886-oaslat/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 0, development) is not recommended @@ -939,7 +975,7 @@ Name: http-2 Version: 0.11.0 File: http-2-0.11.0.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-http-2/usr/share/rubygems-integration/all /tmp/d20250711-4100604-c8qq9h/http-2-0.11.0.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-http-2/usr/share/rubygems-integration/all /tmp/d20250712-1799886-oaslat/http-2-0.11.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-http-2-0.11.0/debian/ruby-http-2/usr/share/rubygems-integration/all/gems/http-2-0.11.0/example/Gemfile /build/reproducible-path/ruby-http-2-0.11.0/debian/ruby-http-2/usr/share/rubygems-integration/all/gems/http-2-0.11.0/example/README.md @@ -995,542 +1031,542 @@ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-http-2-0.11.0/debian/ruby-http-2/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-http-2-0.11.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation -Randomized with seed 37452 +Randomized with seed 33458 + +HTTP2::Server + should allow server push + initialization and settings + should initialize client with custom connection settings + should emit SETTINGS on new connection + should return even stream IDs + +HTTP2::Header::Huffman + encode + should encode no-cache into a8eb10649cbf + should encode Mon, 21 Oct 2013 20:13:21 GMT into d07abe941054d444a8200595040b8166e082a62d1bff + should encode www.example.com into f1e3c2e5f23a6ba0ab90f4ff + decode + should encode then decode 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0' into the same + should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same + should encode then decode 'cl_b=AB2BKbsl4hGM7M4nH5PYWghTM5A; cl_def_lang=en; cl_def_hp=shoals' into the same + should encode then decode 'UTF-8でエンコードした日本語文字列' into the same + should encode then decode 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' into the same + should decode a8eb10649cbf into no-cache + should encode then decode 'BX=c99r6jp89a7no&b=3&s=q4; localization=en-us%3Bus%3Bus' into the same + should raise when exceedingly padded + should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com + should raise when input is shorter than expected + should raise when input is not padded by 1s + should raise when EOS is explicitly encoded + should encode/decode all_possible 2-byte sequences + should encode then decode 'http://www.craigslist.org/about/sites/' into the same + should decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT HTTP2::Connection - cleanup_recently_closed - should cleanup old connections - stream management - should initialize stream with HEADERS priority value - should initialize idle stream on PRIORITY frame - should not exceed stream limit set by peer - should change stream limit to received SETTINGS value - should count open streams against stream limit - should initialize to default stream limit (100) - should not count reserved streams against stream limit flow control - should initialize to default flow window should initialize streams with window specified by peer should update connection and stream windows on SETTINGS - should update window when data received is over half of the maximum local window size should observe connection flow control - connection management - should raise error when opening new stream after receiving GOAWAY - should fire callback on PONG - should not raise an error on frame for a closed stream ID - should raise error when opening new stream after sending GOAWAY - should send GOAWAY frame on connection error - should fire callback on receipt of GOAWAY - should respond to PING frames - should not raise error when receiving connection management frames immediately after emitting goaway - should process connection management frames after GOAWAY - should raise error on frame for invalid stream ID - should raise error on invalid connection header - API - .window_update should emit WINDOW_UPDATE frames - .goaway should generate GOAWAY frame with last processed stream ID - .settings should emit SETTINGS frames - .ping should generate PING frames + should update window when data received is over half of the maximum local window size + should initialize to default flow window + Headers pre/post processing + should not split zero-concatenated header field values + should not concatenate multiple occurences of a header field with the same name settings synchronization + should reflect outgoing settings when ack is received should reflect incoming settings when SETTINGS is received should send SETTINGS ACK when SETTINGS is received should reflect settings_max_frame_size recevied from peer - should reflect outgoing settings when ack is received - Headers pre/post processing - should not concatenate multiple occurences of a header field with the same name - should not split zero-concatenated header field values framing - should generate CONTINUATION if HEADERS is too long - should compress stream headers - should raise compression error on encode of invalid frame - should decode non-contiguous header blocks should not generate CONTINUATION if HEADERS fits exactly in a frame - should generate CONTINUATION if HEADERS exceed the max payload by one byte should require that split header blocks are a contiguous sequence + should generate CONTINUATION if HEADERS is too long + should buffer incomplete frames should decompress header blocks regardless of stream state - should raise connection error on decode of invalid frame should emit encoded frames via on(:frame) should not generate CONTINUATION if HEADERS fits exactly in a frame - should buffer incomplete frames + should raise compression error on encode of invalid frame + should raise connection error on decode of invalid frame + should decode non-contiguous header blocks + should generate CONTINUATION if HEADERS exceed the max payload by one byte + should compress stream headers + stream management + should initialize to default stream limit (100) + should initialize idle stream on PRIORITY frame + should not count reserved streams against stream limit + should not exceed stream limit set by peer + should count open streams against stream limit + should initialize stream with HEADERS priority value + should change stream limit to received SETTINGS value initialization and settings + should raise error if SETTINGS stream != 0 should raise error if first frame is not settings should not raise error if first frame is SETTINGS - should raise error if SETTINGS stream != 0 + API + .ping should generate PING frames + .goaway should generate GOAWAY frame with last processed stream ID + .settings should emit SETTINGS frames + .window_update should emit WINDOW_UPDATE frames + cleanup_recently_closed + should cleanup old connections + connection management + should process connection management frames after GOAWAY + should send GOAWAY frame on connection error + should respond to PING frames + should raise error on invalid connection header + should not raise an error on frame for a closed stream ID + should raise error on frame for invalid stream ID + should raise error when opening new stream after sending GOAWAY + should fire callback on receipt of GOAWAY + should raise error when opening new stream after receiving GOAWAY + should not raise error when receiving connection management frames immediately after emitting goaway + should fire callback on PONG -HTTP2::Buffer - should unpack an unsigned 32-bit int - should force 8-bit encoding - should force 8-bit encoding when adding data - should return bytesize of the buffer - should read single byte at a time +HTTP2::Client + initialization and settings + should emit connection header and SETTINGS on new client connection + should initialize client with custom connection settings + should return odd stream IDs + should initialize client when receiving server settings before sending ack + upgrade + initializes the first stream in the half-closed state + fails when client has already created streams + sends the preface + alt-svc + received in the connection + should emit :altsvc when receiving one + should not emit :altsvc when the frame when contains no host + received in a stream + should not emit :alt_svc when the frame when contains a origin + should emit :altsvc + push + should raise error on PUSH_PROMISE against stream 0 + should emit stream object for received PUSH_PROMISE + should emit promise headers for received PUSH_PROMISE + should auto RST_STREAM promises against locally-RST stream + should raise error on PUSH_PROMISE against non-idle stream + should raise error on PUSH_PROMISE against bogus stream + should disallow client initiated push HTTP2::Header - header representation - should raise when decoding indexed representation with index zero - should handle indexed representation - literal w/o indexing representation - should handle literal header - should handle indexed header - literal never indexed - should handle literal header - should handle indexed header - literal w/ incremental indexing - should handle literal header - should handle indexed header - decode - spec example D.5. Response Examples without Huffman - request 3 + literal representation + string + should handle ascii codepoints without huffman + should handle long utf-8 strings without huffman + should handle ascii codepoints with huffman + should handle long utf-8 strings with huffman + should handle utf-8 codepoints with huffman + should handle utf-8 codepoints without huffman + choosing shorter representation + should return plain representation + should return plain representation + should return huffman representation + integer + should encode 10 using a 5-bit prefix + should encode 1337 using a 5-bit prefix + should encode 10 using a 0-bit prefix + should encode 1337 using a 0-bit prefix + shared compression context + should be initialized with empty headers + processing + should reject table size update if exceed limit + should clear table if entry exceeds table size + should shrink table if set smaller size + size bounds + should drop headers from end of table + never indexed + should process literal header with literal value + should process indexed header with literal value + no indexing + should process literal header with literal value + should process indexed header with literal value + incremental indexing + should process literal header with literal value + should process indexed header with literal value + encode + fills :path if empty + downcases the field + encode + spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers + request 2 should compute header table size - should emit expected headers should update header table +828684be5886a8eb10649cbf + should emit expected bytes on wire + request 3 + should update header table + should compute header table size +828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf + should emit expected bytes on wire request 1 - should emit expected headers should compute header table size +828684418cf1e3c2e5f23a6ba0ab90f4ff + should emit expected bytes on wire should update header table - request 2 - should update header table - should compute header table size - should emit expected headers - spec example D.6. Response Examples with Huffman + spec example D.4. Request Examples with Huffman request 3 - should emit expected headers should compute header table size +828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf + should emit expected bytes on wire should update header table - request 1 - should update header table - should compute header table size - should emit expected headers request 2 +828684be5886a8eb10649cbf + should emit expected bytes on wire should compute header table size - should emit expected headers should update header table - spec example D.4.b. Request Examples with Huffman - Server Handling of Improperly Ordered Headers - request 1 - should raise CompressionError - spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers request 1 - should emit expected headers should compute header table size +828684418cf1e3c2e5f23a6ba0ab90f4ff + should emit expected bytes on wire should update header table + spec example D.5. Response Examples without Huffman request 3 +88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 + should emit expected bytes on wire should compute header table size should update header table - should emit expected headers - request 2 - should update header table - should emit expected headers - should compute header table size - spec example D.4. Request Examples with Huffman - request 3 - should update header table - should compute header table size - should emit expected headers request 1 +4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d + should emit expected bytes on wire should compute header table size - should emit expected headers should update header table request 2 should update header table - should emit expected headers +4803333037c1c0bf + should emit expected bytes on wire should compute header table size - spec example D.6.a. Response Examples with Huffman - dynamic table size updates should not trigger exceptions - request 1 - should emit expected headers + spec example D.6. Response Examples with Huffman + request 3 should update header table should compute header table size - spec example D.3. Request Examples without Huffman +88c16196d07abe941054d444a8200595040b8166e084a62d1bffc05a839bd9ab77ad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007 + should emit expected bytes on wire request 2 should update header table should compute header table size - should emit expected headers +4883640effc1c0bf + should emit expected bytes on wire request 1 should update header table - should emit expected headers should compute header table size +488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e919d29ad171863c78f0b97c8e9ae82ae43d3 + should emit expected bytes on wire + spec example D.3. Request Examples without Huffman request 3 should compute header table size - should emit expected headers +828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 + should emit expected bytes on wire should update header table - shared compression context - should be initialized with empty headers - encode - downcases the field - fills :path if empty - processing - should shrink table if set smaller size - should clear table if entry exceeds table size - should reject table size update if exceed limit - never indexed - should process literal header with literal value - should process indexed header with literal value - incremental indexing - should process indexed header with literal value - should process literal header with literal value - no indexing - should process literal header with literal value - should process indexed header with literal value - size bounds - should drop headers from end of table - encode - spec example D.5. Response Examples without Huffman request 1 should compute header table size - should update header table -4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d +828684410f7777772e6578616d706c652e636f6d should emit expected bytes on wire - request 2 should update header table + request 2 should compute header table size -4803333037c1c0bf +828684be58086e6f2d6361636865 should emit expected bytes on wire + should update header table + header representation + should raise when decoding indexed representation with index zero + should handle indexed representation + literal w/o indexing representation + should handle indexed header + should handle literal header + literal w/ incremental indexing + should handle literal header + should handle indexed header + literal never indexed + should handle literal header + should handle indexed header + decode + spec example D.4.b. Request Examples with Huffman - Server Handling of Improperly Ordered Headers + request 1 + should raise CompressionError + spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers request 3 + should emit expected headers + should update header table should compute header table size -88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 - should emit expected bytes on wire + request 2 + should emit expected headers should update header table - spec example D.3. Request Examples without Huffman + should compute header table size request 1 + should compute header table size + should emit expected headers should update header table -828684410f7777772e6578616d706c652e636f6d - should emit expected bytes on wire + spec example D.6. Response Examples with Huffman + request 1 should compute header table size + should update header table + should emit expected headers request 3 + should emit expected headers should update header table should compute header table size -828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 - should emit expected bytes on wire request 2 should compute header table size should update header table -828684be58086e6f2d6361636865 - should emit expected bytes on wire - spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers - request 2 -828684be5886a8eb10649cbf - should emit expected bytes on wire + should emit expected headers + spec example D.3. Request Examples without Huffman + request 1 should update header table should compute header table size + should emit expected headers request 3 + should update header table should compute header table size + should emit expected headers + request 2 should update header table -828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf - should emit expected bytes on wire + should compute header table size + should emit expected headers + spec example D.5. Response Examples without Huffman request 1 + should emit expected headers should update header table -828684418cf1e3c2e5f23a6ba0ab90f4ff - should emit expected bytes on wire should compute header table size - spec example D.6. Response Examples with Huffman + request 3 + should update header table + should emit expected headers + should compute header table size request 2 should compute header table size + should emit expected headers should update header table -4883640effc1c0bf - should emit expected bytes on wire + spec example D.6.a. Response Examples with Huffman - dynamic table size updates should not trigger exceptions request 1 - should update header table -488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e919d29ad171863c78f0b97c8e9ae82ae43d3 - should emit expected bytes on wire - should compute header table size - request 3 + should emit expected headers should compute header table size should update header table -88c16196d07abe941054d444a8200595040b8166e084a62d1bffc05a839bd9ab77ad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007 - should emit expected bytes on wire spec example D.4. Request Examples with Huffman request 3 - should update header table should compute header table size -828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf - should emit expected bytes on wire - request 1 -828684418cf1e3c2e5f23a6ba0ab90f4ff - should emit expected bytes on wire should update header table - should compute header table size + should emit expected headers request 2 + should emit expected headers + should update header table + should compute header table size + request 1 should compute header table size + should emit expected headers should update header table -828684be5886a8eb10649cbf - should emit expected bytes on wire - literal representation - integer - should encode 10 using a 5-bit prefix - should encode 10 using a 0-bit prefix - should encode 1337 using a 5-bit prefix - should encode 1337 using a 0-bit prefix - string - should handle ascii codepoints without huffman - should handle long utf-8 strings with huffman - should handle utf-8 codepoints with huffman - should handle ascii codepoints with huffman - should handle utf-8 codepoints without huffman - should handle long utf-8 strings without huffman - choosing shorter representation - should return plain representation - should return huffman representation - should return plain representation -HTTP2::Client - alt-svc - received in the connection - should not emit :altsvc when the frame when contains no host - should emit :altsvc when receiving one - received in a stream - should not emit :alt_svc when the frame when contains a origin - should emit :altsvc - initialization and settings - should return odd stream IDs - should emit connection header and SETTINGS on new client connection - should initialize client with custom connection settings - should initialize client when receiving server settings before sending ack - upgrade - sends the preface - fails when client has already created streams - initializes the first stream in the half-closed state - push - should raise error on PUSH_PROMISE against stream 0 - should emit stream object for received PUSH_PROMISE - should raise error on PUSH_PROMISE against non-idle stream - should disallow client initiated push - should auto RST_STREAM promises against locally-RST stream - should raise error on PUSH_PROMISE against bogus stream - should emit promise headers for received PUSH_PROMISE +HTTP2::Buffer + should force 8-bit encoding when adding data + should return bytesize of the buffer + should unpack an unsigned 32-bit int + should force 8-bit encoding + should read single byte at a time + +HTTP2::Emitter + should execute callback exactly once + should allow events with no callbacks + should execute callback with optional args + should raise error on missing callback + should allow multiple callbacks on single event + should pass emitted callbacks to listeners HTTP2::Stream server API should emit received priority parameters via on(:priority) - should emit received payload via on(:data) should emit received headers via on(:headers) + should emit received payload via on(:data) push - .promise should emit server initiated stream .promise push stream should have parent stream + .promise should emit server initiated stream stream states - client: promise_headers > active > headers > .. > data > close server: active > half close > close + client: promise_headers > active > headers > .. > data > close client API + .refuse should reset stream with refused stream error code .headers should emit HEADERS frames + .reprioritize should emit PRIORITY frame .cancel should reset stream with cancel error code - .reprioritize should raise error if invoked by server - .data should split large DATA frames .data should split large multibyte DATA frames - .refuse should reset stream with refused stream error code - .reprioritize should emit PRIORITY frame + .data should split large DATA frames + .reprioritize should raise error if invoked by server .data should emit DATA frames .window_update should emit WINDOW_UPDATE frames flow control - should observe session flow control + should update window when data received is over half of the maximum local window size should not update window when data received is less than half of maximum local window size - should update window size on receipt of WINDOW_UPDATE should update window size on DATA frames only - should update window when data received is over half of the maximum local window size + should observe session flow control should initialize to default flow control window + should update window size on receipt of WINDOW_UPDATE stream states should set custom stream priority should initiliaze all streams to IDLE - half closed (remote) - should increment remote_window on received WINDOW_UPDATE - should ignore sent WINDOW_UPDATE frames - should transition to closed if END_STREAM flag is sent + half closed (local) + should raise error on attempt to send invalid frames + should emit :close event on transition to closed + should ignore received PRIORITY frames + should ignore received WINDOW_UPDATE frames + should increment local_window on sent WINDOW_UPDATE + should transition to closed on receipt of RST_STREAM frame + should transition to closed if RST_STREAM frame is sent + should reprioritize stream on sent PRIORITY + should reprioritize stream (and decendants) on received PRIORITY + should transition to closed on receipt of END_STREAM flag should emit :half_close event on transition - should not transition to closed if END_STREAM flag is sent when overflowing window - should transition to closed on reciept of RST_STREAM frame + closed + local closed via RST_STREAM frame + should ignore received frames + remote closed stream + should allow PRIORITY, RST_STREAM to be received + should ignore received WINDOW_UPDATE frames + should raise STREAM_CLOSED on attempt to send frames + should reprioritize stream on received PRIORITY + should allow PRIORITY, RST_STREAM to be sent + should reprioritize stream on sent PRIORITY + should raise STREAM_CLOSED on receipt of frame + open + should transition to half closed (local) if sending END_STREAM + should transition to half closed (remote) if receiving END_STREAM + should emit :close with reason + should transition to half closed if local opened with END_STREAM + should emit :active on open transition should reprioritize stream on received PRIORITY - should transition to closed if RST_STREAM is sent - should transition to closed when send buffer is emptied - should raise STREAM_CLOSED error on reciept of frames + should transition to closed if receiving RST_STREAM + should transition to half closed if remote opened with END_STREAM should reprioritize stream on sent PRIORITY - should emit :close event on close transition + should transition to closed if sending RST_STREAM + should emit :close after frame is processed + should allow any valid frames types to be sent + should allow frames of any type to be received + should emit :close on close transition + should not emit :active on transition from open idle - should reprioritize stream on received PRIORITY - should transition to reserved (local) on sent PUSH_PROMISE should reprioritize stream on sent PRIORITY + should transition to open on sent HEADERS + should reprioritize stream on received PRIORITY should transition to open on received HEADERS + should transition to reserved (local) on sent PUSH_PROMISE should transition to reserved (remote) on received PUSH_PROMISE - should transition to open on sent HEADERS - reserved (local) - should transition to closed on sent RST_STREAM - should increment remote_window on received WINDOW_UPDATE - should reprioritize stream on PRIORITY + reserved (remote) should transition to closed on received RST_STREAM - should allow HEADERS to be sent - should raise error on receipt of invalid frames should raise error if sending invalid frames - should transition on sent PUSH_PROMISE - should transition to half closed (remote) on sent HEADERS - reserved (remote) + should transition to closed on sent RST_STREAM should reprioritize stream on PRIORITY + should raise error on receipt of invalid frames + should transition to half closed (local) on received HEADERS + should transition on received PUSH_PROMISE should increment local_window on sent WINDOW_UPDATE - should transition to closed on sent RST_STREAM + reserved (local) should raise error on receipt of invalid frames should raise error if sending invalid frames should transition to closed on received RST_STREAM - should transition on received PUSH_PROMISE - should transition to half closed (local) on received HEADERS - closed - remote closed stream - should ignore received WINDOW_UPDATE frames - should raise STREAM_CLOSED on attempt to send frames - should allow PRIORITY, RST_STREAM to be received - should allow PRIORITY, RST_STREAM to be sent - should reprioritize stream on sent PRIORITY - should reprioritize stream on received PRIORITY - should raise STREAM_CLOSED on receipt of frame - local closed via RST_STREAM frame - should ignore received frames - half closed (local) - should ignore received WINDOW_UPDATE frames - should transition to closed on receipt of RST_STREAM frame - should raise error on attempt to send invalid frames - should emit :half_close event on transition - should emit :close event on transition to closed - should reprioritize stream (and decendants) on received PRIORITY + should transition to closed on sent RST_STREAM + should transition on sent PUSH_PROMISE + should increment remote_window on received WINDOW_UPDATE + should reprioritize stream on PRIORITY + should transition to half closed (remote) on sent HEADERS + should allow HEADERS to be sent + half closed (remote) + should transition to closed when send buffer is emptied + should transition to closed if END_STREAM flag is sent + should increment remote_window on received WINDOW_UPDATE + should raise STREAM_CLOSED error on reciept of frames should reprioritize stream on sent PRIORITY - should increment local_window on sent WINDOW_UPDATE - should ignore received PRIORITY frames - should transition to closed on receipt of END_STREAM flag - should transition to closed if RST_STREAM frame is sent - open - should emit :close after frame is processed - should transition to closed if receiving RST_STREAM - should not emit :active on transition from open - should transition to closed if sending RST_STREAM + should transition to closed on reciept of RST_STREAM frame should reprioritize stream on received PRIORITY - should reprioritize stream on sent PRIORITY - should allow any valid frames types to be sent - should transition to half closed (remote) if receiving END_STREAM - should transition to half closed (local) if sending END_STREAM - should transition to half closed if remote opened with END_STREAM - should emit :active on open transition - should allow frames of any type to be received - should emit :close with reason - should transition to half closed if local opened with END_STREAM - should emit :close on close transition + should emit :half_close event on transition + should transition to closed if RST_STREAM is sent + should not transition to closed if END_STREAM flag is sent when overflowing window + should ignore sent WINDOW_UPDATE frames + should emit :close event on close transition HTTP2::Framer - should ignore unknown extension frames - should process full frames only should determine frame length + should process full frames only + should ignore unknown extension frames should parse single frame at a time - DATA - should generate and parse bytes - SETTINGS - should ignore custom settings when receiving - should raise exception on sending invalid setting + ALTSVC should generate and parse bytes - should generate settings when id is given as an integer - should ignore custom settings when sending - should raise exception on receiving invalid stream ID - should raise exception on receiving invalid payload length - should raise exception on sending invalid stream ID - PRIORITY + DATA should generate and parse bytes - PING - should raise exception on invalid payload + PUSH_PROMISE should generate and parse bytes WINDOW_UPDATE should generate and parse bytes - CONTINUATION - should generate and parse bytes Padding - generating push_promise frame padded 1 - should preserve payload + generating headers frame padded 256 should fill padded octets with zero - should generate a frame with padding should parse a frame with padding - generating headers frame padded 1 - should preserve payload should generate a frame with padding - should parse a frame with padding - should fill padded octets with zero + should preserve payload parsing frames with invalid paddings should raise exception when the given padding is longer than the payload generating data frame padded 1 should preserve payload - should parse a frame with padding should fill padded octets with zero + should parse a frame with padding should generate a frame with padding generating push_promise frame padded 256 - should generate a frame with padding should fill padded octets with zero should parse a frame with padding should preserve payload - generating data frame padded 256 - should fill padded octets with zero - should preserve payload - should parse a frame with padding should generate a frame with padding generating with invalid padding length + should raise error on trying to generate data frame padded with invalid 257 should raise error on trying to generate data frame padded with invalid 1334 should raise error when adding a padding would make frame too large should raise error on trying to generate data frame padded with invalid 0 - should raise error on trying to generate data frame padded with invalid 257 - generating headers frame padded 256 + generating data frame padded 256 + should generate a frame with padding + should parse a frame with padding + should preserve payload + should fill padded octets with zero + generating push_promise frame padded 1 + should fill padded octets with zero should preserve payload should parse a frame with padding should generate a frame with padding + generating headers frame padded 1 should fill padded octets with zero - PUSH_PROMISE - should generate and parse bytes - HEADERS - should generate and parse bytes - should carry an optional stream priority + should parse a frame with padding + should preserve payload + should generate a frame with padding common header + should generate a large frame should parse common 9 byte header should raise exception on invalid frame type when sending - should raise exception on invalid frame flag - should generate a large frame should raise exception on invalid stream ID - should raise exception on invalid frame size + should raise exception on invalid frame flag should generate common 9 byte header - RST_STREAM + should raise exception on invalid frame size + PING should generate and parse bytes - GOAWAY + should raise exception on invalid payload + PRIORITY should generate and parse bytes + CONTINUATION + should generate and parse bytes + GOAWAY should treat debug payload as optional - ALTSVC should generate and parse bytes + HEADERS + should carry an optional stream priority + should generate and parse bytes + RST_STREAM + should generate and parse bytes + SETTINGS + should generate settings when id is given as an integer + should ignore custom settings when sending + should raise exception on receiving invalid payload length + should generate and parse bytes + should raise exception on sending invalid stream ID + should raise exception on receiving invalid stream ID + should ignore custom settings when receiving + should raise exception on sending invalid setting -HTTP2::Header::Huffman - encode - should encode www.example.com into f1e3c2e5f23a6ba0ab90f4ff - should encode no-cache into a8eb10649cbf - should encode Mon, 21 Oct 2013 20:13:21 GMT into d07abe941054d444a8200595040b8166e082a62d1bff - decode - should encode then decode 'UTF-8でエンコードした日本語文字列' into the same - should raise when input is shorter than expected - should raise when input is not padded by 1s - should raise when EOS is explicitly encoded - should encode then decode 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0' into the same - should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same - should raise when exceedingly padded - should encode then decode 'http://www.craigslist.org/about/sites/' into the same - should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com - should encode then decode 'BX=c99r6jp89a7no&b=3&s=q4; localization=en-us%3Bus%3Bus' into the same - should encode then decode 'cl_b=AB2BKbsl4hGM7M4nH5PYWghTM5A; cl_def_lang=en; cl_def_hp=shoals' into the same - should decode a8eb10649cbf into no-cache - should encode then decode 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' into the same - should decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT - should encode/decode all_possible 2-byte sequences - -HTTP2::Emitter - should execute callback with optional args - should allow events with no callbacks - should allow multiple callbacks on single event - should execute callback exactly once - should raise error on missing callback - should pass emitted callbacks to listeners - -HTTP2::Server - should allow server push - initialization and settings - should initialize client with custom connection settings - should emit SETTINGS on new connection - should return even stream IDs - -Finished in 0.91199 seconds (files took 0.32658 seconds to load) +Finished in 0.99271 seconds (files took 0.32155 seconds to load) 382 examples, 0 failures -Randomized with seed 37452 +Randomized with seed 33458 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1562,12 +1598,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1778131/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/4085443 and its subdirectories -I: Current time: Fri Jul 11 04:34:32 -12 2025 -I: pbuilder-time-stamp: 1752251672 +I: removing directory /srv/workspace/pbuilder/1778131 and its subdirectories +I: Current time: Sat Jul 12 06:35:45 +14 2025 +I: pbuilder-time-stamp: 1752251745