bigbench 0.0.5 → 0.0.6

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,2 @@
1
+ --color
2
+ --format documentation
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ before_script:
5
+ - "export DISPLAY=:99.0"
6
+ - "sh -e /etc/init.d/xvfb start"
7
+ - sleep 3
8
+ - rake server &
9
+ - sleep 3
@@ -15,6 +15,10 @@ h3. Installation
15
15
 
16
16
  bc.. gem install bigbench
17
17
 
18
+ h3. Build Status
19
+
20
+ "!https://secure.travis-ci.org/southdesign/bigbench.png!":http://travis-ci.org/southdesign/bigbench
21
+
18
22
  h3. Further Reading
19
23
 
20
24
  * "BigBench RDoc":http://southdesign.github.com/bigbench
@@ -50,6 +54,15 @@ benchmark "login and logout" => "http://localhost:3000" do
50
54
  post "/logout", :params => { :name => "test@user.com" }
51
55
  end
52
56
 
57
+ # Each request randomly chooses one of the provided params pairs
58
+ benchmark "dynamic parameters" => "http://localhost:3000" do
59
+ post "/login", :params => [
60
+ { :name => "test@user.com", :password => "secret" },
61
+ { :name => "tommy@user.com", :password => "supersecret" },
62
+ { :name => "funk@user.com", :password => "unknown" }
63
+ ]
64
+ end
65
+
53
66
  post_process :statistics
54
67
 
55
68
  h3. Generator
@@ -199,6 +212,10 @@ h3. Test Results
199
212
 
200
213
  h2. Version History
201
214
 
215
+ h3. 0.6
216
+
217
+ * Added dynamic parameters that can be supplied as an array. Every request randomly chooses a set of parameters.
218
+
202
219
  h3. 0.5
203
220
 
204
221
  * Changed @configure@ syntax to a common ruby pattern block style
data/Rakefile CHANGED
@@ -3,7 +3,12 @@ require "rack"
3
3
  require "RedCloth"
4
4
  require "redcloth-formatters-rdoc"
5
5
  require "rdoc/task"
6
+ require 'rspec/core/rake_task'
6
7
 
8
+ RSpec::Core::RakeTask.new(:spec) do |rspec|
9
+ rspec.rspec_opts = "-f d", "--color"
10
+ end
11
+ task :default => :spec
7
12
 
8
13
  desc "Create and open documentation"
9
14
  task :doc do
@@ -44,7 +49,7 @@ task :doc do
44
49
 
45
50
  end
46
51
 
47
- desc "Start Thin RDoc Testserver"
52
+ desc "Start Thin Testserver"
48
53
  task :server do
49
54
  load "spec/lib/test_web_server.rb"
50
55
  Rack::Handler::Thin.run Sinatra::Application, :Port => 3001
@@ -27,6 +27,8 @@ Gem::Specification.new do |s|
27
27
  s.add_development_dependency "eventmachine"
28
28
  s.add_development_dependency "em-http-request"
29
29
  s.add_development_dependency "sinatra"
30
+ s.add_development_dependency "RedCloth"
31
+ s.add_development_dependency "redcloth-formatters-rdoc"
30
32
 
31
33
  s.add_runtime_dependency "activesupport", '>= 3.2.0'
32
34
  s.add_runtime_dependency "actionpack", '>= 3.2.0'
@@ -35,4 +37,7 @@ Gem::Specification.new do |s|
35
37
  s.add_runtime_dependency "em-http-request"
36
38
  s.add_runtime_dependency "hirb"
37
39
  s.add_runtime_dependency "thor", '>= 0.15.2'
40
+ s.add_runtime_dependency "rake"
41
+ s.add_runtime_dependency "gruff", ">= 0.3.6"
42
+ s.add_runtime_dependency "rmagick", ">= 2.13.1"
38
43
  end
@@ -47,6 +47,7 @@ module BigBench
47
47
 
