blitz 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -46,7 +46,7 @@ task :spec do
46
46
  RSpec::Core::Runner.run [ *Dir.glob('spec/**/*.rb') ]
47
47
  end
48
48
 
49
- task :default => :test
49
+ task :default => :spec
50
50
 
51
51
  require 'rake/rdoctask'
52
52
  Rake::RDocTask.new do |rdoc|
data/blitz.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{blitz}
8
- s.version = "0.1.11"
8
+ s.version = "0.1.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["pcapr"]
12
- s.date = %q{2011-07-19}
12
+ s.date = %q{2011-10-05}
13
13
  s.default_executable = %q{blitz}
14
14
  s.description = %q{Make load and performance testing a fun sport}
15
15
  s.email = %q{support@blitz.io}
data/lib/blitz.rb CHANGED
@@ -5,7 +5,7 @@ require 'pp'
5
5
 
6
6
  class Blitz # :nodoc:
7
7
  require 'blitz/helper'
8
- Version = "0.1.11"
8
+ Version = "0.1.12"
9
9
 
10
10
  extend Blitz::Helper
11
11
 
@@ -30,6 +30,18 @@ class Curl < Command # :nodoc:
30
30
  error ""
31
31
  error "#{base_url}/#{e.uuid}"
32
32
  error ""
33
+ if e.checks
34
+ error "We tried checking the following URLs and got this"
35
+ error ""
36
+ e.checks.each do |check|
37
+ bytes = ''
38
+ if check['bytes']
39
+ bytes = '| ' + check['bytes']
40
+ end
41
+ error "#{check['code']} | #{check['url']} #{bytes}"
42
+ end
43
+ error ''
44
+ end
33
45
  error "If your app is RESTfully built with sinatra or rails, simply add this route:"
34
46
  error ""
35
47
  error "get '/#{e.uuid}' do"
@@ -109,10 +121,14 @@ class Curl < Command # :nodoc:
109
121
  job = ::Blitz::Curl::Rush.queue args
110
122
  border = "+-----------+----------+----------+------------+--------------+--------+----------+\n"
111
123
  msg "rushing from #{job.region}..."
112
- msg border
113
- msg "| time (s) | users | hits/sec | kbytes/sec | latency (ms) | errors | timeouts |\n"
114
- msg border
124
+ header = true
115
125
  job.result do |result|
126
+ if header
127
+ header = nil
128
+ msg border
129
+ msg "| time (s) | users | hits/sec | kbytes/sec | latency (ms) | errors | timeouts |\n"
130
+ msg border
131
+ end
116
132
  print_rush_result result
117
133
  sleep 1.0 if not continue
118
134
  continue
@@ -346,7 +362,7 @@ class Curl < Command # :nodoc:
346
362
  end
347
363
 
348
364
  if [ '-3', '--sslv3' ].member? k
349
- hash['ssl'] = 'sslv2'
365
+ hash['ssl'] = 'sslv3'
350
366
  next
351
367
  end
352
368
 
@@ -18,12 +18,16 @@ class Error < StandardError # :nodoc:
18
18
 
19
19
  # The unique ID to use a URL path in your app for authorization to succeed
20
20
  attr_reader :uuid
21
+
22
+ # The set of checks performed if the app was reachable
23
+ attr_reader :checks
21
24
 
22
25
  def initialize json
23
26
  @scheme = json['scheme']
24
27
  @host = json['host']
25
28
  @port = json['port']
26
29
  @uuid = json['uuid']
30
+ @checks = json['checks']
27
31
  super
28
32
  end
29
33
  end
@@ -52,14 +52,14 @@ describe "arg parsing" do
52
52
  end
53
53
 
