drone 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,12 +14,13 @@ class User
14
14
  @name = name
15
15
  end
16
16
 
17
- monitor_rate("users:rename")
17
+ monitor_rate("users:rename:rate")
18
18
  def rename(new_name)
19
19
  @name = new_name
20
20
  end
21
21
 
22
- monitor_time("users:do_something")
22
+ monitor_time("users:do_something:time")
23
+ monitor_rate("users:do_something:rate")
23
24
  def do_something
24
25
  # just eat some cpu
25
26
  0.upto(rand(2000)) do |n|
@@ -75,13 +75,13 @@ module Drone
75
75
  rate = @_rate_waiting
76
76
  @_rate_waiting = nil
77
77
 
78
- define_method("instrumented_#{m}") do |*args, &block|
78
+ define_method("#{m}_with_meter") do |*args, &block|
79
79
  rate.mark()
80
- send("original_#{m}", *args, &block)
80
+ send("#{m}_without_meter", *args, &block)
81
81
  end
82
82
 
83
- alias_method "original_#{m}", m
84
- alias_method m, "instrumented_#{m}"
83
+ alias_method "#{m}_without_meter", m
84
+ alias_method m, "#{m}_with_meter"
85
85
  end
86
86
 
87
87
  ##
@@ -91,14 +91,14 @@ module Drone
91
91
  timer = @_timer_waiting
92
92
  @_timer_waiting = nil
93
93
 
94
- define_method("instrumented_#{m}") do |*args, &block|
94
+ define_method("#{m}_with_timer") do |*args, &block|
95
95
  timer.time do
96
- send("original_#{m}", *args, &block)
96
+ send("#{m}_without_timer", *args, &block)
97
97
  end
98
98
  end
99
99
 
100
- alias_method "original_#{m}", m
101
- alias_method m, "instrumented_#{m}"
100
+ alias_method "#{m}_without_timer", m
101
+ alias_method m, "#{m}_with_timer"
102
102
  end
103
103
 
104
104
  end
@@ -56,6 +56,15 @@ module Drone
56
56
 
57
57
  end
58
58
 
59
+ ##
60
+ # @private
61
+ #
62
+ def self.reset
63
+ @timers_once.clear()
64
+ @timers_periodic.clear()
65
+ @started = false
66
+ end
67
+
59
68
  end
60
69
  end
61
70
  end
@@ -39,7 +39,7 @@ class ExponentiallyDecayingSample
39
39
 
40
40
  now = current_time()
41
41
  if now >= @next_scale_time
42
- rescale(now, @next_scale_time)
42
+ rescale(now)
43
43
  end
44
44
  end
45
45
 
@@ -1,3 +1,3 @@
1
1
  module Drone
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -4,8 +4,6 @@ require 'rubygems'
4
4
 
5
5
  puts "Testing with ruby #{RUBY_VERSION} and rubygems #{Gem::VERSION}"
6
6
 
7
- require 'bundler/setup'
8
-
9
7
  if (RUBY_VERSION >= "1.9") && ENV['COVERAGE']
10
8
  require 'simplecov'
11
9
  ROOT = File.expand_path('../../', __FILE__)
@@ -20,6 +18,8 @@ if (RUBY_VERSION >= "1.9") && ENV['COVERAGE']
20
18
  end
21
19
  end
22
20
 
21
+ require 'bundler/setup'
22
+
23
23
  require 'bacon'
24
24
  require 'mocha'
25
25
  require 'delorean'
@@ -0,0 +1,76 @@
1
+ require File.expand_path('../../common', __FILE__)
2
+
3
+ require 'drone/schedulers/eventmachine'
4
+
5
+ describe 'Eventmachine Scheduler' do
6
+
7
+ describe 'in waiting state' do
8
+ before do
9
+ @scheduler = Drone::Schedulers::EMScheduler
10
+ class << @scheduler
11
+ def timers_periodic; @timers_periodic; end
12
+ def timers_once; @timers_once; end
13
+ end
14
+
15
+ EM::reactor_running?.should == false
16
+
17
+ @scheduler.reset()
18
+ end
19
+
20
+ should "enqueue timers" do
21
+ n = 0
22
+ @scheduler.schedule_once(1){ n = 10 }
23
+ n.should == 0
24
+ @scheduler.timers_once.size.should == 1
25
+ end
26
+
27
+ should "enqueue periodic timers" do
28
+ n = 0
29
+ @scheduler.schedule_periodic(1){ n = 10 }
30
+ n.should == 0
31
+ @scheduler.timers_periodic.size.should == 1
32
+ end
33
+
34
+ should "start timers when started" do
35
+ EM::expects(:add_periodic_timer).once.with(12)
36
+ @scheduler.schedule_periodic(12){ }
37
+
38
+ EM.expects(:add_timer).once.with(1)
39
+ @scheduler.schedule_once(1){ }
40
+
41
+ @scheduler.timers_periodic.size.should == 1
42
+ @scheduler.timers_once.size.should == 1
43
+
44
+ @scheduler.start
45
+ end
46
+
47
+ end
48
+
49
+
50
+ EM.describe 'in started state' do
51
+ before do
52
+ @scheduler = Drone::Schedulers::EMScheduler
53
+ @scheduler.reset()
54
+ EM::reactor_running?.should == true
55
+ @scheduler.start()
56
+ end
57
+
58
+ should 'start a timer when a job is scheduled' do
59
+ EM::expects(:add_timer).with(23)
60
+ @scheduler.schedule_once(23){}
61
+ done
62
+ end
63
+
64
+ should 'start run the job and start a periodic timer when a periodic job is scheduled' do
65
+ n = 0
66
+ proc = lambda do
67
+ n+= 1
68
+ done if n == 2
69
+ end
70
+
71
+ @scheduler.schedule_periodic(0.001, &proc)
72
+ end
73
+
74
+ end
75
+
76
+ end
@@ -62,7 +62,7 @@ describe 'Exponentially Decaying Sample' do
62
62
  end
63
63
 
64
64
  should "rescale after 1 hour" do
65
- @sample.expects(:rescale)
65
+ @sample.expects(:rescale).with(anything())
66
66
 
67
67
  Delorean.time_travel_to("2 hours from now") do
68
68
  @sample.update(1)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: drone
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Julien Ammous
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-19 00:00:00 +02:00
14
- default_executable:
13
+ date: 2011-04-22 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: eventmachine
@@ -118,12 +117,12 @@ files:
118
117
  - specs/metrics/gauge_spec.rb
119
118
  - specs/metrics/meter_spec.rb
120
119
  - specs/metrics/timer_spec.rb
120
+ - specs/schedulers/eventmachine_spec.rb
121
121
  - specs/unit/ewma_spec.rb
122
122
  - specs/unit/exponentially_decaying_sample_spec.rb
123
123
  - specs/unit/histogram_spec.rb
124
124
  - specs/unit/monitoring_spec.rb
125
125
  - specs/unit/uniform_sample_spec.rb
126
- has_rdoc: true
127
126
  homepage: ""
128
127
  licenses: []
129
128
 
@@ -147,9 +146,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
146
  requirements: []
148
147
 
149
148
  rubyforge_project: drone
150
- rubygems_version: 1.6.2
149
+ rubygems_version: 1.7.2
151
150
  signing_key:
152
151
  specification_version: 3
153
152
  summary: Drone is a monitoring library
154
153
  test_files: []
155
154
 
155
+ has_rdoc: