solutious-stella 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/CHANGES.txt +39 -2
  2. data/LICENSE.txt +19 -0
  3. data/README.rdoc +85 -0
  4. data/Rakefile +54 -59
  5. data/bin/example_test.rb +82 -0
  6. data/bin/example_webapp.rb +63 -0
  7. data/lib/{stella/logger.rb → logger.rb} +6 -11
  8. data/lib/stella.rb +76 -58
  9. data/lib/stella/clients.rb +161 -0
  10. data/lib/stella/command/base.rb +4 -24
  11. data/lib/stella/command/form.rb +36 -0
  12. data/lib/stella/command/get.rb +44 -0
  13. data/lib/stella/common.rb +53 -0
  14. data/lib/stella/crypto.rb +88 -0
  15. data/lib/stella/data/domain.rb +2 -2
  16. data/lib/stella/data/http.rb +164 -36
  17. data/lib/stella/environment.rb +66 -0
  18. data/lib/stella/functest.rb +105 -0
  19. data/lib/stella/loadtest.rb +186 -0
  20. data/lib/{utils → stella}/stats.rb +16 -20
  21. data/lib/stella/testplan.rb +237 -0
  22. data/lib/stella/testrunner.rb +64 -0
  23. data/lib/storable.rb +280 -0
  24. data/lib/threadify.rb +171 -0
  25. data/lib/timeunits.rb +65 -0
  26. data/lib/util/httputil.rb +266 -0
  27. data/stella.gemspec +69 -0
  28. data/tryouts/drb/drb_test.rb +65 -0
  29. data/tryouts/drb/open4.rb +19 -0
  30. data/tryouts/drb/slave.rb +27 -0
  31. data/tryouts/oo_tryout.rb +30 -0
  32. metadata +39 -107
  33. data/README.textile +0 -162
  34. data/bin/stella +0 -12
  35. data/bin/stella.bat +0 -12
  36. data/lib/daemonize.rb +0 -56
  37. data/lib/pcaplet.rb +0 -180
  38. data/lib/stella/adapter/ab.rb +0 -337
  39. data/lib/stella/adapter/base.rb +0 -106
  40. data/lib/stella/adapter/httperf.rb +0 -305
  41. data/lib/stella/adapter/pcap_watcher.rb +0 -221
  42. data/lib/stella/adapter/proxy_watcher.rb +0 -76
  43. data/lib/stella/adapter/siege.rb +0 -341
  44. data/lib/stella/cli.rb +0 -258
  45. data/lib/stella/cli/agents.rb +0 -73
  46. data/lib/stella/cli/base.rb +0 -55
  47. data/lib/stella/cli/language.rb +0 -18
  48. data/lib/stella/cli/localtest.rb +0 -78
  49. data/lib/stella/cli/sysinfo.rb +0 -16
  50. data/lib/stella/cli/watch.rb +0 -278
  51. data/lib/stella/command/localtest.rb +0 -358
  52. data/lib/stella/response.rb +0 -85
  53. data/lib/stella/storable.rb +0 -201
  54. data/lib/stella/support.rb +0 -276
  55. data/lib/stella/sysinfo.rb +0 -257
  56. data/lib/stella/test/definition.rb +0 -79
  57. data/lib/stella/test/run/summary.rb +0 -70
  58. data/lib/stella/test/stats.rb +0 -114
  59. data/lib/stella/text.rb +0 -64
  60. data/lib/stella/text/resource.rb +0 -38
  61. data/lib/utils/crypto-key.rb +0 -84
  62. data/lib/utils/domainutil.rb +0 -47
  63. data/lib/utils/escape.rb +0 -302
  64. data/lib/utils/fileutil.rb +0 -78
  65. data/lib/utils/httputil.rb +0 -266
  66. data/lib/utils/mathutil.rb +0 -15
  67. data/lib/utils/textgraph.rb +0 -267
  68. data/lib/utils/timerutil.rb +0 -58
  69. data/lib/win32/Console.rb +0 -970
  70. data/lib/win32/Console/ANSI.rb +0 -305
  71. data/support/kvm.h +0 -91
  72. data/support/ruby-pcap-takuma-notes.txt +0 -19
  73. data/support/ruby-pcap-takuma-patch.txt +0 -30
  74. data/support/text/en.yaml +0 -80
  75. data/support/text/nl.yaml +0 -7
  76. data/support/useragents.txt +0 -75
  77. data/tests/01-util_test.rb +0 -0
  78. data/tests/02-stella-util_test.rb +0 -42
  79. data/tests/10-stella_test.rb +0 -104
  80. data/tests/11-stella-storable_test.rb +0 -68
  81. data/tests/60-stella-command_test.rb +0 -248
  82. data/tests/80-stella-cli_test.rb +0 -45
  83. data/tests/spec-helper.rb +0 -31
