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.
@@ -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
- TODO: Write a gem description
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
- TODO: Write usage instructions here
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
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = "spec/**/*_spec.rb"
6
+ end
File without changes
@@ -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 }) @uri = options.delete :uri
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
- runtimes = @times - 1
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)
@@ -1,4 +1,4 @@
1
- module Pinger
1
+ module Pingify
2
2
  class Result
3
3
  attr_reader :errors
4
4
  attr_reader :data
@@ -1,3 +1,3 @@
1
1
  module Pingify
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,19 +1,24 @@
1
1
  require 'minitest/autorun'
2
2
  require 'pingify'
3
3
 
4
- describe "google.com" do
5
- it 'does not fail' do
6
- res = Pingify::Runnable.new({uri: 'http://google.com'}).run
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 "example.com" do
14
- it "fails" do
15
- res = Pingify::Runnable.new({uri: 'http://localhost:10000', :timeout => 0.001}).run
16
- res.success?.wont_equal true
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
- prerelease:
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-08 00:00:00.000000000 Z
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: '0'
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: 1.8.25
124
+ rubygems_version: 2.0.7
137
125
  signing_key:
138
- specification_version: 3
126
+ specification_version: 4
139
127
  summary: ''
140
128
  test_files:
141
129
  - spec/acceptance/network_spec.rb