heroku_resque_autoscaler 0.1.0 → 0.1.1

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.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/README.md CHANGED
@@ -8,7 +8,7 @@ Inspired by [@darkhelmet](https://github.com/darkhelmet)'s
8
8
 
9
9
  ## Current Version
10
10
 
11
- 0.1.0
11
+ 0.1.1
12
12
 
13
13
 
14
14
  ## Requirements
@@ -94,6 +94,22 @@ rspec spec
94
94
  ```
95
95
 
96
96
 
97
+ ## Coverage
98
+
99
+ ```bash
100
+ rspec spec
101
+ open coverage/index.html
102
+ ```
103
+
104
+ ## Releases
105
+
106
+ ```bash
107
+ vi lib/heroku_resque_autoscaler/version.rb # change version
108
+ vi README.md # change version
109
+ rake release
110
+ ```
111
+
112
+
97
113
  ## License
98
114
 
99
115
  Copyright (c) 2012 G5
@@ -17,7 +17,8 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency "heroku-api", "~> 0.3.5"
19
19
  gem.add_dependency "resque", "~> 1.23.0"
20
-
20
+
21
+ gem.add_development_dependency "simplecov", "~> 0.7.1"
21
22
  gem.add_development_dependency "rspec", "~> 2.11.0"
22
23
  gem.add_development_dependency "guard-rspec", "~> 2.1.0"
23
24
  gem.add_development_dependency "rb-fsevent", "~> 0.9.2"
@@ -35,18 +35,10 @@ module HerokuResqueAutoscaler
35
35
 
36
36
  # Returns a hash of all configurable options merged with +hash+
37
37
  #
38
- # @param [Hash] hash A set of configuration options that will take
38
+ # @param [Hash] hash A set of configuration options that will take
39
39
  # precedence over the defaults
40
40
  def merge(hash)
41
41
  to_hash.merge(hash)
42
42
  end
43
-
44
- def validate_presence(options)
45
- OPTIONS.each_pair do |key, value|
46
- if options[key].nil?
47
- raise HerokuResqueAutoscaler::ConfigurationException, "#{key} is missing"
48
- end
49
- end
50
- end
51
43
  end
52
44
  end
@@ -1,3 +1,3 @@
1
1
  module HerokuResqueAutoscaler
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -12,11 +12,28 @@ describe HerokuResqueAutoscaler do
12
12
  before :each do
13
13
  @heroku = mock(Heroku::API)
14
14
  HerokuResqueAutoscaler::Scaler.stub(:heroku).and_return(@heroku)
15
+
16
+ HerokuResqueAutoscaler.configure do |config|
17
+ config.heroku_api_key = "api-key"
18
+ config.heroku_app_name = "app-name"
19
+ end
20
+ end
21
+
22
+ let(:heroku_app_name) { "app-name" }
23
+
24
+ context ".api_key" do
25
+ it "returns api key" do
26
+ HerokuResqueAutoscaler::Scaler.api_key.should == "api-key"
27
+ end
15
28
  end
16
29
 
17
- let(:heroku_app) {ENV['HEROKU_APP_NAME']}
30
+ context ".app_name" do
31
+ it "returns app name" do
32
+ HerokuResqueAutoscaler::Scaler.app_name.should == "app-name"
33
+ end
34
+ end
18
35
 
19
- context "#workers" do
36
+ context ".workers" do
20
37
  it "returns the number of workers from the Heroku application" do
21
38
  Excon.stub(method: :get) do |params|
22
39
  { status: 200,
@@ -29,20 +46,20 @@ describe HerokuResqueAutoscaler do
29
46
  end
30
47
  connection = Excon.new("http://example.com", mock: true)
31
48
  response = connection.request(method: :get)
32
- @heroku.should_receive(:get_ps).with(heroku_app).and_return(response)
49
+ @heroku.should_receive(:get_ps).with(heroku_app_name).and_return(response)
33
50
  HerokuResqueAutoscaler::Scaler.workers.should == 2
34
51
  end
35
52
  end
36
53
 
37
- context "#workers=" do
54
+ context ".workers=" do
38
55
  it "sets the number of workers on Heroku to some quantity" do
39
56
  quantity = 10
40
- @heroku.should_receive(:post_ps_scale).with(heroku_app, :worker, quantity)
57
+ @heroku.should_receive(:post_ps_scale).with(heroku_app_name, :worker, quantity)
41
58
  HerokuResqueAutoscaler::Scaler.workers = quantity
42
59
  end
43
60
  end
44
61
 
45
- context "#job_count" do
62
+ context ".job_count" do
46
63
  it "returns the Resque job count" do
47
64
  num_pending = 10
48
65
  Resque.should_receive(:info).and_return({:pending => num_pending})
@@ -50,11 +67,19 @@ describe HerokuResqueAutoscaler do
50
67
  end
51
68
  end
52
69
 
53
- context "#num_desired_heroku_workers" do
70
+ context ".working_job_count" do
71
+ it "returns the Resque working job count" do
72
+ num_working = 10
73
+ Resque.should_receive(:info).and_return({:working => num_working})
74
+ HerokuResqueAutoscaler::Scaler.working_job_count.should == num_working
75
+ end
76
+ end
77
+
78
+ context ".num_desired_heroku_workers" do
54
79
  it "returns the number of workers we should have (1 worker per x jobs)" do
55
80
  num_jobs = 100
56
81
  HerokuResqueAutoscaler::Scaler.stub(:job_count).and_return(num_jobs)
57
- HerokuResqueAutoscalerTestClass.num_desired_heroku_workers.should == 5
82
+ HerokuResqueAutoscalerTestClass.num_desired_heroku_workers.should == 5
58
83
 
59
84
  num_jobs = 38
60
85
  HerokuResqueAutoscaler::Scaler.unstub(:job_count)
@@ -64,7 +89,7 @@ describe HerokuResqueAutoscaler do
64
89
  num_jobs = 1
65
90
  HerokuResqueAutoscaler::Scaler.unstub(:job_count)
66
91
  HerokuResqueAutoscaler::Scaler.stub(:job_count).and_return(num_jobs)
67
- HerokuResqueAutoscalerTestClass.num_desired_heroku_workers.should == 1
92
+ HerokuResqueAutoscalerTestClass.num_desired_heroku_workers.should == 1
68
93
 
69
94
  num_jobs = 10000
70
95
  HerokuResqueAutoscaler::Scaler.unstub(:job_count)
@@ -73,7 +98,7 @@ describe HerokuResqueAutoscaler do
73
98
  end
74
99
  end
75
100
 
76
- context "#after_perform_scale_down" do
101
+ context ".after_perform_scale_down" do
77
102
  it "scales down the workers to zero if there are no jobs pending" do
78
103
  HerokuResqueAutoscaler::Scaler.stub(:job_count).and_return(0)
79
104
  HerokuResqueAutoscaler::Scaler.stub(:workers).and_return(1)
@@ -89,7 +114,7 @@ describe HerokuResqueAutoscaler do
89
114
  end
90
115
  end
91
116
 
92
- context "#after_enqueue_scale_up" do
117
+ context ".after_enqueue_scale_up" do
93
118
  it "ups the amount of workers if there are not enough" do
94
119
  num_workers = 5
95
120
  num_desired_workers = 6
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,11 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'rubygems'
5
+ require 'rspec'
6
+ require 'rspec/autorun'
7
+
8
+
1
9
  RSpec.configure do |config|
2
- config.color = true
10
+ config.order = "random"
3
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_resque_autoscaler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-26 00:00:00.000000000 Z
12
+ date: 2013-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: heroku-api
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 1.23.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: simplecov
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.7.1
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.1
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: rspec
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +132,7 @@ extensions: []
116
132
  extra_rdoc_files: []
117
133
  files:
118
134
  - .gitignore
135
+ - .rspec
119
136
  - Gemfile
120
137
  - LICENSE
121
138
  - README.md
@@ -123,7 +140,6 @@ files:
123
140
  - heroku_resque_autoscaler.gemspec
124
141
  - lib/heroku_resque_autoscaler.rb
125
142
  - lib/heroku_resque_autoscaler/configuration.rb
126
- - lib/heroku_resque_autoscaler/exceptions.rb
127
143
  - lib/heroku_resque_autoscaler/scaler.rb
128
144
  - lib/heroku_resque_autoscaler/version.rb
129
145
  - spec/lib/heroku_resque_autoscaler/configuration_spec.rb
@@ -142,18 +158,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
158
  - - ! '>='
143
159
  - !ruby/object:Gem::Version
144
160
  version: '0'
145
- segments:
146
- - 0
147
- hash: -1170907037778639333
148
161
  required_rubygems_version: !ruby/object:Gem::Requirement
149
162
  none: false
150
163
  requirements:
151
164
  - - ! '>='
152
165
  - !ruby/object:Gem::Version
153
166
  version: '0'
154
- segments:
155
- - 0
156
- hash: -1170907037778639333
157
167
  requirements: []
158
168
  rubyforge_project:
159
169
  rubygems_version: 1.8.24
@@ -1,3 +0,0 @@
1
- module GithubHerokuDeployer
2
- class ConfigurationException < StandardError; end
3
- end