@@ -0,0 +1,19 @@
1
+ $: << '/usr/jruby-1.1.6/lib/ruby/gems/1.8/gems/open4-0.9.6/lib/'
2
+
3
+
4
+ require "open4"
5
+
6
+
7
+ pid, stdin, stdout, stderr = Open4::popen4 "sh"
8
+
9
+ stdin.puts "echo 42.out"
10
+ stdin.puts "echo 42.err 1>&2"
11
+ stdin.close
12
+
13
+ ignored, status = Process::waitpid2 pid
14
+
15
+ puts "pid : #{ pid }"
16
+ puts "stdout : #{ stdout.read.strip }"
17
+ puts "stderr : #{ stderr.read.strip }"
18
+ puts "status : #{ status.inspect }"
19
+ puts "exitstatus : #{ status.exitstatus }"
@@ -0,0 +1,27 @@
1
+
2
+ # See: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/227105
3
+ # See: http://jsgoecke.wordpress.com/2009/01/30/using-drb-with-adhearsion/
4
+ # See: http://docs.adhearsion.com/display/adhearsion/Using+DRb
5
+
6
+ $: << 'lib'
7
+
8
+ require 'rubygems'
9
+ require 'slave'
10
+ #
11
+ # simple usage is simply to stand up a server object as a slave. you do not
12
+ # need to wait for the server, join it, etc. it will die when the parent
13
+ # process dies - even under 'kill -9' conditions
14
+ #
15
+ class Server
16
+ def add_two n
17
+ n + 2
18
+ end
19
+ end
20
+
21
+ slave = Slave.new :object => Server.new
22
+
23
+ server = slave.object
24
+ p server.add_two(40) #=> 42
25
+
26
+ slave.shutdown
27
+ sleep 20
@@ -0,0 +1,30 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) # Make sure our local lib is first in line
2
+
3
+ require 'yaml'
4
+
5
+ require 'stella'
6
+
7
+
8
+ tp = Stella::TestPlan.new(:oo_tryout)
9
+ tp.protocol = :http
10
+ tp.servers << "localhost:3114"
11
+
12
+ # STEP 1
13
+ req = Stella::Data::HTTPRequest.new("/upload", :POST)
14
+ req.body = "a.pdf", "bill"
15
+ req.add_header "X-Stella", "Yay!"
16
+ req.add_response(200, 201) do |headers, body|
17
+ puts headers["Set-Cookie"]
18
+ puts body.inspect
19
+ data = YAML::load(body)
20
+ @product_id = data['id']
21
+ puts "ID: #{@product_id}"
22
+ end
23
+ tp.add_request(req)
24
+
25
+
26
+ ft = Stella::FunctionalTest.new(:oo_tryout)
27
+ ft.testplan = tp
28
+ ft.run
29
+
30
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solutious-stella
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-14 00:00:00 -08:00
12
+ date: 2009-02-25 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: net-dns
16
+ name: httpclient
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -21,127 +22,58 @@ dependencies:
21
22
  - !ruby/object:Gem::Version
22
23
  version: "0"
23
24
  version:
24
- - !ruby/object:Gem::Dependency
25
- name: mongrel
26
- version_requirement:
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: "0"
32
- version:
33
- description: Your friend in performance testing.
34
- email:
35
- executables:
36
- - stella
37
- - stella.bat
25
+ description: Your friend in performance testing
26
+ email: delano@solutious.com
27
+ executables: []
28
+
38
29
  extensions: []
39
30
 
40
31
  extra_rdoc_files:
41
- - README.textile
42
- - LICENSE
32
+ - README.rdoc
33
+ - LICENSE.txt
43
34
  files:
44
- - README.textile
45
35
  - CHANGES.txt
46
- - LICENCE.txt
36
+ - LICENSE.txt
37
+ - README.rdoc
47
38
  - Rakefile
48
- - bin/stella
49
- - bin/stella.bat
50
- - lib/daemonize.rb
51
- - lib/pcaplet.rb
52
- - lib/stella/adapter/ab.rb
53
- - lib/stella/adapter/base.rb
54
- - lib/stella/adapter/httperf.rb
55
- - lib/stella/adapter/pcap_watcher.rb
56
- - lib/stella/adapter/proxy_watcher.rb
57
- - lib/stella/adapter/siege.rb
58
- - lib/stella/cli/agents.rb
59
- - lib/stella/cli/base.rb
60
- - lib/stella/cli/language.rb
61
- - lib/stella/cli/localtest.rb
62
- - lib/stella/cli/sysinfo.rb
63
- - lib/stella/cli/watch.rb
64
- - lib/stella/cli.rb
39
+ - bin/example_test.rb
40
+ - bin/example_webapp.rb
41
+ - lib/logger.rb
42
+ - lib/stella.rb
43
+ - lib/stella/clients.rb
65
44
  - lib/stella/command/base.rb
66
- - lib/stella/command/localtest.rb
45
+ - lib/stella/command/form.rb
46
+ - lib/stella/command/get.rb
47
+ - lib/stella/common.rb
48
+ - lib/stella/crypto.rb
67
49
  - lib/stella/data/domain.rb
68
50
  - lib/stella/data/http.rb