48
48
  # Initiates the request in the context of a <tt>Net::HTTP.start</tt> block
49
49
  def run!
50
+ randomize_params
50
51
  EventMachine::HttpRequest.new(@uri.to_s).send(@method, @request_options)
51
52
  end
52
53
 
@@ -69,6 +70,10 @@ module BigBench
69
70
 
70
71
  private
71
72
 
73
+ def randomize_params
74
+ @request_options[:body] = @options[:params].sample if @options[:params].kind_of?(Array)
75
+ end
76
+
72
77
  def configure_options
73
78
 
74
79
  # Basic Auth
@@ -77,7 +82,7 @@ module BigBench
77
82
 
78
83
  # Body
79
84
  @request_options[:body] = @options[:params] unless @options[:params].nil?
80
-
85
+ randomize_params
81
86
  end
82
87
  end
83
88
 
@@ -1,3 +1,3 @@
1
1
  module BigBench
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,8 +1,9 @@
1
1
  require_relative "./helpers"
2
2
 
3
3
  describe BigBench::Bot do
4
-
4
+
5
5
  before(:each) do
6
+ Dir.chdir File.dirname(__FILE__)
6
7
  BigBench::Store.reset!
7
8
  end
8
9
 
@@ -16,7 +17,7 @@ describe BigBench::Bot do
16
17
  it "should load and run a test from the redis store" do
17
18
  BigBench::Store.setup!("http://localhost:6379").should be_true
18
19
 
19
- test = File.open("spec/tests/local.rb", "rb"){ |file| file.read }
20
+ test = File.open("tests/local.rb", "rb"){ |file| file.read }
20
21
  BigBench::Store.test = test
21
22
  BigBench::Store.start
22
23
 
@@ -220,7 +220,7 @@ describe BigBench::Fragment do
220
220
  end
221
221
  end
222
222
 
223
- context "should send params in body" do
223
+ context "should send params in body", :params do
224
224
 
225
225
  it "and track a 406 if no params were provided" do
226
226
  fragment = BigBench::Fragment.parse(@benchmark){ post "/post/content" }.first
@@ -267,6 +267,33 @@ describe BigBench::Fragment do
267
267
  @benchmark.tracker.trackings.first[:status] == 200
268
268
  end
269
269
 
270
+ it "and sample a hash of params randomly if an array was specified" do
271
+ fragment = BigBench::Fragment.parse(@benchmark){
272
+ post "/post/content", :params => [
273
+ { :name => "bigbench", :id => 1 },
274
+ { :name => "bigbench2", :id => 2 }
275
+ ]
276
+ }.first
277
+ result = nil
278
+
279
+ EventMachine.run { |http|
280
+ start = Time.now
281
+ http = fragment.run!
282
+
283
+ http.callback {
284
+ fragment.track!(start, Time.now, http)
285
+ http.response_header.status.should == 200
286
+ http.response.should match(/Test/)
287
+ EventMachine.stop
288
+ }
289
+
290
+ http.errback { puts "Error"; EventMachine.stop }
291
+ }
292
+
293
+ @benchmark.tracker.trackings.size.should == 1
294
+ @benchmark.tracker.trackings.first[:status] == 200
295
+ end
296
+
270
297
  end
271
298
 
272
299
  end
@@ -42,6 +42,6 @@ end
42
42
 
43
43
  # Needs Body Params
44
44
  post "/post/content" do
45
- status 406 unless params[:name] == "bigbench" and params[:id] == "1"
45
+ status 406 unless (params[:name] == "bigbench" and params[:id] == "1") or (params[:name] == "bigbench2" and params[:id] == "2")
46
46
  "Test"
47
47
  end
@@ -242,9 +242,11 @@ describe BigBench::PostProcessor::Environment do
242
242
  polynomial_regression(:degree => 2).durations.derivation(0).size.should == 8
243
243
  polynomial_regression(:degree => 2).durations.derivation(1).size.should == 8
