drone 1.0.4 → 1.0.5

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.
Files changed (46) hide show
  1. data/Gemfile +13 -0
  2. data/Guardfile +12 -0
  3. data/Rakefile +22 -37
  4. data/drone.gemspec +2 -6
  5. data/examples/collectd.rb +51 -0
  6. data/examples/common.rb +24 -0
  7. data/examples/json.rb +49 -0
  8. data/examples/redis_storage.rb +60 -0
  9. data/examples/simple.rb +3 -3
  10. data/extensions/drone_collectd/Gemfile +7 -0
  11. data/extensions/drone_collectd/LICENSE +20 -0
  12. data/extensions/drone_collectd/README.md +24 -0
  13. data/extensions/drone_collectd/drone_collectd.gemspec +28 -0
  14. data/extensions/drone_collectd/lib/drone_collectd.rb +7 -0
  15. data/extensions/drone_collectd/lib/drone_collectd/collectd.rb +97 -0
  16. data/extensions/drone_collectd/lib/drone_collectd/parser.rb +86 -0
  17. data/extensions/drone_collectd/specs/common.rb +3 -0
  18. data/extensions/drone_collectd/specs/unit/parser_spec.rb +49 -0
  19. data/extensions/drone_json/Gemfile +6 -0
  20. data/extensions/drone_json/LICENSE +20 -0
  21. data/extensions/drone_json/README.md +9 -0
  22. data/extensions/drone_json/drone_json.gemspec +32 -0
  23. data/extensions/drone_json/lib/drone_json.rb +9 -0
  24. data/extensions/drone_json/lib/drone_json/json.rb +100 -0
  25. data/extensions/drone_json/specs/common.rb +63 -0
  26. data/extensions/drone_redis/Gemfile +7 -0
  27. data/extensions/drone_redis/drone_redis.gemspec +22 -0
  28. data/extensions/drone_redis/lib/drone_redis.rb +8 -0
  29. data/extensions/drone_redis/lib/drone_redis/redis.rb +218 -0
  30. data/lib/drone.rb +1 -0
  31. data/lib/drone/errors.rb +11 -0
  32. data/lib/drone/metrics/histogram.rb +7 -6
  33. data/lib/drone/metrics/meter.rb +1 -1
  34. data/lib/drone/monitoring.rb +2 -2
  35. data/lib/drone/storage/memory.rb +1 -0
  36. data/lib/drone/utils/exponentially_decaying_sample.rb +79 -24
  37. data/lib/drone/version.rb +1 -1
  38. data/specs/{unit → metrics}/histogram_spec.rb +5 -1
  39. data/specs/metrics/meter_spec.rb +10 -2
  40. data/specs/metrics/timer_spec.rb +7 -1
  41. data/specs/{unit/monitoring_spec.rb → monitoring_spec.rb} +25 -1
  42. data/specs/{unit → utils}/ewma_spec.rb +1 -0
  43. data/specs/utils/exponentially_decaying_sample_spec.rb +140 -0
  44. data/specs/{unit → utils}/uniform_sample_spec.rb +0 -0
  45. metadata +72 -93
  46. data/specs/unit/exponentially_decaying_sample_spec.rb +0 -86
metadata CHANGED
@@ -1,104 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: drone
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
4
5
  prerelease:
5
- version: 1.0.4
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Julien Ammous
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-05-09 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-06 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: eventmachine
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70313414340220 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ~>
22
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
23
21
  version: 0.12.10
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: mocha
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
35
- type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: bacon
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
46
- type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: schmurfy-em-spec
50
23
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
24
+ version_requirements: *70313414340220
25
+ - !ruby/object:Gem::Dependency
26
+ name: flt
27
+ requirement: &70313414339400 !ruby/object:Gem::Requirement
52
28
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: delorean
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: simplecov
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.0
33
+ type: :runtime
72
34
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
79
- type: :development
80
- version_requirements: *id006
35
+ version_requirements: *70313414339400
81
36
  description: Drone is a monitoring library based on the metrics java library
82
37
  email: []
83
-
84
38
  executables: []
85
-
86
39
  extensions: []
87
-
88
40
  extra_rdoc_files: []
89
-
90
- files:
41
+ files:
91
42
  - .gitignore
92
43
  - .rvmrc
93
44
  - .yardopts
94
45
  - Gemfile
46
+ - Guardfile
95
47
  - LICENSE
96
48
  - README.md
97
49
  - Rakefile
98
50
  - drone.gemspec
51
+ - examples/collectd.rb
52
+ - examples/common.rb
53
+ - examples/json.rb
54
+ - examples/redis_storage.rb
99
55
  - examples/simple.rb
56
+ - extensions/drone_collectd/Gemfile
57
+ - extensions/drone_collectd/LICENSE
58
+ - extensions/drone_collectd/README.md
59
+ - extensions/drone_collectd/drone_collectd.gemspec
60
+ - extensions/drone_collectd/lib/drone_collectd.rb
61
+ - extensions/drone_collectd/lib/drone_collectd/collectd.rb
62
+ - extensions/drone_collectd/lib/drone_collectd/parser.rb
63
+ - extensions/drone_collectd/specs/common.rb
64
+ - extensions/drone_collectd/specs/unit/parser_spec.rb
65
+ - extensions/drone_json/Gemfile
66
+ - extensions/drone_json/LICENSE
67
+ - extensions/drone_json/README.md
68
+ - extensions/drone_json/drone_json.gemspec
69
+ - extensions/drone_json/lib/drone_json.rb
70
+ - extensions/drone_json/lib/drone_json/json.rb
71
+ - extensions/drone_json/specs/common.rb
72
+ - extensions/drone_redis/Gemfile
73
+ - extensions/drone_redis/drone_redis.gemspec
74
+ - extensions/drone_redis/lib/drone_redis.rb
75
+ - extensions/drone_redis/lib/drone_redis/redis.rb
100
76
  - lib/drone.rb
