pingify 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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