244
244
  polynomial_regression(:degree => 2).durations.degree.should == 2
245
- polynomial_regression(:degree => 2).durations.coefficients.should == [1.1347571673566461, 0.04059849330278298, -0.005668036047256117]
246
- polynomial_regression(:degree => 2).durations.formula.should == "1.1347571673566461 + 0.04059849330278298x^1 + -0.005668036047256117x^2"
247
- polynomial_regression(:degree => 2).durations.formula(1).should == "0.04059849330278298 + 2*-0.005668036047256117x^1"
245
+ polynomial_regression(:degree => 2).durations.coefficients[0].should be_within(0.1).of(1.13)
246
+ polynomial_regression(:degree => 2).durations.coefficients[1].should be_within(0.1).of(0.04)
247
+ polynomial_regression(:degree => 2).durations.coefficients[2].should be_within(0.1).of(-0.00)
248
+ polynomial_regression(:degree => 2).durations.formula.should be_a(String)
249
+ polynomial_regression(:degree => 2).durations.formula(1).should be_a(String)
248
250
  end
249
251
 
250
252
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigbench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-16 00:00:00.000000000 Z
12
+ date: 2012-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70278979950020 !ruby/object:Gem::Requirement
16
+ requirement: &70330596158740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70278979950020
24
+ version_requirements: *70330596158740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70278979949520 !ruby/object:Gem::Requirement
27
+ requirement: &70330596158080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.2.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70278979949520
35
+ version_requirements: *70330596158080
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: actionpack
38
- requirement: &70278979949020 !ruby/object:Gem::Requirement
38
+ requirement: &70330596157460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.2.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70278979949020
46
+ version_requirements: *70330596157460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack
49
- requirement: &70278979948640 !ruby/object:Gem::Requirement
49
+ requirement: &70330596156900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70278979948640
57
+ version_requirements: *70330596156900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: thin
60
- requirement: &70278994590740 !ruby/object:Gem::Requirement
60
+ requirement: &70330596156180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70278994590740
68
+ version_requirements: *70330596156180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: eventmachine
71
- requirement: &70278994588080 !ruby/object:Gem::Requirement
71
+ requirement: &70330596155760 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70278994588080
79
+ version_requirements: *70330596155760
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: em-http-request
82
- requirement: &70278994975200 !ruby/object:Gem::Requirement
82
+ requirement: &70330596155260 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70278994975200
90
+ version_requirements: *70330596155260
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sinatra
93
- requirement: &70278994974780 !ruby/object:Gem::Requirement
93
+ requirement: &70330596154620 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,32 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70278994974780
101
+ version_requirements: *70330596154620
102
+ - !ruby/object:Gem::Dependency
103
+ name: RedCloth
104
+ requirement: &70330596170400 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70330596170400
113
+ - !ruby/object:Gem::Dependency
114
+ name: redcloth-formatters-rdoc
115
+ requirement: &70330596169980 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70330596169980
102
124
  - !ruby/object:Gem::Dependency
103
125
  name: activesupport
104
- requirement: &70278994974280 !ruby/object:Gem::Requirement
126
+ requirement: &70330596169440 !ruby/object:Gem::Requirement
105
127
  none: false
106
128
  requirements:
107
129
  - - ! '>='
@@ -109,10 +131,10 @@ dependencies:
109
131
  version: 3.2.0
110
132
  type: :runtime
111
133
  prerelease: false
112
- version_requirements: *70278994974280
134
+ version_requirements: *70330596169440
113
135
  - !ruby/object:Gem::Dependency
114
136
  name: actionpack
115
- requirement: &70278994973780 !ruby/object:Gem::Requirement
137
+ requirement: &70330596168940 !ruby/object:Gem::Requirement
116
138
  none: false
117
139
  requirements:
118
140
  - - ! '>='
@@ -120,10 +142,10 @@ dependencies:
120
142
  version: 3.2.0
121
143
  type: :runtime
122
144
  prerelease: false
