Diff of the two buildlogs: -- --- b1/build.log 2024-05-14 02:44:08.927118273 +0000 +++ b2/build.log 2024-05-14 02:49:07.398415628 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Jun 15 21:06:16 -12 2025 -I: pbuilder-time-stamp: 1750064776 +I: Current time: Tue May 14 16:44:12 +14 2024 +I: pbuilder-time-stamp: 1715654652 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-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/394327/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3719807/tmp/hooks/D01_modify_environment starting +debug: Running on ionos1-amd64. +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 May 14 02:44 /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/3719807/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3719807/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='amd64' + 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]="x86_64-pc-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=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='458a032f2b834a4f847dde8c7d85541d' - 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='394327' - PS1='# ' - PS2='> ' + INVOCATION_ID=f71d7cd4eae44271930e3fbcbc4cc67b + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-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=3719807 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.REjXp0p3/pbuilderrc_EPgW --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.REjXp0p3/b1 --logfile b1/build.log ruby-http-2_0.11.0-1.dsc' - SUDO_GID='110' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152: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.REjXp0p3/pbuilderrc_Ijcp --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.REjXp0p3/b2 --logfile b2/build.log ruby-http-2_0.11.0-1.dsc' + SUDO_GID=110 + SUDO_UID=105 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.6.13+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.6.13-1~bpo12+1 (2024-02-15) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Jun 13 17:46 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/394327/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 11 11:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3719807/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -270,7 +302,7 @@ Get: 152 http://deb.debian.org/debian trixie/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 153 http://deb.debian.org/debian trixie/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 154 http://deb.debian.org/debian trixie/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 48.8 MB in 1s (91.3 MB/s) +Fetched 48.8 MB in 5s (9665 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (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 ... 19699 files and directories currently installed.) @@ -779,8 +811,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon Jun 16 09:06:49 UTC 2025. -Universal Time is now: Mon Jun 16 09:06:49 UTC 2025. +Local time is now: Tue May 14 02:47:25 UTC 2024. +Universal Time is now: Tue May 14 02:47:25 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -920,7 +952,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/3719807/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/3719807/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 @@ -949,7 +985,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/d20250615-403413-198bnu/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20240514-3782278-wu78m8/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 @@ -959,7 +995,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/d20250615-403413-198bnu/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/d20240514-3782278-wu78m8/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 @@ -1015,507 +1051,294 @@ 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/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-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 51720 +Randomized with seed 31089 HTTP2::Stream + server API + should emit received headers via on(:headers) + should emit received priority parameters via on(:priority) + should emit received payload via on(:data) + push + .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 flow control 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 when data received is over half of the maximum local window size should update window size on DATA frames only should initialize to default flow control window should observe session flow control + should update window size on receipt of WINDOW_UPDATE + client API + .refuse should reset stream with refused stream error code + .cancel should reset stream with cancel error code + .data should emit DATA frames + .data should split large DATA frames + .reprioritize should emit PRIORITY frame + .reprioritize should raise error if invoked by server + .data should split large multibyte DATA frames + .window_update should emit WINDOW_UPDATE frames + .headers should emit HEADERS frames stream states - should set custom stream priority should initiliaze all streams to IDLE - idle - should transition to reserved (remote) on received PUSH_PROMISE + should set custom stream priority + half closed (remote) + should ignore sent WINDOW_UPDATE frames + should not transition to closed if END_STREAM flag is sent when overflowing window + should transition to closed on reciept of RST_STREAM frame + should increment remote_window on received WINDOW_UPDATE + should transition to closed if RST_STREAM is sent + should emit :close event on close transition 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 transition to open on received HEADERS - closed - remote closed stream - should reprioritize stream on sent PRIORITY - should reprioritize stream on received PRIORITY - should allow PRIORITY, RST_STREAM to be received - should raise STREAM_CLOSED on receipt of frame - should ignore received WINDOW_UPDATE frames - should allow PRIORITY, RST_STREAM to be sent - should raise STREAM_CLOSED on attempt to send frames - local closed via RST_STREAM frame - should ignore received frames - half closed (local) - should reprioritize stream on sent PRIORITY - should increment local_window on sent WINDOW_UPDATE - should reprioritize stream (and decendants) on received PRIORITY - should raise error on attempt to send invalid frames - should transition to closed if RST_STREAM frame is sent - should transition to closed on receipt of END_STREAM flag - should transition to closed on receipt of RST_STREAM frame - should ignore received WINDOW_UPDATE frames + should transition to closed when send buffer is emptied + should raise STREAM_CLOSED error on reciept of frames should emit :half_close event on transition - should emit :close event on transition to closed - should ignore received PRIORITY frames + should transition to closed if END_STREAM flag is sent + should reprioritize stream on sent PRIORITY reserved (remote) - should transition to half closed (local) on received HEADERS - should raise error if sending invalid frames + should increment local_window on sent WINDOW_UPDATE should reprioritize stream on PRIORITY should raise error on receipt of invalid frames should transition on received PUSH_PROMISE - should transition to closed on sent RST_STREAM - should increment local_window on sent WINDOW_UPDATE should transition to closed on received RST_STREAM + should transition to half closed (local) on received HEADERS + should raise error if sending invalid frames + should transition to closed on sent RST_STREAM open - should transition to closed if sending RST_STREAM - should reprioritize stream on sent PRIORITY - should emit :close on close transition - should not emit :active on transition from open - should reprioritize stream on received PRIORITY + should transition to half closed (local) if sending END_STREAM + should transition to half closed if local opened with END_STREAM + should allow any valid frames types to be sent should emit :active on open transition - should allow frames of any type to be received - should transition to half closed if remote opened with END_STREAM should emit :close with reason + should reprioritize stream on received PRIORITY + should transition to half closed if remote opened with END_STREAM + 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 transition to closed if receiving RST_STREAM - should transition to half closed if local opened with END_STREAM should transition to half closed (remote) if receiving END_STREAM - should transition to half closed (local) if sending END_STREAM - half closed (remote) - should increment remote_window on received WINDOW_UPDATE - should emit :half_close event on transition - should transition to closed if END_STREAM flag is sent - should raise STREAM_CLOSED error on reciept of frames - should not transition to closed if END_STREAM flag is sent when overflowing window - should emit :close event on close transition - should transition to closed on reciept of RST_STREAM frame - should ignore sent WINDOW_UPDATE frames + should emit :close on close transition + should allow frames of any type to be received should reprioritize stream on sent PRIORITY - should transition to closed if RST_STREAM is sent - should transition to closed when send buffer is emptied - should reprioritize stream on received PRIORITY + should not emit :active on transition from open + should transition to closed if receiving RST_STREAM reserved (local) - should increment remote_window on received WINDOW_UPDATE - should allow HEADERS to be sent should transition to closed on received RST_STREAM should raise error if sending invalid frames - should raise error on receipt of invalid frames + should increment remote_window on received WINDOW_UPDATE + should allow HEADERS to be sent should transition on sent PUSH_PROMISE + should transition to closed on sent RST_STREAM should transition to half closed (remote) on sent HEADERS should reprioritize stream on PRIORITY - should transition to closed on sent RST_STREAM - client API - .reprioritize should emit PRIORITY frame - .cancel should reset stream with cancel error code - .headers should emit HEADERS frames - .reprioritize should raise error if invoked by server - .window_update should emit WINDOW_UPDATE frames - .refuse should reset stream with refused stream error code - .data should split large DATA frames - .data should emit DATA frames - .data should split large multibyte DATA frames - server API - should emit received payload via on(:data) - should emit received priority parameters via on(:priority) - should emit received headers via on(:headers) - push - .promise should emit server initiated stream - .promise push stream should have parent stream - stream states - client: promise_headers > active > headers > .. > data > close - server: active > half close > close - -HTTP2::Server - should allow server push - initialization and settings - should return even stream IDs - should initialize client with custom connection settings - should emit SETTINGS on new connection - -HTTP2::Client - alt-svc - received in a stream - should not emit :alt_svc when the frame when contains a origin - should emit :altsvc - received in the connection - should not emit :altsvc when the frame when contains no host - should emit :altsvc when receiving one - upgrade - fails when client has already created streams - sends the preface - initializes the first stream in the half-closed state - initialization and settings - should initialize client when receiving server settings before sending ack - should initialize client with custom connection settings - should return odd stream IDs - should emit connection header and SETTINGS on new client connection - push - should disallow client initiated push - should raise error on PUSH_PROMISE against non-idle stream - should raise error on PUSH_PROMISE against bogus stream - should auto RST_STREAM promises against locally-RST stream - should emit promise headers for received PUSH_PROMISE - should raise error on PUSH_PROMISE against stream 0 - should emit stream object for received PUSH_PROMISE + should raise error on receipt of invalid frames + half closed (local) + should raise error on attempt to send invalid frames + should reprioritize stream on sent PRIORITY + should emit :half_close event on transition + should transition to closed on receipt of RST_STREAM frame + should emit :close event on transition to closed + should ignore received PRIORITY frames + should increment local_window on sent WINDOW_UPDATE + should transition to closed on receipt of END_STREAM flag + should reprioritize stream (and decendants) on received PRIORITY + should transition to closed if RST_STREAM frame is sent + should ignore received WINDOW_UPDATE frames + 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 received HEADERS + should transition to reserved (remote) on received PUSH_PROMISE + should transition to open on sent HEADERS + closed + local closed via RST_STREAM frame + should ignore received frames + remote closed stream + should raise STREAM_CLOSED on attempt to send frames + should allow PRIORITY, RST_STREAM to be received + should reprioritize stream on received PRIORITY + should raise STREAM_CLOSED on receipt of frame + should allow PRIORITY, RST_STREAM to be sent + should ignore received WINDOW_UPDATE frames + should reprioritize stream on sent PRIORITY -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 raise when input is not padded by 1s - should decode a8eb10649cbf into no-cache - 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 decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT - should raise when exceedingly padded - should encode then decode 'http://www.craigslist.org/about/sites/' 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 'BX=c99r6jp89a7no&b=3&s=q4; localization=en-us%3Bus%3Bus' into the same - should raise when EOS is explicitly encoded - should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same - should raise when input is shorter than expected - should encode/decode all_possible 2-byte sequences - should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com - 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 +HTTP2::Buffer + should read single byte at a time + should unpack an unsigned 32-bit int + should return bytesize of the buffer + should force 8-bit encoding + should force 8-bit encoding when adding data HTTP2::Connection + connection management + should not raise error when receiving connection management frames immediately after emitting goaway + should raise error when opening new stream after sending GOAWAY + should raise error when opening new stream after receiving GOAWAY + should respond to PING frames + should send GOAWAY frame on connection error + should fire callback on receipt of GOAWAY + should fire callback on PONG + should raise error on invalid connection header + should not raise an error on frame for a closed stream ID + should process connection management frames after GOAWAY + should raise error on frame for invalid stream ID settings synchronization should reflect incoming settings when SETTINGS is received - should send SETTINGS ACK when SETTINGS is received should reflect outgoing settings when ack is received + should send SETTINGS ACK when SETTINGS is received should reflect settings_max_frame_size recevied from peer + initialization and settings + should not raise error if first frame is SETTINGS + should raise error if SETTINGS stream != 0 + should raise error if first frame is not settings + flow control + should initialize streams with window specified by peer + should initialize to default flow window + should update window when data received is over half of the maximum local window size + should observe connection flow control + should update connection and stream windows on SETTINGS API - .settings should emit SETTINGS frames - .goaway should generate GOAWAY frame with last processed stream ID - .ping should generate PING frames .window_update should emit WINDOW_UPDATE frames - stream management - should not count reserved streams against stream limit - should initialize idle stream on PRIORITY frame - should not exceed stream limit set by peer - should change stream limit to received SETTINGS value - should initialize stream with HEADERS priority value - should initialize to default stream limit (100) - should count open streams against stream limit + .ping should generate PING frames + .goaway should generate GOAWAY frame with last processed stream ID + .settings should emit SETTINGS frames + 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 framing - should raise compression error on encode of invalid frame - should not generate CONTINUATION if HEADERS fits exactly in a frame - should buffer incomplete frames should generate CONTINUATION if HEADERS exceed the max payload by one byte + should require that split header blocks are a contiguous sequence should decode non-contiguous header blocks + should buffer incomplete frames + should not generate CONTINUATION if HEADERS fits exactly in a frame should not generate CONTINUATION if HEADERS fits exactly in a frame - should compress stream headers - should require that split header blocks are a contiguous sequence - should generate CONTINUATION if HEADERS is too long should emit encoded frames via on(:frame) should decompress header blocks regardless of stream state + should raise compression error on encode of invalid frame should raise connection error on decode of invalid frame - connection management - should not raise error when receiving connection management frames immediately after emitting goaway - should respond to PING frames - should fire callback on receipt of GOAWAY - should raise error when opening new stream after receiving GOAWAY - should raise error on frame for invalid stream ID - should send GOAWAY frame on connection error - should raise error when opening new stream after sending GOAWAY - should not raise an error on frame for a closed stream ID - should fire callback on PONG - should process connection management frames after GOAWAY - should raise error on invalid connection header - 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 + should compress stream headers + should generate CONTINUATION if HEADERS is too long cleanup_recently_closed should cleanup old connections - initialization and settings - should raise error if first frame is not settings - should raise error if SETTINGS stream != 0 - should not raise error if first frame is SETTINGS - flow control - should update window when data received is over half of the maximum local window size - should update connection and stream windows on SETTINGS - should initialize to default flow window - should observe connection flow control - should initialize streams with window specified by peer - -HTTP2::Framer - should parse single frame at a time - should determine frame length - should ignore unknown extension frames - should process full frames only - WINDOW_UPDATE - should generate and parse bytes - RST_STREAM - should generate and parse bytes - ALTSVC - should generate and parse bytes - PRIORITY - should generate and parse bytes - PUSH_PROMISE - should generate and parse bytes - GOAWAY - should treat debug payload as optional - should generate and parse bytes - SETTINGS - should generate and parse bytes - should raise exception on sending invalid setting - should ignore custom settings when sending - should raise exception on sending invalid stream ID - should raise exception on receiving invalid payload length - should generate settings when id is given as an integer - should ignore custom settings when receiving - should raise exception on receiving invalid stream ID - CONTINUATION - should generate and parse bytes - common header - should raise exception on invalid frame size - should raise exception on invalid frame type when sending - should generate a large frame - should generate common 9 byte header - should raise exception on invalid frame flag - should parse common 9 byte header - should raise exception on invalid stream ID - DATA - should generate and parse bytes - Padding - generating with invalid padding length - should raise error on trying to generate data frame padded with invalid 257 - 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 1334 - generating headers frame padded 256 - should fill padded octets with zero - should preserve payload - should generate a frame with padding - should parse a frame with padding - generating data frame padded 1 - should fill padded octets with zero - should parse a frame with padding - should generate a frame with padding - should preserve payload - generating push_promise frame padded 256 - should parse a frame with padding - should preserve payload - should generate a frame with padding - should fill padded octets with zero - parsing frames with invalid paddings - should raise exception when the given padding is longer than the payload - generating data frame padded 256 - should fill padded octets with zero - should generate a frame with padding - should parse a frame with padding - should preserve payload - generating headers frame padded 1 - should generate a frame with padding - should preserve payload - should parse a frame with padding - should fill padded octets with zero - generating push_promise frame padded 1 - should generate a frame with padding - should fill padded octets with zero - should preserve payload - should parse a frame with padding - PING - should generate and parse bytes - should raise exception on invalid payload - HEADERS - should carry an optional stream priority - should generate and parse bytes - -HTTP2::Buffer - should force 8-bit encoding when adding data - should unpack an unsigned 32-bit int - should read single byte at a time - should return bytesize of the buffer - should force 8-bit encoding + stream management + should not exceed stream limit set by peer + should initialize idle stream on PRIORITY frame + should not count reserved streams against stream limit + should change stream limit to received SETTINGS value + should initialize to default stream limit (100) + should initialize stream with HEADERS priority value + should count open streams against stream limit HTTP2::Header shared compression context should be initialized with empty headers - encode - fills :path if empty - downcases the field processing should shrink table if set smaller size should reject table size update if exceed limit should clear table if entry exceeds table size + never indexed + should process indexed header with literal value + should process literal header with literal value size bounds should drop headers from end of table - never indexed + incremental indexing should process literal header with literal value should process indexed header with literal value no indexing should process indexed header with literal value should process literal header with literal value - incremental indexing - should process indexed header with literal value - should process literal header with literal value - decode - spec example D.3. Request Examples without Huffman - request 2 - should emit expected headers - should compute header table size - should update header table + encode + fills :path if empty + downcases the field + encode + spec example D.5. Response Examples without Huffman request 1 - should compute header table size should update header table - should emit expected headers - request 3 +4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d + should emit expected bytes on wire should compute header table size - should emit expected headers - should update header table - spec example D.4. Request Examples with Huffman request 3 should compute header table size - should emit expected headers - should update header table - request 1 - should emit expected headers - should compute header table size +88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 + should emit expected bytes on wire should update header table request 2 - should emit expected headers should compute header table size +4803333037c1c0bf + should emit expected bytes on wire should update header table - spec example D.5. Response Examples without Huffman + spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers request 3 - should emit expected headers - should compute header table size - should update header table - request 1 - should emit expected headers - should compute header table size - should update header table - request 2 should update header table - should emit expected headers should compute header table size - spec example D.4.b. Request Examples with Huffman - Server Handling of Improperly Ordered Headers - request 1 - should raise CompressionError - spec example D.6. Response Examples with Huffman +828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf + should emit expected bytes on wire request 2 +828684be5886a8eb10649cbf + should emit expected bytes on wire should compute header table size - should emit expected headers - should update header table - request 1 - should emit expected headers - should compute header table size - should update header table - request 3 should update header table - should compute header table size - should emit expected headers - spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers request 1 should update header table - should emit expected headers - should compute header table size - request 3 - should emit expected headers - should compute header table size - should update header table - request 2 - should emit expected headers - should update header table - 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 compute header table size - should emit expected headers - should update header table - encode - spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers +828684418cf1e3c2e5f23a6ba0ab90f4ff + should emit expected bytes on wire + spec example D.4. Request Examples with Huffman request 2 should update header table 828684be5886a8eb10649cbf should emit expected bytes on wire should compute header table size request 1 - should compute header table size should update header table 828684418cf1e3c2e5f23a6ba0ab90f4ff should emit expected bytes on wire + should compute header table size request 3 828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf should emit expected bytes on wire should compute header table size should update header table spec example D.6. Response Examples with Huffman - request 2 - should update header table -4883640effc1c0bf - should emit expected bytes on wire - should compute header table size request 3 - should compute header table size + should update header table 88c16196d07abe941054d444a8200595040b8166e084a62d1bffc05a839bd9ab77ad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007 should emit expected bytes on wire - should update header table - request 1 should compute header table size + request 1 488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e919d29ad171863c78f0b97c8e9ae82ae43d3 should emit expected bytes on wire - should update header table - spec example D.4. Request Examples with Huffman - request 3 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 -828684418cf1e3c2e5f23a6ba0ab90f4ff - should emit expected bytes on wire request 2 should compute header table size - should update header table -828684be5886a8eb10649cbf - should emit expected bytes on wire - spec example D.5. Response Examples without Huffman - request 1 - should update header table - should compute header table size -4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d +4883640effc1c0bf should emit expected bytes on wire - request 2 - should compute header table size should update header table -4803333037c1c0bf - should emit expected bytes on wire + spec example D.3. Request Examples without Huffman request 3 -88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 - should emit expected bytes on wire should update header table - should compute header table size - spec example D.3. Request Examples without Huffman - request 1 -828684410f7777772e6578616d706c652e636f6d +828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 should emit expected bytes on wire - should update header table should compute header table size request 2 - should update header table should compute header table size + should update header table 828684be58086e6f2d6361636865 should emit expected bytes on wire - request 3 - should update header table + request 1 should compute header table size -828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 + should update header table +828684410f7777772e6578616d706c652e636f6d should emit expected bytes on wire header representation should raise when decoding indexed representation with index zero should handle indexed representation - literal w/ incremental indexing + literal w/o indexing representation should handle indexed header should handle literal header - literal w/o indexing representation + literal w/ incremental indexing should handle literal header should handle indexed header literal never indexed @@ -1523,34 +1346,247 @@ should handle indexed header literal representation string - should handle utf-8 codepoints without huffman - should handle ascii codepoints with huffman should handle long utf-8 strings with huffman should handle long utf-8 strings without huffman + should handle ascii codepoints with huffman should handle ascii codepoints without huffman + should handle utf-8 codepoints without huffman should handle utf-8 codepoints with huffman choosing shorter representation - should return plain representation should return huffman representation should return plain representation + should return plain representation integer - should encode 10 using a 0-bit prefix should encode 1337 using a 0-bit prefix should encode 10 using a 5-bit prefix + should encode 10 using a 0-bit prefix should encode 1337 using a 5-bit prefix + decode + spec example D.4. Request Examples with Huffman + request 1 + should update header table + should compute header table size + should emit expected headers + request 3 + should emit expected headers + should update header table + should compute header table size + request 2 + should update header table + should emit expected headers + should compute header table size + spec example D.5. Response Examples without Huffman + request 1 + should emit expected headers + should compute header table size + should update header table + request 2 + should update header table + should emit expected headers + should compute header table size + request 3 + should emit expected headers + should update header table + should compute header table size + spec example D.4.b. Request Examples with Huffman - Server Handling of Improperly Ordered Headers + request 1 + should raise CompressionError + spec example D.6. Response Examples with Huffman + request 2 + should compute header table size + should update header table + should emit expected headers + request 3 + should compute header table size + should emit expected headers + should update header table + request 1 + should compute header table size + should update header table + should emit expected headers + spec example D.3. Request Examples without Huffman + request 3 + should compute header table size + should update header table + should emit expected headers + request 2 + should emit expected headers + should compute header table size + should update header table + request 1 + should update header table + should emit expected headers + should compute header table size + spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers + request 3 + should compute header table size + should update header table + should emit expected headers + request 2 + should update header table + should compute header table size + should emit expected headers + request 1 + should emit expected headers + should compute header table size + should update header table + spec example D.6.a. Response Examples with Huffman - dynamic table size updates should not trigger exceptions + request 1 + should compute header table size + should update header table + should emit expected headers HTTP2::Emitter should execute callback with optional args - should allow multiple callbacks on single event - should raise error on missing callback should allow events with no callbacks - should pass emitted callbacks to listeners + should raise error on missing callback + should allow multiple callbacks on single event should execute callback exactly once + should pass emitted callbacks to listeners + +HTTP2::Client + alt-svc + received in a stream + should emit :altsvc + should not emit :alt_svc when the frame when contains a origin + received in the connection + should not emit :altsvc when the frame when contains no host + should emit :altsvc when receiving one + upgrade + sends the preface + initializes the first stream in the half-closed state + fails when client has already created streams + initialization and settings + should initialize client when receiving server settings before sending ack + should emit connection header and SETTINGS on new client connection + should initialize client with custom connection settings + should return odd stream IDs + push + should raise error on PUSH_PROMISE against bogus stream + should disallow client initiated push + should raise error on PUSH_PROMISE against stream 0 + should emit promise headers for received PUSH_PROMISE + should emit stream object for received PUSH_PROMISE + should raise error on PUSH_PROMISE against non-idle stream + should auto RST_STREAM promises against locally-RST stream + +HTTP2::Header::Huffman + encode + should encode Mon, 21 Oct 2013 20:13:21 GMT into d07abe941054d444a8200595040b8166e082a62d1bff + should encode no-cache into a8eb10649cbf + should encode www.example.com into f1e3c2e5f23a6ba0ab90f4ff + decode + should raise when input is not padded by 1s + should decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT + should encode/decode all_possible 2-byte sequences + should encode then decode 'BX=c99r6jp89a7no&b=3&s=q4; localization=en-us%3Bus%3Bus' into the same + 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 raise when exceedingly padded + should encode then decode 'http://www.craigslist.org/about/sites/' 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 raise when input is shorter than expected + should decode a8eb10649cbf into no-cache + should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same + should raise when EOS is explicitly encoded + should encode then decode 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' into the same + should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com + +HTTP2::Framer + should process full frames only + should ignore unknown extension frames + should parse single frame at a time + should determine frame length + Padding + generating headers frame padded 1 + should preserve payload + should parse a frame with padding + should fill padded octets with zero + should generate a frame with padding + generating headers frame padded 256 + should fill padded octets with zero + should parse a frame with padding + should generate a frame with padding + should preserve payload + generating data frame padded 1 + should generate a frame with padding + should preserve payload + should parse a frame with padding + should fill padded octets with zero + generating push_promise frame padded 256 + should parse a frame with padding + should preserve payload + should generate a frame with padding + should fill padded octets with zero + generating with invalid padding length + should raise error on trying to generate data frame padded with invalid 1334 + should raise error on trying to generate data frame padded with invalid 257 + 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 + generating push_promise frame padded 1 + should preserve payload + should parse a frame with padding + should fill padded octets with zero + should generate a frame with padding + parsing frames with invalid paddings + should raise exception when the given padding is longer than the payload + generating data frame padded 256 + should preserve payload + should fill padded octets with zero + should generate a frame with padding + should parse a frame with padding + SETTINGS + should generate and parse bytes + should raise exception on sending invalid stream ID + should generate settings when id is given as an integer + should raise exception on receiving invalid payload length + should ignore custom settings when sending + should raise exception on sending invalid setting + should raise exception on receiving invalid stream ID + should ignore custom settings when receiving + common header + should raise exception on invalid frame flag + should raise exception on invalid frame size + should generate a large frame + should parse common 9 byte header + should raise exception on invalid frame type when sending + should generate common 9 byte header + should raise exception on invalid stream ID + PRIORITY + should generate and parse bytes + ALTSVC + should generate and parse bytes + DATA + should generate and parse bytes + RST_STREAM + should generate and parse bytes + GOAWAY + should generate and parse bytes + should treat debug payload as optional + CONTINUATION + should generate and parse bytes + HEADERS + should generate and parse bytes + should carry an optional stream priority + PING + should generate and parse bytes + should raise exception on invalid payload + WINDOW_UPDATE + should generate and parse bytes + PUSH_PROMISE + should generate and parse bytes + +HTTP2::Server + should allow server push + initialization and settings + should return even stream IDs + should initialize client with custom connection settings + should emit SETTINGS on new connection -Finished in 0.90712 seconds (files took 0.28928 seconds to load) +Finished in 2.91 seconds (files took 0.68266 seconds to load) 382 examples, 0 failures -Randomized with seed 51720 +Randomized with seed 31089 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1582,12 +1618,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/3719807/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3719807/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/394327 and its subdirectories -I: Current time: Sun Jun 15 21:07:06 -12 2025 -I: pbuilder-time-stamp: 1750064826 +I: removing directory /srv/workspace/pbuilder/3719807 and its subdirectories +I: Current time: Tue May 14 16:49:06 +14 2024 +I: pbuilder-time-stamp: 1715654946