Diff of the two buildlogs: -- --- b1/build.log 2025-02-19 00:50:16.806032380 +0000 +++ b2/build.log 2025-02-19 00:51:19.511196140 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Mar 23 19:12:39 -12 2026 -I: pbuilder-time-stamp: 1774336359 +I: Current time: Wed Feb 19 14:50:19 +14 2025 +I: pbuilder-time-stamp: 1739926219 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,54 +25,86 @@ 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/89440/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/64529/tmp/hooks/D01_modify_environment starting +debug: Running on ionos12-i386. +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 Feb 19 00:50 /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/64529/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/64529/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='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='i386' + 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]="37" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=10 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='e943896972b646c49c24f4dcfe48bf39' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - 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='89440' - PS1='# ' - PS2='> ' + INVOCATION_ID=7cd8cdd9ead744848472674c2a506b64 + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-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=64529 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.Sln6fA7y/pbuilderrc_m5KT --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.Sln6fA7y/b1 --logfile b1/build.log ruby-http-2_0.11.0-1.dsc' - SUDO_GID='112' - SUDO_UID='107' - 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.Sln6fA7y/pbuilderrc_i6K2 --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.Sln6fA7y/b2 --logfile b2/build.log ruby-http-2_0.11.0-1.dsc' + SUDO_GID=112 + SUDO_UID=107 + 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 ionos6-i386 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/89440/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/64529/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -277,7 +309,7 @@ Get: 159 http://deb.debian.org/debian unstable/main i386 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 160 http://deb.debian.org/debian unstable/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 161 http://deb.debian.org/debian unstable/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 51.0 MB in 1s (78.6 MB/s) +Fetched 51.0 MB in 1s (62.0 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19784 files and directories currently installed.) @@ -808,8 +840,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Mar 24 07:13:02 UTC 2026. -Universal Time is now: Tue Mar 24 07:13:02 UTC 2026. +Local time is now: Wed Feb 19 00:50:50 UTC 2025. +Universal Time is now: Wed Feb 19 00:50:50 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-2) ... @@ -956,7 +988,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/64529/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/64529/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 @@ -990,7 +1026,7 @@ │ ruby-http-2: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260323-94662-clqpz6/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250219-8946-bfu5p4/gemspec WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 0, development) is not recommended use a bounded requirement, such as "~> x.y" @@ -999,7 +1035,7 @@ Name: http-2 Version: 0.11.0 File: http-2-0.11.0.gem -/usr/bin/ruby3.3 -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/d20260323-94662-clqpz6/http-2-0.11.0.gem +/usr/bin/ruby3.3 -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/d20250219-8946-bfu5p4/http-2-0.11.0.gem /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 /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/client.rb @@ -1054,16 +1090,181 @@ 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.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/i386-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.3 -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 24480 +Randomized with seed 18966 + +HTTP2::Client + initialization and settings + should initialize client when receiving server settings before sending ack + should return odd stream IDs + should emit connection header and SETTINGS on new client connection + should initialize client with custom connection settings + upgrade + fails when client has already created streams + initializes the first stream in the half-closed state + sends the preface + push + should auto RST_STREAM promises against locally-RST stream + should raise error on PUSH_PROMISE against stream 0 + should emit promise headers for received PUSH_PROMISE + should raise error on PUSH_PROMISE against non-idle stream + should raise error on PUSH_PROMISE against bogus stream + should disallow client initiated push + should emit stream object for received PUSH_PROMISE + 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 emit :altsvc when receiving one + should not emit :altsvc when the frame when contains no host HTTP2::Buffer + 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 - should force 8-bit encoding should unpack an unsigned 32-bit int - should return bytesize of the buffer + +HTTP2::Stream + 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 push stream should have parent stream + .promise should emit server initiated stream + stream states + server: active > half close > close + client: promise_headers > active > headers > .. > data > close + stream states + should set custom stream priority + should initiliaze all streams to IDLE + idle + should transition to reserved (local) on sent PUSH_PROMISE + should transition to open on received HEADERS + should transition to open on sent HEADERS + should reprioritize stream on sent PRIORITY + should reprioritize stream on received PRIORITY + should transition to reserved (remote) on received PUSH_PROMISE + half closed (local) + should transition to closed if RST_STREAM frame is sent + should ignore received WINDOW_UPDATE frames + should transition to closed on receipt of RST_STREAM frame + should increment local_window on sent WINDOW_UPDATE + should emit :half_close event on transition + should raise error on attempt to send invalid frames + should transition to closed on receipt of END_STREAM flag + should reprioritize stream on sent PRIORITY + should emit :close event on transition to closed + should ignore received PRIORITY frames + should reprioritize stream (and decendants) on received PRIORITY + reserved (local) + should raise error on receipt of invalid frames + should transition to half closed (remote) on sent HEADERS + should reprioritize stream on PRIORITY + should increment remote_window on received WINDOW_UPDATE + should transition to closed on sent RST_STREAM + should transition to closed on received RST_STREAM + should raise error if sending invalid frames + should transition on sent PUSH_PROMISE + should allow HEADERS to be sent + closed + local closed via RST_STREAM frame + should ignore received frames + remote closed stream + should ignore received WINDOW_UPDATE frames + should allow PRIORITY, RST_STREAM to be sent + should reprioritize stream on received PRIORITY + should reprioritize stream on sent PRIORITY + should raise STREAM_CLOSED on attempt to send frames + should allow PRIORITY, RST_STREAM to be received + should raise STREAM_CLOSED on receipt of frame + reserved (remote) + should transition on received PUSH_PROMISE + should raise error if sending invalid frames + should transition to half closed (local) on received HEADERS + should raise error on receipt of invalid frames + should transition to closed on sent RST_STREAM + should increment local_window on sent WINDOW_UPDATE + should reprioritize stream on PRIORITY + should transition to closed on received RST_STREAM + open + should transition to half closed if local opened with END_STREAM + should allow frames of any type to be received + should transition to closed if sending RST_STREAM + should transition to half closed (local) if sending END_STREAM + should reprioritize stream on sent PRIORITY + should transition to half closed if remote opened with END_STREAM + should emit :close with reason + should emit :close on close transition + should transition to half closed (remote) if receiving END_STREAM + should allow any valid frames types to be sent + should emit :active on open transition + should reprioritize stream on received PRIORITY + should emit :close after frame is processed + should transition to closed if receiving RST_STREAM + should not emit :active on transition from open + half closed (remote) + should reprioritize stream on received PRIORITY + should transition to closed on reciept of RST_STREAM frame + should transition to closed if END_STREAM flag is sent + should raise STREAM_CLOSED error on reciept of frames + should transition to closed when send buffer is emptied + should not transition to closed if END_STREAM flag is sent when overflowing window + should transition to closed if RST_STREAM is sent + should emit :half_close event on transition + should ignore sent WINDOW_UPDATE frames + should emit :close event on close transition + should reprioritize stream on sent PRIORITY + should increment remote_window on received WINDOW_UPDATE + client API + .data should emit DATA frames + .refuse should reset stream with refused stream error code + .cancel should reset stream with cancel error code + .reprioritize should raise error if invoked by server + .window_update should emit WINDOW_UPDATE frames + .data should split large DATA frames + .data should split large multibyte DATA frames + .headers should emit HEADERS frames + .reprioritize should emit PRIORITY frame + flow control + should initialize to default flow control window + should observe session flow control + should not update window when data received is less than half of maximum local window size + should update window when data received is over half of the maximum local window size + should update window size on receipt of WINDOW_UPDATE + should update window size on DATA frames only HTTP2::Header + literal representation + string + should handle utf-8 codepoints without huffman + should handle utf-8 codepoints with huffman + should handle long utf-8 strings without huffman + should handle ascii codepoints with huffman + should handle ascii codepoints without huffman + should handle long utf-8 strings with huffman + choosing shorter representation + should return huffman representation + should return plain representation + should return plain representation + integer + should encode 1337 using a 5-bit prefix + should encode 1337 using a 0-bit prefix + should encode 10 using a 0-bit prefix + should encode 10 using a 5-bit prefix + header representation + should handle indexed representation + should raise when decoding indexed representation with index zero + literal w/o indexing representation + should handle literal header + should handle indexed header + literal w/ incremental indexing + should handle indexed header + should handle literal header + literal never indexed + should handle indexed header + should handle literal header shared compression context should be initialized with empty headers encode @@ -1071,407 +1272,271 @@ downcases the field processing should clear table if entry exceeds table size - should shrink table if set smaller size should reject table size update if exceed limit + should shrink table if set smaller size size bounds should drop headers from end of table incremental indexing should process indexed header with literal value should process literal header with literal value - never indexed - 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 + never indexed + should process literal header with literal value + should process indexed header with literal value encode - spec example D.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers - request 2 - should update header table -828684be5886a8eb10649cbf - should emit expected bytes on wire - should compute header table size - request 1 -828684418cf1e3c2e5f23a6ba0ab90f4ff - should emit expected bytes on wire - should update header table - should compute header table size + spec example D.6. Response Examples with Huffman request 3 should compute header table size should update header table -828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf +88c16196d07abe941054d444a8200595040b8166e084a62d1bffc05a839bd9ab77ad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007 should emit expected bytes on wire - spec example D.4. Request Examples with Huffman request 2 -828684be5886a8eb10649cbf +4883640effc1c0bf should emit expected bytes on wire should update header table should compute header table size request 1 -828684418cf1e3c2e5f23a6ba0ab90f4ff +488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e919d29ad171863c78f0b97c8e9ae82ae43d3 should emit expected bytes on wire should compute header table size should update header table - request 3 + 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 compute header table size + should update header table + request 3 828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf should emit expected bytes on wire should update header table - spec example D.3. Request Examples without Huffman - request 1 should compute header table size + request 1 +828684418cf1e3c2e5f23a6ba0ab90f4ff + should emit expected bytes on wire should update header table -828684410f7777772e6578616d706c652e636f6d + should compute header table size + spec example D.5. Response Examples without Huffman + request 2 + should compute header table size +4803333037c1c0bf should emit expected bytes on wire + should update header table request 3 should compute header table size should update header table -828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 +88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 should emit expected bytes on wire - request 2 - should update header table + request 1 should compute header table size -828684be58086e6f2d6361636865 +4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d should emit expected bytes on wire - spec example D.5. Response Examples without Huffman + should update header table + spec example D.4. Request Examples with Huffman request 2 - should compute header table size should update header table -4803333037c1c0bf + should compute header table size +828684be5886a8eb10649cbf should emit expected bytes on wire request 1 -4803333032580770726976617465611d4d6f6e2c203231204f637420323031332032303a31333a323120474d546e1768747470733a2f2f7777772e6578616d706c652e636f6d + should compute header table size +828684418cf1e3c2e5f23a6ba0ab90f4ff should emit expected bytes on wire should update header table - should compute header table size request 3 - should update header table -88c1611d4d6f6e2c203231204f637420323031332032303a31333a323220474d54c05a04677a69707738666f6f3d4153444a4b48514b425a584f5157454f50495541585157454f49553b206d61782d6167653d333630303b2076657273696f6e3d31 +828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf 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 -88c16196d07abe941054d444a8200595040b8166e084a62d1bffc05a839bd9ab77ad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007 + spec example D.3. Request Examples without Huffman + request 2 +828684be58086e6f2d6361636865 should emit expected bytes on wire + should update header table should compute header table size request 1 -488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e919d29ad171863c78f0b97c8e9ae82ae43d3 - should emit expected bytes on wire - should compute header table size should update header table - request 2 should compute header table size +828684410f7777772e6578616d706c652e636f6d + should emit expected bytes on wire + request 3 should update header table -4883640effc1c0bf + should compute header table size +828785bf400a637573746f6d2d6b65790c637573746f6d2d76616c7565 should emit expected bytes on wire decode - spec example D.5. Response Examples without Huffman + spec example D.3. Request Examples without Huffman request 1 - should compute header table size should update header table + should compute header table size should emit expected headers request 2 - should compute header table size 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 update header table should emit expected headers - spec example D.3. Request Examples without Huffman - request 2 + spec example D.5. Response Examples without Huffman + request 1 should update header table + should emit expected headers should compute header table size + request 2 should emit expected headers + should update header table + should compute header table size request 3 should emit expected headers should compute header table size should update header table + spec example D.6. Response Examples with Huffman request 1 + 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 3 + 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.4.a. Request Examples with Huffman - Client Handling of Improperly Ordered Headers + spec example D.4. Request Examples with Huffman request 3 - should emit expected headers - should update header table should compute header table size - request 2 should emit expected headers - should compute header table size should update header table request 1 should compute header table size should emit expected headers should update header table - spec example D.4. Request Examples with Huffman - request 3 - should emit expected headers - should compute header table size - should update header table request 2 - should compute header table size should update header table should emit expected headers - request 1 - should update header table + should compute header table size + 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 - spec example D.6. Response Examples with Huffman + should update header table request 2 should update header table should emit expected headers should compute header table size 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.6.a. Response Examples with Huffman - dynamic table size updates should not trigger exceptions request 1 - should update header table should compute header table size + should update header table should emit expected headers - header representation - should handle indexed representation - should raise when decoding indexed representation with index zero - literal w/ incremental indexing - should handle literal header - should handle indexed header - 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 representation - integer - should encode 10 using a 0-bit prefix - should encode 1337 using a 0-bit prefix - should encode 1337 using a 5-bit prefix - should encode 10 using a 5-bit prefix - string - should handle ascii codepoints without huffman - should handle long utf-8 strings with huffman - should handle ascii codepoints with huffman - should handle long utf-8 strings 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 plain representation - should return huffman representation HTTP2::Connection stream management - should initialize idle stream on PRIORITY frame should initialize to default stream limit (100) - should not exceed stream limit set by peer - should count open streams against stream limit should initialize stream with HEADERS priority value - should not count reserved streams against stream limit + should count open streams against stream limit should change stream limit to received SETTINGS value - flow control - should update window when data received is over half of the maximum local window size - should initialize streams with window specified by peer - should update connection and stream windows on SETTINGS - should initialize to default flow window - should observe connection flow control + should initialize idle stream on PRIORITY frame + should not count reserved streams against stream limit + should not exceed stream limit set by peer + settings synchronization + 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 framing - should compress stream headers - should not generate CONTINUATION if HEADERS fits exactly in a frame - should decompress header blocks regardless of stream state - should not generate CONTINUATION if HEADERS fits exactly in a frame + should decode non-contiguous header blocks should raise compression error on encode of invalid frame + should decompress header blocks regardless of stream state should emit encoded frames via on(:frame) - should decode non-contiguous header blocks should buffer incomplete frames - should require that split header blocks are a contiguous sequence should generate CONTINUATION if HEADERS exceed the max payload by one byte - should raise connection error on decode of invalid frame + should compress stream headers should generate CONTINUATION if HEADERS is too long + should not generate CONTINUATION if HEADERS fits exactly in a frame + should require that split header blocks are a contiguous sequence + should not generate CONTINUATION if HEADERS fits exactly in a frame + should raise connection error on decode of invalid frame API .window_update should emit WINDOW_UPDATE frames .settings should emit SETTINGS frames .ping should generate PING frames .goaway should generate GOAWAY frame with last processed stream ID + 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 + flow control + should update window when data received is over half of the maximum local window size + should initialize to default flow window + should initialize streams with window specified by peer + should update connection and stream windows on SETTINGS + should observe connection flow control connection management - should fire callback on receipt of GOAWAY - should raise error when opening new stream after receiving GOAWAY - should send GOAWAY frame on connection error - should fire callback on PONG - should not raise error when receiving connection management frames immediately after emitting goaway should raise error on invalid connection header - should process connection management frames after GOAWAY + should not raise error when receiving connection management frames immediately after emitting goaway + should raise error when opening new stream after sending GOAWAY + should fire callback on receipt of GOAWAY should not raise an error on frame for a closed stream ID + should fire callback on PONG should raise error on frame for invalid stream ID + should raise error when opening new stream after receiving GOAWAY + should process connection management frames after GOAWAY + should send GOAWAY frame on connection error should respond to PING frames - should raise error when opening new stream after sending GOAWAY - initialization and settings - should raise error if SETTINGS stream != 0 - should not raise error if first frame is SETTINGS - should raise error if first frame is not settings cleanup_recently_closed should cleanup old connections 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 settings_max_frame_size recevied from peer - should reflect incoming settings when SETTINGS is received - should reflect outgoing settings when ack is received - should send SETTINGS ACK when SETTINGS is received + should not split zero-concatenated header field values -HTTP2::Stream - flow control - should initialize to default flow control window - 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 observe session flow control - should update window size on DATA frames only - should update window when data received is over half of the maximum local window size - server API - should emit received payload via on(:data) - should emit received headers via on(:headers) - should emit received priority parameters via on(:priority) - 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 - stream states - should initiliaze all streams to IDLE - should set custom stream priority - half closed (remote) - should reprioritize stream on sent PRIORITY - should transition to closed on reciept of RST_STREAM frame - should reprioritize stream on received PRIORITY - should not transition to closed if END_STREAM flag is sent when overflowing window - should transition to closed when send buffer is emptied - should emit :close event on close transition - should emit :half_close event on transition - should increment remote_window on received WINDOW_UPDATE - should transition to closed if END_STREAM flag is sent - should ignore sent WINDOW_UPDATE frames - should raise STREAM_CLOSED error on reciept of frames - should transition to closed if RST_STREAM is sent - open - should emit :close on close transition - should not emit :active on transition from open - should allow any valid frames types to be sent - should emit :close after frame is processed - should transition to half closed (remote) if receiving END_STREAM - should transition to half closed (local) if sending END_STREAM - should transition to closed if sending RST_STREAM - should emit :close with reason - should reprioritize stream on received PRIORITY - should reprioritize stream on sent PRIORITY - should transition to half closed if local opened with END_STREAM - should allow frames of any type to be received - should transition to closed if receiving RST_STREAM - should transition to half closed if remote opened with END_STREAM - should emit :active on open transition - reserved (remote) - should transition to half closed (local) on received HEADERS - should reprioritize stream on PRIORITY - should transition to closed on sent RST_STREAM - should raise error on receipt of invalid frames - should transition on received PUSH_PROMISE - should raise error if sending invalid frames - should increment local_window on sent WINDOW_UPDATE - should transition to closed on received RST_STREAM - idle - should reprioritize stream on received PRIORITY - 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 - should transition to reserved (local) on sent PUSH_PROMISE - closed - local closed via RST_STREAM frame - should ignore received frames - remote closed stream - should raise STREAM_CLOSED on attempt to send frames - should reprioritize stream on sent PRIORITY - should allow PRIORITY, RST_STREAM to be received - should allow PRIORITY, RST_STREAM to be sent - should raise STREAM_CLOSED on receipt of frame - should reprioritize stream on received PRIORITY - should ignore received WINDOW_UPDATE frames - half closed (local) - should reprioritize stream (and decendants) on received PRIORITY - should transition to closed on receipt of END_STREAM flag - should transition to closed if RST_STREAM frame is sent - should ignore received PRIORITY frames - should increment local_window on sent WINDOW_UPDATE - should emit :half_close event on transition - should raise error on attempt to send invalid frames - should emit :close event on transition to closed - should reprioritize stream on sent PRIORITY - should transition to closed on receipt of RST_STREAM frame - should ignore received WINDOW_UPDATE frames - reserved (local) - should transition on sent PUSH_PROMISE - should allow HEADERS to be sent - should raise error on receipt of invalid frames - should reprioritize stream on PRIORITY - should transition to half closed (remote) on sent HEADERS - should transition to closed on sent RST_STREAM - should raise error if sending invalid frames - should increment remote_window on received WINDOW_UPDATE - should transition to closed on received RST_STREAM - client API - .data should emit DATA frames - .window_update should emit WINDOW_UPDATE frames - .reprioritize should raise error if invoked by server - .cancel should reset stream with cancel error code - .data should split large DATA frames - .data should split large multibyte DATA frames - .reprioritize should emit PRIORITY frame - .headers should emit HEADERS frames - .refuse should reset stream with refused stream error code +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 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 raise when input is shorter than expected + should encode then decode 'http://www.craigslist.org/about/sites/' into the same + should raise when EOS is explicitly encoded + should raise when input is not padded by 1s + should raise when exceedingly padded + should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same + should decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT + 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 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 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 'cl_b=AB2BKbsl4hGM7M4nH5PYWghTM5A; cl_def_lang=en; cl_def_hp=shoals' into the same + should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com + should encode/decode all_possible 2-byte sequences HTTP2::Emitter - 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 execute callback with optional args should pass emitted callbacks to listeners - -HTTP2::Client - 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 - upgrade - initializes the first stream in the half-closed state - fails when client has already created streams - sends the preface - push - should auto RST_STREAM promises against locally-RST stream - 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 bogus stream - should disallow client initiated push - should raise error on PUSH_PROMISE against non-idle stream - 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 + should allow events with no callbacks + should raise error on missing callback + should execute callback exactly once + should allow multiple callbacks on single event HTTP2::Framer should ignore unknown extension frames @@ -1479,117 +1544,88 @@ should parse single frame at a time should determine frame length common header + should generate common 9 byte header + should raise exception on invalid frame flag should raise exception on invalid frame type when sending - should raise exception on invalid frame size + should generate a large frame should raise exception on invalid stream ID should parse common 9 byte header - should generate a large frame - should generate common 9 byte header - should raise exception on invalid frame flag - ALTSVC - should generate and parse bytes + should raise exception on invalid frame size HEADERS + should generate and parse bytes should carry an optional stream priority + PRIORITY should generate and parse bytes - PUSH_PROMISE + RST_STREAM should generate and parse bytes WINDOW_UPDATE should generate and parse bytes - DATA - should generate and parse bytes - PRIORITY + PUSH_PROMISE should generate and parse bytes CONTINUATION should generate and parse bytes - RST_STREAM - should generate and parse bytes - PING - should raise exception on invalid payload - should generate and parse bytes GOAWAY - should generate and parse bytes should treat debug payload as optional + should generate and parse bytes + ALTSVC + should generate and parse bytes Padding + 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 fill padded octets with zero should parse a frame with padding - should generate a frame with padding - generating push_promise frame padded 1 + should preserve payload should generate a frame with padding should fill padded octets with zero - should preserve payload - should parse 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 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 when adding a padding would make frame too large should raise error on trying to generate data frame padded with invalid 1334 - parsing frames with invalid paddings - should raise exception when the given padding is longer than the payload generating headers frame padded 1 - should parse a frame with padding - should preserve payload - should fill padded octets with zero - should generate a frame with padding - generating headers frame padded 256 should generate a frame with padding should fill padded octets with zero should preserve payload should parse a frame with padding + generating headers frame padded 256 + should parse a frame with padding + should fill padded octets with zero + should generate a frame with padding + should preserve payload generating push_promise frame padded 256 should preserve payload - should generate a frame with padding should fill padded octets with zero should parse a frame with padding - generating data frame padded 256 + should generate a frame with padding + generating push_promise frame padded 1 + should parse a frame with padding should preserve payload + should fill padded octets with zero should generate a frame with padding + generating data frame padded 256 + should preserve payload should parse a frame with padding should fill padded octets with zero + should generate a frame with padding + DATA + should generate and parse bytes + PING + should raise exception on invalid payload + should generate and parse bytes SETTINGS - should generate settings when id is given as an integer - should raise exception on receiving invalid stream ID - should raise exception on receiving invalid payload length should generate and parse bytes - should raise exception on sending invalid setting should ignore custom settings when sending should ignore custom settings when receiving + should generate settings when id is given as an integer + should raise exception on receiving invalid stream ID + should raise exception on sending invalid setting + should raise exception on receiving invalid payload length should raise exception on sending invalid stream ID -HTTP2::Header::Huffman - encode - should encode Mon, 21 Oct 2013 20:13:21 GMT into d07abe941054d444a8200595040b8166e082a62d1bff - should encode www.example.com into f1e3c2e5f23a6ba0ab90f4ff - should encode no-cache into a8eb10649cbf - decode - should encode then decode 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' 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 'cl_b=AB2BKbsl4hGM7M4nH5PYWghTM5A; cl_def_lang=en; cl_def_hp=shoals' into the same - should raise when EOS is explicitly encoded - should encode then decode 'UTF-8でエンコードした日本語文字列' into the same - should decode a8eb10649cbf into no-cache - should encode then decode 'image/png,image/*;q=0.8,*/*;q=0.5' into the same - should decode f1e3c2e5f23a6ba0ab90f4ff into www.example.com - should decode d07abe941054d444a8200595040b8166e082a62d1bff into Mon, 21 Oct 2013 20:13:21 GMT - should encode/decode all_possible 2-byte sequences - should raise when input is not padded by 1s - should encode then decode 'BX=c99r6jp89a7no&b=3&s=q4; localization=en-us%3Bus%3Bus' into the same - should encode then decode 'http://www.craigslist.org/about/sites/' into the same - should raise when input is shorter than expected - -HTTP2::Server - should allow server push - initialization and settings - should return even stream IDs - should emit SETTINGS on new connection - should initialize client with custom connection settings - -Finished in 0.95266 seconds (files took 0.37383 seconds to load) +Finished in 2.93 seconds (files took 0.94632 seconds to load) 382 examples, 0 failures -Randomized with seed 24480 +Randomized with seed 18966 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1621,12 +1657,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/64529/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/64529/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/89440 and its subdirectories -I: Current time: Mon Mar 23 19:13:15 -12 2026 -I: pbuilder-time-stamp: 1774336395 +I: removing directory /srv/workspace/pbuilder/64529 and its subdirectories +I: Current time: Wed Feb 19 14:51:18 +14 2025 +I: pbuilder-time-stamp: 1739926278