69
- - lib/stella/logger.rb
70
- - lib/stella/response.rb
71
- - lib/stella/storable.rb
72
- - lib/stella/support.rb
73
- - lib/stella/sysinfo.rb
74
- - lib/stella/test/definition.rb
75
- - lib/stella/test/run/summary.rb
76
- - lib/stella/test/stats.rb
77
- - lib/stella/text/resource.rb
78
- - lib/stella/text.rb
79
- - lib/stella.rb
80
- - lib/utils/crypto-key.rb
81
- - lib/utils/domainutil.rb
82
- - lib/utils/escape.rb
83
- - lib/utils/fileutil.rb
84
- - lib/utils/httputil.rb
85
- - lib/utils/mathutil.rb
86
- - lib/utils/stats.rb
87
- - lib/utils/textgraph.rb
88
- - lib/utils/timerutil.rb
89
- - lib/win32/Console/ANSI.rb
90
- - lib/win32/Console.rb
91
- - tests/01-util_test.rb
92
- - tests/02-stella-util_test.rb
93
- - tests/10-stella_test.rb
94
- - tests/11-stella-storable_test.rb
95
- - tests/60-stella-command_test.rb
96
- - tests/80-stella-cli_test.rb
97
- - tests/spec-helper.rb
98
- - support/kvm.h
99
- - support/ruby-pcap-takuma-notes.txt
100
- - support/ruby-pcap-takuma-patch.txt
101
- - support/text/en.yaml
102
- - support/text/nl.yaml
103
- - support/useragents.txt
104
- - vendor/drydock/bin/example
105
- - vendor/drydock/drydock.gemspec
106
- - vendor/drydock/lib/drydock/exceptions.rb
107
- - vendor/drydock/lib/drydock.rb
108
- - vendor/drydock/LICENSE.txt
109
- - vendor/drydock/README.textile
110
- - vendor/drydock/test/command_test.rb
111
- - vendor/useragent/init.rb
112
- - vendor/useragent/lib/user_agent/browsers/all.rb
113
- - vendor/useragent/lib/user_agent/browsers/gecko.rb
114
- - vendor/useragent/lib/user_agent/browsers/internet_explorer.rb
115
- - vendor/useragent/lib/user_agent/browsers/opera.rb
116
- - vendor/useragent/lib/user_agent/browsers/webkit.rb
117
- - vendor/useragent/lib/user_agent/browsers.rb
118
- - vendor/useragent/lib/user_agent/comparable.rb
119
- - vendor/useragent/lib/user_agent/operating_systems.rb
120
- - vendor/useragent/lib/user_agent.rb
121
- - vendor/useragent/MIT-LICENSE
122
- - vendor/useragent/README
123
- - vendor/useragent/spec/browsers/gecko_user_agent_spec.rb
124
- - vendor/useragent/spec/browsers/internet_explorer_user_agent_spec.rb
125
- - vendor/useragent/spec/browsers/opera_user_agent_spec.rb
126
- - vendor/useragent/spec/browsers/other_user_agent_spec.rb
127
- - vendor/useragent/spec/browsers/webkit_user_agent_spec.rb
128
- - vendor/useragent/spec/spec_helper.rb
129
- - vendor/useragent/spec/user_agent_spec.rb
130
- - vendor/useragent/useragent.gemspec
131
- - LICENSE
51
+ - lib/stella/environment.rb
52
+ - lib/stella/functest.rb
53
+ - lib/stella/loadtest.rb
54
+ - lib/stella/stats.rb
55
+ - lib/stella/testplan.rb
56
+ - lib/stella/testrunner.rb
57
+ - lib/storable.rb
58
+ - lib/threadify.rb
59
+ - lib/timeunits.rb
60
+ - lib/util/httputil.rb
61
+ - stella.gemspec
62
+ - tryouts/drb/drb_test.rb
63
+ - tryouts/drb/open4.rb
64
+ - tryouts/drb/slave.rb
65
+ - tryouts/oo_tryout.rb
132
66
  has_rdoc: true
133
67
  homepage: http://github.com/solutious/stella
134
68
  post_install_message:
135
69
  rdoc_options:
136
70
  - --line-numbers
137
- - --inline-source
138
71
  - --title
139
- - Stella
72
+ - Your friend in performance testing
140
73
  - --main
141
- - README.textile
74
+ - README.rdoc
142
75
  require_paths:
143
76
  - lib
144
- - vendor
145
77
  required_ruby_version: !ruby/object:Gem::Requirement
146
78
  requirements:
147
79
  - - ">="
@@ -160,6 +92,6 @@ rubyforge_project: stella
160
92
  rubygems_version: 1.2.0
161
93
  signing_key:
162
94
  specification_version: 2
163
- summary: Run Apache Bench, Siege, or httperf tests in batches and aggregate results.
95
+ summary: Your friend in performance testing
164
96
  test_files: []
165
97
 
