wasp 0.2.0
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/Gemfile +5 -0
- data/LICENSE +20 -0
- data/README.md +77 -0
- data/Rakefile +15 -0
- data/bin/wasp +6 -0
- data/config/aws.yml +4 -0
- data/lib/wasp.rb +14 -0
- data/lib/wasp/config.rb +11 -0
- data/lib/wasp/const.rb +21 -0
- data/lib/wasp/core_ext.rb +113 -0
- data/lib/wasp/ec2.rb +355 -0
- data/lib/wasp/nest.rb +321 -0
- data/lib/wasp/queenwasp.rb +7 -0
- data/lib/wasp/stingab.rb +355 -0
- data/lib/wasp/wasp.rb +514 -0
- data/report/makeplot.rb +131 -0
- data/test/test_wasp.rb +9 -0
- data/wasp.gemspec +38 -0
- metadata +112 -0
data/report/makeplot.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
def usage
|
6
|
+
puts "USAGE: makeplot.rb [DIRECTORY]"
|
7
|
+
exit false
|
8
|
+
end
|
9
|
+
|
10
|
+
def contents(title, list, output="out.png")
|
11
|
+
content = "
|
12
|
+
# output as png image
|
13
|
+
set terminal png size 1024, 768
|
14
|
+
|
15
|
+
# save file to #{output}
|
16
|
+
set output \"#{output}\"
|
17
|
+
|
18
|
+
# graph title
|
19
|
+
set title \"#{title}\"
|
20
|
+
|
21
|
+
# nicer aspect ratio for image size
|
22
|
+
set size 1, 1
|
23
|
+
|
24
|
+
# y-axis grid
|
25
|
+
set grid y
|
26
|
+
|
27
|
+
# x-axis label
|
28
|
+
set xlabel \"request\"
|
29
|
+
|
30
|
+
# y-axis label
|
31
|
+
set ylabel \"response time (ms)\"\n\n"
|
32
|
+
|
33
|
+
plots = ''
|
34
|
+
|
35
|
+
if output == "summary.png" then
|
36
|
+
plots = "plot \"#{list}\" using 9 smooth frequency title \"request\", \
|
37
|
+
\"#{list}\" using 7 smooth frequency title \"connect\""
|
38
|
+
elsif output == "out.png" then
|
39
|
+
files = list.dup
|
40
|
+
return nil if files.nil?
|
41
|
+
|
42
|
+
if files.count > 0 then
|
43
|
+
first_file = files.pop
|
44
|
+
without_ext = first_file.sub(File.extname(first_file), '')
|
45
|
+
line = "plot \"#{first_file}\" using 9 smooth frequency title \"#{without_ext}\""
|
46
|
+
plots += line
|
47
|
+
end
|
48
|
+
|
49
|
+
files.each do |file|
|
50
|
+
without_ext = file.sub(File.extname(file), '')
|
51
|
+
line = ", \"#{file}\" using 9 smooth frequency title \"#{without_ext}\""
|
52
|
+
plots += line
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
plotfile = content + plots
|
57
|
+
|
58
|
+
plotfile
|
59
|
+
end
|
60
|
+
|
61
|
+
args = ARGV
|
62
|
+
directory = args.shift
|
63
|
+
|
64
|
+
usage if directory.nil?
|
65
|
+
|
66
|
+
dir = Dir.open(directory)
|
67
|
+
|
68
|
+
files = []
|
69
|
+
print "Find and unzip files..\n"
|
70
|
+
dir.each do |file|
|
71
|
+
if File.extname(file) == ".zip" then
|
72
|
+
`unzip "#{directory}/#{file}"`
|
73
|
+
`rm #{directory}/#{file}`
|
74
|
+
file.sub!(".zip", ".plot")
|
75
|
+
files.push(file)
|
76
|
+
puts "pushing #{file}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
print "Generate gnuplot file..\n"
|
81
|
+
dirname = directory.sub('/', '')
|
82
|
+
content = contents(dirname, files)
|
83
|
+
|
84
|
+
File.open(dirname + '.p', "w") do |file|
|
85
|
+
file.write(content)
|
86
|
+
end
|
87
|
+
print "Creating big one..\n"
|
88
|
+
|
89
|
+
fp = []
|
90
|
+
files.each do |f|
|
91
|
+
fd = File.open(f, "r")
|
92
|
+
fp.push(fd)
|
93
|
+
end
|
94
|
+
|
95
|
+
File.open("total.plot", "w+") do |file|
|
96
|
+
totalsize = 0
|
97
|
+
fp.each do |f|
|
98
|
+
totalsize += f.size
|
99
|
+
end
|
100
|
+
while file.size < totalsize do
|
101
|
+
begin
|
102
|
+
fp.each do |p|
|
103
|
+
line = p.readline
|
104
|
+
file.write(line)
|
105
|
+
end
|
106
|
+
rescue => ex
|
107
|
+
puts "#{ex.message}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
content = contents(dirname + "-summary", "total.plot", "summary.png")
|
113
|
+
|
114
|
+
File.open('total.p', "w") do |file|
|
115
|
+
file.write(content)
|
116
|
+
end
|
117
|
+
|
118
|
+
print "Generate graph image..\n"
|
119
|
+
`gnuplot #{dirname}.p`
|
120
|
+
`gnuplot total.p`
|
121
|
+
|
122
|
+
begin
|
123
|
+
FileUtils.mv(files + [dirname+'.p', "total.p", "total.plot", "out.png", "summary.png"], dirname)
|
124
|
+
rescue => ex
|
125
|
+
puts "#{ex.message}"
|
126
|
+
end
|
127
|
+
print "End.\n"
|
128
|
+
print "You can see the report image in #{dirname}/out.png\n"
|
129
|
+
|
130
|
+
exit true
|
131
|
+
|
data/test/test_wasp.rb
ADDED
data/wasp.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'wasp'
|
3
|
+
s.version = '0.2.0'
|
4
|
+
s.summary = "Wasps!"
|
5
|
+
s.description = "Wasps!"
|
6
|
+
s.authors = ["arkemiq"]
|
7
|
+
s.email = 'arkemiq@gmail.com'
|
8
|
+
s.files = %w[
|
9
|
+
Gemfile
|
10
|
+
Rakefile
|
11
|
+
LICENSE
|
12
|
+
README.md
|
13
|
+
wasp.gemspec
|
14
|
+
bin/wasp
|
15
|
+
config/aws.yml
|
16
|
+
lib/wasp.rb
|
17
|
+
lib/wasp/wasp.rb
|
18
|
+
lib/wasp/nest.rb
|
19
|
+
lib/wasp/config.rb
|
20
|
+
lib/wasp/const.rb
|
21
|
+
lib/wasp/core_ext.rb
|
22
|
+
lib/wasp/ec2.rb
|
23
|
+
lib/wasp/queenwasp.rb
|
24
|
+
lib/wasp/stingab.rb
|
25
|
+
report/makeplot.rb
|
26
|
+
test/test_wasp.rb
|
27
|
+
]
|
28
|
+
s.license = 'MIT'
|
29
|
+
s.required_ruby_version = '>= 1.9.2'
|
30
|
+
s.platform = Gem::Platform::RUBY
|
31
|
+
s.homepage = 'http://github.com/arkemiq'
|
32
|
+
s.add_dependency("aws-sdk", ">= 1.3.2")
|
33
|
+
s.add_dependency("net-ssh", ">= 2.3.0")
|
34
|
+
s.add_dependency("net-scp", ">= 1.0.4")
|
35
|
+
s.require_paths = ['lib']
|
36
|
+
s.bindir = 'bin'
|
37
|
+
s.executables = ['wasp']
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wasp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- arkemiq
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-sdk
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.3.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.3.2
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: net-ssh
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.3.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.3.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: net-scp
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.4
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.4
|
62
|
+
description: Wasps!
|
63
|
+
email: arkemiq@gmail.com
|
64
|
+
executables:
|
65
|
+
- wasp
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- Gemfile
|
70
|
+
- Rakefile
|
71
|
+
- LICENSE
|
72
|
+
- README.md
|
73
|
+
- wasp.gemspec
|
74
|
+
- bin/wasp
|
75
|
+
- config/aws.yml
|
76
|
+
- lib/wasp.rb
|
77
|
+
- lib/wasp/wasp.rb
|
78
|
+
- lib/wasp/nest.rb
|
79
|
+
- lib/wasp/config.rb
|
80
|
+
- lib/wasp/const.rb
|
81
|
+
- lib/wasp/core_ext.rb
|
82
|
+
- lib/wasp/ec2.rb
|
83
|
+
- lib/wasp/queenwasp.rb
|
84
|
+
- lib/wasp/stingab.rb
|
85
|
+
- report/makeplot.rb
|
86
|
+
- test/test_wasp.rb
|
87
|
+
homepage: http://github.com/arkemiq
|
88
|
+
licenses:
|
89
|
+
- MIT
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.9.2
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 1.8.23
|
109
|
+
signing_key:
|
110
|
+
specification_version: 3
|
111
|
+
summary: Wasps!
|
112
|
+
test_files: []
|