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