data/README.textile DELETED
@@ -1,162 +0,0 @@
1
- h1. Stella - Your Performance Testing Friend
2
-
3
- Release: 0.5.5 (2009-01-14)
4
-
5
- This is a BETA release. Proceed in double verify mode!
6
-
7
- h2. Overview
8
-
9
- Stella is a command-line tool for running, reporting, and analyzing performance tests.
10
-
11
-
12
- h2. Prerequisites
13
-
14
- * Linux, BSD, Solaris
15
- * Ruby 1.8.x, 1.9.x, or JRuby 1.1
16
- * Native Libraries (c or c++)
17
- ** Pcap (optional, for packet sniffing)
18
- * Ruby Libraries
19
- ** rspec
20
- ** net-dns
21
- ** Ruby-Pcap (optional, for packet sniffing)
22
-
23
- * One of:
24
- ** "Apache Bench":http://httpd.apache.org/docs/2.2/programs/ab.html
25
- ** "Siege":http://www.joedog.org/index/siege-home
26
- ** "Httperf":http://www.hpl.hp.com/research/linux/httperf/
27
- *** _Note: Argument handling for Httperf is incomplete_
28
-
29
-
30
- h2. Installation
31
-
32
- Get it in one of the following ways:
33
-
34
- * RubyForge: http://stella.rubyforge.org/
35
- ** gem install stella
36
- * git clone git://github.com/solutious/stella.git
37
- ** git submodule init
38
- ** git submodule update
39
-
40
- Use ab, siege, and httperf like you normally would with the addition of stella at the beginning (examples are below).
41
-
42
- h3. Debian (and derivatives)
43
-
44
- Debian and its derivative (Ubunutu) handling packing a bit differently (see: http://pkg-ruby-extras.alioth.debian.org/rubygems.html). There are a couple errors to watch out for during the installation. The solutions are below:
45
-
46
- "no such file to load -- mkmf (LoadError)"
47
- $ apt-get install ruby1.8-dev
48
-
49
- "ERROR: RDoc documentation generator not installed!"
50
- $ apt-get install rdoc
51
-
52
-
53
- h3. Installing libpcap and Ruby-Pcap
54
-
55
- *Stella currently supports packet filtering with Native Ruby (no JRuby) on Linux/Unix/OS X only.*
56
- *Ruby-Pcap does not compile with Ruby 1.9.1-RC1*
57
-
58
- libpcap and Ruby-Pcap are used to by Stella's watch command to filter packets off the network. This allows you to view HTTP requests and response (including headers and content) without having to configure a proxy. Both need to be compiled and installed separately:
59
- * "libpcap":http://www.tcpdump.org/release/
60
- * "Ruby-Pcap":http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-e.html
61
-
62
- On Ruby, 1.8.6, Ruby-Pcap produces the following warnings at runtime: "pcap.bundle: warning: do not use Fixnums as Symbols". See: support/ruby-pcap-takuma-notes.txt.
63
-
64
-
65
- h2. Usage Examples
66
-
67
- Run Apache Bench with a warmup and rampup from 10 to 20 virtual users in increments of 5
68
- $ stella --warmup=0.5 --rampup=5,20 ab -c 10 -n 50 http://stellaaahhhh.com/search?term=trooper
69
-
70
- Run Siege, repeat the test 5 times. Automatically creates a summary averages and standard deviations.
71
- $ stella --agent=ff-3-osx --testruns=5 siege -c 10 -r 5 -b http://stellaaahhhh.com/search?term=flock+of+seagulls
72
-
73
- Run Httperf like you normally would (but all the test data will be collected for you)
74
- $ stella httperf --hog --client=0/1 --server=127.0.0.1 --port=5600 --uri=/ --rate=50 --num-conns=100 --timeout=5
75
-
76
- Monitor DNS traffic using Pcap
77
- $ stella watch -C dns
78
-
79
- Monitor HTTP traffic using Pcap
80
- $ stella watch -C http
81
-
82
- Monitor HTTP traffic using a proxy (don't forget to configure your browser)
83
- $ stella watch -P
84
-
85
-
86
- h3. Sample Output
87
-
88
- <pre><code>
89
- $ stella -f csv -x 5 -w 0.75 -r 25,125 -m "httpd 2.2.9-prefork" siege -c 75 -r 10 -b http://testapp:5600/
90
- Writing test data to: stella/testruns/2008-12-23/test-054
91
-
92
- Warmup: 3750@37/1 100% 264.29/s 0.140s 0.024MB/s 0.340MB 14.000s .
93
-
94
- -------------------------------------------------------------------
95
- REQ@VU/s AVAIL REQ/s RTIME DATA/s DATA TIME
96
-
97
- Run 01: 7500@75/1 100% 345.30/s 0.210s 0.032MB/s 0.690MB 21.720s
98
- Run 02: 7500@75/1 100% 360.58/s 0.200s 0.033MB/s 0.690MB 20.800s
99
- Run 03: 7500@75/1 100% 359.02/s 0.210s 0.033MB/s 0.690MB 20.890s
100
- -------------------------------------------------------------------
101
- Total: 22500@73 100% 354.97/s 0.207s 0.033MB/s 2.070MB 63.410s
102
- Std Dev: 6.86/s 0.005s 0.001MB/s 0.414s
103
-
104
- Run 04: 10000@100/1 100% 384.47/s 0.260s 0.035MB/s 0.920MB 26.010s
105
- Run 05: 10000@100/1 100% 385.06/s 0.260s 0.035MB/s 0.920MB 25.970s
106
- Run 06: 10000@100/1 100% 380.95/s 0.260s 0.035MB/s 0.920MB 26.250s
107
- -------------------------------------------------------------------
108
- Total: 30000@98 100% 383.49/s 0.260s 0.035MB/s 2.760MB 78.230s
109
- Std Dev: 1.81/s 0.000s 0.000MB/s 0.124s
110
-
111
- Run 07: 12500@125/1 100% 397.20/s 0.310s 0.036MB/s 1.140MB 31.470s
112
- Run 08: 12500@125/1 100% 397.08/s 0.310s 0.036MB/s 1.140MB 31.480s
113
- Run 09: 12500@125/1 100% 397.58/s 0.310s 0.036MB/s 1.140MB 31.440s
114
- -------------------------------------------------------------------
115
- Total: 37500@123 100% 397.29/s 0.310s 0.036MB/s 3.420MB 94.390s
116
- Std Dev: 0.21/s 0.000s 0.000MB/s 0.017s
117
-
118
- -------------------------------------------------------------------
119
- Total: 90000@98 100% 378.58/s 0.259s 0.035MB/s 8.250MB 236.030s
120
- Std Dev: 18.09/s 0.042s 0.002MB/s 4.225s
121
- </pre></code>
122
-
123
- All test data is collected under ./stella (this can be changed with the parameter --datapath):
124
-
125
- $ ls -l ./stella/testruns/2008-12-23/
126
- test-001 test-002 test-003 test-004 test-005 test-006 ... test-054
127
-
128
-
129
- A symbolic link points to the most recent test:
130
-
131
- $ ls -l ./stella/latest/
132
- ID.txt MESSAGE.txt SUMMARY.csv run01 run02 run03 run04 run05 warmup
133
-
134
-
135
- Each run directory contains all associated data, including the command and configuration
136
-
137
- $ ls -l ./stella/latest/run01/
138
- COMMAND.txt STDOUT.txt siege.log STDERR.txt SUMMARY.csv siegerc
139
-
140
-
141
- h2. Known Issues
142
-
143
- * The output for the REQ@VU/s columns is a work in progress. It's not aligned across tools and it will likely change in the next release.
144
- * The summary data has not been audited. Don't trust and double verify!
145
- * httperf is functional but not all parameters are supported.
146
- * The Ruby API has not been finalized. It's functional but there's no example because it is subject to change.
147
- * There is an issue with parsing ipv6 ip addresses with Ruby-Pcap or Net-DNS. This affects only dns sniffing with pcap. Reproduce by running "stella watch -C dns" and requesting "apple.com"
148
-
149
-
150
- h2. Report an issue
151
-
152
- Email issues and bugs to stella@solutious.com
153
-
154
-
155
- h2. More Information
156
-
157
- "Stellaaahhhh":http://www.youtube.com/watch?v=wmq-JDonTpc
158
-
159
-
160
- h2. License
161
-
162
- See LICENSE.txt
data/bin/stella DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- STELLA_HOME = File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
- $:.unshift(File.join(STELLA_HOME, 'lib')) # Make sure our local lib is first in line
5
-
6
- require 'stella'
7
- require 'stella/cli'
8
-
9
- ## Create and run the application
10
- app = Stella::CLI.new(ARGV, STDIN)
11
- app.run
12
-