pingify 0.0.1 → 0.0.2
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 +15 -0
- data/README.md +23 -2
- data/Rakefile +5 -0
- data/bin/pingify +0 -0
- data/lib/pingify.rb +16 -10
- data/lib/pingify/result.rb +1 -1
- data/lib/pingify/version.rb +1 -1
- data/spec/acceptance/network_spec.rb +16 -11
- metadata +20 -32
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MzVmNzg1YTMwMTJiYzU1NjRlODRmOTU0YzQ3YjhjMTM5NDUzYjZhNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjRiMTk0OTA5YWRlNDcyMzgzNTc0NDYyNDQ2YWM0NmY2ZjFjYzQ4NA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZDRhMjhiNTM0OGQ5MWY0YWY1NjM2NGZjNzRkYjE4NTE0YTMxOWNhZWNmZGMy
|
10
|
+
YzdiNDk5ZTY0NjEyODYwNDA2NGQ3ZGFiY2FmNTY0NWMzMWU2OTk0N2Q0M2Nm
|
11
|
+
NWNhMmQxZjkzZThkNDA0MWE5ZTkxODNkOTAyMDM1ZjkyMzlhODg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Mzg5NWNiYzRlZDE2NDM5ZGE3NmQxMGZhMzE0ZDYzY2M5Njc0MmIxZWIzZjE0
|
14
|
+
ZDNlY2ViOTg3OTViYjBkMjg0NGM0M2Q4YzE5N2FhZGY5ZDY0MTk1NjVkYzNh
|
15
|
+
OTkxMGRlMzE4NGE4ZjM4ZTBjMGVmZmZmYmQ0MGNlOTkwMzAyMzQ=
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Pingify
|
2
2
|
|
3
|
-
|
3
|
+
Pingify is a simple library that enables simple ping checks on running service
|
4
|
+
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -18,7 +19,27 @@ Or install it yourself as:
|
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
21
|
-
|
22
|
+
First define a Pingify object with the options you like
|
23
|
+
|
24
|
+
pingify = Pingify::Runnable.new(
|
25
|
+
uri: "http://example.com/ping", # service ping uri
|
26
|
+
timeout: 4, # http timeout
|
27
|
+
open_timeout: 4, # http open timeout
|
28
|
+
times: 10) # number of times to run
|
29
|
+
|
30
|
+
Run the test with #run
|
31
|
+
|
32
|
+
result = pingify.run
|
33
|
+
|
34
|
+
Query the result
|
35
|
+
|
36
|
+
result.success?
|
37
|
+
|
38
|
+
Result data, headers that begin with 'x-ping-' will be added to the hash.
|
39
|
+
|
40
|
+
result.data[:average] # average ping time
|
41
|
+
result.data[:body] # result body
|
42
|
+
result.data[:appversion] # flitered result header *x-ping-appversion*
|
22
43
|
|
23
44
|
## Contributing
|
24
45
|
|
data/Rakefile
CHANGED
data/bin/pingify
CHANGED
File without changes
|
data/lib/pingify.rb
CHANGED
@@ -7,29 +7,35 @@ module Pingify
|
|
7
7
|
|
8
8
|
attr_accessor :uri
|
9
9
|
|
10
|
-
def initialize(options={ :timeout => 2.0, :open_timeout => 2.0 })
|
10
|
+
def initialize(options={ :timeout => 2.0, :open_timeout => 2.0 })
|
11
|
+
@uri = options.delete :uri
|
11
12
|
@times = options.delete(:times) || 4
|
12
13
|
@http_opts = { :timeout => options.delete(:timeout), :open_timeout => options.delete(:open_timeout) }
|
13
14
|
end
|
14
15
|
|
15
16
|
def run
|
16
17
|
res = ping!
|
17
|
-
ping_headers = Hash[res.headers.select{ |k,_| k.match(/^x_ping_/) }.map{ |k,v| [k.to_s.sub('x_ping_', '').to_sym, v] }]
|
18
18
|
|
19
|
-
|
20
|
-
start = Time.now
|
21
|
-
runtimes.times { ping! }
|
22
|
-
total_time = Time.now - start
|
19
|
+
data = { :average => average_time(@times - 1), :body => res.body }.merge(ping_headers(res))
|
23
20
|
|
24
|
-
avg = total_time / runtimes
|
25
|
-
|
26
|
-
data = { :average => avg, :body => res.body }.merge(ping_headers)
|
27
21
|
return Result.new(data)
|
28
22
|
rescue
|
29
23
|
return ErrorResult.new({}, [$!])
|
30
24
|
end
|
31
25
|
|
32
|
-
private
|
26
|
+
private
|
27
|
+
|
28
|
+
def average_time(runtimes)
|
29
|
+
start = Time.now
|
30
|
+
runtimes.times { ping! }
|
31
|
+
total_time = Time.now - start
|
32
|
+
|
33
|
+
total_time / runtimes
|
34
|
+
end
|
35
|
+
|
36
|
+
def ping_headers(result)
|
37
|
+
Hash[result.headers.select{ |k,_| k.match(/^x_ping_/) }.map{ |k,v| [k.to_s.sub('x_ping_', '').to_sym, v] }]
|
38
|
+
end
|
33
39
|
|
34
40
|
def ping!
|
35
41
|
RestClient.get(uri, @http_opts)
|
data/lib/pingify/result.rb
CHANGED
data/lib/pingify/version.rb
CHANGED
@@ -1,19 +1,24 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
2
|
require 'pingify'
|
3
3
|
|
4
|
-
describe "
|
5
|
-
|
6
|
-
|
7
|
-
res.success?.must_equal true
|
8
|
-
p res.data
|
9
|
-
res.average.must_be_close_to 0.3, 1
|
4
|
+
describe "network" do
|
5
|
+
before do
|
6
|
+
WebMock.allow_net_connect!
|
10
7
|
end
|
11
|
-
end
|
12
8
|
|
13
|
-
describe "
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
describe "google.com" do
|
10
|
+
it 'does not fail' do
|
11
|
+
res = Pingify::Runnable.new({uri: 'http://google.com'}).run
|
12
|
+
res.success?.must_equal true
|
13
|
+
res.average.must_be_close_to 0.3, 1
|
14
|
+
end
|
17
15
|
end
|
18
16
|
|
17
|
+
describe "example.com" do
|
18
|
+
it "fails" do
|
19
|
+
res = Pingify::Runnable.new({uri: 'http://localhost:10000', :timeout => 0.001}).run
|
20
|
+
res.success?.wont_equal true
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
19
24
|
end
|
metadata
CHANGED
@@ -1,96 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pingify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.1
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- tor
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.3'
|
22
15
|
requirement: !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
16
|
requirements:
|
25
17
|
- - ~>
|
26
18
|
- !ruby/object:Gem::Version
|
27
19
|
version: '1.3'
|
28
20
|
type: :development
|
29
21
|
prerelease: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rake
|
32
22
|
version_requirements: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
23
|
requirements:
|
35
|
-
- -
|
24
|
+
- - ~>
|
36
25
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
38
29
|
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
30
|
requirements:
|
41
31
|
- - ! '>='
|
42
32
|
- !ruby/object:Gem::Version
|
43
33
|
version: '0'
|
44
34
|
type: :development
|
45
35
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: minitest
|
48
36
|
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
37
|
requirements:
|
51
38
|
- - ! '>='
|
52
39
|
- !ruby/object:Gem::Version
|
53
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
54
43
|
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
44
|
requirements:
|
57
45
|
- - ! '>='
|
58
46
|
- !ruby/object:Gem::Version
|
59
47
|
version: '0'
|
60
48
|
type: :development
|
61
49
|
prerelease: false
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: webmock
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
68
53
|
- !ruby/object:Gem::Version
|
69
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
70
57
|
requirement: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
58
|
requirements:
|
73
59
|
- - ! '>='
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rest-client
|
80
64
|
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
65
|
requirements:
|
83
66
|
- - ! '>='
|
84
67
|
- !ruby/object:Gem::Version
|
85
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rest-client
|
86
71
|
requirement: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
72
|
requirements:
|
89
73
|
- - ! '>='
|
90
74
|
- !ruby/object:Gem::Version
|
91
75
|
version: '0'
|
92
76
|
type: :runtime
|
93
77
|
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
94
83
|
description: ''
|
95
84
|
email:
|
96
85
|
- torkale@gmail.com
|
@@ -115,27 +104,26 @@ files:
|
|
115
104
|
homepage: ''
|
116
105
|
licenses:
|
117
106
|
- MIT
|
107
|
+
metadata: {}
|
118
108
|
post_install_message:
|
119
109
|
rdoc_options: []
|
120
110
|
require_paths:
|
121
111
|
- lib
|
122
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
113
|
requirements:
|
125
114
|
- - ! '>='
|
126
115
|
- !ruby/object:Gem::Version
|
127
116
|
version: '0'
|
128
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
118
|
requirements:
|
131
119
|
- - ! '>='
|
132
120
|
- !ruby/object:Gem::Version
|
133
121
|
version: '0'
|
134
122
|
requirements: []
|
135
123
|
rubyforge_project:
|
136
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.0.7
|
137
125
|
signing_key:
|
138
|
-
specification_version:
|
126
|
+
specification_version: 4
|
139
127
|
summary: ''
|
140
128
|
test_files:
|
141
129
|
- spec/acceptance/network_spec.rb
|