stella 0.3.2 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +24 -84
- data/Rakefile +1 -6
- data/doc/classes/Crypto.html +248 -0
- data/doc/classes/Crypto/Key.html +308 -0
- data/doc/classes/Enumerable.html +309 -0
- data/doc/classes/FileUtil.html +310 -0
- data/doc/classes/HTTPUtil.html +530 -0
- data/doc/classes/MathUtil.html +210 -0
- data/doc/classes/Stella.html +238 -0
- data/doc/classes/Stella/Adapter.html +127 -0
- data/doc/classes/Stella/Adapter/ApacheBench.html +1076 -0
- data/doc/classes/Stella/Adapter/Base.html +432 -0
- data/doc/classes/Stella/Adapter/CommandNotReady.html +146 -0
- data/doc/classes/Stella/Adapter/Httperf.html +949 -0
- data/doc/classes/Stella/Adapter/Siege.html +1011 -0
- data/doc/classes/Stella/CLI.html +914 -0
- data/doc/classes/Stella/CLI/Base.html +186 -0
- data/doc/classes/Stella/CLI/Language.html +149 -0
- data/doc/classes/Stella/CLI/LocalTest.html +268 -0
- data/doc/classes/Stella/Command.html +111 -0
- data/doc/classes/Stella/Command/Base.html +335 -0
- data/doc/classes/Stella/Config.html +292 -0
- data/doc/classes/Stella/InvalidArgument.html +242 -0
- data/doc/classes/Stella/LocalTest.html +450 -0
- data/doc/classes/Stella/Logger.html +548 -0
- data/doc/classes/Stella/Response.html +846 -0
- data/doc/classes/Stella/Storable.html +928 -0
- data/doc/classes/Stella/Test.html +142 -0
- data/doc/classes/Stella/Test/DaySummary.html +249 -0
- data/doc/classes/Stella/Test/Definition.html +294 -0
- data/doc/classes/Stella/Test/Definition/Rampup.html +215 -0
- data/doc/classes/Stella/Test/RunSummary.html +315 -0
- data/doc/classes/Stella/Test/SummaryBase.html +286 -0
- data/doc/classes/Stella/Test/TestSummary.html +200 -0
- data/doc/classes/Stella/Text.html +581 -0
- data/doc/classes/Stella/Text/Resource.html +289 -0
- data/doc/classes/Stella/UnavailableAdapter.html +242 -0
- data/doc/classes/Stella/UnknownValue.html +242 -0
- data/doc/classes/Stella/UnsupportedLanguage.html +115 -0
- data/doc/classes/Stella/Util.html +348 -0
- data/doc/classes/TextGraph.html +460 -0
- data/doc/classes/TimerUtil.html +431 -0
- data/doc/created.rid +1 -0
- data/doc/files/LICENSE_txt.html +129 -0
- data/doc/files/README_txt.html +209 -0
- data/doc/files/lib/stella/adapter/ab_rb.html +101 -0
- data/doc/files/lib/stella/adapter/base_rb.html +101 -0
- data/doc/files/lib/stella/adapter/httperf_rb.html +101 -0
- data/doc/files/lib/stella/adapter/siege_rb.html +101 -0
- data/doc/files/lib/stella/cli/base_rb.html +101 -0
- data/doc/files/lib/stella/cli/language_rb.html +101 -0
- data/doc/files/lib/stella/cli/localtest_rb.html +101 -0
- data/doc/files/lib/stella/cli_rb.html +112 -0
- data/doc/files/lib/stella/command/base_rb.html +101 -0
- data/doc/files/lib/stella/command/localtest_rb.html +101 -0
- data/doc/files/lib/stella/logger_rb.html +101 -0
- data/doc/files/lib/stella/response_rb.html +101 -0
- data/doc/files/lib/stella/storable_rb.html +109 -0
- data/doc/files/lib/stella/support_rb.html +101 -0
- data/doc/files/lib/stella/test/daysummary_rb.html +101 -0
- data/doc/files/lib/stella/test/definition_rb.html +101 -0
- data/doc/files/lib/stella/test/runsummary_rb.html +101 -0
- data/doc/files/lib/stella/test/summarybase_rb.html +101 -0
- data/doc/files/lib/stella/test/testsummary_rb.html +108 -0
- data/doc/files/lib/stella/text/resource_rb.html +108 -0
- data/doc/files/lib/stella/text_rb.html +108 -0
- data/doc/files/lib/stella_rb.html +128 -0
- data/doc/files/lib/utils/crypto-key_rb.html +116 -0
- data/doc/files/lib/utils/fileutil_rb.html +108 -0
- data/doc/files/lib/utils/httputil_rb.html +110 -0
- data/doc/files/lib/utils/mathutil_rb.html +101 -0
- data/doc/files/lib/utils/textgraph_rb.html +138 -0
- data/doc/files/lib/utils/timerutil_rb.html +108 -0
- data/doc/fr_class_index.html +66 -0
- data/doc/fr_file_index.html +62 -0
- data/doc/fr_method_index.html +309 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/stella.rb +5 -6
- data/lib/stella/adapter/ab.rb +4 -31
- data/lib/stella/adapter/base.rb +1 -15
- data/lib/stella/adapter/httperf.rb +4 -35
- data/lib/stella/adapter/siege.rb +29 -51
- data/lib/stella/cli.rb +22 -45
- data/lib/stella/cli/language.rb +0 -2
- data/lib/stella/cli/localtest.rb +0 -5
- data/lib/stella/command/base.rb +1 -1
- data/lib/stella/command/localtest.rb +68 -84
- data/lib/stella/test/daysummary.rb +93 -0
- data/lib/stella/test/definition.rb +5 -10
- data/lib/stella/test/{run/summary.rb → runsummary.rb} +6 -4
- data/lib/stella/test/{base.rb → summarybase.rb} +7 -3
- data/lib/stella/test/{summary.rb → testsummary.rb} +29 -27
- data/lib/utils/mathutil.rb +34 -36
- data/spec/base.rb +26 -0
- data/spec/shell_spec.rb +12 -0
- data/support/text/en.yaml +1 -7
- metadata +102 -8
- data/lib/stella/cli/agents.rb +0 -73
- data/lib/utils/escape.rb +0 -302
data/doc/index.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
5
|
+
|
6
|
+
<!--
|
7
|
+
|
8
|
+
stella, a friend in performance testing
|
9
|
+
|
10
|
+
-->
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
|
+
<head>
|
13
|
+
<title>stella, a friend in performance testing</title>
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
15
|
+
</head>
|
16
|
+
<frameset rows="20%, 80%">
|
17
|
+
<frameset cols="25%,35%,45%">
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
21
|
+
</frameset>
|
22
|
+
<frame src="files/LICENSE_txt.html" name="docwin" />
|
23
|
+
</frameset>
|
24
|
+
</html>
|
data/doc/rdoc-style.css
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
data/lib/stella.rb
CHANGED
@@ -10,7 +10,6 @@ require 'utils/httputil'
|
|
10
10
|
require 'utils/crypto-key'
|
11
11
|
require 'utils/fileutil'
|
12
12
|
require 'utils/mathutil'
|
13
|
-
require 'utils/escape'
|
14
13
|
|
15
14
|
# Common dependencies
|
16
15
|
require 'stella/support'
|
@@ -22,8 +21,8 @@ require 'stella/text'
|
|
22
21
|
require 'stella/logger'
|
23
22
|
require 'stella/response'
|
24
23
|
require 'stella/test/definition'
|
25
|
-
require 'stella/test/
|
26
|
-
require 'stella/test/
|
24
|
+
require 'stella/test/runsummary'
|
25
|
+
require 'stella/test/testsummary'
|
27
26
|
|
28
27
|
# Commands
|
29
28
|
require 'stella/command/base'
|
@@ -39,13 +38,13 @@ require 'stella/adapter/httperf'
|
|
39
38
|
# A friend in performance testing.
|
40
39
|
#
|
41
40
|
module Stella
|
42
|
-
LOGGER = Stella::Logger.new(:debug=>
|
41
|
+
LOGGER = Stella::Logger.new(:debug=>true)
|
43
42
|
TEXT = Stella::Text.new('en')
|
44
43
|
|
45
44
|
module VERSION #:nodoc:
|
46
45
|
MAJOR = 0.freeze unless defined? MAJOR
|
47
|
-
MINOR =
|
48
|
-
TINY =
|
46
|
+
MINOR = 5.freeze unless defined? MINOR
|
47
|
+
TINY = 1.freeze unless defined? TINY
|
49
48
|
def self.to_s
|
50
49
|
[MAJOR, MINOR, TINY].join('.')
|
51
50
|
end
|
data/lib/stella/adapter/ab.rb
CHANGED
@@ -86,9 +86,9 @@ module Stella
|
|
86
86
|
# because it applies the load factor.
|
87
87
|
value = self.send(canon)
|
88
88
|
if (value.is_a? Array)
|
89
|
-
value.each { |el| command << "-#{
|
89
|
+
value.each { |el| command << "-#{cannon} '#{el}' " }
|
90
90
|
else
|
91
|
-
command << "-#{canon} #{
|
91
|
+
command << "-#{canon} '#{value}' "
|
92
92
|
end
|
93
93
|
|
94
94
|
end
|
@@ -168,19 +168,7 @@ module Stella
|
|
168
168
|
|
169
169
|
|
170
170
|
|
171
|
-
|
172
|
-
@H ||= []
|
173
|
-
@H << "#{name}: #{value}"
|
174
|
-
end
|
175
|
-
|
176
|
-
def user_agent=(list=[])
|
177
|
-
return unless list && !list.empty?
|
178
|
-
list = list.to_ary
|
179
|
-
list.each do |agent|
|
180
|
-
add_header("User-Agent", agent)
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
171
|
+
|
184
172
|
def vusers
|
185
173
|
c || 0
|
186
174
|
end
|
@@ -252,22 +240,7 @@ module Stella
|
|
252
240
|
raw[n.to_sym] = v.to_f unless raw.has_key? n.to_sym
|
253
241
|
}
|
254
242
|
|
255
|
-
|
256
|
-
# Document Length: 96 bytes
|
257
|
-
#
|
258
|
-
# Concurrency Level: 75
|
259
|
-
# Time taken for tests: 2.001 seconds
|
260
|
-
# Complete requests: 750
|
261
|
-
# Failed requests: 0
|
262
|
-
# Write errors: 0
|
263
|
-
# Total transferred: 174000 bytes
|
264
|
-
# HTML transferred: 72000 bytes
|
265
|
-
# Requests per second: 374.74 [#/sec] (mean)
|
266
|
-
# Time per request: 200.138 [ms] (mean)
|
267
|
-
# Time per request: 2.669 [ms] (mean, across all concurrent requests)
|
268
|
-
# Transfer rate: 84.90 [Kbytes/sec] received
|
269
|
-
|
270
|
-
stats = Stella::Test::Run::Summary.new
|
243
|
+
stats = Stella::Test::RunSummary.new
|
271
244
|
|
272
245
|
unless raw.empty? || !raw.has_key?(:time_taken_for_tests)
|
273
246
|
|
data/lib/stella/adapter/base.rb
CHANGED
@@ -60,27 +60,13 @@ module Stella::Adapter
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def name
|
63
|
-
@
|
64
|
-
end
|
65
|
-
|
66
|
-
def rate
|
67
|
-
1
|
68
|
-
end
|
69
|
-
def vuser_rate
|
70
|
-
"#{vusers}/#{rate}"
|
63
|
+
@command_name
|
71
64
|
end
|
72
65
|
|
73
66
|
def command
|
74
67
|
raise Stella::TEXT.msg(:error_class_must_override, 'command')
|
75
68
|
end
|
76
69
|
|
77
|
-
def add_header
|
78
|
-
raise Stella::TEXT.msg(:error_class_must_override, 'add_header')
|
79
|
-
end
|
80
|
-
|
81
|
-
def user_agent=
|
82
|
-
raise Stella::TEXT.msg(:error_class_must_override, 'user_agent=')
|
83
|
-
end
|
84
70
|
|
85
71
|
end
|
86
72
|
end
|
@@ -55,9 +55,9 @@ module Stella
|
|
55
55
|
# because it applies the load factor.
|
56
56
|
value = self.send(canon)
|
57
57
|
if (value.is_a? Array)
|
58
|
-
value.each { |el| command << "--#{canon.tr('_', '-')} #{
|
58
|
+
value.each { |el| command << "--#{canon.tr('_', '-')} '#{el}' " }
|
59
59
|
else
|
60
|
-
command << "--#{canon.tr('_', '-')} #{
|
60
|
+
command << "--#{canon.tr('_', '-')} '#{value}' "
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
@@ -102,7 +102,7 @@ module Stella
|
|
102
102
|
|
103
103
|
opts.on('--add-header=S', String) do |v| @add_header ||= []; @add_header << v; end
|
104
104
|
opts.on('--burst-length=N', Integer) do |v| @burst_length = v end
|
105
|
-
opts.on('--client=
|
105
|
+
opts.on('--client=N', Integer) do |v| @client = v end
|
106
106
|
opts.on('-d N', '--debug=N', Integer) do |v| @debug ||= 0; @debug = v end
|
107
107
|
opts.on('--failure-status=N', Integer) do |v| @failure_status = v end
|
108
108
|
|
@@ -161,22 +161,6 @@ module Stella
|
|
161
161
|
@name && !instance_variables.empty?
|
162
162
|
end
|
163
163
|
|
164
|
-
def add_header(name=false, value=false)
|
165
|
-
# This is a hack since we have an instance variable called add_header.
|
166
|
-
# I figure this is the best of two evils because I'd rather keep the
|
167
|
-
# instance variable naming consistent.
|
168
|
-
return @add_header if !name && !value
|
169
|
-
@add_header ||= []
|
170
|
-
@add_header << "#{name}: #{value}"
|
171
|
-
end
|
172
|
-
|
173
|
-
def user_agent=(list=[])
|
174
|
-
return unless list && !list.empty?
|
175
|
-
list = list.to_ary
|
176
|
-
list.each do |agent|
|
177
|
-
add_header("User-Agent", agent)
|
178
|
-
end
|
179
|
-
end
|
180
164
|
def vusers
|
181
165
|
@rate
|
182
166
|
end
|
@@ -192,21 +176,6 @@ module Stella
|
|
192
176
|
def vuser_requests
|
193
177
|
0
|
194
178
|
end
|
195
|
-
def wsess
|
196
|
-
@wsess.join(',')
|
197
|
-
end
|
198
|
-
|
199
|
-
def wset
|
200
|
-
@wset.join(',')
|
201
|
-
end
|
202
|
-
|
203
|
-
|
204
|
-
def wsesslog
|
205
|
-
@wsesslog.join(',')
|
206
|
-
end
|
207
|
-
def wlog
|
208
|
-
@wlog.join(',')
|
209
|
-
end
|
210
179
|
|
211
180
|
#def concurrent
|
212
181
|
# (@concurrent * @load_factor).to_i
|
@@ -266,7 +235,7 @@ module Stella
|
|
266
235
|
return unless stats_file
|
267
236
|
|
268
237
|
raw = stats_file.readlines.join
|
269
|
-
stats = Stella::Test::
|
238
|
+
stats = Stella::Test::RunSummary.new
|
270
239
|
|
271
240
|
raw.scan(/Request rate: (\d+?\.\d+?) req.s .(\d+?\.\d+?) ms.req./) do |rate,time|
|
272
241
|
stats.transaction_rate = rate.to_f
|
data/lib/stella/adapter/siege.rb
CHANGED
@@ -95,9 +95,9 @@ module Stella
|
|
95
95
|
# because it applies the load factor.
|
96
96
|
value = self.send(canon)
|
97
97
|
if (value.is_a? Array)
|
98
|
-
value.each { |el| command << "--#{
|
98
|
+
value.each { |el| command << "--#{cannon.tr('_', '-')} '#{el}' " }
|
99
99
|
else
|
100
|
-
command << "--#{canon.tr('_', '-')} #{
|
100
|
+
command << "--#{canon.tr('_', '-')} '#{value}' "
|
101
101
|
end
|
102
102
|
|
103
103
|
end
|
@@ -118,24 +118,24 @@ module Stella
|
|
118
118
|
def process_options(arguments)
|
119
119
|
options = OpenStruct.new
|
120
120
|
opts = OptionParser.new
|
121
|
-
opts.on('-V', '--version') do |v|
|
122
|
-
opts.on('-h', '--help') do |v|
|
123
|
-
opts.on('-C', '--config') do |v|
|
124
|
-
opts.on('-v', '--verbose') do |v|
|
125
|
-
opts.on('-g', '--get') do |v|
|
126
|
-
opts.on('-l', '--log') do |v|
|
127
|
-
opts.on('-m S', '--mark=S', String) do |v|
|
128
|
-
opts.on('-d N', '--delay=N', Float) do |v|
|
129
|
-
opts.on('-H S', '--header=S', String) do |v|
|
121
|
+
opts.on('-V', '--version') do |v| options.version = v end
|
122
|
+
opts.on('-h', '--help') do |v| options.help = v end
|
123
|
+
opts.on('-C', '--config') do |v| options.config = v end
|
124
|
+
opts.on('-v', '--verbose') do |v| options.verbose = v end
|
125
|
+
opts.on('-g', '--get') do |v| options.get = v end
|
126
|
+
opts.on('-l', '--log') do |v| options.log = v end
|
127
|
+
opts.on('-m S', '--mark=S', String) do |v| options.mark = v end
|
128
|
+
opts.on('-d N', '--delay=N', Float) do |v| options.delay = v end
|
129
|
+
opts.on('-H S', '--header=S', String) do |v| options.header ||= []; options.header << v end
|
130
130
|
|
131
|
-
opts.on('-r N', '--reps=N', Integer) do |v|
|
132
|
-
opts.on('-c N', '--concurrent=N', Integer) do |v|
|
133
|
-
opts.on('-R S', '--rc=S', String) do |v|
|
134
|
-
opts.on('-f S', '--file=S', String) do |v|
|
135
|
-
opts.on('-t S', '--time=S', String) do |v|
|
136
|
-
opts.on('-b', '--benchmark') do |v|
|
137
|
-
opts.on('-i', '--internet') do |v|
|
138
|
-
opts.on('-A S', '--user-agent=S', String) do |v|
|
131
|
+
opts.on('-r N', '--reps=N', Integer) do |v| options.reps = v.to_i end
|
132
|
+
opts.on('-c N', '--concurrent=N', Integer) do |v| options.concurrent = v.to_i end
|
133
|
+
opts.on('-R S', '--rc=S', String) do |v| options.rc = v end
|
134
|
+
opts.on('-f S', '--file=S', String) do |v| options.file = v end
|
135
|
+
opts.on('-t S', '--time=S', String) do |v| options.time = v end
|
136
|
+
opts.on('-b', '--benchmark') do |v| options.benchmark = true; end
|
137
|
+
opts.on('-i', '--internet') do |v| options.internet = true; end
|
138
|
+
opts.on('-A S', '--user-agent=S', String) do |v| options.user_agent = v end
|
139
139
|
|
140
140
|
raise "You cannot select both --internet and --benchmark" if options.internet && options.benchmark
|
141
141
|
|
@@ -150,19 +150,7 @@ module Stella
|
|
150
150
|
raise InvalidArgument.new(badarg)
|
151
151
|
end
|
152
152
|
|
153
|
-
|
154
|
-
def add_header(name, value)
|
155
|
-
@header ||= []
|
156
|
-
@header << "#{name}: #{value}"
|
157
|
-
end
|
158
|
-
def user_agent=(list=[])
|
159
|
-
return unless list && !list.empty?
|
160
|
-
list = list.to_ary
|
161
|
-
@user_agent ||= []
|
162
|
-
@user_agent << list
|
163
|
-
@user_agent.flatten
|
164
|
-
end
|
165
|
-
|
153
|
+
|
166
154
|
def vusers
|
167
155
|
concurrent || 0
|
168
156
|
end
|
@@ -284,33 +272,23 @@ module Stella
|
|
284
272
|
raw[n.to_sym] = v.to_f
|
285
273
|
}
|
286
274
|
|
287
|
-
stats = Stella::Test::
|
288
|
-
|
289
|
-
# Transactions: 750 hits
|
290
|
-
# Availability: 100.00 %
|
291
|
-
# Elapsed time: 2.33 secs
|
292
|
-
# Data transferred: 0.07 MB
|
293
|
-
# Response time: 0.21 secs
|
294
|
-
# Transaction rate: 321.89 trans/sec
|
295
|
-
# Throughput: 0.03 MB/sec
|
296
|
-
# Concurrency: 67.49
|
297
|
-
# Successful transactions: 750
|
298
|
-
# Failed transactions: 0
|
299
|
-
# Longest transaction: 0.33
|
300
|
-
# Shortest transaction: 0.10
|
301
|
-
|
275
|
+
stats = Stella::Test::RunSummary.new
|
276
|
+
|
302
277
|
stats.vusers = raw[:concurrency]
|
303
278
|
stats.data_transferred = raw[:data_transferred]
|
279
|
+
|
280
|
+
|
304
281
|
stats.elapsed_time = raw[:elapsed_time]
|
305
282
|
stats.response_time = raw[:response_time]
|
283
|
+
|
284
|
+
#stats.shortest_transaction = raw[:shortest_transaction]
|
285
|
+
#stats.longest_transaction = raw[:longest_transaction]
|
286
|
+
|
306
287
|
stats.transactions = raw[:transactions].to_i
|
307
288
|
stats.transaction_rate = raw[:transaction_rate]
|
308
289
|
stats.failed = raw[:failed_transactions].to_i
|
309
290
|
stats.successful = raw[:successful_transactions].to_i
|
310
|
-
|
311
|
-
#stats.shortest_transaction = raw[:shortest_transaction]
|
312
|
-
#stats.longest_transaction = raw[:longest_transaction]
|
313
|
-
|
291
|
+
#stats.raw = raw if @global_options.debug
|
314
292
|
stats
|
315
293
|
end
|
316
294
|
|