ethon 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -1
- data/README.md +1 -1
- data/ethon.gemspec +6 -3
- data/lib/ethon/curls/codes.rb +3 -2
- data/lib/ethon/version.rb +1 -1
- metadata +6 -85
- data/.github/workflows/ruby.yml +0 -41
- data/.gitignore +0 -8
- data/.rspec +0 -3
- data/Gemfile +0 -43
- data/Guardfile +0 -10
- data/Rakefile +0 -40
- data/profile/benchmarks.rb +0 -104
- data/profile/memory_leaks.rb +0 -114
- data/profile/perf_spec_helper.rb +0 -37
- data/profile/support/memory_test_helpers.rb +0 -76
- data/profile/support/os_memory_leak_tracker.rb +0 -48
- data/profile/support/ruby_object_leak_tracker.rb +0 -49
- data/spec/ethon/curl_spec.rb +0 -38
- data/spec/ethon/easy/callbacks_spec.rb +0 -81
- data/spec/ethon/easy/debug_info_spec.rb +0 -54
- data/spec/ethon/easy/features_spec.rb +0 -24
- data/spec/ethon/easy/form_spec.rb +0 -104
- data/spec/ethon/easy/header_spec.rb +0 -79
- data/spec/ethon/easy/http/custom_spec.rb +0 -177
- data/spec/ethon/easy/http/delete_spec.rb +0 -21
- data/spec/ethon/easy/http/get_spec.rb +0 -126
- data/spec/ethon/easy/http/head_spec.rb +0 -80
- data/spec/ethon/easy/http/options_spec.rb +0 -51
- data/spec/ethon/easy/http/patch_spec.rb +0 -51
- data/spec/ethon/easy/http/post_spec.rb +0 -317
- data/spec/ethon/easy/http/put_spec.rb +0 -168
- data/spec/ethon/easy/http_spec.rb +0 -64
- data/spec/ethon/easy/informations_spec.rb +0 -126
- data/spec/ethon/easy/mirror_spec.rb +0 -47
- data/spec/ethon/easy/operations_spec.rb +0 -271
- data/spec/ethon/easy/options_spec.rb +0 -193
- data/spec/ethon/easy/queryable_spec.rb +0 -235
- data/spec/ethon/easy/response_callbacks_spec.rb +0 -152
- data/spec/ethon/easy/util_spec.rb +0 -28
- data/spec/ethon/easy_spec.rb +0 -203
- data/spec/ethon/libc_spec.rb +0 -14
- data/spec/ethon/loggable_spec.rb +0 -22
- data/spec/ethon/multi/operations_spec.rb +0 -298
- data/spec/ethon/multi/options_spec.rb +0 -182
- data/spec/ethon/multi/stack_spec.rb +0 -80
- data/spec/ethon/multi_spec.rb +0 -152
- data/spec/spec_helper.rb +0 -28
- data/spec/support/localhost_server.rb +0 -95
- data/spec/support/server.rb +0 -115
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c8540ddcb77af693ed5b18a89ebcd126dd1e73e1c0d6f748d3ee2deec929fd7d
|
|
4
|
+
data.tar.gz: 62c1f741fb9bf87f914bb769a6e512bf01cf4e91b0f2393b6e63d3674bed12b7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85604eb698147db21a2e20d83b2cbdca48d0beea0d8485a9aa992450a5dc13b3033faa1f8fa14f33faefbc71ceea317945211b116e13dd4a189b9a60963aa5fa
|
|
7
|
+
data.tar.gz: ed6a4381cafd5acfc1a9c5c3482e0f7b7edbf9f757aa548e16e29a76670b8b7b08b53388f52c8df76b6afa8072974311341e5acbc4c78df07092c5eb14d492de
|
data/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
## Master
|
|
4
4
|
|
|
5
|
-
[Full Changelog](https://github.com/typhoeus/ethon/compare/v0.
|
|
5
|
+
[Full Changelog](https://github.com/typhoeus/ethon/compare/v0.17.0...master)
|
|
6
|
+
|
|
7
|
+
## 0.17.0
|
|
8
|
+
|
|
9
|
+
[Full Changelog](https://github.com/typhoeus/ethon/compare/v0.16.0...v0.17.0)
|
|
10
|
+
|
|
11
|
+
* Require Ruby 2.6+ and simplify Gemfile.
|
|
12
|
+
([Felipe Mesquita](https://github.com/felipedmesquita), [#255](https://github.com/typhoeus/ethon/pull/255))
|
|
13
|
+
* Fixed mismatched libcurl error codes in `easy_codes` array.
|
|
14
|
+
([Felipe Mesquita](https://github.com/felipedmesquita), [#253](https://github.com/typhoeus/ethon/pull/253))
|
|
15
|
+
* Add Ruby 3.3 and 3.4, remove Ruby 2.5 from CI matrix.
|
|
16
|
+
([Felipe Mesquita](https://github.com/felipedmesquita), [#252](https://github.com/typhoeus/ethon/pull/252))
|
|
17
|
+
* Skip test due to libcurl 8.7.x bug in CURLINFO_REQUEST_SIZE.
|
|
18
|
+
([Felipe Mesquita](https://github.com/felipedmesquita), [#251](https://github.com/typhoeus/ethon/pull/251))
|
|
19
|
+
* Use `Rackup::Handler.default` for Rack 3 compatibility.
|
|
20
|
+
([Vít Ondruch](https://github.com/voxik), [#244](https://github.com/typhoeus/ethon/pull/244))
|
|
21
|
+
* Add Ruby 3.1 and 3.2 to the test matrix.
|
|
22
|
+
([Orien Madgwick](https://github.com/orien), [#228](https://github.com/typhoeus/ethon/pull/228))
|
|
23
|
+
* Remove development and test files from the gem package.
|
|
24
|
+
([Orien Madgwick](https://github.com/orien), [#227](https://github.com/typhoeus/ethon/pull/227))
|
|
25
|
+
* Fix missing parenthesis in example.
|
|
26
|
+
([Aleksey Tsalolikhin](https://github.com/atsalolikhin-spokeo), [#226](https://github.com/typhoeus/ethon/pull/226))
|
|
27
|
+
|
|
28
|
+
## 0.16.0
|
|
29
|
+
|
|
30
|
+
[Full Changelog](https://github.com/typhoeus/ethon/compare/v0.15.0...v0.16.0)
|
|
6
31
|
|
|
7
32
|
* Added `redirect_url` value to available informations and `Easy::Mirror`.
|
|
8
33
|
([Adrien Rey-Jarthon](https://github.com/jarthod)
|
data/README.md
CHANGED
|
@@ -87,7 +87,7 @@ easy.http_request("www.example.com/get", :get, { http_version: :httpv2_0 })
|
|
|
87
87
|
easy.http_request("www.example.com/get", :get, { http_version: :httpv2_prior_knowledge })
|
|
88
88
|
|
|
89
89
|
# To set the server to use http2 with https and http1 with http, send the following:
|
|
90
|
-
easy.http_request("www.example.com/get", :get, { http_version: :httpv2_tls }
|
|
90
|
+
easy.http_request("www.example.com/get", :get, { http_version: :httpv2_tls })
|
|
91
91
|
|
|
92
92
|
multi.add(easy)
|
|
93
93
|
multi.perform
|
data/ethon.gemspec
CHANGED
|
@@ -15,12 +15,15 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
s.summary = "Libcurl wrapper."
|
|
16
16
|
s.description = "Very lightweight libcurl wrapper."
|
|
17
17
|
|
|
18
|
-
s.
|
|
18
|
+
s.required_ruby_version = ">= 2.6"
|
|
19
19
|
s.license = 'MIT'
|
|
20
20
|
|
|
21
21
|
s.add_dependency('ffi', ['>= 1.15.0'])
|
|
22
22
|
|
|
23
|
-
s.files
|
|
24
|
-
|
|
23
|
+
s.files = Dir.chdir(__dir__) do
|
|
24
|
+
`git ls-files -z`.split("\x0").reject do |file|
|
|
25
|
+
file.start_with?(*%w[. Gemfile Guardfile Rakefile profile spec])
|
|
26
|
+
end
|
|
27
|
+
end
|
|
25
28
|
s.require_path = 'lib'
|
|
26
29
|
end
|
data/lib/ethon/curls/codes.rb
CHANGED
|
@@ -26,7 +26,7 @@ module Ethon
|
|
|
26
26
|
:ftp_weird_pasv_reply,
|
|
27
27
|
:ftp_weird_227_format,
|
|
28
28
|
:ftp_cant_get_host,
|
|
29
|
-
:
|
|
29
|
+
:http2,
|
|
30
30
|
:ftp_couldnt_set_type,
|
|
31
31
|
:partial_file,
|
|
32
32
|
:ftp_couldnt_retr_file,
|
|
@@ -61,7 +61,7 @@ module Ethon
|
|
|
61
61
|
:unknown_option,
|
|
62
62
|
:telnet_option_syntax ,
|
|
63
63
|
:obsolete50,
|
|
64
|
-
:
|
|
64
|
+
:obsolete51,
|
|
65
65
|
:got_nothing,
|
|
66
66
|
:ssl_engine_notfound,
|
|
67
67
|
:ssl_engine_setfailed,
|
|
@@ -70,6 +70,7 @@ module Ethon
|
|
|
70
70
|
:obsolete57,
|
|
71
71
|
:ssl_certproblem,
|
|
72
72
|
:ssl_cipher,
|
|
73
|
+
:peer_failed_verification,
|
|
73
74
|
:bad_content_encoding,
|
|
74
75
|
:ldap_invalid_url,
|
|
75
76
|
:filesize_exceeded,
|
data/lib/ethon/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ethon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.17.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hans Hasselberg
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: ffi
|
|
@@ -31,15 +30,9 @@ executables: []
|
|
|
31
30
|
extensions: []
|
|
32
31
|
extra_rdoc_files: []
|
|
33
32
|
files:
|
|
34
|
-
- ".github/workflows/ruby.yml"
|
|
35
|
-
- ".gitignore"
|
|
36
|
-
- ".rspec"
|
|
37
33
|
- CHANGELOG.md
|
|
38
|
-
- Gemfile
|
|
39
|
-
- Guardfile
|
|
40
34
|
- LICENSE
|
|
41
35
|
- README.md
|
|
42
|
-
- Rakefile
|
|
43
36
|
- ethon.gemspec
|
|
44
37
|
- lib/ethon.rb
|
|
45
38
|
- lib/ethon/curl.rb
|
|
@@ -95,49 +88,10 @@ files:
|
|
|
95
88
|
- lib/ethon/multi/options.rb
|
|
96
89
|
- lib/ethon/multi/stack.rb
|
|
97
90
|
- lib/ethon/version.rb
|
|
98
|
-
- profile/benchmarks.rb
|
|
99
|
-
- profile/memory_leaks.rb
|
|
100
|
-
- profile/perf_spec_helper.rb
|
|
101
|
-
- profile/support/memory_test_helpers.rb
|
|
102
|
-
- profile/support/os_memory_leak_tracker.rb
|
|
103
|
-
- profile/support/ruby_object_leak_tracker.rb
|
|
104
|
-
- spec/ethon/curl_spec.rb
|
|
105
|
-
- spec/ethon/easy/callbacks_spec.rb
|
|
106
|
-
- spec/ethon/easy/debug_info_spec.rb
|
|
107
|
-
- spec/ethon/easy/features_spec.rb
|
|
108
|
-
- spec/ethon/easy/form_spec.rb
|
|
109
|
-
- spec/ethon/easy/header_spec.rb
|
|
110
|
-
- spec/ethon/easy/http/custom_spec.rb
|
|
111
|
-
- spec/ethon/easy/http/delete_spec.rb
|
|
112
|
-
- spec/ethon/easy/http/get_spec.rb
|
|
113
|
-
- spec/ethon/easy/http/head_spec.rb
|
|
114
|
-
- spec/ethon/easy/http/options_spec.rb
|
|
115
|
-
- spec/ethon/easy/http/patch_spec.rb
|
|
116
|
-
- spec/ethon/easy/http/post_spec.rb
|
|
117
|
-
- spec/ethon/easy/http/put_spec.rb
|
|
118
|
-
- spec/ethon/easy/http_spec.rb
|
|
119
|
-
- spec/ethon/easy/informations_spec.rb
|
|
120
|
-
- spec/ethon/easy/mirror_spec.rb
|
|
121
|
-
- spec/ethon/easy/operations_spec.rb
|
|
122
|
-
- spec/ethon/easy/options_spec.rb
|
|
123
|
-
- spec/ethon/easy/queryable_spec.rb
|
|
124
|
-
- spec/ethon/easy/response_callbacks_spec.rb
|
|
125
|
-
- spec/ethon/easy/util_spec.rb
|
|
126
|
-
- spec/ethon/easy_spec.rb
|
|
127
|
-
- spec/ethon/libc_spec.rb
|
|
128
|
-
- spec/ethon/loggable_spec.rb
|
|
129
|
-
- spec/ethon/multi/operations_spec.rb
|
|
130
|
-
- spec/ethon/multi/options_spec.rb
|
|
131
|
-
- spec/ethon/multi/stack_spec.rb
|
|
132
|
-
- spec/ethon/multi_spec.rb
|
|
133
|
-
- spec/spec_helper.rb
|
|
134
|
-
- spec/support/localhost_server.rb
|
|
135
|
-
- spec/support/server.rb
|
|
136
91
|
homepage: https://github.com/typhoeus/ethon
|
|
137
92
|
licenses:
|
|
138
93
|
- MIT
|
|
139
94
|
metadata: {}
|
|
140
|
-
post_install_message:
|
|
141
95
|
rdoc_options: []
|
|
142
96
|
require_paths:
|
|
143
97
|
- lib
|
|
@@ -145,47 +99,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
145
99
|
requirements:
|
|
146
100
|
- - ">="
|
|
147
101
|
- !ruby/object:Gem::Version
|
|
148
|
-
version: '
|
|
102
|
+
version: '2.6'
|
|
149
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
104
|
requirements:
|
|
151
105
|
- - ">="
|
|
152
106
|
- !ruby/object:Gem::Version
|
|
153
|
-
version:
|
|
107
|
+
version: '0'
|
|
154
108
|
requirements: []
|
|
155
|
-
rubygems_version: 3.
|
|
156
|
-
signing_key:
|
|
109
|
+
rubygems_version: 3.7.1
|
|
157
110
|
specification_version: 4
|
|
158
111
|
summary: Libcurl wrapper.
|
|
159
|
-
test_files:
|
|
160
|
-
- spec/ethon/curl_spec.rb
|
|
161
|
-
- spec/ethon/easy/callbacks_spec.rb
|
|
162
|
-
- spec/ethon/easy/debug_info_spec.rb
|
|
163
|
-
- spec/ethon/easy/features_spec.rb
|
|
164
|
-
- spec/ethon/easy/form_spec.rb
|
|
165
|
-
- spec/ethon/easy/header_spec.rb
|
|
166
|
-
- spec/ethon/easy/http/custom_spec.rb
|
|
167
|
-
- spec/ethon/easy/http/delete_spec.rb
|
|
168
|
-
- spec/ethon/easy/http/get_spec.rb
|
|
169
|
-
- spec/ethon/easy/http/head_spec.rb
|
|
170
|
-
- spec/ethon/easy/http/options_spec.rb
|
|
171
|
-
- spec/ethon/easy/http/patch_spec.rb
|
|
172
|
-
- spec/ethon/easy/http/post_spec.rb
|
|
173
|
-
- spec/ethon/easy/http/put_spec.rb
|
|
174
|
-
- spec/ethon/easy/http_spec.rb
|
|
175
|
-
- spec/ethon/easy/informations_spec.rb
|
|
176
|
-
- spec/ethon/easy/mirror_spec.rb
|
|
177
|
-
- spec/ethon/easy/operations_spec.rb
|
|
178
|
-
- spec/ethon/easy/options_spec.rb
|
|
179
|
-
- spec/ethon/easy/queryable_spec.rb
|
|
180
|
-
- spec/ethon/easy/response_callbacks_spec.rb
|
|
181
|
-
- spec/ethon/easy/util_spec.rb
|
|
182
|
-
- spec/ethon/easy_spec.rb
|
|
183
|
-
- spec/ethon/libc_spec.rb
|
|
184
|
-
- spec/ethon/loggable_spec.rb
|
|
185
|
-
- spec/ethon/multi/operations_spec.rb
|
|
186
|
-
- spec/ethon/multi/options_spec.rb
|
|
187
|
-
- spec/ethon/multi/stack_spec.rb
|
|
188
|
-
- spec/ethon/multi_spec.rb
|
|
189
|
-
- spec/spec_helper.rb
|
|
190
|
-
- spec/support/localhost_server.rb
|
|
191
|
-
- spec/support/server.rb
|
|
112
|
+
test_files: []
|
data/.github/workflows/ruby.yml
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# This workflow uses actions that are not certified by GitHub.
|
|
2
|
-
# They are provided by a third-party and are governed by
|
|
3
|
-
# separate terms of service, privacy policy, and support
|
|
4
|
-
# documentation.
|
|
5
|
-
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
|
6
|
-
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
|
7
|
-
|
|
8
|
-
name: Ruby
|
|
9
|
-
|
|
10
|
-
on:
|
|
11
|
-
push:
|
|
12
|
-
branches: [ master ]
|
|
13
|
-
pull_request:
|
|
14
|
-
branches: [ master ]
|
|
15
|
-
|
|
16
|
-
jobs:
|
|
17
|
-
test:
|
|
18
|
-
runs-on: ${{ matrix.os }}-latest
|
|
19
|
-
strategy:
|
|
20
|
-
fail-fast: false
|
|
21
|
-
matrix:
|
|
22
|
-
os: [ubuntu, macos]
|
|
23
|
-
ruby-version: [2.5, 2.6, 2.7, 3.0, head, debug, truffleruby]
|
|
24
|
-
continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
|
|
25
|
-
steps:
|
|
26
|
-
- uses: actions/checkout@v2
|
|
27
|
-
- name: Install libcurl header
|
|
28
|
-
run: |
|
|
29
|
-
if ${{ matrix.os == 'macos' }}
|
|
30
|
-
then
|
|
31
|
-
brew install curl
|
|
32
|
-
else
|
|
33
|
-
sudo apt update && sudo apt install -y --no-install-recommends libcurl4-openssl-dev
|
|
34
|
-
fi
|
|
35
|
-
- name: Set up Ruby
|
|
36
|
-
uses: ruby/setup-ruby@v1
|
|
37
|
-
with:
|
|
38
|
-
ruby-version: ${{ matrix.ruby-version }}
|
|
39
|
-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
40
|
-
- name: Run tests
|
|
41
|
-
run: bundle exec rake
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/Gemfile
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
source "https://rubygems.org"
|
|
3
|
-
gemspec
|
|
4
|
-
|
|
5
|
-
if Gem.ruby_version < Gem::Version.new("1.9.3")
|
|
6
|
-
gem "rake", "< 11"
|
|
7
|
-
else
|
|
8
|
-
gem "rake"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
group :development, :test do
|
|
12
|
-
gem "rspec", "~> 3.4"
|
|
13
|
-
|
|
14
|
-
gem "sinatra"
|
|
15
|
-
|
|
16
|
-
if Gem.ruby_version < Gem::Version.new("2.0.0")
|
|
17
|
-
gem "json", "< 2"
|
|
18
|
-
else
|
|
19
|
-
gem "json"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
if Gem.ruby_version >= Gem::Version.new("2.0.0")
|
|
23
|
-
gem "mime-types", "~> 1.18"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
if Gem.ruby_version >= Gem::Version.new("2.2.0")
|
|
27
|
-
gem "mustermann"
|
|
28
|
-
elsif Gem.ruby_version >= Gem::Version.new("2.1.0")
|
|
29
|
-
gem "mustermann", "0.4.0"
|
|
30
|
-
elsif Gem.ruby_version >= Gem::Version.new("2.0.0")
|
|
31
|
-
gem "mustermann", "0.3.1"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
if Gem.ruby_version >= Gem::Version.new("3.0.0")
|
|
35
|
-
gem "webrick"
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
group :perf do
|
|
40
|
-
gem "benchmark-ips"
|
|
41
|
-
gem "patron"
|
|
42
|
-
gem "curb"
|
|
43
|
-
end
|
data/Guardfile
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# vim:set filetype=ruby:
|
|
3
|
-
guard(
|
|
4
|
-
"rspec",
|
|
5
|
-
:all_after_pass => false,
|
|
6
|
-
:cli => "--fail-fast --tty --format documentation --colour") do
|
|
7
|
-
|
|
8
|
-
watch(%r{^spec/.+_spec\.rb$})
|
|
9
|
-
watch(%r{^lib/(.+)\.rb$}) { |match| "spec/#{match[1]}_spec.rb" }
|
|
10
|
-
end
|
data/Rakefile
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require "bundler"
|
|
3
|
-
Bundler.setup
|
|
4
|
-
|
|
5
|
-
require "rake"
|
|
6
|
-
require "rspec/core/rake_task"
|
|
7
|
-
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
8
|
-
require "ethon/version"
|
|
9
|
-
|
|
10
|
-
task :gem => :build
|
|
11
|
-
task :build do
|
|
12
|
-
system "gem build ethon.gemspec"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
task :install => :build do
|
|
16
|
-
system "gem install ethon-#{Ethon::VERSION}.gem"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
task :release => :build do
|
|
20
|
-
system "git tag -a v#{Ethon::VERSION} -m 'Tagging #{Ethon::VERSION}'"
|
|
21
|
-
system "git push --tags"
|
|
22
|
-
system "gem push ethon-#{Ethon::VERSION}.gem"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
RSpec::Core::RakeTask.new(:spec) do |t|
|
|
26
|
-
t.verbose = false
|
|
27
|
-
t.ruby_opts = "-W -I./spec -rspec_helper"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
desc "Start up the test servers"
|
|
31
|
-
task :start do
|
|
32
|
-
require_relative 'spec/support/boot'
|
|
33
|
-
begin
|
|
34
|
-
Boot.start_servers(:rake)
|
|
35
|
-
rescue Exception
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
task :default => :spec
|
|
40
|
-
|
data/profile/benchmarks.rb
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
require 'ethon'
|
|
4
|
-
require 'open-uri'
|
|
5
|
-
require 'patron'
|
|
6
|
-
require 'curb'
|
|
7
|
-
require 'net/http'
|
|
8
|
-
require 'cgi'
|
|
9
|
-
require 'benchmark/ips'
|
|
10
|
-
|
|
11
|
-
require_relative '../spec/support/server'
|
|
12
|
-
require_relative '../spec/support/localhost_server'
|
|
13
|
-
|
|
14
|
-
LocalhostServer.new(TESTSERVER.new, 3000)
|
|
15
|
-
LocalhostServer.new(TESTSERVER.new, 3001)
|
|
16
|
-
LocalhostServer.new(TESTSERVER.new, 3002)
|
|
17
|
-
|
|
18
|
-
url = 'http://localhost:3000/'.freeze
|
|
19
|
-
uri = URI.parse('http://localhost:3000/').freeze
|
|
20
|
-
ethon = Ethon::Easy.new(url: url)
|
|
21
|
-
patron = Patron::Session.new
|
|
22
|
-
patron_url = Patron::Session.new(base_url: url)
|
|
23
|
-
curb = Curl::Easy.new(url)
|
|
24
|
-
|
|
25
|
-
puts '[Creation]'
|
|
26
|
-
Benchmark.ips do |x|
|
|
27
|
-
x.report('String.new') { '' }
|
|
28
|
-
x.report('Easy.new') { Ethon::Easy.new }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
puts '[Escape]'
|
|
32
|
-
Benchmark.ips do |x|
|
|
33
|
-
x.report('CGI.escape') { CGI.escape("まつもと") }
|
|
34
|
-
x.report('Easy.escape') { ethon.escape("まつもと") }
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
puts '[Requests]'
|
|
38
|
-
Benchmark.ips do |x|
|
|
39
|
-
x.report('net/http') { Net::HTTP.get_response(uri) }
|
|
40
|
-
x.report('open-uri') { open url }
|
|
41
|
-
|
|
42
|
-
x.report('patron') do
|
|
43
|
-
patron.base_url = url
|
|
44
|
-
patron.get('/')
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
x.report('patron reuse') { patron_url.get('/') }
|
|
48
|
-
|
|
49
|
-
x.report('curb') do
|
|
50
|
-
curb.url = url
|
|
51
|
-
curb.perform
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
x.report('curb reuse') { curb.perform }
|
|
55
|
-
|
|
56
|
-
x.report('Easy.perform') do
|
|
57
|
-
ethon.url = url
|
|
58
|
-
ethon.perform
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
x.report('Easy.perform reuse') { ethon.perform }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
puts "[ 4 delayed Requests ]"
|
|
65
|
-
Benchmark.ips do |x|
|
|
66
|
-
x.report('net/http') do
|
|
67
|
-
3.times do |i|
|
|
68
|
-
uri = URI.parse("http://localhost:300#{i}/?delay=1")
|
|
69
|
-
Net::HTTP.get_response(uri)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
x.report("open-uri") do
|
|
74
|
-
3.times do |i|
|
|
75
|
-
open("http://localhost:300#{i}/?delay=1")
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
x.report("patron") do
|
|
80
|
-
sess = Patron::Session.new
|
|
81
|
-
3.times do |i|
|
|
82
|
-
sess.base_url = "http://localhost:300#{i}/?delay=1"
|
|
83
|
-
sess.get("/")
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
x.report("Easy.perform") do
|
|
88
|
-
easy = Ethon::Easy.new
|
|
89
|
-
3.times do |i|
|
|
90
|
-
easy.url = "http://localhost:300#{i}/?delay=1"
|
|
91
|
-
easy.perform
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
x.report("Multi.perform") do
|
|
96
|
-
multi = Ethon::Multi.new
|
|
97
|
-
3.times do |i|
|
|
98
|
-
easy = Ethon::Easy.new
|
|
99
|
-
easy.url = "http://localhost:300#{i}/?delay=1"
|
|
100
|
-
multi.add(easy)
|
|
101
|
-
end
|
|
102
|
-
multi.perform
|
|
103
|
-
end
|
|
104
|
-
end
|
data/profile/memory_leaks.rb
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'ethon'
|
|
3
|
-
require 'ethon/easy'
|
|
4
|
-
|
|
5
|
-
require_relative 'perf_spec_helper'
|
|
6
|
-
require 'rspec/autorun'
|
|
7
|
-
|
|
8
|
-
describe "low-level interactions with libcurl" do
|
|
9
|
-
describe Ethon::Multi do
|
|
10
|
-
memory_leak_test("init") do
|
|
11
|
-
Ethon::Multi.new
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
memory_leak_test("handle") do
|
|
15
|
-
Ethon::Multi.new.handle
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe Ethon::Easy do
|
|
20
|
-
memory_leak_test("init") do
|
|
21
|
-
Ethon::Easy.new
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
memory_leak_test("handle") do
|
|
25
|
-
Ethon::Easy.new.handle
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
memory_leak_test("headers") do
|
|
29
|
-
Ethon::Easy.new.headers = { "a" => 1, "b" => 2, "c" => 3, "d" => 4}
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
memory_leak_test("escape") do
|
|
33
|
-
Ethon::Easy.new.escape("the_sky&is_blue")
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
describe Ethon::Easy::Form do
|
|
39
|
-
memory_leak_test("init") do
|
|
40
|
-
Ethon::Easy::Form.new(nil, {})
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
memory_leak_test("first") do
|
|
44
|
-
Ethon::Easy::Form.new(nil, {}).first
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
memory_leak_test("last") do
|
|
48
|
-
Ethon::Easy::Form.new(nil, {}).last
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
memory_leak_test("materialized with some params") do
|
|
52
|
-
form = Ethon::Easy::Form.new(nil, { "a" => "1" })
|
|
53
|
-
form.materialize
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
memory_leak_test("materialized with a file") do
|
|
57
|
-
File.open(__FILE__, "r") do |file|
|
|
58
|
-
form = Ethon::Easy::Form.new(nil, { "a" => file })
|
|
59
|
-
form.materialize
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe "higher level operations" do
|
|
66
|
-
memory_leak_test("a simple request") do
|
|
67
|
-
Ethon::Easy.new(:url => "http://localhost:3001/",
|
|
68
|
-
:forbid_reuse => true).perform
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
memory_leak_test("a request with headers") do
|
|
72
|
-
Ethon::Easy.new(:url => "http://localhost:3001/",
|
|
73
|
-
:headers => { "Content-Type" => "application/json",
|
|
74
|
-
"Something" => "1",
|
|
75
|
-
"Else" => "qwerty",
|
|
76
|
-
"Long-String" => "aassddffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz"},
|
|
77
|
-
:forbid_reuse => true).perform
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
memory_leak_test("a request with headers and params") do
|
|
81
|
-
easy = Ethon::Easy.new(:url => "http://localhost:3001/",
|
|
82
|
-
:headers => { "Content-Type" => "application/json",
|
|
83
|
-
"Something" => "1",
|
|
84
|
-
"Else" => "qwerty",
|
|
85
|
-
"Long-String" => "aassddffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz"},
|
|
86
|
-
:forbid_reuse => true)
|
|
87
|
-
easy.http_request("http://localhost:3001/",
|
|
88
|
-
:get,
|
|
89
|
-
:params => { "param1" => "value1",
|
|
90
|
-
"param2" => "value2",
|
|
91
|
-
"param3" => "value3",
|
|
92
|
-
"param4" => "value4"})
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
memory_leak_test("a request with headers, params, and body") do
|
|
96
|
-
easy = Ethon::Easy.new(:url => "http://localhost:3001/",
|
|
97
|
-
:headers => { "Content-Type" => "application/json",
|
|
98
|
-
"Something" => "1",
|
|
99
|
-
"Else" => "qwerty",
|
|
100
|
-
"Long-String" => "aassddffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz"},
|
|
101
|
-
:forbid_reuse => true)
|
|
102
|
-
easy.http_request("http://localhost:3001/",
|
|
103
|
-
:get,
|
|
104
|
-
:params => { "param1" => "value1",
|
|
105
|
-
"param2" => "value2",
|
|
106
|
-
"param3" => "value3",
|
|
107
|
-
"param4" => "value4"},
|
|
108
|
-
:body => {
|
|
109
|
-
"body1" => "value1",
|
|
110
|
-
"body2" => "value2",
|
|
111
|
-
"body3" => "value3"
|
|
112
|
-
})
|
|
113
|
-
end
|
|
114
|
-
end
|
data/profile/perf_spec_helper.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
#### SETUP
|
|
3
|
-
require 'bundler'
|
|
4
|
-
Bundler.setup
|
|
5
|
-
require 'rspec'
|
|
6
|
-
|
|
7
|
-
require 'support/localhost_server'
|
|
8
|
-
require 'support/server'
|
|
9
|
-
require_relative 'support/memory_test_helpers'
|
|
10
|
-
|
|
11
|
-
require 'logger'
|
|
12
|
-
|
|
13
|
-
if ENV['VERBOSE']
|
|
14
|
-
Ethon.logger = Logger.new($stdout)
|
|
15
|
-
Ethon.logger.level = Logger::DEBUG
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
RSpec.configure do |config|
|
|
19
|
-
config.before(:suite) do
|
|
20
|
-
LocalhostServer.new(TESTSERVER.new, 3001)
|
|
21
|
-
end
|
|
22
|
-
config.include(MemoryTestHelpers)
|
|
23
|
-
config.extend(MemoryTestHelpers::TestMethods)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
MemoryTestHelpers.setup
|
|
27
|
-
MemoryTestHelpers.logger = Logger.new($stdout)
|
|
28
|
-
MemoryTestHelpers.logger.level = Logger::INFO
|
|
29
|
-
MemoryTestHelpers.logger.formatter = proc do |severity, datetime, progname, msg|
|
|
30
|
-
"\t\t#{msg}\n"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
if ENV['VERBOSE']
|
|
34
|
-
MemoryTestHelpers.logger.level = Logger::DEBUG
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
MemoryTestHelpers.iterations = ENV.fetch("ITERATIONS", 10_000).to_i
|