stella 0.8.1.002 → 0.8.2.001
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/.gitignore +2 -0
- data/.gitmodules +4 -0
- data/CHANGES.txt +15 -1
- data/Rakefile +38 -51
- data/VERSION.yml +5 -0
- data/bin/stella +0 -4
- data/lib/stella.rb +15 -12
- data/lib/stella/cli.rb +3 -12
- data/lib/stella/client.rb +0 -1
- data/lib/stella/common.rb +16 -0
- data/lib/stella/engine.rb +39 -23
- data/lib/stella/engine/functional.rb +2 -3
- data/lib/stella/engine/{load_queue.rb → load.rb} +4 -4
- data/lib/stella/engine/loadbase.rb +51 -75
- data/lib/stella/logger.rb +13 -13
- data/lib/stella/service.rb +2 -2
- data/lib/stella/testplan.rb +5 -2
- data/lib/stella/utils.rb +1 -1
- data/stella.gemspec +124 -88
- data/tryouts/70_module_usage.rb +15 -0
- metadata +23 -22
- data/lib/stella/engine/load_create.rb +0 -91
- data/lib/stella/engine/load_em.rb +0 -139
- data/lib/stella/engine/load_package.rb +0 -38
- data/lib/threadify.rb +0 -165
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/CHANGES.txt
CHANGED
|
@@ -3,7 +3,6 @@ STELLA, CHANGES
|
|
|
3
3
|
#### 0.8.X (XXXX-XX-XX) ###############################
|
|
4
4
|
|
|
5
5
|
* TODO: Force response block content type.
|
|
6
|
-
* TODO: Add assert methods to response blocks (reconsider)
|
|
7
6
|
* TODO: Add option to dump full request/response output to a file by client
|
|
8
7
|
* TODO: review cookie handling. Not always sent automatically.
|
|
9
8
|
* TODO: review :variables in URI elements
|
|
@@ -11,6 +10,21 @@ STELLA, CHANGES
|
|
|
11
10
|
* TODO: request block conditions.
|
|
12
11
|
* TODO: process templates for calls to set in get blocks
|
|
13
12
|
|
|
13
|
+
|
|
14
|
+
#### 0.8.2 (2010-03-05) ###############################
|
|
15
|
+
|
|
16
|
+
* FIXED: Misc issues with usage via module (Stella::Engine.load)
|
|
17
|
+
* CHANGE: Remove all logs except summary and exceptions
|
|
18
|
+
* CHANGE: Renamed .stella/logs/latest/request-exceptions to .stella/logs/latest/exceptions
|
|
19
|
+
* CHANGE: Removed unused Load implementations and renamed LoadQueue to Load
|
|
20
|
+
* CHANGE: Added proper names for statistics (response_time instead of do_request)
|
|
21
|
+
* CHANGE: Benelux 0.5.8 dependency
|
|
22
|
+
* CHANGE: Cleaned up generate mode CLI output
|
|
23
|
+
* CHANGE: Removed no-logging option
|
|
24
|
+
* CHANGE: Renamed Testrun#summary to Testrun#stats
|
|
25
|
+
* ADDED: JSON statistics log (.stella/logs/latest/stats)
|
|
26
|
+
|
|
27
|
+
|
|
14
28
|
#### 0.8.1.002 (2010-02-20) ###############################
|
|
15
29
|
|
|
16
30
|
* FIXED: fail on connection error
|
data/Rakefile
CHANGED
|
@@ -1,46 +1,48 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "rake"
|
|
3
|
+
require "rake/rdoctask"
|
|
4
|
+
require "rake/clean"
|
|
5
|
+
require 'yaml'
|
|
1
6
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require 'rake/runtest'
|
|
6
|
-
require 'fileutils'
|
|
7
|
-
include FileUtils
|
|
8
|
-
|
|
9
|
-
task :default => :test
|
|
7
|
+
config = YAML.load_file("VERSION.yml")
|
|
8
|
+
task :default => ["build"]
|
|
9
|
+
CLEAN.include [ 'pkg', 'doc', 'rdoc', 'coverage*' ]
|
|
10
10
|
|
|
11
11
|
begin
|
|
12
|
-
require
|
|
12
|
+
require "jeweler"
|
|
13
|
+
Jeweler::Tasks.new do |gem|
|
|
14
|
+
gem.version = "#{config[:MAJOR]}.#{config[:MINOR]}.#{config[:PATCH]}.#{config[:BUILD]}"
|
|
15
|
+
gem.name = "stella"
|
|
16
|
+
gem.rubyforge_project = gem.name
|
|
17
|
+
gem.summary = "Blame Stella for breaking your web application!"
|
|
18
|
+
gem.description = "Blame Stella for breaking your web application!"
|
|
19
|
+
gem.email = "delano@solutious.com"
|
|
20
|
+
gem.homepage = "http://blamestella.com/"
|
|
21
|
+
gem.authors = ["Delano Mandelbaum"]
|
|
22
|
+
gem.add_dependency("gibbler", ">= 0.7.4")
|
|
23
|
+
gem.add_dependency("drydock", ">= 0.6.9")
|
|
24
|
+
gem.add_dependency("benelux", ">= 0.5.8")
|
|
25
|
+
gem.add_dependency('sysinfo', '>= 0.7.3')
|
|
26
|
+
gem.add_dependency('storable', '>= 0.6.3')
|
|
27
|
+
gem.add_dependency("nokogiri")
|
|
28
|
+
|
|
29
|
+
#gem.add_development_dependency("rspec", ">= 1.2.9")
|
|
30
|
+
#gem.add_development_dependency("mocha", ">= 0.9.8")
|
|
31
|
+
end
|
|
32
|
+
Jeweler::GemcutterTasks.new
|
|
13
33
|
rescue LoadError
|
|
14
|
-
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# PACKAGE =============================================================
|
|
18
|
-
|
|
19
|
-
name = "stella"
|
|
20
|
-
load "#{name}.gemspec"
|
|
21
|
-
|
|
22
|
-
version = @spec.version
|
|
23
|
-
|
|
24
|
-
Rake::GemPackageTask.new(@spec) do |p|
|
|
25
|
-
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
task :test do
|
|
29
|
-
puts "Success!"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
task :release => [ "publish:gem", :clean, "publish:rdoc" ] do
|
|
33
|
-
$: << File.join(File.dirname(__FILE__), 'lib')
|
|
34
|
-
require "rudy"
|
|
35
|
-
abort if Drydock.debug?
|
|
34
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
36
35
|
end
|
|
37
36
|
|
|
38
|
-
task :install => [ :rdoc, :package ] do
|
|
39
|
-
sh %{sudo gem install pkg/#{name}-#{version}.gem}
|
|
40
|
-
end
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
Rake::RDocTask.new do |rdoc|
|
|
39
|
+
version = "#{config[:MAJOR]}.#{config[:MINOR]}.#{config[:PATCH]}.#{config[:BUILD]}"
|
|
40
|
+
rdoc.rdoc_dir = "rdoc"
|
|
41
|
+
rdoc.title = "stella #{version}"
|
|
42
|
+
rdoc.rdoc_files.include("README*")
|
|
43
|
+
rdoc.rdoc_files.include("LICENSE.txt")
|
|
44
|
+
rdoc.rdoc_files.include("bin/*.rb")
|
|
45
|
+
rdoc.rdoc_files.include("lib/**/*.rb")
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
|
|
@@ -60,20 +62,5 @@ task 'publish:gem' => [:package] do |t|
|
|
|
60
62
|
end
|
|
61
63
|
|
|
62
64
|
|
|
63
|
-
Rake::RDocTask.new do |t|
|
|
64
|
-
t.rdoc_dir = 'doc'
|
|
65
|
-
t.title = @spec.summary
|
|
66
|
-
t.options << '--line-numbers' << '-A cattr_accessor=object'
|
|
67
|
-
t.options << '--charset' << 'utf-8'
|
|
68
|
-
t.rdoc_files.include('LICENSE.txt')
|
|
69
|
-
t.rdoc_files.include('README.md')
|
|
70
|
-
t.rdoc_files.include('CHANGES.txt')
|
|
71
|
-
#t.rdoc_files.include('Rudyfile') # why is the formatting f'd?
|
|
72
|
-
t.rdoc_files.include('bin/*')
|
|
73
|
-
t.rdoc_files.include('lib/**/*.rb')
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
CLEAN.include [ 'pkg', '*.gem', '.config', 'doc', 'coverage*' ]
|
|
77
|
-
|
|
78
65
|
|
|
79
66
|
|
data/VERSION.yml
ADDED
data/bin/stella
CHANGED
|
@@ -46,7 +46,6 @@ class Stella::CLI::Definition
|
|
|
46
46
|
global :'with-header', "Include X-Stella-ID request header"
|
|
47
47
|
global :'with-param', "Include __stella query parameter header"
|
|
48
48
|
global :R, :remote
|
|
49
|
-
global :E, :engine, String, "Specify a load engine (experimental)"
|
|
50
49
|
global :o, :output, String, "Write output to the given file" do |v|
|
|
51
50
|
String.disable_color
|
|
52
51
|
Stella.log.output = v
|
|
@@ -65,9 +64,6 @@ class Stella::CLI::Definition
|
|
|
65
64
|
global :'no-stats', "Disable stat collection" do
|
|
66
65
|
true
|
|
67
66
|
end
|
|
68
|
-
global :'no-logging', "Disable all logging" do
|
|
69
|
-
Stella::Logger.disable!
|
|
70
|
-
end
|
|
71
67
|
global :'no-templates', "Disable template parsing" do
|
|
72
68
|
true
|
|
73
69
|
end
|
data/lib/stella.rb
CHANGED
|
@@ -19,19 +19,21 @@ require 'proc_source'
|
|
|
19
19
|
|
|
20
20
|
module Stella
|
|
21
21
|
module VERSION
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
MINOR
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
def self.to_s
|
|
23
|
+
load_config
|
|
24
|
+
[@version[:MAJOR], @version[:MINOR], @version[:PATCH]].join('.')
|
|
25
|
+
end
|
|
26
|
+
def self.inspect
|
|
27
|
+
load_config
|
|
28
|
+
[@version[:MAJOR], @version[:MINOR], @version[:PATCH], @version[:BUILD]].join('.')
|
|
29
|
+
end
|
|
30
|
+
def self.load_config
|
|
31
|
+
require 'yaml'
|
|
32
|
+
@version ||= YAML.load_file(File.join(STELLA_LIB_HOME, '..', 'VERSION.yml'))
|
|
27
33
|
end
|
|
28
|
-
def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
|
|
29
|
-
def self.to_f; self.to_s.to_f; end
|
|
30
|
-
def self.patch; PATCH; end
|
|
31
34
|
end
|
|
32
35
|
end
|
|
33
36
|
|
|
34
|
-
|
|
35
37
|
module Stella
|
|
36
38
|
class Error < RuntimeError
|
|
37
39
|
def initialize(obj=nil); @obj = obj; end
|
|
@@ -79,7 +81,7 @@ module Stella
|
|
|
79
81
|
attr_accessor :log, :stdout
|
|
80
82
|
end
|
|
81
83
|
|
|
82
|
-
def le(*msg); stdout.info " " << msg.join("#{$/} ").
|
|
84
|
+
def le(*msg); stdout.info " " << msg.join("#{$/} ").colour(:red); end
|
|
83
85
|
def ld(*msg)
|
|
84
86
|
return unless Stella.debug?
|
|
85
87
|
prefix = "D(#{Thread.current.object_id}): "
|
|
@@ -99,8 +101,8 @@ module Stella
|
|
|
99
101
|
def abort!() @abort = true end
|
|
100
102
|
|
|
101
103
|
def quiet?() @quiet == true end
|
|
102
|
-
def enable_quiet() @quiet = true
|
|
103
|
-
def disable_quiet() @quiet = false end
|
|
104
|
+
def enable_quiet() @quiet = true; @stdout.disable!; end
|
|
105
|
+
def disable_quiet() @quiet = false; @stdout.enable!; end
|
|
104
106
|
|
|
105
107
|
def add_global(n,v)
|
|
106
108
|
Stella.ld "SETGLOBAL: #{n}=#{v}"
|
|
@@ -120,6 +122,7 @@ module Stella
|
|
|
120
122
|
autoload :Config, 'stella/config'
|
|
121
123
|
autoload :Data, 'stella/data'
|
|
122
124
|
autoload :Testplan, 'stella/testplan'
|
|
125
|
+
autoload :Testrun, 'stella/engine'
|
|
123
126
|
autoload :Engine, 'stella/engine'
|
|
124
127
|
autoload :Client, 'stella/client'
|
|
125
128
|
autoload :Service, 'stella/service'
|
data/lib/stella/cli.rb
CHANGED
|
@@ -47,16 +47,8 @@ class Stella::CLI < Drydock::Command
|
|
|
47
47
|
|
|
48
48
|
connect_service if @global.remote
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
ret = Stella::Engine::LoadPackage.run @testplan, opts
|
|
53
|
-
when "create"
|
|
54
|
-
ret = Stella::Engine::LoadCreate.run @testplan, opts
|
|
55
|
-
when "em"
|
|
56
|
-
ret = Stella::Engine::LoadEventMachine.run @testplan, opts
|
|
57
|
-
else
|
|
58
|
-
ret = Stella::Engine::LoadQueue.run @testplan, opts
|
|
59
|
-
end
|
|
50
|
+
ret = Stella::Engine::Load.run @testplan, opts
|
|
51
|
+
|
|
60
52
|
Stella.ld "ENGINE: #{@global.engine}: #{ret.class}"
|
|
61
53
|
|
|
62
54
|
@exit_code = (ret ? 0 : 1)
|
|
@@ -122,11 +114,10 @@ class Stella::CLI < Drydock::Command
|
|
|
122
114
|
else
|
|
123
115
|
opts = {}
|
|
124
116
|
opts[:wait] = @option.wait if @option.wait
|
|
125
|
-
@testplan = Stella::Testplan.new(@argv
|
|
117
|
+
@testplan = Stella::Testplan.new(@argv)
|
|
126
118
|
end
|
|
127
119
|
@testplan.check! # raise errors, update usecase ratios
|
|
128
120
|
@testplan.freeze # cascades through usecases and requests
|
|
129
|
-
Stella.stdout.info2 " #{@option.testplan || @testplan.desc} (#{@testplan.digest})"
|
|
130
121
|
true
|
|
131
122
|
end
|
|
132
123
|
|
data/lib/stella/client.rb
CHANGED
|
@@ -100,7 +100,6 @@ module Stella
|
|
|
100
100
|
ret, asset_duration = nil, 0
|
|
101
101
|
rescue => ex
|
|
102
102
|
update(:request_unhandled_exception, usecase, uri, req, params, ex)
|
|
103
|
-
update(:usecase_error, ex.message, uri, container)
|
|
104
103
|
Benelux.remove_thread_tags :status, :retry, :request, :stella_id
|
|
105
104
|
break
|
|
106
105
|
end
|
data/lib/stella/common.rb
CHANGED
|
@@ -7,6 +7,22 @@ $KCODE = "u" if RUBY_VERSION =~ /^1.8/
|
|
|
7
7
|
|
|
8
8
|
class String
|
|
9
9
|
|
|
10
|
+
def colour(*args)
|
|
11
|
+
self
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def color(*args)
|
|
15
|
+
self
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def att(*args)
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def bright(*args)
|
|
23
|
+
self
|
|
24
|
+
end
|
|
25
|
+
|
|
10
26
|
def in_seconds
|
|
11
27
|
# "60m" => ["60", "m"]
|
|
12
28
|
q,u = self.scan(/([\d\.]+)([s,m,h])?/).flatten
|
data/lib/stella/engine.rb
CHANGED
|
@@ -58,6 +58,9 @@ module Stella::Engine
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def process_options!(plan, opts={})
|
|
61
|
+
# Plan must be frozen before running (see freeze methods)
|
|
62
|
+
plan.frozen? || plan.freeze
|
|
63
|
+
|
|
61
64
|
opts = {
|
|
62
65
|
:hosts => [],
|
|
63
66
|
:clients => 1,
|
|
@@ -67,7 +70,19 @@ module Stella::Engine
|
|
|
67
70
|
:repetitions => 1
|
|
68
71
|
}.merge! opts
|
|
69
72
|
|
|
70
|
-
Stella.
|
|
73
|
+
Stella.ld " Options: #{opts.inspect}"
|
|
74
|
+
|
|
75
|
+
unless Array === opts[:hosts]
|
|
76
|
+
opts[:hosts] = [opts[:hosts]]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
opts[:hosts].collect! do |host|
|
|
80
|
+
if URI::Generic === host
|
|
81
|
+
host
|
|
82
|
+
else
|
|
83
|
+
URI.parse host
|
|
84
|
+
end
|
|
85
|
+
end
|
|
71
86
|
|
|
72
87
|
opts[:clients] = plan.usecases.size if opts[:clients] < plan.usecases.size
|
|
73
88
|
|
|
@@ -104,22 +119,18 @@ module Stella::Engine
|
|
|
104
119
|
end
|
|
105
120
|
|
|
106
121
|
autoload :Functional, 'stella/engine/functional'
|
|
107
|
-
autoload :Load, 'stella/engine/
|
|
108
|
-
autoload :LoadPackage, 'stella/engine/load_package'
|
|
109
|
-
autoload :LoadCreate, 'stella/engine/load_create'
|
|
110
|
-
autoload :LoadQueue, 'stella/engine/load_queue'
|
|
111
|
-
autoload :LoadEventMachine, 'stella/engine/load_em'
|
|
122
|
+
autoload :Load, 'stella/engine/load'
|
|
112
123
|
|
|
113
124
|
# These timers are interesting from a reporting perspective.
|
|
114
125
|
Benelux.add_counter Stella::Client, :execute_response_handler
|
|
115
|
-
Benelux.add_timer HTTPClient, :do_request
|
|
126
|
+
Benelux.add_timer HTTPClient, :do_request, :response_time
|
|
116
127
|
## These are contained in connect
|
|
117
128
|
#Benelux.add_timer HTTPClient::Session, :create_socket
|
|
118
129
|
#Benelux.add_timer HTTPClient::Session, :create_ssl_socket
|
|
119
|
-
Benelux.add_timer HTTPClient::Session, :connect
|
|
120
|
-
Benelux.add_timer HTTPClient::Session, :query
|
|
121
|
-
Benelux.add_timer HTTPClient::Session, :socket_gets_first_byte
|
|
122
|
-
Benelux.add_timer HTTPClient::Session, :get_body
|
|
130
|
+
Benelux.add_timer HTTPClient::Session, :connect, :socket_connect
|
|
131
|
+
Benelux.add_timer HTTPClient::Session, :query, :send_request
|
|
132
|
+
Benelux.add_timer HTTPClient::Session, :socket_gets_first_byte, :first_byte
|
|
133
|
+
Benelux.add_timer HTTPClient::Session, :get_body, :receive_response
|
|
123
134
|
|
|
124
135
|
end
|
|
125
136
|
|
|
@@ -128,7 +139,7 @@ class Stella::Testrun < Storable
|
|
|
128
139
|
attic :remote_digest
|
|
129
140
|
field :samples => Array
|
|
130
141
|
field :plan
|
|
131
|
-
field :
|
|
142
|
+
field :stats
|
|
132
143
|
field :hosts
|
|
133
144
|
field :events
|
|
134
145
|
field :mode # (f)unctional or (l)oad
|
|
@@ -139,24 +150,28 @@ class Stella::Testrun < Storable
|
|
|
139
150
|
field :nowait => Integer
|
|
140
151
|
def initialize(plan, events, opts={})
|
|
141
152
|
@plan, @events = plan, events
|
|
142
|
-
@samples, @
|
|
153
|
+
@samples, @stats = nil, nil
|
|
143
154
|
opts.each_pair do |n,v|
|
|
144
155
|
self.send("#{n}=", v) if has_field? n
|
|
145
156
|
end
|
|
146
157
|
reset
|
|
147
158
|
end
|
|
148
159
|
|
|
160
|
+
def save(path)
|
|
161
|
+
Stella::Utils.write_to_file(path, self.to_json, 'w', 0644)
|
|
162
|
+
end
|
|
163
|
+
|
|
149
164
|
def reset
|
|
150
165
|
@samples = []
|
|
151
|
-
@
|
|
166
|
+
@stats = { :summary => {} }
|
|
152
167
|
@plan.usecases.each do |uc|
|
|
153
168
|
@events.each do |event|
|
|
154
|
-
@
|
|
155
|
-
@
|
|
156
|
-
@
|
|
169
|
+
@stats[:summary][event] = Benelux::Stats::Calculator.new
|
|
170
|
+
@stats[uc.digest] ||= { :summary => {} }
|
|
171
|
+
@stats[uc.digest][:summary][event] = Benelux::Stats::Calculator.new
|
|
157
172
|
uc.requests.each do |req|
|
|
158
|
-
@
|
|
159
|
-
@
|
|
173
|
+
@stats[uc.digest][req.digest] ||= {}
|
|
174
|
+
@stats[uc.digest][req.digest][event] = Benelux::Stats::Calculator.new
|
|
160
175
|
end
|
|
161
176
|
end
|
|
162
177
|
end
|
|
@@ -182,9 +197,9 @@ class Stella::Testrun < Storable
|
|
|
182
197
|
stats = tl.stats.group(event)[filter].merge
|
|
183
198
|
sam.stats[uc.digest][req.digest][event] = stats
|
|
184
199
|
# Tally request, usecase and total summaries at the same time.
|
|
185
|
-
@
|
|
186
|
-
@
|
|
187
|
-
@
|
|
200
|
+
@stats[uc.digest][req.digest][event] += stats
|
|
201
|
+
@stats[uc.digest][:summary][event] += stats
|
|
202
|
+
@stats[:summary][event] += stats
|
|
188
203
|
end
|
|
189
204
|
end
|
|
190
205
|
end
|
|
@@ -193,13 +208,14 @@ class Stella::Testrun < Storable
|
|
|
193
208
|
|
|
194
209
|
begin
|
|
195
210
|
if Stella::Engine.service
|
|
196
|
-
Stella::Engine.service.testrun_stats @
|
|
211
|
+
Stella::Engine.service.testrun_stats @stats, @samples
|
|
197
212
|
end
|
|
198
213
|
rescue => ex
|
|
199
214
|
Stella.stdout.info "Error syncing to #{Stella::Engine.service.source}"
|
|
200
215
|
Stella.stdout.info ex.message, ex.backtrace if Stella.debug?
|
|
201
216
|
end
|
|
202
217
|
|
|
218
|
+
sam
|
|
203
219
|
end
|
|
204
220
|
|
|
205
221
|
|
|
@@ -7,7 +7,6 @@ module Stella::Engine
|
|
|
7
7
|
def run(plan, opts={})
|
|
8
8
|
opts = process_options! plan, opts
|
|
9
9
|
|
|
10
|
-
Stella.ld "OPTIONS: #{opts.inspect}"
|
|
11
10
|
Stella.stdout.info2 "Hosts: " << opts[:hosts].join(', ') if !opts[:hosts].empty?
|
|
12
11
|
|
|
13
12
|
client = Stella::Client.new opts[:hosts].first, 1, opts
|
|
@@ -15,7 +14,7 @@ module Stella::Engine
|
|
|
15
14
|
|
|
16
15
|
client.enable_nowait_mode if opts[:nowait]
|
|
17
16
|
|
|
18
|
-
@testrun = Stella::Testrun.new plan, [:
|
|
17
|
+
@testrun = Stella::Testrun.new plan, [:response_time, :failed], opts
|
|
19
18
|
@testrun.mode = 'f'
|
|
20
19
|
|
|
21
20
|
if Stella::Engine.service
|
|
@@ -60,7 +59,7 @@ module Stella::Engine
|
|
|
60
59
|
@testrun.add_sample 1, 1, tt
|
|
61
60
|
end
|
|
62
61
|
|
|
63
|
-
@testrun.
|
|
62
|
+
@testrun.stats[:summary][:failed].n == 0
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
|