101
77
  - lib/drone/core.rb
78
+ - lib/drone/errors.rb
102
79
  - lib/drone/interfaces/base.rb
103
80
  - lib/drone/interfaces/console.rb
104
81
  - lib/drone/metrics/counter.rb
@@ -119,40 +96,42 @@ files:
119
96
  - specs/common.rb
120
97
  - specs/metrics/counter_spec.rb
121
98
  - specs/metrics/gauge_spec.rb
99
+ - specs/metrics/histogram_spec.rb
122
100
  - specs/metrics/meter_spec.rb
123
101
  - specs/metrics/timer_spec.rb
102
+ - specs/monitoring_spec.rb
124
103
  - specs/schedulers/eventmachine_spec.rb
125
- - specs/unit/ewma_spec.rb
126
- - specs/unit/exponentially_decaying_sample_spec.rb
127
- - specs/unit/histogram_spec.rb
128
- - specs/unit/monitoring_spec.rb
129
- - specs/unit/uniform_sample_spec.rb
130
- homepage: ""
104
+ - specs/utils/ewma_spec.rb
105
+ - specs/utils/exponentially_decaying_sample_spec.rb
106
+ - specs/utils/uniform_sample_spec.rb
107
+ homepage: ''
131
108
  licenses: []
132
-
133
109
  post_install_message:
134
110
  rdoc_options: []
135
-
136
- require_paths:
111
+ require_paths:
137
112
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
113
+ required_ruby_version: !ruby/object:Gem::Requirement
139
114
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: "0"
144
- required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ segments:
120
+ - 0
121
+ hash: -3192317553115616101
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
123
  none: false
146
- requirements:
147
- - - ">="
148
- - !ruby/object:Gem::Version
149
- version: "0"
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ segments:
129
+ - 0
130
+ hash: -3192317553115616101
150
131
  requirements: []
151
-
152
132
  rubyforge_project: drone
153
- rubygems_version: 1.8.1
133
+ rubygems_version: 1.8.11
154
134
  signing_key:
155
135
  specification_version: 3
156
136
  summary: Drone is a monitoring library
157
137
  test_files: []
158
-
@@ -1,86 +0,0 @@
1
- require File.expand_path('../../common', __FILE__)
2
-
3
- require 'drone/utils/exponentially_decaying_sample'
4
- include Drone
5
-
6
- describe 'Exponentially Decaying Sample' do
7
- describe "A sample of 100 out of 1000 elements" do
8
- before do
9
- Drone::init_drone(nil, Storage::Memory.new)
10
-
11
- @population = (0...100)
12
- @sample = ExponentiallyDecayingSample.new('id1', 1000, 0.99)
13
- @population.step(1){|n| @sample.update(n) }
14
- end
15
-
16
-
17
- should "have 100 elements" do
18
- @sample.size.should == 100
19
- @sample.values.size.should == 100
20
- end
21
-
22
- should "only have elements from the population" do
23
- arr = @sample.values - @population.to_a
24
- arr.should == []
25
- end
26
-
27
- end
28
-
29
-
30
- describe "A sample of 100 out of 10 elements" do
31
- before do
32
- @population = (0...10)
33
- @sample = ExponentiallyDecayingSample.new('id1', 100, 0.99)
34
- @population.step(1){|n| @sample.update(n) }
35
- end
36
-
37
- should "have 10 elements" do
38
- @sample.size.should == 10
39
- @sample.values.size.should == 10
40
- end
41
-
42
- should "only have elements from the population" do
43
- arr = @sample.values - @population.to_a
44
- arr.should == []
45
- end
46
-
47
- end
48
-
49
-
50
- describe "A heavily-biased sample of 100 out of 1000 elements" do
51
- before do
52
- @population = (0...100)
53
- @sample = ExponentiallyDecayingSample.new('id1', 1000, 0.99)
54
- @population.step(1){|n| @sample.update(n) }
55
- end
56
-
57
- should "have 100 elements" do
58
- @sample.size.should == 100
59
- @sample.values.size.should == 100
60
- end
61
-
62
- should "only have elements from the population" do
63
- arr = @sample.values - @population.to_a
64
- arr.should == []
65
- end
66
-
67
- should "rescale after 1 hour" do
68
- @sample.expects(:rescale).with(anything())
69
-
70
- Delorean.time_travel_to("2 hours from now") do
71
- @sample.update(1)
72
- end
73
-
74
- @sample.size.should == 101
75
- @sample.values.size.should == 101
76
- end
77
-
78
- it 'can rescale' do
79
- @sample.rescale(Time.now)
80
- @sample.values.should.not == []
81
- # TODO: add a real test here, for now it only tests
82
- # that the code actually runs
83
- end
84
- end
85
-
86
- end