54
54
  @command_args = [
55
- { :short => '-A', :long => '--user-agent', :params => '"TEST STRING"', :blitz_key => 'user-agent' },
55
+ { :short => '-A', :long => '--user-agent', :params => '"TEST STRING"' },
56
56
  { :short => '-b', :long => '--cookie', :params => 'name=somecookie' },
57
57
  { :short => '-d', :long => '--data', :params => '"data for post"'},
58
- { :short => '-D', :long => '--dump-header', :params => '"somefile.out"' },
59
- { :short => '-e', :long => '--referer', :params => '"http://google.com"' },
58
+ { :short => '-D', :long => '--dump-header', :params => '"somefile.out"' },
59
+ { :short => '-e', :long => '--referer', :params => '"http://google.com"' },
60
60
  { :short => '-H', :long => '--header', :params => 'some_header' },
61
- { :short => '-s', :long => '--status', :params => '500' },
62
- { :short => '-T', :long => '--timeout', :params => '750' },
61
+ { :short => '-s', :long => '--status', :params => '500', :return_type => Integer },
62
+ { :short => '-T', :long => '--timeout', :params => '750', :return_type => Integer },
63
63
  { :short => '-u', :long => '--user', :params => 'foo:bar' },
64
64
  { :short => '-X', :long => '--request', :params => 'GET' },
65
65
  { :short => '-V', :long => '--verbose' },
@@ -78,8 +78,24 @@ describe "arg parsing" do
78
78
  it "#{test[flag]} should not raise an error and populate the hash properly" do
79
79
  lambda { curl.__send__ :parse_cli, argv.dup }.should_not raise_error
80
80
  parsed_args = curl.__send__ :parse_cli, argv
81
- if test[:blitz_key]
82
- parsed_args[ test[:blitz_key] ].should == test[:params]
81
+ # special checks for cookies and headers, as their structure in the return data is different
82
+ if test_name == 'cookie' || test_name == 'header'
83
+ return_key = "#{test_name}s"
84
+ parsed_args[return_key].should be_an(Array)
85
+ parsed_args[return_key][0].should == test[:params]
86
+ # special checks for data, as its structure in the return data is different
87
+ elsif test_name == 'data'
88
+ parsed_args['content'].should be_a(Hash)
89
+ parsed_args['content']['data'].should be_an(Array)
90
+ parsed_args['content']['data'][0].should == test[:params]
91
+ # special checks for ssl params
92
+ elsif test_name.match(/^ssl|tls/)
93
+ parsed_args['ssl'].should == test_name
94
+ # for integer params, make sure the test returns correct quoting
95
+ elsif test[:return_type] == Integer
96
+ parsed_args[test_name].should == test[:params].to_i
97
+ elsif test[:params].is_a?(String)
98
+ parsed_args[test_name].should == test[:params]
83
99
  end
84
100
  end
85
101
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blitz
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 3
4
5
  prerelease:
5
- version: 0.1.11
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 12
10
+ version: 0.1.12
6
11
  platform: ruby
7
12
  authors:
8
13
  - pcapr
@@ -10,107 +15,152 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-07-19 00:00:00 -07:00
18
+ date: 2011-10-05 00:00:00 -07:00
14
19
  default_executable: blitz
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
- name: couchrest
22
+ prerelease: false
23
+ type: :runtime
18
24
  requirement: &id001 !ruby/object:Gem::Requirement
19
25
  none: false
20
26
  requirements:
21
27
  - - ~>
22
28
  - !ruby/object:Gem::Version
29
+ hash: 21
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 1
23
34
  version: 1.0.1
24
- type: :runtime
25
- prerelease: false
35
+ name: couchrest
26
36
  version_requirements: *id001
27
37
  - !ruby/object:Gem::Dependency
28
- name: rest-client
38
+ prerelease: false
39
+ type: :runtime
29
40
  requirement: &id002 !ruby/object:Gem::Requirement
30
41
  none: false
31
42
  requirements:
32
43
  - - ~>
33
44
  - !ruby/object:Gem::Version
45
+ hash: 13
46
+ segments:
47
+ - 1
48
+ - 6
49
+ - 1
34
50
  version: 1.6.1
35
- type: :runtime
36
- prerelease: false
51
+ name: rest-client
37
52
  version_requirements: *id002
38
53
  - !ruby/object:Gem::Dependency
39
- name: json
54
+ prerelease: false
55
+ type: :runtime
40
56
  requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ~>
44
60
  - !ruby/object:Gem::Version
61
+ hash: 1
62
+ segments:
63
+ - 1
64
+ - 5
65
+ - 1
45
66
  version: 1.5.1
46
- type: :runtime
47
- prerelease: false
67
+ name: json
48
68
  version_requirements: *id003
49
69
  - !ruby/object:Gem::Dependency
50
- name: json_pure
70
+ prerelease: false
71
+ type: :runtime
51
72
  requirement: &id004 !ruby/object:Gem::Requirement
52
73
  none: false
53
74
  requirements:
54
75
  - - ~>
55
76
  - !ruby/object:Gem::Version
77
+ hash: 1
78
+ segments:
79
+ - 1
80
+ - 5
81
+ - 1
56
82
  version: 1.5.1
57
- type: :runtime
58
- prerelease: false
83
+ name: json_pure
59
84
  version_requirements: *id004
60
85
  - !ruby/object:Gem::Dependency
61
- name: hexy
86
+ prerelease: false
87
+ type: :runtime
62
88
  requirement: &id005 !ruby/object:Gem::Requirement
63
89
  none: false
64
90
  requirements:
65
91
  - - ~>
66
92
  - !ruby/object:Gem::Version
93
+ hash: 25
94
+ segments:
95
+ - 0
96
+ - 1
97
+ - 1
67
98
  version: 0.1.1
68
- type: :runtime
69
- prerelease: false
99
+ name: hexy
70
100
  version_requirements: *id005
71
101
  - !ruby/object:Gem::Dependency
72
- name: rspec
102
+ prerelease: false
103
+ type: :runtime
73
104
  requirement: &id006 !ruby/object:Gem::Requirement
74
105
  none: false
75
106
  requirements:
76
107
  - - "="
77
108
  - !ruby/object:Gem::Version
109
+ hash: 23
110
+ segments:
111
+ - 2
112
+ - 6
113
+ - 0
78
114
  version: 2.6.0
79
- type: :runtime
80
- prerelease: false
115
+ name: rspec
81
116
  version_requirements: *id006
82
117
  - !ruby/object:Gem::Dependency
83
- name: rspec-core
118
+ prerelease: false
119
+ type: :runtime
84
120
  requirement: &id007 !ruby/object:Gem::Requirement
85
121
  none: false
86
122
  requirements:
87
123
  - - "="
88
124
  - !ruby/object:Gem::Version
125
+ hash: 31
126
+ segments:
127
+ - 2
128
+ - 6
129
+ - 4
89
130
  version: 2.6.4
90
- type: :runtime
91
- prerelease: false
131
+ name: rspec-core
92
132
  version_requirements: *id007
93
133
  - !ruby/object:Gem::Dependency
94
- name: bundler
134
+ prerelease: false
135
+ type: :development
95
136
  requirement: &id008 !ruby/object:Gem::Requirement
96
137
  none: false
97
138
  requirements:
98
139
  - - ~>
99
140
  - !ruby/object:Gem::Version
141
+ hash: 23
142
+ segments:
143
+ - 1
144
+ - 0
145
+ - 0
100
146
  version: 1.0.0
101
- type: :development
102
- prerelease: false
147
+ name: bundler
103
148
  version_requirements: *id008
104
149
  - !ruby/object:Gem::Dependency
105
- name: jeweler
150
+ prerelease: false
151
+ type: :development
106
152
  requirement: &id009 !ruby/object:Gem::Requirement
107
153
  none: false
108
154
  requirements:
109
155
  - - ~>
110
156
  - !ruby/object:Gem::Version
157
+ hash: 1
158
+ segments:
159
+ - 1
160
+ - 5
161
+ - 1
111
162
  version: 1.5.1
112
- type: :development
113
- prerelease: false
163
+ name: jeweler
114
164
  version_requirements: *id009
115
165
  description: Make load and performance testing a fun sport
116
166
  email: support@blitz.io
@@ -158,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
208
  requirements:
159
209
  - - ">="
160
210
  - !ruby/object:Gem::Version
161
- hash: 109260913
211
+ hash: 3
162
212
  segments:
163
213
  - 0
164
214
  version: "0"
@@ -167,6 +217,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
217
  requirements:
168
218
  - - ">="
169
219
  - !ruby/object:Gem::Version
220
+ hash: 3
221
+ segments:
222
+ - 0
170
223
  version: "0"
171
224
  requirements: []
172
225