blitz 0.1.11 → 0.1.12

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/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