0s autopkgtest [22:38:26]: starting date and time: 2026-02-03 22:38:26+0000 0s autopkgtest [22:38:26]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [22:38:26]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.gsm4jboc/out --timeout-copy=6000 --needs-internet=try --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:ruby3.3 --apt-upgrade ruby-excon --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=ruby3.3/3.3.8-2ubuntu3 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@sto01-ppc64el-6.secgroup --name adt-resolute-ppc64el-ruby-excon-20260203-223826-juju-7f2275-prod-proposed-migration-environment-15-3317f655-5228-4aa9-af20-9de1b02a18a2 --image adt/ubuntu-resolute-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-autopkgtest-workers-ppc64el -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 3s Creating nova instance adt-resolute-ppc64el-ruby-excon-20260203-223826-juju-7f2275-prod-proposed-migration-environment-15-3317f655-5228-4aa9-af20-9de1b02a18a2 from image adt/ubuntu-resolute-ppc64el-server-20260203.img (UUID 36e1410e-0a72-4cd6-affd-580c415d80cb)... 52s autopkgtest [22:39:18]: testbed dpkg architecture: ppc64el 52s autopkgtest [22:39:18]: testbed apt version: 3.1.14 52s autopkgtest [22:39:18]: @@@@@@@@@@@@@@@@@@@@ test bed setup 52s autopkgtest [22:39:18]: testbed release detected to be: None 53s autopkgtest [22:39:19]: updating testbed package index (apt update) 53s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 53s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 53s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 53s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 53s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5260 B] 54s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [27.9 kB] 54s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [232 kB] 54s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1337 kB] 54s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el Packages [284 kB] 54s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el Packages [1152 kB] 54s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse ppc64el Packages [17.8 kB] 54s Fetched 3181 kB in 1s (4378 kB/s) 55s Reading package lists... 55s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 55s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 56s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 56s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 56s Reading package lists... 56s Reading package lists... 57s Building dependency tree... 57s Reading state information... 57s Calculating upgrade... 57s The following packages will be upgraded: 57s libzstd1 zstd 57s 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 57s Need to get 1275 kB of archives. 57s After this operation, 0 B of additional disk space will be used. 57s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el libzstd1 ppc64el 1.5.7+dfsg-3 [430 kB] 57s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el zstd ppc64el 1.5.7+dfsg-3 [845 kB] 57s dpkg-preconfigure: unable to re-open stdin: No such file or directory 57s Fetched 1275 kB in 0s (9156 kB/s) 58s (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 ... 82008 files and directories currently installed.) 58s Preparing to unpack .../libzstd1_1.5.7+dfsg-3_ppc64el.deb ... 58s Unpacking libzstd1:ppc64el (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 58s Setting up libzstd1:ppc64el (1.5.7+dfsg-3) ... 58s (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 ... 82008 files and directories currently installed.) 58s Preparing to unpack .../zstd_1.5.7+dfsg-3_ppc64el.deb ... 58s Unpacking zstd (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 58s Setting up zstd (1.5.7+dfsg-3) ... 58s Processing triggers for man-db (2.13.1-1) ... 59s Processing triggers for libc-bin (2.42-2ubuntu4) ... 60s autopkgtest [22:39:26]: upgrading testbed (apt dist-upgrade and autopurge) 60s Reading package lists... 60s Building dependency tree... 60s Reading state information... 60s Calculating upgrade... 60s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 60s Reading package lists... 60s Building dependency tree... 60s Reading state information... 60s Solving dependencies... 60s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 63s autopkgtest [22:39:29]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 12 16:45:54 UTC 2026 63s autopkgtest [22:39:29]: @@@@@@@@@@@@@@@@@@@@ apt-source ruby-excon 65s Get:1 http://ftpmaster.internal/ubuntu resolute/universe ruby-excon 1.3.1-1 (dsc) [2238 B] 65s Get:2 http://ftpmaster.internal/ubuntu resolute/universe ruby-excon 1.3.1-1 (tar) [240 kB] 65s Get:3 http://ftpmaster.internal/ubuntu resolute/universe ruby-excon 1.3.1-1 (diff) [6468 B] 65s gpgv: Signature made Thu Nov 20 21:55:33 2025 UTC 65s gpgv: using RSA key 5C7ABEA20F8630459CC8C8B5E27F2CF8458C2FA4 65s gpgv: Can't check signature: No public key 65s dpkg-source: warning: cannot verify inline signature for ./ruby-excon_1.3.1-1.dsc: no acceptable signature found 65s autopkgtest [22:39:31]: testing package ruby-excon version 1.3.1-1 65s autopkgtest [22:39:31]: build not needed 66s autopkgtest [22:39:32]: test gem2deb-test-runner: preparing testbed 66s Reading package lists... 66s Building dependency tree... 66s Reading state information... 66s Solving dependencies... 66s The following NEW packages will be installed: 66s gem2deb-test-runner libruby libruby3.3 puma rake ruby ruby-activesupport 66s ruby-base64 ruby-chronic ruby-concurrent ruby-connection-pool ruby-csv 66s ruby-delorean ruby-did-you-mean ruby-diff-lcs ruby-eventmachine ruby-excon 66s ruby-formatador ruby-i18n ruby-kgio ruby-minitest ruby-multi-json 66s ruby-mustermann ruby-net-telnet ruby-nio4r ruby-numerizer ruby-open4 66s ruby-power-assert ruby-rack ruby-rack-protection ruby-rack-session 66s ruby-rackup ruby-raindrops ruby-rspec ruby-rspec-core 66s ruby-rspec-expectations ruby-rspec-mocks ruby-rspec-support 66s ruby-ruby2-keywords ruby-rubygems ruby-shindo ruby-sinatra 66s ruby-sinatra-contrib ruby-test-unit ruby-tilt ruby-tzinfo ruby-webrick 66s ruby-xmlrpc ruby3.3 rubygems-integration unicorn 66s 0 upgraded, 51 newly installed, 0 to remove and 0 not upgraded. 66s Need to get 9296 kB of archives. 66s After this operation, 49.2 MB of additional disk space will be used. 66s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el rubygems-integration all 1.19build1 [5666 B] 66s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-csv all 3.3.4-1 [43.0 kB] 66s Get:3 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-did-you-mean all 1.6.3-2build1 [14.9 kB] 66s Get:4 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-net-telnet all 0.2.0-1build1 [13.5 kB] 66s Get:5 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-ruby2-keywords all 0.0.5-1build1 [4398 B] 66s Get:6 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-webrick all 1.9.1-1 [60.8 kB] 66s Get:7 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-xmlrpc all 0.3.3-2build1 [24.9 kB] 66s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libruby3.3 ppc64el 3.3.8-2ubuntu3 [6367 kB] 67s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el ruby3.3 ppc64el 3.3.8-2ubuntu3 [48.9 kB] 67s Get:10 http://ftpmaster.internal/ubuntu resolute/main ppc64el libruby ppc64el 1:3.3 [5172 B] 67s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-rubygems all 3.6.7-2ubuntu1 [332 kB] 67s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby ppc64el 1:3.3 [3666 B] 67s Get:13 http://ftpmaster.internal/ubuntu resolute/main ppc64el rake all 13.2.1-1build1 [45.9 kB] 67s Get:14 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-minitest all 5.26.1-1 [49.3 kB] 67s Get:15 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-power-assert all 2.0.5-1 [12.0 kB] 67s Get:16 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-test-unit all 3.6.2-1 [67.0 kB] 67s Get:17 http://ftpmaster.internal/ubuntu resolute/universe ppc64el gem2deb-test-runner ppc64el 2.2.5 [18.3 kB] 67s Get:18 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-nio4r ppc64el 2.7.4-1 [121 kB] 67s Get:19 http://ftpmaster.internal/ubuntu resolute/main ppc64el puma ppc64el 6.6.0-4 [152 kB] 67s Get:20 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-concurrent all 1.3.4-1 [283 kB] 67s Get:21 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-i18n all 1.14.7-1 [42.8 kB] 67s Get:22 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-tzinfo all 2.0.6-1 [55.2 kB] 67s Get:23 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-connection-pool all 2.5.4-1 [10.3 kB] 67s Get:24 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-base64 all 0.3.0-1build1 [8560 B] 67s Get:25 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-activesupport all 2:7.2.2.2+dfsg-2 [224 kB] 67s Get:26 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-numerizer all 0.2.0-3 [4954 B] 67s Get:27 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-chronic all 0.10.6-1 [25.5 kB] 67s Get:28 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-delorean all 2.1.0-3 [5122 B] 67s Get:29 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-diff-lcs all 1.5.1-1 [22.8 kB] 67s Get:30 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-eventmachine ppc64el 1.3~pre20220315-df4ab006-5build1 [159 kB] 67s Get:31 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-excon all 1.3.1-1 [165 kB] 67s Get:32 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-formatador all 1.2.3-1 [8812 B] 67s Get:33 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-kgio ppc64el 2.11.2-2build7 [31.8 kB] 67s Get:34 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-multi-json all 1.15.0-1 [16.1 kB] 67s Get:35 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-mustermann all 3.0.4-1build1 [38.4 kB] 67s Get:36 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-open4 all 1.3.4-3 [14.8 kB] 67s Get:37 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-rack all 3.1.18-1build1 [81.7 kB] 67s Get:38 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-rack-protection all 4.2.1-1build1 [16.1 kB] 67s Get:39 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-rack-session all 2.1.1-0.1 [12.7 kB] 67s Get:40 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-rackup all 2.1.0-4 [13.0 kB] 67s Get:41 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-raindrops ppc64el 0.20.0-2 [31.2 kB] 67s Get:42 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-rspec-support all 3.13.0c0e0m0s1-2 [29.2 kB] 67s Get:43 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-rspec-core all 3.13.0c0e0m0s1-2 [164 kB] 67s Get:44 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [89.8 kB] 67s Get:45 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.0 kB] 67s Get:46 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-rspec all 3.13.0c0e0m0s1-2 [3500 B] 67s Get:47 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-shindo all 0.3.11-1 [11.9 kB] 67s Get:48 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-tilt all 2.6.1-1build1 [31.5 kB] 67s Get:49 http://ftpmaster.internal/ubuntu resolute/main ppc64el ruby-sinatra all 4.2.1-1build1 [94.9 kB] 67s Get:50 http://ftpmaster.internal/ubuntu resolute/universe ppc64el ruby-sinatra-contrib all 4.2.1-1build1 [26.8 kB] 67s Get:51 http://ftpmaster.internal/ubuntu resolute/universe ppc64el unicorn ppc64el 6.1.0+git.20250131.1370f52-1 [103 kB] 67s Fetched 9296 kB in 1s (9264 kB/s) 67s Selecting previously unselected package rubygems-integration. 67s (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 ... 82008 files and directories currently installed.) 67s Preparing to unpack .../00-rubygems-integration_1.19build1_all.deb ... 67s Unpacking rubygems-integration (1.19build1) ... 67s Selecting previously unselected package ruby-csv. 67s Preparing to unpack .../01-ruby-csv_3.3.4-1_all.deb ... 67s Unpacking ruby-csv (3.3.4-1) ... 67s Selecting previously unselected package ruby-did-you-mean. 67s Preparing to unpack .../02-ruby-did-you-mean_1.6.3-2build1_all.deb ... 67s Unpacking ruby-did-you-mean (1.6.3-2build1) ... 67s Selecting previously unselected package ruby-net-telnet. 67s Preparing to unpack .../03-ruby-net-telnet_0.2.0-1build1_all.deb ... 67s Unpacking ruby-net-telnet (0.2.0-1build1) ... 67s Selecting previously unselected package ruby-ruby2-keywords. 67s Preparing to unpack .../04-ruby-ruby2-keywords_0.0.5-1build1_all.deb ... 67s Unpacking ruby-ruby2-keywords (0.0.5-1build1) ... 67s Selecting previously unselected package ruby-webrick. 67s Preparing to unpack .../05-ruby-webrick_1.9.1-1_all.deb ... 67s Unpacking ruby-webrick (1.9.1-1) ... 67s Selecting previously unselected package ruby-xmlrpc. 67s Preparing to unpack .../06-ruby-xmlrpc_0.3.3-2build1_all.deb ... 67s Unpacking ruby-xmlrpc (0.3.3-2build1) ... 67s Selecting previously unselected package libruby3.3:ppc64el. 67s Preparing to unpack .../07-libruby3.3_3.3.8-2ubuntu3_ppc64el.deb ... 67s Unpacking libruby3.3:ppc64el (3.3.8-2ubuntu3) ... 68s Selecting previously unselected package ruby3.3. 68s Preparing to unpack .../08-ruby3.3_3.3.8-2ubuntu3_ppc64el.deb ... 68s Unpacking ruby3.3 (3.3.8-2ubuntu3) ... 68s Selecting previously unselected package libruby:ppc64el. 68s Preparing to unpack .../09-libruby_1%3a3.3_ppc64el.deb ... 68s Unpacking libruby:ppc64el (1:3.3) ... 68s Selecting previously unselected package ruby-rubygems. 68s Preparing to unpack .../10-ruby-rubygems_3.6.7-2ubuntu1_all.deb ... 68s Unpacking ruby-rubygems (3.6.7-2ubuntu1) ... 68s Selecting previously unselected package ruby. 68s Preparing to unpack .../11-ruby_1%3a3.3_ppc64el.deb ... 68s Unpacking ruby (1:3.3) ... 68s Selecting previously unselected package rake. 68s Preparing to unpack .../12-rake_13.2.1-1build1_all.deb ... 68s Unpacking rake (13.2.1-1build1) ... 68s Selecting previously unselected package ruby-minitest. 68s Preparing to unpack .../13-ruby-minitest_5.26.1-1_all.deb ... 68s Unpacking ruby-minitest (5.26.1-1) ... 68s Selecting previously unselected package ruby-power-assert. 68s Preparing to unpack .../14-ruby-power-assert_2.0.5-1_all.deb ... 68s Unpacking ruby-power-assert (2.0.5-1) ... 68s Selecting previously unselected package ruby-test-unit. 68s Preparing to unpack .../15-ruby-test-unit_3.6.2-1_all.deb ... 68s Unpacking ruby-test-unit (3.6.2-1) ... 68s Selecting previously unselected package gem2deb-test-runner. 68s Preparing to unpack .../16-gem2deb-test-runner_2.2.5_ppc64el.deb ... 68s Unpacking gem2deb-test-runner (2.2.5) ... 68s Selecting previously unselected package ruby-nio4r:ppc64el. 68s Preparing to unpack .../17-ruby-nio4r_2.7.4-1_ppc64el.deb ... 68s Unpacking ruby-nio4r:ppc64el (2.7.4-1) ... 68s Selecting previously unselected package puma. 68s Preparing to unpack .../18-puma_6.6.0-4_ppc64el.deb ... 68s Unpacking puma (6.6.0-4) ... 68s Selecting previously unselected package ruby-concurrent. 68s Preparing to unpack .../19-ruby-concurrent_1.3.4-1_all.deb ... 68s Unpacking ruby-concurrent (1.3.4-1) ... 68s Selecting previously unselected package ruby-i18n. 68s Preparing to unpack .../20-ruby-i18n_1.14.7-1_all.deb ... 68s Unpacking ruby-i18n (1.14.7-1) ... 68s Selecting previously unselected package ruby-tzinfo. 68s Preparing to unpack .../21-ruby-tzinfo_2.0.6-1_all.deb ... 68s Unpacking ruby-tzinfo (2.0.6-1) ... 68s Selecting previously unselected package ruby-connection-pool. 68s Preparing to unpack .../22-ruby-connection-pool_2.5.4-1_all.deb ... 68s Unpacking ruby-connection-pool (2.5.4-1) ... 68s Selecting previously unselected package ruby-base64. 68s Preparing to unpack .../23-ruby-base64_0.3.0-1build1_all.deb ... 68s Unpacking ruby-base64 (0.3.0-1build1) ... 68s Selecting previously unselected package ruby-activesupport. 68s Preparing to unpack .../24-ruby-activesupport_2%3a7.2.2.2+dfsg-2_all.deb ... 68s Unpacking ruby-activesupport (2:7.2.2.2+dfsg-2) ... 68s Selecting previously unselected package ruby-numerizer. 68s Preparing to unpack .../25-ruby-numerizer_0.2.0-3_all.deb ... 68s Unpacking ruby-numerizer (0.2.0-3) ... 68s Selecting previously unselected package ruby-chronic. 68s Preparing to unpack .../26-ruby-chronic_0.10.6-1_all.deb ... 68s Unpacking ruby-chronic (0.10.6-1) ... 68s Selecting previously unselected package ruby-delorean. 68s Preparing to unpack .../27-ruby-delorean_2.1.0-3_all.deb ... 68s Unpacking ruby-delorean (2.1.0-3) ... 68s Selecting previously unselected package ruby-diff-lcs. 68s Preparing to unpack .../28-ruby-diff-lcs_1.5.1-1_all.deb ... 68s Unpacking ruby-diff-lcs (1.5.1-1) ... 68s Selecting previously unselected package ruby-eventmachine:ppc64el. 68s Preparing to unpack .../29-ruby-eventmachine_1.3~pre20220315-df4ab006-5build1_ppc64el.deb ... 68s Unpacking ruby-eventmachine:ppc64el (1.3~pre20220315-df4ab006-5build1) ... 68s Selecting previously unselected package ruby-excon. 68s Preparing to unpack .../30-ruby-excon_1.3.1-1_all.deb ... 68s Unpacking ruby-excon (1.3.1-1) ... 68s Selecting previously unselected package ruby-formatador. 68s Preparing to unpack .../31-ruby-formatador_1.2.3-1_all.deb ... 68s Unpacking ruby-formatador (1.2.3-1) ... 68s Selecting previously unselected package ruby-kgio. 68s Preparing to unpack .../32-ruby-kgio_2.11.2-2build7_ppc64el.deb ... 68s Unpacking ruby-kgio (2.11.2-2build7) ... 68s Selecting previously unselected package ruby-multi-json. 68s Preparing to unpack .../33-ruby-multi-json_1.15.0-1_all.deb ... 68s Unpacking ruby-multi-json (1.15.0-1) ... 68s Selecting previously unselected package ruby-mustermann. 68s Preparing to unpack .../34-ruby-mustermann_3.0.4-1build1_all.deb ... 68s Unpacking ruby-mustermann (3.0.4-1build1) ... 68s Selecting previously unselected package ruby-open4. 68s Preparing to unpack .../35-ruby-open4_1.3.4-3_all.deb ... 68s Unpacking ruby-open4 (1.3.4-3) ... 68s Selecting previously unselected package ruby-rack. 68s Preparing to unpack .../36-ruby-rack_3.1.18-1build1_all.deb ... 68s Unpacking ruby-rack (3.1.18-1build1) ... 68s Selecting previously unselected package ruby-rack-protection. 68s Preparing to unpack .../37-ruby-rack-protection_4.2.1-1build1_all.deb ... 68s Unpacking ruby-rack-protection (4.2.1-1build1) ... 68s Selecting previously unselected package ruby-rack-session. 68s Preparing to unpack .../38-ruby-rack-session_2.1.1-0.1_all.deb ... 68s Unpacking ruby-rack-session (2.1.1-0.1) ... 68s Selecting previously unselected package ruby-rackup. 68s Preparing to unpack .../39-ruby-rackup_2.1.0-4_all.deb ... 68s Unpacking ruby-rackup (2.1.0-4) ... 68s Selecting previously unselected package ruby-raindrops:ppc64el. 68s Preparing to unpack .../40-ruby-raindrops_0.20.0-2_ppc64el.deb ... 68s Unpacking ruby-raindrops:ppc64el (0.20.0-2) ... 68s Selecting previously unselected package ruby-rspec-support. 68s Preparing to unpack .../41-ruby-rspec-support_3.13.0c0e0m0s1-2_all.deb ... 68s Unpacking ruby-rspec-support (3.13.0c0e0m0s1-2) ... 68s Selecting previously unselected package ruby-rspec-core. 68s Preparing to unpack .../42-ruby-rspec-core_3.13.0c0e0m0s1-2_all.deb ... 68s Unpacking ruby-rspec-core (3.13.0c0e0m0s1-2) ... 69s Selecting previously unselected package ruby-rspec-expectations. 69s Preparing to unpack .../43-ruby-rspec-expectations_3.13.0c0e0m0s1-2_all.deb ... 69s Unpacking ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... 69s Selecting previously unselected package ruby-rspec-mocks. 69s Preparing to unpack .../44-ruby-rspec-mocks_3.13.0c0e0m0s1-2_all.deb ... 69s Unpacking ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... 69s Selecting previously unselected package ruby-rspec. 69s Preparing to unpack .../45-ruby-rspec_3.13.0c0e0m0s1-2_all.deb ... 69s Unpacking ruby-rspec (3.13.0c0e0m0s1-2) ... 69s Selecting previously unselected package ruby-shindo. 69s Preparing to unpack .../46-ruby-shindo_0.3.11-1_all.deb ... 69s Unpacking ruby-shindo (0.3.11-1) ... 69s Selecting previously unselected package ruby-tilt. 69s Preparing to unpack .../47-ruby-tilt_2.6.1-1build1_all.deb ... 69s Unpacking ruby-tilt (2.6.1-1build1) ... 69s Selecting previously unselected package ruby-sinatra. 69s Preparing to unpack .../48-ruby-sinatra_4.2.1-1build1_all.deb ... 69s Unpacking ruby-sinatra (4.2.1-1build1) ... 69s Selecting previously unselected package ruby-sinatra-contrib. 69s Preparing to unpack .../49-ruby-sinatra-contrib_4.2.1-1build1_all.deb ... 69s Unpacking ruby-sinatra-contrib (4.2.1-1build1) ... 69s Selecting previously unselected package unicorn. 69s Preparing to unpack .../50-unicorn_6.1.0+git.20250131.1370f52-1_ppc64el.deb ... 69s Unpacking unicorn (6.1.0+git.20250131.1370f52-1) ... 69s Setting up ruby-multi-json (1.15.0-1) ... 69s Setting up ruby-ruby2-keywords (0.0.5-1build1) ... 69s Setting up ruby-mustermann (3.0.4-1build1) ... 69s Setting up ruby-open4 (1.3.4-3) ... 69s Setting up ruby-power-assert (2.0.5-1) ... 69s Setting up rubygems-integration (1.19build1) ... 69s Setting up ruby-concurrent (1.3.4-1) ... 69s Setting up ruby-minitest (5.26.1-1) ... 69s Setting up ruby-test-unit (3.6.2-1) ... 69s Setting up ruby-net-telnet (0.2.0-1build1) ... 69s Setting up ruby-csv (3.3.4-1) ... 69s Setting up ruby-base64 (0.3.0-1build1) ... 69s Setting up ruby-i18n (1.14.7-1) ... 69s Setting up ruby-rspec-support (3.13.0c0e0m0s1-2) ... 69s Setting up ruby-webrick (1.9.1-1) ... 69s Setting up ruby-connection-pool (2.5.4-1) ... 69s Setting up ruby-did-you-mean (1.6.3-2build1) ... 69s Setting up ruby-numerizer (0.2.0-3) ... 69s Setting up ruby-xmlrpc (0.3.3-2build1) ... 69s Setting up ruby-chronic (0.10.6-1) ... 69s Setting up ruby-tzinfo (2.0.6-1) ... 69s Setting up rake (13.2.1-1build1) ... 69s Setting up libruby3.3:ppc64el (3.3.8-2ubuntu3) ... 69s Setting up ruby-activesupport (2:7.2.2.2+dfsg-2) ... 69s Setting up ruby-rubygems (3.6.7-2ubuntu1) ... 69s Setting up ruby3.3 (3.3.8-2ubuntu3) ... 69s Setting up libruby:ppc64el (1:3.3) ... 69s Setting up ruby-excon (1.3.1-1) ... 69s Setting up ruby-eventmachine:ppc64el (1.3~pre20220315-df4ab006-5build1) ... 69s Setting up ruby-raindrops:ppc64el (0.20.0-2) ... 69s Setting up ruby (1:3.3) ... 69s Setting up ruby-nio4r:ppc64el (2.7.4-1) ... 69s Setting up ruby-rspec-core (3.13.0c0e0m0s1-2) ... 69s Setting up ruby-tilt (2.6.1-1build1) ... 69s Setting up ruby-kgio (2.11.2-2build7) ... 69s Setting up ruby-diff-lcs (1.5.1-1) ... 69s Setting up puma (6.6.0-4) ... 69s Setting up ruby-delorean (2.1.0-3) ... 69s Setting up ruby-rack (3.1.18-1build1) ... 69s Setting up gem2deb-test-runner (2.2.5) ... 69s Setting up ruby-formatador (1.2.3-1) ... 69s Setting up unicorn (6.1.0+git.20250131.1370f52-1) ... 69s Created symlink '/etc/systemd/system/multi-user.target.wants/unicorn.service' → '/usr/lib/systemd/system/unicorn.service'. 70s Setting up ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... 70s Setting up ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... 70s Setting up ruby-shindo (0.3.11-1) ... 70s Setting up ruby-rack-session (2.1.1-0.1) ... 70s Setting up ruby-rack-protection (4.2.1-1build1) ... 70s Setting up ruby-rackup (2.1.0-4) ... 70s Setting up ruby-rspec (3.13.0c0e0m0s1-2) ... 70s Setting up ruby-sinatra (4.2.1-1build1) ... 70s Setting up ruby-sinatra-contrib (4.2.1-1build1) ... 70s Processing triggers for libc-bin (2.42-2ubuntu4) ... 70s Processing triggers for man-db (2.13.1-1) ... 71s autopkgtest [22:39:37]: test gem2deb-test-runner: gem2deb-test-runner --autopkgtest --check-dependencies 2>&1 71s autopkgtest [22:39:37]: test gem2deb-test-runner: [----------------------- 71s 71s ┌──────────────────────────────────────────────────────────────────────────────┐ 71s │ Checking Rubygems dependency resolution on ruby3.3 │ 71s └──────────────────────────────────────────────────────────────────────────────┘ 71s 71s RUBYLIB=. GEM_PATH= ruby3.3 -e gem\ \"excon\" 71s mv lib ./.gem2deb.lib 71s mv ./.gem2deb.lib lib 71s 71s ┌──────────────────────────────────────────────────────────────────────────────┐ 71s │ Run tests for ruby3.3 from debian/ruby-tests.rake │ 71s └──────────────────────────────────────────────────────────────────────────────┘ 71s 71s RUBYLIB=. GEM_PATH= ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake 71s mv lib ./.gem2deb.lib 72s sh: 1: git: not found 72s /usr/bin/ruby3.3 -S shindo 72s 72s Excon bad server interaction 72s header splitting 72s prevents key splitting + raises Excon::Error::InvalidHeaderKey 72s prevents value splitting + raises Excon::Error::InvalidHeaderValue 72s bad server: causes EOFError 72s with no content length and no chunking 72s without a block 72s response.body + returns "hello" 72s with a block 72s body from chunks + returns "hello" 72s eof server: causes EOFError 72s request + raises Excon::Error::Socket 72s 72s Excon basics 73s + returns true 73s nonblock => true, persistent => false 73s method and path defaults 73s request().body + returns "GET /" 73s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 73s request(:method => :get).body + returns "GET /" 73s request(:path => '/').body + returns "GET /" 73s request(:method => :get, :path => '/').body + returns "GET /" 73s GET /content-length/100 73s response.status + returns 200 73s response[:status] + returns 200 73s response.headers['Content-Length'] + returns "100" 73s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 73s + Time.parse(response.headers['Date']).is_a?(Time) 73s + !!(response.headers['Server'] =~ /^WEBrick/) 73s response.headers['Custom'] + returns "Foo: bar" 73s response.remote_ip + returns "127.0.0.1" 73s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 73s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 73s POST /body-sink 73s response.body + returns "5000000" 73s empty body + returns "0" 73s POST /echo 73s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 73s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s with multi-byte strings 73s + properly concatenates request+headers and body 73s PUT /echo 73s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 73s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s with multi-byte strings 73s + properly concatenates request+headers and body 73s should succeed with tcp_nodelay + returns 200 73s + returns true 73s nonblock => true, persistent => true 73s method and path defaults 73s request().body + returns "GET /" 73s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 73s request(:method => :get).body + returns "GET /" 73s request(:path => '/').body + returns "GET /" 73s request(:method => :get, :path => '/').body + returns "GET /" 73s GET /content-length/100 73s response.status + returns 200 73s response[:status] + returns 200 73s response.headers['Content-Length'] + returns "100" 73s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 73s + Time.parse(response.headers['Date']).is_a?(Time) 73s + !!(response.headers['Server'] =~ /^WEBrick/) 73s response.headers['Custom'] + returns "Foo: bar" 73s response.remote_ip + returns "127.0.0.1" 73s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 73s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 73s POST /body-sink 73s response.body + returns "5000000" 73s empty body + returns "0" 73s POST /echo 73s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 73s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 73s with multi-byte strings 73s + properly concatenates request+headers and body 73s PUT /echo 74s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 74s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 74s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 74s with multi-byte strings 74s + properly concatenates request+headers and body 74s should succeed with tcp_nodelay + returns 200 74s + returns true 74s nonblock => false, persistent => true 74s method and path defaults 74s request().body + returns "GET /" 74s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 74s request(:method => :get).body + returns "GET /" 74s request(:path => '/').body + returns "GET /" 74s request(:method => :get, :path => '/').body + returns "GET /" 74s GET /content-length/100 74s response.status + returns 200 74s response[:status] + returns 200 74s response.headers['Content-Length'] + returns "100" 74s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 74s + Time.parse(response.headers['Date']).is_a?(Time) 74s + !!(response.headers['Server'] =~ /^WEBrick/) 74s response.headers['Custom'] + returns "Foo: bar" 74s response.remote_ip + returns "127.0.0.1" 74s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 74s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 75s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 75s POST /body-sink 75s response.body + returns "5000000" 75s empty body + returns "0" 75s POST /echo 75s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 75s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with multi-byte strings 75s + properly concatenates request+headers and body 75s PUT /echo 75s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 75s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with multi-byte strings 75s + properly concatenates request+headers and body 75s should succeed with tcp_nodelay + returns 200 75s + returns true 75s nonblock => false, persistent => false 75s method and path defaults 75s request().body + returns "GET /" 75s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 75s request(:method => :get).body + returns "GET /" 75s request(:path => '/').body + returns "GET /" 75s request(:method => :get, :path => '/').body + returns "GET /" 75s GET /content-length/100 75s response.status + returns 200 75s response[:status] + returns 200 75s response.headers['Content-Length'] + returns "100" 75s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 75s + Time.parse(response.headers['Date']).is_a?(Time) 75s + !!(response.headers['Server'] =~ /^WEBrick/) 75s response.headers['Custom'] + returns "Foo: bar" 75s response.remote_ip + returns "127.0.0.1" 75s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 75s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 75s POST /body-sink 75s response.body + returns "5000000" 75s empty body + returns "0" 75s POST /echo 75s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 75s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with multi-byte strings 75s + properly concatenates request+headers and body 75s PUT /echo 75s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 75s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 75s with multi-byte strings 75s + properly concatenates request+headers and body 75s should succeed with tcp_nodelay + returns 200 75s explicit uri passed to connection 75s GET /content-length/100 + returns 200 75s 75s Excon streaming basics 75s http 75s + returns true 75s simple blocking request on streaming endpoint + returns ["Hellostreamyworld", "response time ok"] 75s simple blocking request on streaming endpoint with fixed length + returns ["Hellostreamyworld", "response time ok"] 76s simple request with response_block on streaming endpoint + returns [["Hello", "streamy", "world"], "response times ok"] 76s simple request with response_block on streaming endpoint with fixed length + returns [["Hello", "streamy", "world"], "response times ok"] 76s https 76s + returns true 76s simple blocking request on streaming endpoint + returns ["Hellostreamyworld", "response time ok"] 77s simple blocking request on streaming endpoint with fixed length + returns ["Hellostreamyworld", "response time ok"] 77s simple request with response_block on streaming endpoint + returns [["Hello", "streamy", "world"], "response times ok"] 77s simple request with response_block on streaming endpoint with fixed length + returns [["Hello", "streamy", "world"], "response times ok"] 77s 77s Excon basics (Basic Auth Pass) 78s + returns true 78s nonblock => true, persistent => false 78s method and path defaults 78s request().body + returns "GET /" 78s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 78s request(:method => :get).body + returns "GET /" 78s request(:path => '/').body + returns "GET /" 78s request(:method => :get, :path => '/').body + returns "GET /" 78s GET /content-length/100 78s response.status + returns 200 78s response[:status] + returns 200 78s response.headers['Content-Length'] + returns "100" 78s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 78s + Time.parse(response.headers['Date']).is_a?(Time) 78s + !!(response.headers['Server'] =~ /^WEBrick/) 78s response.headers['Custom'] + returns "Foo: bar" 78s response.remote_ip + returns "127.0.0.1" 78s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 78s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 78s POST /body-sink 78s response.body + returns "5000000" 78s empty body + returns "0" 78s POST /echo 78s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 78s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with multi-byte strings 78s + properly concatenates request+headers and body 78s PUT /echo 78s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 78s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with multi-byte strings 78s + properly concatenates request+headers and body 78s should succeed with tcp_nodelay + returns 200 78s + returns true 78s nonblock => true, persistent => true 78s method and path defaults 78s request().body + returns "GET /" 78s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 78s request(:method => :get).body + returns "GET /" 78s request(:path => '/').body + returns "GET /" 78s request(:method => :get, :path => '/').body + returns "GET /" 78s GET /content-length/100 78s response.status + returns 200 78s response[:status] + returns 200 78s response.headers['Content-Length'] + returns "100" 78s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 78s + Time.parse(response.headers['Date']).is_a?(Time) 78s + !!(response.headers['Server'] =~ /^WEBrick/) 78s response.headers['Custom'] + returns "Foo: bar" 78s response.remote_ip + returns "127.0.0.1" 78s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 78s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 78s POST /body-sink 78s response.body + returns "5000000" 78s empty body + returns "0" 78s POST /echo 78s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 78s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with multi-byte strings 78s + properly concatenates request+headers and body 78s PUT /echo 78s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 78s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 78s with multi-byte strings 78s + properly concatenates request+headers and body 78s should succeed with tcp_nodelay + returns 200 78s + returns true 78s nonblock => false, persistent => true 78s method and path defaults 78s request().body + returns "GET /" 78s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 78s request(:method => :get).body + returns "GET /" 79s request(:path => '/').body + returns "GET /" 79s request(:method => :get, :path => '/').body + returns "GET /" 79s GET /content-length/100 79s response.status + returns 200 79s response[:status] + returns 200 79s response.headers['Content-Length'] + returns "100" 79s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 79s + Time.parse(response.headers['Date']).is_a?(Time) 79s + !!(response.headers['Server'] =~ /^WEBrick/) 79s response.headers['Custom'] + returns "Foo: bar" 79s response.remote_ip + returns "127.0.0.1" 79s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 79s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 79s POST /body-sink 79s response.body + returns "5000000" 79s empty body + returns "0" 79s POST /echo 79s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 79s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with multi-byte strings 79s + properly concatenates request+headers and body 79s PUT /echo 79s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 79s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with multi-byte strings 79s + properly concatenates request+headers and body 79s should succeed with tcp_nodelay + returns 200 79s + returns true 79s nonblock => false, persistent => false 79s method and path defaults 79s request().body + returns "GET /" 79s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 79s request(:method => :get).body + returns "GET /" 79s request(:path => '/').body + returns "GET /" 79s request(:method => :get, :path => '/').body + returns "GET /" 79s GET /content-length/100 79s response.status + returns 200 79s response[:status] + returns 200 79s response.headers['Content-Length'] + returns "100" 79s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 79s + Time.parse(response.headers['Date']).is_a?(Time) 79s + !!(response.headers['Server'] =~ /^WEBrick/) 79s response.headers['Custom'] + returns "Foo: bar" 79s response.remote_ip + returns "127.0.0.1" 79s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 79s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 79s POST /body-sink 79s response.body + returns "5000000" 79s empty body + returns "0" 79s POST /echo 79s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 79s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with multi-byte strings 79s + properly concatenates request+headers and body 79s PUT /echo 79s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 79s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 79s with multi-byte strings 79s + properly concatenates request+headers and body 79s should succeed with tcp_nodelay + returns 200 79s with frozen args + returns 200 79s with user/pass on request + returns 200 79s with user/pass on connection and request + returns 200 79s 79s Excon basics (Basic Auth Fail) 80s response.status for correct user, no password + returns 401 80s response.status for correct user, wrong password + returns 401 80s response.status for wrong user, correct password + returns 401 80s 80s Excon basics (ssl) 80s + returns true 80s nonblock => true, persistent => false 80s method and path defaults 80s request().body + returns "GET /" 80s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 80s request(:method => :get).body + returns "GET /" 80s request(:path => '/').body + returns "GET /" 80s request(:method => :get, :path => '/').body + returns "GET /" 80s GET /content-length/100 80s response.status + returns 200 80s response[:status] + returns 200 80s response.headers['Content-Length'] + returns "100" 80s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 80s + Time.parse(response.headers['Date']).is_a?(Time) 80s + !!(response.headers['Server'] =~ /^WEBrick/) 80s response.headers['Custom'] + returns "Foo: bar" 80s response.remote_ip + returns "127.0.0.1" 80s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 80s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 80s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 80s POST /body-sink 80s response.body + returns "5000000" 80s empty body + returns "0" 80s POST /echo 81s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 81s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 81s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 81s with multi-byte strings 81s + properly concatenates request+headers and body 81s PUT /echo 81s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 81s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 81s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 81s with multi-byte strings 81s + properly concatenates request+headers and body 81s should succeed with tcp_nodelay + returns 200 81s + returns true 81s nonblock => true, persistent => true 81s method and path defaults 81s request().body + returns "GET /" 81s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 81s request(:method => :get).body + returns "GET /" 81s request(:path => '/').body + returns "GET /" 81s request(:method => :get, :path => '/').body + returns "GET /" 81s GET /content-length/100 81s response.status + returns 200 81s response[:status] + returns 200 81s response.headers['Content-Length'] + returns "100" 81s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 81s + Time.parse(response.headers['Date']).is_a?(Time) 81s + !!(response.headers['Server'] =~ /^WEBrick/) 81s response.headers['Custom'] + returns "Foo: bar" 81s response.remote_ip + returns "127.0.0.1" 81s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 81s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 81s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 81s POST /body-sink 81s response.body + returns "5000000" 81s empty body + returns "0" 81s POST /echo 81s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 82s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s with multi-byte strings 82s + properly concatenates request+headers and body 82s PUT /echo 82s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 82s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s with multi-byte strings 82s + properly concatenates request+headers and body 82s should succeed with tcp_nodelay + returns 200 82s + returns true 82s nonblock => false, persistent => true 82s method and path defaults 82s request().body + returns "GET /" 82s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 82s request(:method => :get).body + returns "GET /" 82s request(:path => '/').body + returns "GET /" 82s request(:method => :get, :path => '/').body + returns "GET /" 82s GET /content-length/100 82s response.status + returns 200 82s response[:status] + returns 200 82s response.headers['Content-Length'] + returns "100" 82s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 82s + Time.parse(response.headers['Date']).is_a?(Time) 82s + !!(response.headers['Server'] =~ /^WEBrick/) 82s response.headers['Custom'] + returns "Foo: bar" 82s response.remote_ip + returns "127.0.0.1" 82s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 82s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 82s POST /body-sink 82s response.body + returns "5000000" 82s empty body + returns "0" 82s POST /echo 82s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 82s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 82s with multi-byte strings 83s + properly concatenates request+headers and body 83s PUT /echo 83s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 83s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 83s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 83s with multi-byte strings 83s + properly concatenates request+headers and body 83s should succeed with tcp_nodelay + returns 200 83s + returns true 83s nonblock => false, persistent => false 83s method and path defaults 83s request().body + returns "GET /" 83s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 83s request(:method => :get).body + returns "GET /" 83s request(:path => '/').body + returns "GET /" 83s request(:method => :get, :path => '/').body + returns "GET /" 83s GET /content-length/100 83s response.status + returns 200 83s response[:status] + returns 200 83s response.headers['Content-Length'] + returns "100" 83s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 83s + Time.parse(response.headers['Date']).is_a?(Time) 83s + !!(response.headers['Server'] =~ /^WEBrick/) 83s response.headers['Custom'] + returns "Foo: bar" 83s response.remote_ip + returns "127.0.0.1" 83s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 83s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 83s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 83s POST /body-sink 83s response.body + returns "5000000" 83s empty body + returns "0" 83s POST /echo 83s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 83s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 83s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 83s with multi-byte strings 83s + properly concatenates request+headers and body 83s PUT /echo 83s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 84s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 84s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 84s with multi-byte strings 84s + properly concatenates request+headers and body 84s should succeed with tcp_nodelay + returns 200 84s 84s [2026-02-03 22:39:49] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 84s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 84s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 84s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 84s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 84s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 84s 84s Excon basics verify_hostname (ssl) 84s + returns true 84s response.status + returns 200 84s 84s Excon ssl verify peer (ssl) 84s + returns true 85s response.status + returns 200 85s + returns true 85s response.status + returns 200 85s + returns true 85s response.status + returns 200 85s 85s Excon ssl verify peer (ssl cert store) 86s + returns true 86s response.status + returns 200 86s 86s Excon basics (ssl file) (focus) 86s GET /content-length/100 + raises Excon::Error::Socket 86s + returns true 86s nonblock => true, persistent => false 86s method and path defaults 86s request().body + returns "GET /" 86s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 86s request(:method => :get).body + returns "GET /" 87s request(:path => '/').body + returns "GET /" 87s request(:method => :get, :path => '/').body + returns "GET /" 87s GET /content-length/100 87s response.status + returns 200 87s response[:status] + returns 200 87s response.headers['Content-Length'] + returns "100" 87s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 87s + Time.parse(response.headers['Date']).is_a?(Time) 87s + !!(response.headers['Server'] =~ /^WEBrick/) 87s response.headers['Custom'] + returns "Foo: bar" 87s response.remote_ip + returns "127.0.0.1" 87s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 87s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 87s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 87s POST /body-sink 87s response.body + returns "5000000" 87s empty body + returns "0" 87s POST /echo 87s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 87s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 87s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 87s with multi-byte strings 87s + properly concatenates request+headers and body 87s PUT /echo 87s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 87s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 87s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 87s with multi-byte strings 87s + properly concatenates request+headers and body 87s should succeed with tcp_nodelay + returns 200 87s + returns true 87s nonblock => true, persistent => true 87s method and path defaults 87s request().body + returns "GET /" 88s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 88s request(:method => :get).body + returns "GET /" 88s request(:path => '/').body + returns "GET /" 88s request(:method => :get, :path => '/').body + returns "GET /" 88s GET /content-length/100 88s response.status + returns 200 88s response[:status] + returns 200 88s response.headers['Content-Length'] + returns "100" 88s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 88s + Time.parse(response.headers['Date']).is_a?(Time) 88s + !!(response.headers['Server'] =~ /^WEBrick/) 88s response.headers['Custom'] + returns "Foo: bar" 88s response.remote_ip + returns "127.0.0.1" 88s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 88s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 88s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 88s POST /body-sink 88s response.body + returns "5000000" 88s empty body + returns "0" 88s POST /echo 88s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 88s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 88s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 88s with multi-byte strings 88s + properly concatenates request+headers and body 88s PUT /echo 88s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 88s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 88s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 88s with multi-byte strings 88s + properly concatenates request+headers and body 88s should succeed with tcp_nodelay + returns 200 88s + returns true 88s nonblock => false, persistent => true 88s method and path defaults 88s request().body + returns "GET /" 88s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 88s request(:method => :get).body + returns "GET /" 88s request(:path => '/').body + returns "GET /" 89s request(:method => :get, :path => '/').body + returns "GET /" 89s GET /content-length/100 89s response.status + returns 200 89s response[:status] + returns 200 89s response.headers['Content-Length'] + returns "100" 89s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 89s + Time.parse(response.headers['Date']).is_a?(Time) 89s + !!(response.headers['Server'] =~ /^WEBrick/) 89s response.headers['Custom'] + returns "Foo: bar" 89s response.remote_ip + returns "127.0.0.1" 89s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 89s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 89s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 89s POST /body-sink 89s response.body + returns "5000000" 89s empty body + returns "0" 89s POST /echo 89s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 89s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 89s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 89s with multi-byte strings 89s + properly concatenates request+headers and body 89s PUT /echo 89s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 89s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 89s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 89s with multi-byte strings 89s + properly concatenates request+headers and body 89s should succeed with tcp_nodelay + returns 200 89s + returns true 89s nonblock => false, persistent => false 89s method and path defaults 89s request().body + returns "GET /" 89s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 89s request(:method => :get).body + returns "GET /" 89s request(:path => '/').body + returns "GET /" 89s request(:method => :get, :path => '/').body + returns "GET /" 89s GET /content-length/100 90s response.status + returns 200 90s response[:status] + returns 200 90s response.headers['Content-Length'] + returns "100" 90s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 90s + Time.parse(response.headers['Date']).is_a?(Time) 90s + !!(response.headers['Server'] =~ /^WEBrick/) 90s response.headers['Custom'] + returns "Foo: bar" 90s response.remote_ip + returns "127.0.0.1" 90s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 90s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 90s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 90s POST /body-sink 90s response.body + returns "5000000" 90s empty body + returns "0" 90s POST /echo 90s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 90s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 90s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 90s with multi-byte strings 90s + properly concatenates request+headers and body 90s PUT /echo 90s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 90s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 90s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 90s with multi-byte strings 90s + properly concatenates request+headers and body 90s should succeed with tcp_nodelay + returns 200 90s + returns true 90s nonblock => true, persistent => false 90s method and path defaults 90s request().body + returns "GET /" 90s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 90s request(:method => :get).body + returns "GET /" 90s request(:path => '/').body + returns "GET /" 91s request(:method => :get, :path => '/').body + returns "GET /" 91s GET /content-length/100 91s response.status + returns 200 91s response[:status] + returns 200 91s response.headers['Content-Length'] + returns "100" 91s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 91s + Time.parse(response.headers['Date']).is_a?(Time) 91s + !!(response.headers['Server'] =~ /^WEBrick/) 91s response.headers['Custom'] + returns "Foo: bar" 91s response.remote_ip + returns "127.0.0.1" 91s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 91s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 91s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 91s POST /body-sink 91s response.body + returns "5000000" 91s empty body + returns "0" 91s POST /echo 91s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 91s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 91s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 91s with multi-byte strings 91s + properly concatenates request+headers and body 91s PUT /echo 91s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 91s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 91s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 91s with multi-byte strings 91s + properly concatenates request+headers and body 91s should succeed with tcp_nodelay + returns 200 91s + returns true 91s nonblock => true, persistent => true 91s method and path defaults 91s request().body + returns "GET /" 92s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 92s request(:method => :get).body + returns "GET /" 92s request(:path => '/').body + returns "GET /" 92s request(:method => :get, :path => '/').body + returns "GET /" 92s GET /content-length/100 92s response.status + returns 200 92s response[:status] + returns 200 92s response.headers['Content-Length'] + returns "100" 92s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 92s + Time.parse(response.headers['Date']).is_a?(Time) 92s + !!(response.headers['Server'] =~ /^WEBrick/) 92s response.headers['Custom'] + returns "Foo: bar" 92s response.remote_ip + returns "127.0.0.1" 92s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 92s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 92s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 92s POST /body-sink 92s response.body + returns "5000000" 92s empty body + returns "0" 92s POST /echo 92s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 92s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 92s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 92s with multi-byte strings 92s + properly concatenates request+headers and body 92s PUT /echo 92s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 92s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 92s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 92s with multi-byte strings 92s + properly concatenates request+headers and body 92s should succeed with tcp_nodelay + returns 200 92s + returns true 92s nonblock => false, persistent => true 92s method and path defaults 92s request().body + returns "GET /" 92s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 92s request(:method => :get).body + returns "GET /" 93s request(:path => '/').body + returns "GET /" 93s request(:method => :get, :path => '/').body + returns "GET /" 93s GET /content-length/100 93s response.status + returns 200 93s response[:status] + returns 200 93s response.headers['Content-Length'] + returns "100" 93s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 93s + Time.parse(response.headers['Date']).is_a?(Time) 93s + !!(response.headers['Server'] =~ /^WEBrick/) 93s response.headers['Custom'] + returns "Foo: bar" 93s response.remote_ip + returns "127.0.0.1" 93s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 93s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 93s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 93s POST /body-sink 93s response.body + returns "5000000" 93s empty body + returns "0" 93s POST /echo 93s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 93s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 93s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 93s with multi-byte strings 93s + properly concatenates request+headers and body 93s PUT /echo 93s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 93s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 93s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 93s with multi-byte strings 93s + properly concatenates request+headers and body 93s should succeed with tcp_nodelay + returns 200 93s + returns true 93s nonblock => false, persistent => false 93s method and path defaults 93s request().body + returns "GET /" 93s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 93s request(:method => :get).body + returns "GET /" 93s request(:path => '/').body + returns "GET /" 93s request(:method => :get, :path => '/').body + returns "GET /" 93s GET /content-length/100 94s response.status + returns 200 94s response[:status] + returns 200 94s response.headers['Content-Length'] + returns "100" 94s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 94s + Time.parse(response.headers['Date']).is_a?(Time) 94s + !!(response.headers['Server'] =~ /^WEBrick/) 94s response.headers['Custom'] + returns "Foo: bar" 94s response.remote_ip + returns "127.0.0.1" 94s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 94s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 94s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 94s POST /body-sink 94s response.body + returns "5000000" 94s empty body + returns "0" 94s POST /echo 94s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 94s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 94s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 94s with multi-byte strings 94s + properly concatenates request+headers and body 94s PUT /echo 94s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 94s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 94s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 94s with multi-byte strings 94s + properly concatenates request+headers and body 94s should succeed with tcp_nodelay + returns 200 94s 94s [2026-02-03 22:39:55] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s [2026-02-03 22:39:55] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s [2026-02-03 22:39:56] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s [2026-02-03 22:39:56] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s [2026-02-03 22:39:59] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s [2026-02-03 22:39:59] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 94s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 94s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 94s 94s Excon basics (ssl chain) (focus) 95s GET /content-length/100 + raises Excon::Error::Socket 95s + returns true 95s nonblock => true, persistent => false 95s method and path defaults 95s request().body + returns "GET /" 95s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 95s request(:method => :get).body + returns "GET /" 95s request(:path => '/').body + returns "GET /" 95s request(:method => :get, :path => '/').body + returns "GET /" 95s GET /content-length/100 95s response.status + returns 200 95s response[:status] + returns 200 95s response.headers['Content-Length'] + returns "100" 95s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 95s + Time.parse(response.headers['Date']).is_a?(Time) 95s + !!(response.headers['Server'] =~ /^WEBrick/) 95s response.headers['Custom'] + returns "Foo: bar" 95s response.remote_ip + returns "127.0.0.1" 95s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 95s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 95s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 95s POST /body-sink 95s response.body + returns "5000000" 95s empty body + returns "0" 95s POST /echo 95s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 95s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 95s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 95s with multi-byte strings 95s + properly concatenates request+headers and body 95s PUT /echo 96s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 96s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 96s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 96s with multi-byte strings 96s + properly concatenates request+headers and body 96s should succeed with tcp_nodelay + returns 200 96s + returns true 96s nonblock => true, persistent => true 96s method and path defaults 96s request().body + returns "GET /" 96s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 96s request(:method => :get).body + returns "GET /" 96s request(:path => '/').body + returns "GET /" 96s request(:method => :get, :path => '/').body + returns "GET /" 96s GET /content-length/100 96s response.status + returns 200 96s response[:status] + returns 200 96s response.headers['Content-Length'] + returns "100" 96s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 96s + Time.parse(response.headers['Date']).is_a?(Time) 96s + !!(response.headers['Server'] =~ /^WEBrick/) 96s response.headers['Custom'] + returns "Foo: bar" 96s response.remote_ip + returns "127.0.0.1" 96s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 96s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 96s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 96s POST /body-sink 96s response.body + returns "5000000" 96s empty body + returns "0" 96s POST /echo 96s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 96s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 96s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 96s with multi-byte strings 96s + properly concatenates request+headers and body 96s PUT /echo 96s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 96s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s with multi-byte strings 97s + properly concatenates request+headers and body 97s should succeed with tcp_nodelay + returns 200 97s + returns true 97s nonblock => false, persistent => true 97s method and path defaults 97s request().body + returns "GET /" 97s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 97s request(:method => :get).body + returns "GET /" 97s request(:path => '/').body + returns "GET /" 97s request(:method => :get, :path => '/').body + returns "GET /" 97s GET /content-length/100 97s response.status + returns 200 97s response[:status] + returns 200 97s response.headers['Content-Length'] + returns "100" 97s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 97s + Time.parse(response.headers['Date']).is_a?(Time) 97s + !!(response.headers['Server'] =~ /^WEBrick/) 97s response.headers['Custom'] + returns "Foo: bar" 97s response.remote_ip + returns "127.0.0.1" 97s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 97s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 97s POST /body-sink 97s response.body + returns "5000000" 97s empty body + returns "0" 97s POST /echo 97s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 97s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s with multi-byte strings 97s + properly concatenates request+headers and body 97s PUT /echo 97s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 97s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 97s with multi-byte strings 97s + properly concatenates request+headers and body 98s should succeed with tcp_nodelay + returns 200 98s + returns true 98s nonblock => false, persistent => false 98s method and path defaults 98s request().body + returns "GET /" 98s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 98s request(:method => :get).body + returns "GET /" 98s request(:path => '/').body + returns "GET /" 98s request(:method => :get, :path => '/').body + returns "GET /" 98s GET /content-length/100 98s response.status + returns 200 98s response[:status] + returns 200 98s response.headers['Content-Length'] + returns "100" 98s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 98s + Time.parse(response.headers['Date']).is_a?(Time) 98s + !!(response.headers['Server'] =~ /^WEBrick/) 98s response.headers['Custom'] + returns "Foo: bar" 98s response.remote_ip + returns "127.0.0.1" 98s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 98s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 98s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 98s POST /body-sink 98s response.body + returns "5000000" 98s empty body + returns "0" 98s POST /echo 98s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 98s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 98s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 98s with multi-byte strings 98s + properly concatenates request+headers and body 98s PUT /echo 98s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 98s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 98s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 98s with multi-byte strings 99s + properly concatenates request+headers and body 99s should succeed with tcp_nodelay + returns 200 99s + returns true 99s nonblock => true, persistent => false 99s method and path defaults 99s request().body + returns "GET /" 99s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 99s request(:method => :get).body + returns "GET /" 99s request(:path => '/').body + returns "GET /" 99s request(:method => :get, :path => '/').body + returns "GET /" 99s GET /content-length/100 99s response.status + returns 200 99s response[:status] + returns 200 99s response.headers['Content-Length'] + returns "100" 99s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 99s + Time.parse(response.headers['Date']).is_a?(Time) 99s + !!(response.headers['Server'] =~ /^WEBrick/) 99s response.headers['Custom'] + returns "Foo: bar" 99s response.remote_ip + returns "127.0.0.1" 99s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 99s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 99s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 99s POST /body-sink 99s response.body + returns "5000000" 99s empty body + returns "0" 99s POST /echo 99s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 99s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 99s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 99s with multi-byte strings 99s + properly concatenates request+headers and body 99s PUT /echo 99s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 99s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s with multi-byte strings 100s + properly concatenates request+headers and body 100s should succeed with tcp_nodelay + returns 200 100s + returns true 100s nonblock => true, persistent => true 100s method and path defaults 100s request().body + returns "GET /" 100s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 100s request(:method => :get).body + returns "GET /" 100s request(:path => '/').body + returns "GET /" 100s request(:method => :get, :path => '/').body + returns "GET /" 100s GET /content-length/100 100s response.status + returns 200 100s response[:status] + returns 200 100s response.headers['Content-Length'] + returns "100" 100s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 100s + Time.parse(response.headers['Date']).is_a?(Time) 100s + !!(response.headers['Server'] =~ /^WEBrick/) 100s response.headers['Custom'] + returns "Foo: bar" 100s response.remote_ip + returns "127.0.0.1" 100s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 100s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 100s POST /body-sink 100s response.body + returns "5000000" 100s empty body + returns "0" 100s POST /echo 100s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 100s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s with multi-byte strings 100s + properly concatenates request+headers and body 100s PUT /echo 100s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 100s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 100s with multi-byte strings 100s + properly concatenates request+headers and body 101s should succeed with tcp_nodelay + returns 200 101s + returns true 101s nonblock => false, persistent => true 101s method and path defaults 101s request().body + returns "GET /" 101s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 101s request(:method => :get).body + returns "GET /" 101s request(:path => '/').body + returns "GET /" 101s request(:method => :get, :path => '/').body + returns "GET /" 101s GET /content-length/100 101s response.status + returns 200 101s response[:status] + returns 200 101s response.headers['Content-Length'] + returns "100" 101s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 101s + Time.parse(response.headers['Date']).is_a?(Time) 101s + !!(response.headers['Server'] =~ /^WEBrick/) 101s response.headers['Custom'] + returns "Foo: bar" 101s response.remote_ip + returns "127.0.0.1" 101s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 101s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 101s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 101s POST /body-sink 101s response.body + returns "5000000" 101s empty body + returns "0" 101s POST /echo 101s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 101s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 101s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 101s with multi-byte strings 101s + properly concatenates request+headers and body 101s PUT /echo 101s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 101s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 101s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 101s with multi-byte strings 101s + properly concatenates request+headers and body 101s should succeed with tcp_nodelay + returns 200 101s + returns true 101s nonblock => false, persistent => false 101s method and path defaults 101s request().body + returns "GET /" 102s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 102s request(:method => :get).body + returns "GET /" 102s request(:path => '/').body + returns "GET /" 102s request(:method => :get, :path => '/').body + returns "GET /" 102s GET /content-length/100 102s response.status + returns 200 102s response[:status] + returns 200 102s response.headers['Content-Length'] + returns "100" 102s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 102s + Time.parse(response.headers['Date']).is_a?(Time) 102s + !!(response.headers['Server'] =~ /^WEBrick/) 102s response.headers['Custom'] + returns "Foo: bar" 102s response.remote_ip + returns "127.0.0.1" 102s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 102s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 102s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 102s POST /body-sink 102s response.body + returns "5000000" 102s empty body + returns "0" 102s POST /echo 102s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 102s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 102s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 102s with multi-byte strings 102s + properly concatenates request+headers and body 102s PUT /echo 102s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 102s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 102s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 102s with multi-byte strings 102s + properly concatenates request+headers and body 102s should succeed with tcp_nodelay + returns 200 102s 102s [2026-02-03 22:40:03] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s [2026-02-03 22:40:04] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s [2026-02-03 22:40:04] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s [2026-02-03 22:40:04] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s [2026-02-03 22:40:07] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s [2026-02-03 22:40:07] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 102s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 102s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 102s 102s Excon basics (ssl file paths) (focus) 103s GET /content-length/100 + raises Excon::Error::Socket 103s + returns true 103s nonblock => true, persistent => false 103s method and path defaults 103s request().body + returns "GET /" 103s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 103s request(:method => :get).body + returns "GET /" 103s request(:path => '/').body + returns "GET /" 103s request(:method => :get, :path => '/').body + returns "GET /" 103s GET /content-length/100 103s response.status + returns 200 103s response[:status] + returns 200 103s response.headers['Content-Length'] + returns "100" 103s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 103s + Time.parse(response.headers['Date']).is_a?(Time) 103s + !!(response.headers['Server'] =~ /^WEBrick/) 103s response.headers['Custom'] + returns "Foo: bar" 103s response.remote_ip + returns "127.0.0.1" 103s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 103s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 103s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 103s POST /body-sink 103s response.body + returns "5000000" 103s empty body + returns "0" 103s POST /echo 103s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 104s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 104s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 104s with multi-byte strings 104s + properly concatenates request+headers and body 104s PUT /echo 104s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 104s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 104s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 104s with multi-byte strings 104s + properly concatenates request+headers and body 104s should succeed with tcp_nodelay + returns 200 104s + returns true 104s nonblock => true, persistent => true 104s method and path defaults 104s request().body + returns "GET /" 104s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 104s request(:method => :get).body + returns "GET /" 104s request(:path => '/').body + returns "GET /" 104s request(:method => :get, :path => '/').body + returns "GET /" 104s GET /content-length/100 104s response.status + returns 200 104s response[:status] + returns 200 104s response.headers['Content-Length'] + returns "100" 104s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 104s + Time.parse(response.headers['Date']).is_a?(Time) 104s + !!(response.headers['Server'] =~ /^WEBrick/) 104s response.headers['Custom'] + returns "Foo: bar" 104s response.remote_ip + returns "127.0.0.1" 104s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 104s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 104s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 104s POST /body-sink 104s response.body + returns "5000000" 104s empty body + returns "0" 104s POST /echo 105s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 105s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 105s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 105s with multi-byte strings 105s + properly concatenates request+headers and body 105s PUT /echo 105s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 105s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 105s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 105s with multi-byte strings 105s + properly concatenates request+headers and body 105s should succeed with tcp_nodelay + returns 200 105s + returns true 105s nonblock => false, persistent => true 105s method and path defaults 105s request().body + returns "GET /" 105s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 105s request(:method => :get).body + returns "GET /" 105s request(:path => '/').body + returns "GET /" 105s request(:method => :get, :path => '/').body + returns "GET /" 105s GET /content-length/100 105s response.status + returns 200 105s response[:status] + returns 200 105s response.headers['Content-Length'] + returns "100" 105s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 105s + Time.parse(response.headers['Date']).is_a?(Time) 105s + !!(response.headers['Server'] =~ /^WEBrick/) 105s response.headers['Custom'] + returns "Foo: bar" 105s response.remote_ip + returns "127.0.0.1" 105s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 105s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 105s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 105s POST /body-sink 105s response.body + returns "5000000" 105s empty body + returns "0" 105s POST /echo 105s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 105s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 106s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 106s with multi-byte strings 106s + properly concatenates request+headers and body 106s PUT /echo 106s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 106s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 106s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 106s with multi-byte strings 106s + properly concatenates request+headers and body 106s should succeed with tcp_nodelay + returns 200 106s + returns true 106s nonblock => false, persistent => false 106s method and path defaults 106s request().body + returns "GET /" 106s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 106s request(:method => :get).body + returns "GET /" 106s request(:path => '/').body + returns "GET /" 106s request(:method => :get, :path => '/').body + returns "GET /" 106s GET /content-length/100 106s response.status + returns 200 106s response[:status] + returns 200 106s response.headers['Content-Length'] + returns "100" 106s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 106s + Time.parse(response.headers['Date']).is_a?(Time) 106s + !!(response.headers['Server'] =~ /^WEBrick/) 106s response.headers['Custom'] + returns "Foo: bar" 106s response.remote_ip + returns "127.0.0.1" 106s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 106s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 106s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 106s POST /body-sink 106s response.body + returns "5000000" 106s empty body + returns "0" 106s POST /echo 106s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 106s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 107s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 107s with multi-byte strings 107s + properly concatenates request+headers and body 107s PUT /echo 107s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 107s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 107s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 107s with multi-byte strings 107s + properly concatenates request+headers and body 107s should succeed with tcp_nodelay + returns 200 107s 107s [2026-02-03 22:40:11] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 107s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 107s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 107s 107s [2026-02-03 22:40:11] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 107s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 107s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 107s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 107s 107s Excon basics (ssl string) (focus) 107s + returns true 107s nonblock => true, persistent => false 107s method and path defaults 107s request().body + returns "GET /" 107s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 107s request(:method => :get).body + returns "GET /" 107s request(:path => '/').body + returns "GET /" 107s request(:method => :get, :path => '/').body + returns "GET /" 107s GET /content-length/100 108s response.status + returns 200 108s response[:status] + returns 200 108s response.headers['Content-Length'] + returns "100" 108s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 108s + Time.parse(response.headers['Date']).is_a?(Time) 108s + !!(response.headers['Server'] =~ /^WEBrick/) 108s response.headers['Custom'] + returns "Foo: bar" 108s response.remote_ip + returns "127.0.0.1" 108s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 108s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 108s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 108s POST /body-sink 108s response.body + returns "5000000" 108s empty body + returns "0" 108s POST /echo 108s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 108s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 108s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 108s with multi-byte strings 108s + properly concatenates request+headers and body 108s PUT /echo 108s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 108s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 108s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 108s with multi-byte strings 108s + properly concatenates request+headers and body 108s should succeed with tcp_nodelay + returns 200 108s + returns true 108s nonblock => true, persistent => true 108s method and path defaults 108s request().body + returns "GET /" 108s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 109s request(:method => :get).body + returns "GET /" 109s request(:path => '/').body + returns "GET /" 109s request(:method => :get, :path => '/').body + returns "GET /" 109s GET /content-length/100 109s response.status + returns 200 109s response[:status] + returns 200 109s response.headers['Content-Length'] + returns "100" 109s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 109s + Time.parse(response.headers['Date']).is_a?(Time) 109s + !!(response.headers['Server'] =~ /^WEBrick/) 109s response.headers['Custom'] + returns "Foo: bar" 109s response.remote_ip + returns "127.0.0.1" 109s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 109s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 109s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 109s POST /body-sink 109s response.body + returns "5000000" 109s empty body + returns "0" 109s POST /echo 109s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 109s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 109s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 109s with multi-byte strings 109s + properly concatenates request+headers and body 109s PUT /echo 109s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 109s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 109s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 109s with multi-byte strings 109s + properly concatenates request+headers and body 109s should succeed with tcp_nodelay + returns 200 109s + returns true 109s nonblock => false, persistent => true 109s method and path defaults 109s request().body + returns "GET /" 109s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 109s request(:method => :get).body + returns "GET /" 109s request(:path => '/').body + returns "GET /" 110s request(:method => :get, :path => '/').body + returns "GET /" 110s GET /content-length/100 110s response.status + returns 200 110s response[:status] + returns 200 110s response.headers['Content-Length'] + returns "100" 110s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 110s + Time.parse(response.headers['Date']).is_a?(Time) 110s + !!(response.headers['Server'] =~ /^WEBrick/) 110s response.headers['Custom'] + returns "Foo: bar" 110s response.remote_ip + returns "127.0.0.1" 110s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 110s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 110s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 110s POST /body-sink 110s response.body + returns "5000000" 110s empty body + returns "0" 110s POST /echo 110s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 110s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 110s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 110s with multi-byte strings 110s + properly concatenates request+headers and body 110s PUT /echo 110s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 110s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 110s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 110s with multi-byte strings 110s + properly concatenates request+headers and body 110s should succeed with tcp_nodelay + returns 200 110s + returns true 110s nonblock => false, persistent => false 110s method and path defaults 110s request().body + returns "GET /" 110s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 110s request(:method => :get).body + returns "GET /" 110s request(:path => '/').body + returns "GET /" 110s request(:method => :get, :path => '/').body + returns "GET /" 110s GET /content-length/100 110s response.status + returns 200 110s response[:status] + returns 200 110s response.headers['Content-Length'] + returns "100" 110s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 110s + Time.parse(response.headers['Date']).is_a?(Time) 110s + !!(response.headers['Server'] =~ /^WEBrick/) 110s response.headers['Custom'] + returns "Foo: bar" 110s response.remote_ip + returns "127.0.0.1" 110s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 111s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 111s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 111s POST /body-sink 111s response.body + returns "5000000" 111s empty body + returns "0" 111s POST /echo 111s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 111s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 111s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 111s with multi-byte strings 111s + properly concatenates request+headers and body 111s PUT /echo 111s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 111s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 111s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 111s with multi-byte strings 111s + properly concatenates request+headers and body 111s should succeed with tcp_nodelay + returns 200 111s 111s [2026-02-03 22:40:15] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 111s 111s [2026-02-03 22:40:15] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 111s 111s [2026-02-03 22:40:16] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 111s 111s [2026-02-03 22:40:17] ERROR OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `sysread' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:80:in `fill_rbuff' 111s /usr/lib/ruby/3.3.0/openssl/buffering.rb:329:in `eof?' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/httpserver.rb:82:in `run' 111s /usr/share/rubygems-integration/all/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread' 111s 111s Excon basics (Unix socket) 112s + returns true 112s nonblock => true, persistent => false 112s method and path defaults 112s request().body + returns "GET /" 112s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 112s request(:method => :get).body + returns "GET /" 112s request(:path => '/').body + returns "GET /" 112s request(:method => :get, :path => '/').body + returns "GET /" 112s GET /content-length/100 112s response.status + returns 200 112s response[:status] + returns 200 112s response.headers['Content-Length'] + returns "100" 112s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 112s # Time.parse(response.headers['Date']).is_a?(Time) 112s # !!(response.headers['Server'] =~ /^WEBrick/) 112s response.headers['Custom'] + returns "Foo: bar" 112s response.remote_ip # returns "127.0.0.1" 112s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s POST /body-sink 112s response.body + returns "5000000" 112s empty body + returns "0" 112s POST /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s PUT /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s should succeed with tcp_nodelay + returns 200 112s + returns true 112s nonblock => true, persistent => true 112s method and path defaults 112s request().body + returns "GET /" 112s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 112s request(:method => :get).body + returns "GET /" 112s request(:path => '/').body + returns "GET /" 112s request(:method => :get, :path => '/').body + returns "GET /" 112s GET /content-length/100 112s response.status + returns 200 112s response[:status] + returns 200 112s response.headers['Content-Length'] + returns "100" 112s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 112s # Time.parse(response.headers['Date']).is_a?(Time) 112s # !!(response.headers['Server'] =~ /^WEBrick/) 112s response.headers['Custom'] + returns "Foo: bar" 112s response.remote_ip # returns "127.0.0.1" 112s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s POST /body-sink 112s response.body + returns "5000000" 112s empty body + returns "0" 112s POST /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s PUT /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s should succeed with tcp_nodelay + returns 200 112s + returns true 112s nonblock => false, persistent => true 112s method and path defaults 112s request().body + returns "GET /" 112s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 112s request(:method => :get).body + returns "GET /" 112s request(:path => '/').body + returns "GET /" 112s request(:method => :get, :path => '/').body + returns "GET /" 112s GET /content-length/100 112s response.status + returns 200 112s response[:status] + returns 200 112s response.headers['Content-Length'] + returns "100" 112s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 112s # Time.parse(response.headers['Date']).is_a?(Time) 112s # !!(response.headers['Server'] =~ /^WEBrick/) 112s response.headers['Custom'] + returns "Foo: bar" 112s response.remote_ip # returns "127.0.0.1" 112s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s POST /body-sink 112s response.body + returns "5000000" 112s empty body + returns "0" 112s POST /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s PUT /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s should succeed with tcp_nodelay + returns 200 112s + returns true 112s nonblock => false, persistent => false 112s method and path defaults 112s request().body + returns "GET /" 112s request(:headers => {'host' => '127.0.0.1'}) + returns "GET /" 112s request(:method => :get).body + returns "GET /" 112s request(:path => '/').body + returns "GET /" 112s request(:method => :get, :path => '/').body + returns "GET /" 112s GET /content-length/100 112s response.status + returns 200 112s response[:status] + returns 200 112s response.headers['Content-Length'] + returns "100" 112s response.headers['Content-Type'] + returns "text/html;charset=utf-8" 112s # Time.parse(response.headers['Date']).is_a?(Time) 112s # !!(response.headers['Server'] =~ /^WEBrick/) 112s response.headers['Custom'] + returns "Foo: bar" 112s response.remote_ip # returns "127.0.0.1" 112s response.body + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s deprecated block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s response_block usage + returns ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0, 100] 112s POST /body-sink 112s response.body + returns "5000000" 112s empty body + returns "0" 112s POST /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s PUT /echo 112s with file + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" 112s without request_block + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s request_block usage + returns "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 112s with multi-byte strings 112s + properly concatenates request+headers and body 112s should succeed with tcp_nodelay + returns 200 112s explicit uri passed to connection 112s GET /content-length/100 + returns 200 112s http Host header is empty 112s GET /headers + returns "" 112s 112s Excon basics (reusable local port) (localportreuse) 112s has a local port + returns true 112s local port can be re-bound + returns "xxxxxxxxxx" 112s 112s Excon Connection 112s #socket connects, sets data[:remote_ip] + returns "127.0.0.1" 112s persistent connections 112s + successful uninterrupted request 112s + resets connection after interrupt 112s + fork safety 112s inspect redaction 112s + authorization/proxy-authorization headers concealed for user & pass 112s + password param concealed for user & pass 112s + password param not mutated for user & pass 112s + proxy password param concealed for proxy: user & pass 112s + proxy password param not mutated for proxy: user & pass 112s + authorization/proxy-authorization headers concealed for email & pass 112s + password param concealed for email & pass 112s + password param not mutated for email & pass 112s + proxy password param concealed for proxy: email & pass 112s + proxy password param not mutated for proxy: email & pass 112s + authorization/proxy-authorization headers concealed for user no pass 112s + authorization/proxy-authorization headers concealed for pass no user 112s + password param concealed for pass no user 112s + password param not mutated for pass no user 112s + proxy password param concealed for proxy: pass no user 112s + proxy password param not mutated for proxy: pass no user 112s + initialization 112s 112s HTTPStatusError request/response debugging 112s Excon::Error knows about pertinent errors 112s new returns an Error + returns true 112s new raises errors for bad URIs + returns true 112s new raises errors for bad paths + returns true 112s can raise standard error and catch standard error + returns true 112s can raise legacy errors and catch legacy errors + returns true 112s can raise standard error and catch legacy errors + returns true 112s can raise with status_error() and catch with standard error + returns true 112s can raise with status_error() and catch with legacy error + returns true 112s can raise with legacy status_error() and catch with legacy + returns true 112s can raise with legacy status_error() and catch with standard + returns true 113s message does not include response or response info + returns true 113s message includes only request info + returns true 113s message includes only response info + returns true 113s message include request and response info + returns true 113s 113s Excon response header support 113s Excon::Headers storage 113s stores and retrieves as received + returns "expected" 113s enumerates keys as received 113s contains Exact-Case + returns true 113s contains Another-Fixture + returns true 113s supports case-insensitive access + returns "expected" 113s but still returns nil for missing keys + returns nil 113s Hash methods that should support case-insensitive access 113s #assoc + returns ["exact-case", "expected"] 113s #delete 113s with just a key + returns "yes" 113s with a proc + returns "called with notpresent" 113s #fetch 113s when present + returns "expected" 113s with a default value + returns "default" 113s with a default proc + returns "got missing" 113s #has_key? 113s when present + returns true 113s when absent + returns false 113s #values_at 113s all present + returns ["expected", "another"] 113s some missing + returns ["expected", nil] 113s Response#get_header 113s with variable header capitalization 113s response.get_header("mixedcase-header") + returns "MixedCase" 113s response.get_header("uppercase-header") + returns "UPPERCASE" 113s response.get_header("lowercase-header") + returns "lowercase" 113s when provided key capitalization varies 113s response.get_header("MIXEDCASE-HEADER") + returns "MixedCase" 113s response.get_header("MiXeDcAsE-hEaDeR") + returns "MixedCase" 113s when header is unavailable 113s response.get_header("missing") + returns nil 113s 113s logging instrumentor 113s connection logger + returns true 113s connection logger with query as hash + returns true 113s 113s Excon middleware 113s succeeds without defining valid_parameter_keys 113s 113s Excon support for middlewares that return canned responses 113s does not mutate the canned response body + returns "canned" 113s yields non-mutated body to response_block + returns "canned" 113s 113s Excon redirecting with cookie preserved 114s second request will send cookies set by the first + returns "ok" 114s second request will send multiple cookies set by the first + returns "ok" 116s runs normally when there are no cookies set + returns "ok" 116s 116s Excon Decompress Middleware 116s gzip 116s response body decompressed + returns "hello world" 116s server sent content-encoding + returns "gzip" 116s removes processed encoding from header + returns "" 116s empty response body + returns "" 116s deflate 116s response body decompressed + returns "hello world" 116s server sent content-encoding + returns "deflate" 116s removes processed encoding from header + returns "" 116s deflate-raw 116s response body decompressed + returns "hello world" 116s server sent content-encoding + returns "deflate" 116s removes processed encoding from header + returns "" 116s with pre-encoding 116s server sent content-encoding + returns "other, gzip" 116s processed encoding removed from header + returns "other" 116s response body decompressed + returns "hello world" 116s with post-encoding 116s server sent content-encoding + returns "gzip, other" 116s unprocessed since last applied is unknown + returns "gzip, other" 116s response body still compressed + returns "hello world" 116s with a :response_block 116s server sent content-encoding + returns "gzip" 116s unprocessed since :response_block was used + returns "gzip" 116s :response_block passed unprocessed data + returns "hello world" 116s adds Accept-Encoding if needed 116s without a :response_block + returns "deflate, gzip" 116s with a :response_block + returns nil 116s empty content-encoding 116s succeeds + returns "body" 116s 116s Excon Decompress Middleware 116s encoded uri passed to connection 116s GET /echo%20dirty + returns 200 116s unencoded uri passed to connection 116s GET /echo dirty + returns 200 116s 116s Excon request idempotencey 116s Non-idempotent call with an erroring socket + raises Excon::Error::Socket 116s Idempotent request with socket erroring first 3 times + returns 200 116s Idempotent request with socket erroring first 5 times + raises Excon::Error::Socket 116s Lowered retry limit with socket erroring first time + returns 200 116s Lowered retry limit with socket erroring first 3 times + raises Excon::Error::Socket 116s Raised retry limit with socket erroring first 5 times + returns 200 116s Raised retry limit with socket erroring first 9 times + raises Excon::Error::Socket 116s Retry limit in constructor with socket erroring first 5 times + returns 200 116s Retry limit and sleep in constructor with socket erroring first 2 times + returns 200 116s Retry limit and sleep in constructor with socket erroring first 2 times + raises Excon::Error::Socket 116s Idempotent request with custom error first 3 times + returns 200 116s Idempotent request with custom error first 5 times + raises RuntimeError 116s Overriding default retry_errors + raises Excon::Error::Socket 116s request_block rewound + returns true 116s response_block rewound + returns true 116s 116s Excon instrumentation 116s basic notification + returns ["excon.request", "excon.response"] 116s captures scheme, host, port, and path + returns [:host, :path, :port, :scheme] 116s params in request overwrite those in constructor + returns "/cheezburger" 116s notify on retry + returns 3 116s notify on error + raises Excon::Error::Socket 116s + returns true 116s filtering + raises Excon::Error::Socket 116s + returns ["excon.request", "excon.error"] 116s more filtering + raises Excon::Error::Socket 116s + returns ["excon.retry", "excon.retry", "excon.retry"] 116s indicates duration + returns true 116s standard instrumentor 116s success + raises Excon::Error::Socket 116s + returns ["excon.request", "excon.retry", "excon.retry", "excon.retry", "excon.error"] 116s authorization header REDACT 116s + raises Excon::Error::Socket 116s + does not appear in response 116s + does not mutate Authorization value 116s password REDACT 116s + raises Excon::Error::Socket 116s + does not appear in response 116s + does not mutate password value 116s proxy password REDACT 116s + raises Excon::Error::Socket 116s + does not appear in response 116s + does not mutate password value 116s use our own instrumentor + raises Excon::Error::Socket 116s + returns ["excon.request", "excon.retry", "excon.retry", "excon.retry", "excon.error"] 116s always passes the block + returns ["excon.request", "excon.response"] 116s does not generate events when not provided + returns 0 116s allows setting the prefix + raises Excon::Error::Socket 116s + returns ["gug.request", "gug.retry", "gug.retry", "gug.retry", "gug.error"] 116s allows setting the prefix when not idempotent + raises Excon::Error::Socket 116s + returns ["gug.request", "gug.error"] 116s works unmocked + returns ["excon.request", "excon.response"] 116s 116s Excon stubs 116s missing stub + raises Excon::Error::StubNotFound 116s stub({}) + raises ArgumentError 116s stub({}, {}) {} + raises ArgumentError 116s stub({:method => :get}, {:body => 'body', :status => 200}) 116s response.body + returns "body" 116s response.headers + returns {} 116s response.status + returns 200 116s response_block yields body + returns "body" 116s response.body empty with response_block + returns "" 116s stub({ url: 'http://example.com' }, { body: 'body', status: 200 }) 116s request without slash matches stub without trailing slash 116s request with trailing slash matches stub without trailing slash 116s stub({ url: 'http://example.com?foo=bar' }, { body: 'body', status: 200 }) 116s query in url matches 116s hash query matches 116s stub({ url: 'http://example.com?a=b+c' }, { body: 'body', status: 200 }) 116s query in url matches 116s hash query matches 116s stub({:path => %r{/tests/(S+)}}, {:body => $1, :status => 200}) 116s response.body + returns "test" 116s response.headers + returns {} 116s response.status + returns 200 116s stub({:body => 'body', :method => :get}) {|params| {:body => params[:body], :headers => params[:headers], :status => 200}} 116s response.body + returns "body" 116s response.headers + returns {"Accept"=>"*/*", "Accept-Encoding"=>"deflate, gzip", "Host"=>"127.0.0.1:9292", "User-Agent"=>"excon/1.3.1"} 116s response.status + returns 200 116s response_block yields body + returns "body" 116s response.body empty with response_block + returns "" 116s stub({:body => File.open(...), :method => :get}, { :status => 200 }) 116s response.status + returns 200 116s invalid stub response + raises Excon::Error::InvalidStub 116s mismatched stub + raises Excon::Error::StubNotFound 116s allow mismatched stub + returns 200 116s stub({}, {:body => 'x' * (Excon::DEFAULT_CHUNK_SIZE + 1)}) 116s + response_block yields body 116s response.body empty with response_block + returns "" 116s stub({:url => 'https://user:pass@foo.bar.com:9999/baz?quux=true'}, {:status => 200}) 116s + get(:expects => 200) 116s stub({}, {:status => 404, :body => 'Not Found'} 116s request(:expects => 200, :method => :get, :path => '/') + raises Excon::Error::NotFound 116s Expects exception should contain response object + returns Excon::Response 116s + request(:expects => 200, :method => :get, :path => '/') with block does not invoke the block since it raises an error 116s stub_for({}) 116s stub_for({}) + returns [{}, {}] 116s unstub({}) 116s unstub({}) + returns [{}, {}] 116s request(:method => :get) + raises Excon::Error::StubNotFound 116s unstub({path: %r{/path}}) 116s unstub({path: %r{/path}}) + returns [{:path=>/\/path/, :captures=>{:headers=>{}}}, {}] 116s unstub non-existent stub 116s unstub({}) + returns nil 116s global stubs 116s get on a different thread + returns "2" 116s get on main thread + returns "2" 116s thread-local stubs 116s get on a different thread + returns "2" 116s get on main thread + returns "1" 116s 116s Excon redirector support 116s request(:method => :get, :path => '/old').body + returns "new" 116s 116s Excon redirector support with redirect loop 116s request(:method => :get, :path => '/old') + raises Excon::Error::TooManyRedirects 116s 116s Excon redirect support for relative Location headers 116s request(:method => :get, :path => '/old').body + returns "new" 116s 116s Excon redirect support for relative Location headers with dot segments 116s request(:method => :get, :path => '/foo/baz/').body + returns "/foo/bar/" 116s 116s Excon redirecting post request 116s request not have content-length and body + returns "ok" 116s 116s Pipelined Requests 116s with default :persistent => true 116s + connection is persistent 116s with default :persistent => false 116s + connection is persistent per call to #requests 116s 116s Excon proxy support 116s proxy configuration 116s no proxy 116s connection.data[:proxy] + returns nil 116s empty proxy 116s connection.data[:proxy] + returns nil 116s with fully-specified proxy: https://myproxy.net:8080 116s connection.data[:proxy][:host] + returns "myproxy.net" 116s connection.data[:proxy][:port] + returns 8080 116s connection.data[:proxy][:scheme] + returns "https" 116s with fully-specified Unix socket proxy: unix:/// 116s connection.data[:proxy][:host] + returns nil 116s connection.data[:proxy][:port] + returns nil 116s connection.data[:proxy][:scheme] + returns "unix" 116s connection.data[:proxy][:path] + returns "/tmp/myproxy.sock" 116s with complete proxy config from the environment 116s lowercase 116s an http connection 116s connection.data[:proxy][:host] + returns "myproxy" 116s connection.data[:proxy][:port] + returns 8080 116s connection.data[:proxy][:scheme] + returns "http" 116s with disable_proxy set 116s connection.data[:proxy] + returns nil 116s an https connection 116s connection.data[:proxy][:host] + returns "mysecureproxy" 116s connection.data[:proxy][:port] + returns 8081 116s connection.data[:proxy][:scheme] + returns "http" 116s with disable_proxy set 116s connection.data[:proxy] + returns nil 116s http proxy from the environment overrides config 116s connection.data[:proxy][:host] + returns "myproxy" 116s connection.data[:proxy][:port] + returns 8080 116s an http connection in no_proxy 116s connection.data[:proxy] + returns nil 116s an http connection not completely matching no_proxy 116s connection.data[:proxy][:host] + returns "myproxy" 116s an http connection with subdomain in no_proxy 116s connection.data[:proxy] + returns nil 116s uppercase 116s an http connection 116s connection.data[:proxy][:host] + returns "myproxy" 116s connection.data[:proxy][:port] + returns 8080 116s connection.data[:proxy][:scheme] + returns "http" 116s with disable_proxy set 116s connection.data[:proxy] + returns nil 116s an https connection 116s connection.data[:proxy][:host] + returns "mysecureproxy" 116s connection.data[:proxy][:port] + returns 8081 116s connection.data[:proxy][:scheme] + returns "http" 116s with disable_proxy set 116s connection.data[:proxy] + returns nil 116s http proxy from the environment overrides config 116s connection.data[:proxy][:host] + returns "myproxy" 116s connection.data[:proxy][:port] + returns 8080 116s an http connection in no_proxy 116s connection.data[:proxy] + returns nil 116s an http connection not completely matching no_proxy 116s connection.data[:proxy][:host] + returns "myproxy" 116s an http connection with subdomain in no_proxy 116s connection.data[:proxy] + returns nil 116s with only http_proxy config from the environment 116s an https connection 116s connection.data[:proxy][:host] + returns "myproxy" 116s connection.data[:proxy][:port] + returns 8080 116s connection.data[:proxy][:scheme] + returns "http" 116s with a unix socket proxy config from the environment 116s an https connection 116s connection.data[:proxy][:host] + returns nil 116s connection.data[:proxy][:port] + returns nil 116s connection.data[:proxy][:scheme] + returns "unix" 116s connection.data[:proxy][:path] + returns "/tmp/myproxy.sock" 117s http proxying: http://foo.com:8080 117s response.status + returns 200 117s sent Request URI + returns "http://foo.com:8080/bar?alpha=kappa" 117s sent Sent-Host header + returns "foo.com:8080" 117s sent Proxy-Connection header + returns "Keep-Alive" 117s response.body (proxied content) + returns "proxied content" 117s http proxying: http://user:pass@foo.com:8080 117s response.status + returns 200 117s sent Request URI + returns "http://foo.com:8080/bar?alpha=kappa" 117s sent Host header + returns "foo.com:8080" 117s sent Proxy-Connection header + returns "Keep-Alive" 117s response.body (proxied content) + returns "proxied content" 117s http proxying over unix socket: http://foo.com:8080 117s response.status + returns 200 117s sent Sent-Host header + returns "foo.com:8080" 117s sent Proxy-Connection header + returns "Keep-Alive" 117s response.body (proxied content) + returns "proxied content" 117s 117s Excon query string variants 117s :query => {:foo => 'bar'} 117s query string sent + returns "foo=bar" 117s :query => {:foo => nil} 117s query string sent + returns "foo" 117s :query => {:foo => 'bar', :me => nil} 117s + query string sent includes 'foo=bar' 117s + query string sent includes 'me' 117s :query => {:foo => 'bar', :me => 'too'} 117s + query string sent includes 'foo=bar' 117s + query string sent includes 'me=too' 117s :query => {'foo[]' => ['bar', 'baz'], :me => 'too'} 117s + query string sent includes 'foo%5B%5D=bar' 117s + query string sent includes 'foo%5B%5D=baz' 117s + query string sent includes 'me=too' 117s :query => {'foo%=#' => 'bar%=#'} 117s query string sent + returns "foo%25%3D%23=bar%25%3D%23" 117s :query => {'foo%=#' => nil} 117s query string sent + returns "foo%25%3D%23" 117s 117s Excon request methods 118s empty headers sent 118s + Excon.post 118s header order 118s host is the first sent header by default + returns "host: localhost:9292" 118s 118s Excon request methods 118s one-offs 118s Excon.get + returns "GET" 118s Excon.post + returns "POST" 118s Excon.delete + returns "DELETE" 118s with a connection object 118s connection.get + returns "GET" 118s connection.post + returns "POST" 118s connection.delete + returns "DELETE" 118s not modifies path argument + returns "path" 118s 118s Request Tests 118s persistent connections 118s with default :persistent => true, 127.0.0.1:9292 118s + uses a persistent connection 118s + :persistent => false resets connection 118s with default :persistent => false, 127.0.0.1:9292 118s + does not use a persistent connection 118s + :persistent => true enables persistence 118s with default :persistent => true, [::1]:9293 119s + uses a persistent connection 119s + :persistent => false resets connection 119s with default :persistent => false, [::1]:9293 119s + does not use a persistent connection 119s + :persistent => true enables persistence 119s 119s Excon Response Parsing 119s responses with chunked transfer-encoding 119s simple response + returns "hello world" 119s with :response_block 119s simple response + returns [["hello ", nil, nil], ["world", nil, nil]] 119s simple response has empty body + returns "" 119s with expected response status + returns [["hello ", nil, nil], ["world", nil, nil]] 119s with unexpected response status + returns "hello world" 119s merges trailers into headers + returns "one, two, three, four, five, six" 119s removes 'chunked' from Transfer-Encoding + returns nil 119s responses with content-length 119s simple response + returns "hello world" 119s with :response_block 119s simple response + returns [["hello", 6, 11], [" worl", 1, 11], ["d", 0, 11]] 119s simple response has empty body + returns "" 119s with expected response status + returns [["hello", 6, 11], [" worl", 1, 11], ["d", 0, 11]] 119s with unexpected response status + returns "hello world" 119s responses with unknown length 119s simple response + returns "hello world" 119s with :response_block 119s simple response + returns [["hello", nil, nil], [" worl", nil, nil], ["d", nil, nil]] 119s simple response has empty body + returns "" 119s with expected response status + returns [["hello", nil, nil], [" worl", nil, nil], ["d", nil, nil]] 119s with unexpected response status + returns "hello world" 119s cookies 119s parses cookies into array + returns ["one, two", "three, four"] 119s header continuation 119s proper continuation + returns "one, two, three, four, five, six" 119s malformed header + raises Excon::Error::Socket 119s malformed header continuation + raises Excon::Error::Socket 119s status line parsing 119s proper status code + returns 404 119s proper reason phrase + returns "Not Found" 119s 119s socket 119s chunk_size: 119s read_nonblock 119s readline nonblock is efficient 119s + returns ["one\n", 1, [8, "EOF"]] 119s readline nonblock works sequentially 119s + returns [["one\n", "two\n"], 1, [8, "EOF"]] 119s readline nonblock can handle partial reads 119s + returns [["one\n", "two\n"], 2, [5, "EAGAIN", 3, "EOF"]] 119s readline nonblock before read 119s + returns [["one\n", "two\n"], 2, [8, "EOF"]] 119s read_nonblock does not EOF early 119s + returns [["one", "two"], 2, [3, "EAGAIN", 3, "EOF"]] 119s chunk_size: 512 119s read_nonblock 119s readline nonblock is efficient 119s + returns ["one\n", 1, [8, "EOF"]] 119s readline nonblock works sequentially 119s + returns [["one\n", "two\n"], 1, [8, "EOF"]] 119s readline nonblock can handle partial reads 119s + returns [["one\n", "two\n"], 2, [5, "EAGAIN", 3, "EOF"]] 119s readline nonblock before read 119s + returns [["one\n", "two\n"], 2, [8, "EOF"]] 119s read_nonblock does not EOF early 119s + returns [["one", "two"], 2, [3, "EAGAIN", 3, "EOF"]] 119s 119s Excon thread safety 119s thread_safe_sockets configuration 119s thread_safe_sockets default + returns true 119s with thread_safe_sockets set false + returns false 121s + long_thread 121s + short_thread 121s 121s read should timeout 122s nonblock => false hits read_timeout + raises Excon::Error::Timeout 123s nonblock => true hits read_timeout + raises Excon::Error::Timeout 123s 123s Excon::Utils 123s #connection_uri 123s using UNIX scheme + returns "unix:///tmp/some.sock" 123s using HTTP scheme 123s without default port + returns "http://foo.com" 123s include_default_port adds default port + returns "http://foo.com:80" 123s !include_default_port has no port value + returns "http://foo.com" 123s omit_default_port has no port value + returns "http://foo.com" 123s #request_uri 123s using UNIX scheme 123s without query + returns "unix:///tmp/some.sock/some/path" 123s with query + returns "unix:///tmp/some.sock/some/path?bar=that&foo=this" 123s using HTTP scheme 123s without query + returns "http://foo.com/some/path" 123s with query + returns "http://foo.com/some/path?bar=that&foo=this" 123s http default port + returns true 123s http nonstandard port + returns false 123s https standard port + returns true 123s https nonstandard port + returns false 123s unix socket + returns false 123s + detecting default ports 123s #escape_uri + returns "/hello%20excon" 123s #unescape_uri + returns "/hello excon" 123s #unescape_form + returns "message=We love excon!" 123s #split_header_value + returns ["value"] 123s #split_header_value + returns ["value1", "value2"] 123s #split_header_value + returns ["text/html;q=0.5", "application/json; version=1"] 123s #split_header_value + returns ["foo/bar;key=\"A,B,C\""] 123s #split_header_value + returns [] 123s 123s 12 pending and 1468 succeeded in 51.696872125857546 seconds 123s 123s /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 -c -f doc -r ./spec/spec_helper.rb 124s 124s Excon::Error 124s #status_errors 124s .keys 124s returns the pertinent HTTP error numbers 124s #new 124s returns an Excon::Error 124s raises errors for bad URIs 124s raises errors for bad paths 124s when remaining backwards compatible 124s #new 124s should raise standard error and catch standard error 124s should raise legacy errors and catch legacy errors 124s should raise standard error and catch legacy errors 124s #status_error 124s should raise with status_error() and catch with standard error 124s should raise with status_error() and catch with legacy error 124s should raise with legacy status_error() and catch with standard 124s when exceptions are rescued 124s when :debug_request and :debug_response are switched off 124s exception message does not include response or response info 124s when :debug_request and :debug_response are switched on 124s exception message includes request and response info 124s when only :debug_request is turned on 124s exception message includes only request info 124s when only :debug_response is turned on 124s exception message includes only response info 124s 124s Excon::Test::Server 124s when the web server is webrick 124s it should behave like a excon test server 124s returns an instance 124s starts the server 124s stops the server 124s when the web server is unicorn 124s bound to a tcp socket 124s it should behave like a excon test server 124s returns an instance 124s starts the server 124s stops the server 124s bound to a unix socket 124s it should behave like a excon test server 124s returns an instance 125s starts the server 125s stops the server 125s when the web server is puma 125s it should behave like a excon test server 125s returns an instance 125s starts the server 125s stops the server 125s when the web server is a executable 125s it should behave like a excon test server 125s returns an instance 125s starts the server 125s stops the server 125s 125s Excon 125s has a version number 125s 125s Excon::Connection 125s when an explicit uri is passed 125s .new 125s returns an instance 125s when :method is :get and :path is /content-length/100 125s #request 125s returns an Excon::Response 125s Excon::Response 125s #status 125s returns 200 125s when nonblock is true and persistent is false 125s when :method is get and :path is /content-length/100 125s #request 125s returns an Excon::Response 125s Excon::Response 125s #status 125s returns 200 125s #status returns 200 125s #headers 125s ["Content-Length"] returns 100 125s ["Content-Type"] returns "text/html;charset=utf-8" 125s ['Date'] returns a valid date 125s ['Server'] matches /^WEBrick/ 125s ['Custom'] returns Foo: bar 125s #remote_ip 125s returns 127.0.0.1 125s when tcp_nodelay is true 125s #request 125s returns an Excon::Response 125s Excon::Response 125s #body 125s .status 125s #returns 200 125s when utilizing deprecated block usage 125s #request 125s yields with a chunk, remaining length, and total length 125s completes with expected data 125s when utilizing response_block usage 125s #request 125s yields a chunk, remaining length, and total_length 125s completes with expected data 125s when method is :post 125s when :path is /body-sink 125s when a body parameter is supplied 125s returns an Excon::Response 125s Excon::Response 125s #body 125s equals "5000000" 125s when the body parameter is an empty string 125s returns an Excon::Response 125s Excon::Response 125s #body 125s equals "0" 125s when :path is /echo 125s when a file handle is the body paramter 125s Excon::Response 125s #body equals "x" * 100 + "\n" 125s when a string is the body paramter 125s does not change the enconding of the body 125s without request_block 125s Excon::Response 125s #body equals 'x' * 100) 125s when a request_block paramter is supplied 125s Excon::Response 125s #body equals'x' * 100 125s when a multi-byte string is the body paramter 125s Excon::Response 125s #body properly concatenates request+headers and body 125s when nonblock is true and persistent is true 125s when :method is get and :path is /content-length/100 125s #request 125s returns an Excon::Response 125s Excon::Response 125s #status 125s returns 200 125s #status returns 200 125s #headers 125s ["Content-Length"] returns 100 125s ["Content-Type"] returns "text/html;charset=utf-8" 125s ['Date'] returns a valid date 126s ['Server'] matches /^WEBrick/ 126s ['Custom'] returns Foo: bar 126s #remote_ip 126s returns 127.0.0.1 126s when tcp_nodelay is true 126s #request 126s returns an Excon::Response 126s Excon::Response 126s #body 126s .status 126s #returns 200 126s when utilizing deprecated block usage 126s #request 126s yields with a chunk, remaining length, and total length 126s completes with expected data 126s when utilizing response_block usage 126s #request 126s yields a chunk, remaining length, and total_length 126s completes with expected data 126s when method is :post 126s when :path is /body-sink 126s when a body parameter is supplied 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "5000000" 126s when the body parameter is an empty string 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "0" 126s when :path is /echo 126s when a file handle is the body paramter 126s Excon::Response 126s #body equals "x" * 100 + "\n" 126s when a string is the body paramter 126s does not change the enconding of the body 126s without request_block 126s Excon::Response 126s #body equals 'x' * 100) 126s when a request_block paramter is supplied 126s Excon::Response 126s #body equals'x' * 100 126s when a multi-byte string is the body paramter 126s Excon::Response 126s #body properly concatenates request+headers and body 126s when nonblock is false and persistent is true 126s when :method is get and :path is /content-length/100 126s #request 126s returns an Excon::Response 126s Excon::Response 126s #status 126s returns 200 126s #status returns 200 126s #headers 126s ["Content-Length"] returns 100 126s ["Content-Type"] returns "text/html;charset=utf-8" 126s ['Date'] returns a valid date 126s ['Server'] matches /^WEBrick/ 126s ['Custom'] returns Foo: bar 126s #remote_ip 126s returns 127.0.0.1 126s when tcp_nodelay is true 126s #request 126s returns an Excon::Response 126s Excon::Response 126s #body 126s .status 126s #returns 200 126s when utilizing deprecated block usage 126s #request 126s yields with a chunk, remaining length, and total length 126s completes with expected data 126s when utilizing response_block usage 126s #request 126s yields a chunk, remaining length, and total_length 126s completes with expected data 126s when method is :post 126s when :path is /body-sink 126s when a body parameter is supplied 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "5000000" 126s when the body parameter is an empty string 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "0" 126s when :path is /echo 126s when a file handle is the body paramter 126s Excon::Response 126s #body equals "x" * 100 + "\n" 126s when a string is the body paramter 126s does not change the enconding of the body 126s without request_block 126s Excon::Response 126s #body equals 'x' * 100) 126s when a request_block paramter is supplied 126s Excon::Response 126s #body equals'x' * 100 126s when a multi-byte string is the body paramter 126s Excon::Response 126s #body properly concatenates request+headers and body 126s when nonblock is false and persistent is false 126s when :method is get and :path is /content-length/100 126s #request 126s returns an Excon::Response 126s Excon::Response 126s #status 126s returns 200 126s #status returns 200 126s #headers 126s ["Content-Length"] returns 100 126s ["Content-Type"] returns "text/html;charset=utf-8" 126s ['Date'] returns a valid date 126s ['Server'] matches /^WEBrick/ 126s ['Custom'] returns Foo: bar 126s #remote_ip 126s returns 127.0.0.1 126s when tcp_nodelay is true 126s #request 126s returns an Excon::Response 126s Excon::Response 126s #body 126s .status 126s #returns 200 126s when utilizing deprecated block usage 126s #request 126s yields with a chunk, remaining length, and total length 126s completes with expected data 126s when utilizing response_block usage 126s #request 126s yields a chunk, remaining length, and total_length 126s completes with expected data 126s when method is :post 126s when :path is /body-sink 126s when a body parameter is supplied 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "5000000" 126s when the body parameter is an empty string 126s returns an Excon::Response 126s Excon::Response 126s #body 126s equals "0" 126s when :path is /echo 126s when a file handle is the body paramter 126s Excon::Response 126s #body equals "x" * 100 + "\n" 126s when a string is the body paramter 126s does not change the enconding of the body 126s without request_block 126s Excon::Response 126s #body equals 'x' * 100) 126s when a request_block paramter is supplied 126s Excon::Response 126s #body equals'x' * 100 126s when a multi-byte string is the body paramter 126s Excon::Response 126s #body properly concatenates request+headers and body 126s ractors 126s /tmp/autopkgtest.4n5jpb/build.fa3/src/spec/requests/basic_spec.rb:48: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues. 126s should work inside ractors 126s 126s Excon::Socket 126s passes the dns_timeouts to Resolv::DNS::Config (PENDING: Temporarily skipped with xit) 126s when the DNS server is unreachable 126s returns a Excon::Error::Socket 126s 126s Excon 126s when dispatching requests 126s to a server that does not supply response headers 126s when no block is given 126s should rescue from an EOFError and return response 126s when a block is given 126s should rescue from EOFError and return response 126s to a server that prematurely aborts the request with no response 126s should raise an EOFError 126s 126s Excon::Socket 126s resolv_resolver config reaches Resolv::DNS::Config (PENDING: Temporarily skipped with xit) 126s when the DNS server is unreachable 128s returns a Excon::Error::Socket 128s 128s Excon::Connection 128s blocking connection 128s when timeout is not set 128s does not error 128s when timeout is not triggered 128s does not error 128s when timeout is triggered 128s does not raise 128s non-blocking connection 128s when timeout is not set 128s does not error 128s when timeout is not triggered 128s does not error 128s when timeout is triggered 128s returns a request Excon::Error::Timeout 128s when read timeout is triggered 128s returns a read Excon::Error::Timeout 128s 128s Excon::Connection 128s when speaking to a UNIX socket 128s via Excon.new 128s accepts the unix:/ URL 128s Host header handling 128s sends an empty Host= by default 128s doesn't overwrite an explicit Host header 128s 128s Excon::Connection 128s validating parameters 128s with default middleware 128s Connection.new warns on invalid parameter keys 128s Connection#request warns on invalid parameter keys 128s with custom middleware at instantiation 128s Connection.new accepts parameters that are valid for the provided middleware 128s Connection.new warns on parameters that are not valid for the provided middleware 128s Connection#request accepts parameters that are valid for the provided middleware 128s Connection#request warns on parameters that are not valid for the provided middleware 128s with custom middleware at request time 128s Connection#request accepts parameters that are valid for the provided middleware 128s Connection#request warns on parameters that are not valid for the request middleware 128s Connection#request warns on parameters from instantiation that are not valid for the request middleware 128s 128s Pending: (Failures listed here are expected and do not affect your suite's status) 128s 128s 1) Excon::Socket passes the dns_timeouts to Resolv::DNS::Config 128s # Temporarily skipped with xit 128s # ./spec/requests/dns_timeout_spec.rb:10 128s 128s 2) Excon::Socket resolv_resolver config reaches Resolv::DNS::Config 128s # Temporarily skipped with xit 128s # ./spec/requests/resolv_resolver_spec.rb:14 128s 128s Finished in 4.6 seconds (files took 0.27395 seconds to load) 128s 156 examples, 0 failures, 2 pending 128s 128s mv ./.gem2deb.lib lib 129s autopkgtest [22:40:35]: test gem2deb-test-runner: -----------------------] 129s gem2deb-test-runner PASS 129s autopkgtest [22:40:35]: test gem2deb-test-runner: - - - - - - - - - - results - - - - - - - - - - 129s autopkgtest [22:40:35]: @@@@@@@@@@@@@@@@@@@@ summary 129s gem2deb-test-runner PASS