bigbench 0.0.5 → 0.0.6

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