123
- version_requirements: *70278994973780
145
+ version_requirements: *70330596168940
124
146
  - !ruby/object:Gem::Dependency
125
147
  name: redis
126
- requirement: &70278994973400 !ruby/object:Gem::Requirement
148
+ requirement: &70330596168560 !ruby/object:Gem::Requirement
127
149
  none: false
128
150
  requirements:
129
151
  - - ! '>='
@@ -131,10 +153,10 @@ dependencies:
131
153
  version: '0'
132
154
  type: :runtime
133
155
  prerelease: false
134
- version_requirements: *70278994973400
156
+ version_requirements: *70330596168560
135
157
  - !ruby/object:Gem::Dependency
136
158
  name: eventmachine
137
- requirement: &70278994972940 !ruby/object:Gem::Requirement
159
+ requirement: &70330596168100 !ruby/object:Gem::Requirement
138
160
  none: false
139
161
  requirements:
140
162
  - - ! '>='
@@ -142,10 +164,10 @@ dependencies:
142
164
  version: '0'
143
165
  type: :runtime
144
166
  prerelease: false
145
- version_requirements: *70278994972940
167
+ version_requirements: *70330596168100
146
168
  - !ruby/object:Gem::Dependency
147
169
  name: em-http-request
148
- requirement: &70278994972520 !ruby/object:Gem::Requirement
170
+ requirement: &70330596167680 !ruby/object:Gem::Requirement
149
171
  none: false
150
172
  requirements:
151
173
  - - ! '>='
@@ -153,10 +175,10 @@ dependencies:
153
175
  version: '0'
154
176
  type: :runtime
155
177
  prerelease: false
156
- version_requirements: *70278994972520
178
+ version_requirements: *70330596167680
157
179
  - !ruby/object:Gem::Dependency
158
180
  name: hirb
159
- requirement: &70278994972100 !ruby/object:Gem::Requirement
181
+ requirement: &70330596167260 !ruby/object:Gem::Requirement
160
182
  none: false
161
183
  requirements:
162
184
  - - ! '>='
@@ -164,10 +186,10 @@ dependencies:
164
186
  version: '0'
165
187
  type: :runtime
166
188
  prerelease: false
167
- version_requirements: *70278994972100
189
+ version_requirements: *70330596167260
168
190
  - !ruby/object:Gem::Dependency
169
191
  name: thor
170
- requirement: &70278994971600 !ruby/object:Gem::Requirement
192
+ requirement: &70330596166760 !ruby/object:Gem::Requirement
171
193
  none: false
172
194
  requirements:
173
195
  - - ! '>='
@@ -175,7 +197,40 @@ dependencies:
175
197
  version: 0.15.2
176
198
  type: :runtime
177
199
  prerelease: false
178
- version_requirements: *70278994971600
200
+ version_requirements: *70330596166760
201
+ - !ruby/object:Gem::Dependency
202
+ name: rake
203
+ requirement: &70330596166340 !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ type: :runtime
210
+ prerelease: false
211
+ version_requirements: *70330596166340
212
+ - !ruby/object:Gem::Dependency
213
+ name: gruff
214
+ requirement: &70330596165800 !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ! '>='
218
+ - !ruby/object:Gem::Version
219
+ version: 0.3.6
220
+ type: :runtime
221
+ prerelease: false
222
+ version_requirements: *70330596165800
223
+ - !ruby/object:Gem::Dependency
224
+ name: rmagick
225
+ requirement: &70330596165240 !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: 2.13.1
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: *70330596165240
179
234
  description: Setup a network of bots only waiting to attack a few lonesome servers
180
235
  and force them to their limits
181
236
  email:
@@ -187,6 +242,8 @@ extra_rdoc_files: []
187
242
  files:
188
243
  - .DS_Store
189
244
  - .gitignore
245
+ - .rspec
246
+ - .travis.yml
190
247
  - Gemfile
191
248
  - README.textile
192
249
  - Rakefile