tsung_stats_server 0.0.1
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/LICENSE +9 -0
- data/README +11 -0
- data/Rakefile +10 -0
- data/bin/tsung_stats_server +28 -0
- data/doc/README.html +46 -0
- data/doc/TSSApp.html +793 -0
- data/doc/all-files.html +23 -0
- data/doc/all-methods.html +42 -0
- data/doc/all-namespaces.html +24 -0
- data/doc/api/apple-touch-icon.png +0 -0
- data/doc/api/classes/Object.html +117 -0
- data/doc/api/classes/TSSApp.html +147 -0
- data/doc/api/created.rid +1 -0
- data/doc/api/css/main.css +263 -0
- data/doc/api/css/panel.css +383 -0
- data/doc/api/css/reset.css +53 -0
- data/doc/api/favicon.ico +0 -0
- data/doc/api/files/LICENSE.html +84 -0
- data/doc/api/files/README.html +77 -0
- data/doc/api/files/Rakefile.html +72 -0
- data/doc/api/files/lib/tsung_stats_server_rb.html +61 -0
- data/doc/api/files/lib/webapp_rb.html +74 -0
- data/doc/api/i/arrows.png +0 -0
- data/doc/api/i/results_bg.png +0 -0
- data/doc/api/i/tree_bg.png +0 -0
- data/doc/api/index.html +14 -0
- data/doc/api/js/jquery-1.3.2.min.js +19 -0
- data/doc/api/js/jquery-effect.js +593 -0
- data/doc/api/js/main.js +22 -0
- data/doc/api/js/searchdoc.js +628 -0
- data/doc/api/panel/index.html +71 -0
- data/doc/api/panel/search_index.js +1 -0
- data/doc/api/panel/tree.js +1 -0
- data/doc/app.js +18 -0
- data/doc/custom.css +1 -0
- data/doc/history.erb +16 -0
- data/doc/index.erb +6 -0
- data/doc/index.html +19 -0
- data/doc/index.xhtml +221 -0
- data/doc/intro.erb +76 -0
- data/doc/jquery.js +11 -0
- data/doc/setup.erb +33 -0
- data/doc/style.css +81 -0
- data/doc/syntax_highlight.css +24 -0
- data/doc/theory.erb +3 -0
- data/doc/top-level-namespace.html +25 -0
- data/doc/usage.erb +23 -0
- data/lib/tsung_stats_server.rb +15 -0
- data/lib/webapp.rb +134 -0
- data/test/tsung_stats_server.rb +13 -0
- metadata +153 -0
data/doc/setup.erb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
<% chapter "Setup" do %>
|
2
|
+
<% section "Requirements" do %>
|
3
|
+
Your system needs the following software to run **tsung\_stats\_server**.
|
4
|
+
|
5
|
+
| Software | Description | Notes |
|
6
|
+
| -------- | ----------- | ----- |
|
7
|
+
| [Ruby](http://ruby-lang.org) | Ruby language interpreter | Version 1.8.6 is required. |
|
8
|
+
| [RubyGems](http://rubygems.org) | Ruby packaging system | Version 1.3.1 is required. |
|
9
|
+
| [Sinatra](http://www.sinatrarb.com) | The Sinatra web framework | Version 0.9.x is required. |
|
10
|
+
| [Rubyzip](http://rubyzip.sourceforge.net/ ) | Zip file library | Version 0.9.7 is required. |
|
11
|
+
| [Inochi](http://snk.tuxfamily.org/lib/inochi) | Inochi | Version 0.3.0 is required. |
|
12
|
+
| [Tsung](http://tsung.erlang-projects.org/) | Tsung | Version 1.3.0 is required. |
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% section "Installation" do %>
|
16
|
+
You can install **Tsung Stats Server** by running this command:
|
17
|
+
|
18
|
+
gem install -f <%= $program %>
|
19
|
+
|
20
|
+
To check whether the installation was sucessful, run this command:
|
21
|
+
|
22
|
+
<%= $program %> --version
|
23
|
+
|
24
|
+
If the installation was successful, you will see output like this:
|
25
|
+
|
26
|
+
<pre><%= verbatim `ruby bin/#{$program} --version` %></pre>
|
27
|
+
|
28
|
+
If you do not see such output, you may
|
29
|
+
<%= xref "License", "ask the author(s)" %> for help.
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
|
33
|
+
<% end %>
|
data/doc/style.css
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
body { font-family: Myriad, Helvetica, Arial, Verdana, sans-serif; font-size: 10pt; }
|
2
|
+
#nav ul { list-style: none; padding: 0; margin: 0; }
|
3
|
+
#nav ul li { white-space: nowrap; }
|
4
|
+
#nav ul li.deprecated a { text-decoration: line-through; font-style: italic; }
|
5
|
+
#nav li em { font-size: 0.9em; color: #999; }
|
6
|
+
#nav h1 { font-size: 1.2em; }
|
7
|
+
h1 { font-size: 1.5em; background: #eee; color: #000; padding: 3px; text-decoration: none; }
|
8
|
+
h2 { font-size: 1.2em; background: #eef; color: #000; padding: 3px; text-decoration: none; }
|
9
|
+
h3 { font-size: 1.0em; }
|
10
|
+
.clear { clear: both; }
|
11
|
+
.section.module h1.title, .section.class h1.title, .section.readme h1 { color: #000; background: #ddd; border: 1px solid #ccc; padding: 7px; margin: 0; margin-bottom: 7px; }
|
12
|
+
.section.class h1.title { border-bottom: 0; margin-bottom: 0; }
|
13
|
+
.section.class > .section.docstring, .section.module > .section.docstring { padding: 0; }
|
14
|
+
#initialize-instance_method .methodsignature .return_types { display: none; }
|
15
|
+
.methodsignature .visibility { display: none; }
|
16
|
+
.methodsignature .name { font-weight: bold; }
|
17
|
+
.methoddetails .method_header h3 { display: none; }
|
18
|
+
.section h3 { margin-left: 20px; }
|
19
|
+
.section.method { background: #eee; margin-bottom: 0.8em; }
|
20
|
+
.overload .section.method { background: #f5f5f5; margin-left: 2em; margin-right: 2em; }
|
21
|
+
.section.tags,.section.docstring,.section.source { padding: 5px 12px; }
|
22
|
+
.section.method .details_title { font-size: 1.1em; background: #dde; padding: 7px; }
|
23
|
+
.overload .section.method .details_title { background: #e2e2ea; }
|
24
|
+
.overload .section.source { display: none; }
|
25
|
+
.section.method .details_title p.aliases { padding: 0; margin: 0; font-style: italic; font-size: 0.9em; }
|
26
|
+
.section.method .details_title p.aliases tt { font-weight: bold; font-style: normal; font-size: 1.1em; }
|
27
|
+
.section.constants dl { font-family: monospace; }
|
28
|
+
.section.constants dt { font-weight: bold; font-size: 1.1em; }
|
29
|
+
.section.constants dt:after { content: " = "; }
|
30
|
+
.section.constants dd { margin-bottom: 1em; }
|
31
|
+
.section .source_link { font-size: 0.9em; }
|
32
|
+
.section .source_code { display: none; }
|
33
|
+
/*.section.source .source_code pre { float: left; }*/
|
34
|
+
.section.attributes table { padding: 0; width: 100%; }
|
35
|
+
.section.attributes .readwrite { width: 5%; }
|
36
|
+
.section.attributes .name { font-weight: bold; width: 10%; }
|
37
|
+
.section.attributes .aliases { padding-top: 0; padding-left: 0; }
|
38
|
+
.section.attributes .aliases .text { font-size: 0.8em; }
|
39
|
+
.section.attributes .aliases .alias { font-family: monospace; font-weight: bold; }
|
40
|
+
.section.attributes .visibility { font-style: italic; color: #666; width: 5%; }
|
41
|
+
.section.attributes td, .section.attributes th { vertical-align: top; padding: 5px; }
|
42
|
+
.section.attributes th { padding-left: 0; text-align: left; }
|
43
|
+
.section.attributes .docstring p.returns { color: #555; font-style: italic; }
|
44
|
+
.section.attributes .docstring .return_types { font-style: normal; }
|
45
|
+
.section.attributes .docstring { width: 80%; }
|
46
|
+
.section.attributes .docstring * { display: inline; }
|
47
|
+
.section.attributes tr.hasaliases td, .section.attributes tr.hasaliases th { padding-bottom: 0; }
|
48
|
+
.section.deprecated { margin-left: 15px; }
|
49
|
+
.section.inheritance { background: #ddd; padding: 5px; border: 1px solid #ccc; border-top: 0; }
|
50
|
+
.section.inheritance ul { list-style: none; padding-left: 2.2em; margin: 0; }
|
51
|
+
.section.inheritance ul li { line-height: 1.2em; }
|
52
|
+
.section.inheritance ul li:before { content: "↳ "; }
|
53
|
+
.section.inheritance > ul { padding-left: 5px; }
|
54
|
+
.section.inheritance > ul > li:before { content: ""; }
|
55
|
+
.section.inheritance > ul > ul { padding-left: 1em; }
|
56
|
+
.section.methodsummary table { width: 100%; }
|
57
|
+
.section.methodsummary td, .section.methodsummary th { background: #eee; vertical-align: top; padding: 5px; }
|
58
|
+
.section.methodsummary th { background: #dde; text-align: left; white-space: nowrap; padding-right: 12px; }
|
59
|
+
.section.methodsummary .signature { font-family: monospace; font-weight: normal; }
|
60
|
+
.section.methodsummary .signature .name { font-weight: bold; }
|
61
|
+
.section.methodsummary .signature .alias, .section.methodsummary .signature .overload { display: block; }
|
62
|
+
.section.methodsummary .docstring { width: 80%; }
|
63
|
+
.section.methodsummary .docstring * { display: inline; }
|
64
|
+
.section.methodsummary .docstring p.returns { color: #555; font-style: italic; }
|
65
|
+
.section.methodsummary .docstring .return_types { font-style: normal; }
|
66
|
+
.section.tags div { clear: both; }
|
67
|
+
.section.tags h2 { display: none; }
|
68
|
+
.section.tags h3 { font-size: 1.0em; margin-top: 3px; }
|
69
|
+
.section.tags dl { margin-left: 2em; }
|
70
|
+
.section.tags .option table { width: 100%; border: 0; padding: 0; }
|
71
|
+
.section.tags .option th { text-align: left; background: #e5e5e5; padding: 3px; }
|
72
|
+
.section.tags .option td.name { font-family: monospace; }
|
73
|
+
.section.methodmissing p.note { font-style: italic; }
|
74
|
+
.section.constructor p.inherited_msg { font-style: italic; }
|
75
|
+
.included h1, .inherited h1 { font-size: 1em !important; border: 0; margin: 0; padding: 5px; border-bottom: 1px solid #ccc; }
|
76
|
+
.included div, .inherited div { color: #444; margin: 1.5em 0; width: 47%; border: 1px solid #ccc; float: left; margin-right: 12px; }
|
77
|
+
.included p .name, .inherited p .name { font-family: monospace; }
|
78
|
+
.included p, .inherited p { margin: 5px; }
|
79
|
+
#yard_info a:link, #yard_info a:visited { color: #333; }
|
80
|
+
#yard_info { margin-top: 12px; margin-bottom: 7px; text-align: center; color: #444; background: #ddd; padding: 8px; border: 1px solid #ccc; font-size: 0.8em; }
|
81
|
+
#yard_info .yard { font-weight: bold; }
|
@@ -0,0 +1,24 @@
|
|
1
|
+
/* Canvas */
|
2
|
+
.source_code pre.lines { margin-right: 20px; text-align: right; color: #888; }
|
3
|
+
.docstring pre { padding: 12px; padding-left: 0; }
|
4
|
+
.docstring pre, .source_code { background: #222; padding: 12px; margin-top: 8px; border: 1px dashed #ccc; font-size: 0.9em; overflow-x: auto; }
|
5
|
+
|
6
|
+
/* Token colours. Borrowed from pastie.org's "Blackboard" theme */
|
7
|
+
pre.code, pre.lines { font-family: Monaco, Courier, monospace; }
|
8
|
+
pre.code { color: #fff; }
|
9
|
+
pre.code .info.file { color: #888; }
|
10
|
+
pre.code .val, pre.code .int, pre.code .float { color: #61CE3C; }
|
11
|
+
pre.code .dstring, pre.code .tstring_content,
|
12
|
+
pre.code .regexp_beg, pre.code .regexp_end,
|
13
|
+
pre.code .tstring_beg, pre.code .tstring_end { color: #61DE3C; }
|
14
|
+
pre.code .embexpr_beg, pre.code .tstring, pre.code .tstring .rbrace { color: #7CFE65; }
|
15
|
+
pre.code .fid, pre.code .id.new, pre.code .id.to_s,
|
16
|
+
pre.code .id.to_sym, pre.code .id.to_f,
|
17
|
+
pre.code .dot + pre.code .id,
|
18
|
+
pre.code .id.to_i pre.code .id.each { color: #FF6400; }
|
19
|
+
pre.code .comment { color: #AEAEAE; }
|
20
|
+
pre.code .constant, pre.code .const, pre.code .symbol, pre.code .symbeg { color: #D8FA3C; }
|
21
|
+
pre.code .kw { color: #FBDE2D; }
|
22
|
+
pre.code .ivar { color: #AACEFB; }
|
23
|
+
pre.code .gvar, pre.code .backref, pre.code .id.nth_ref { color: #BADEFF; }
|
24
|
+
pre.code .regexp, .dregexp { color: #EA5EFB; }
|
data/doc/theory.erb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
6
|
+
<link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
|
7
|
+
<link rel="stylesheet" href="custom.css" type="text/css" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="syntax_highlight.css" type="text/css" charset="utf-8" />
|
9
|
+
|
10
|
+
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
|
11
|
+
<script src="app.js" type="text/javascript" charset="utf-8"></script>
|
12
|
+
<title>Top Level Namespace</title>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
<div id="content">
|
16
|
+
|
17
|
+
</div>
|
18
|
+
<div id="yard_info">
|
19
|
+
Generated on Tuesday, July 21 2009 at 11:24:31 PM by
|
20
|
+
<abbr class="yard" title="Yay! A Ruby Documentation Tool"><a href="http://yard.soen.ca">YARD</a></abbr>
|
21
|
+
0.2.3.2 (ruby-1.9.1).
|
22
|
+
</div>
|
23
|
+
|
24
|
+
</body>
|
25
|
+
</html>
|
data/doc/usage.erb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
<% chapter "Usage" do %>
|
2
|
+
<% section "Command-line interface" do %>
|
3
|
+
|
4
|
+
You can see the online help by running the following command:
|
5
|
+
|
6
|
+
<%= $program %> --help
|
7
|
+
|
8
|
+
The command-line arguments are:
|
9
|
+
|
10
|
+
| Argument | Description | Default |
|
11
|
+
| -------- | ----------- | ------- |
|
12
|
+
| --logdir | The directory containing the tsung logs | ~/.tsung/log |
|
13
|
+
| --tsung-stats | The command used to call tsung_stats.pl | perl -S /usr/lib/tsung/bin/tsung_stats.pl |
|
14
|
+
| --port | The port to run the server on | 1764 (42 ** 2) |
|
15
|
+
|
16
|
+
This starts the server on your machine. Point your browser to
|
17
|
+
|
18
|
+
http://localhost:1764
|
19
|
+
|
20
|
+
to see a list of available logs and options.
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
#gem 'inochi', '~> 0'
|
3
|
+
require 'inochi'
|
4
|
+
|
5
|
+
Inochi.init :TsungStatsServer,
|
6
|
+
:project => 'skadesgems',
|
7
|
+
:version => '0.0.1',
|
8
|
+
:release => '2009-03-14',
|
9
|
+
:website => 'http://skadesgems.rubyforge.org',
|
10
|
+
:tagline => 'A simple webserver serving tsung stats',
|
11
|
+
:require => {
|
12
|
+
'sinatra' => '~> 0.9',
|
13
|
+
'rubyzip' => '~> 0.9',
|
14
|
+
'markaby' => '~> 0.5'
|
15
|
+
}
|
data/lib/webapp.rb
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'sinatra'
|
2
|
+
require 'markaby'
|
3
|
+
require 'zip/zip'
|
4
|
+
require 'wilson/web'
|
5
|
+
|
6
|
+
Markaby::Builder.set(:indent, 2)
|
7
|
+
|
8
|
+
Sinatra::Application.set(:run => false, :environment =>
|
9
|
+
:production)
|
10
|
+
|
11
|
+
#
|
12
|
+
# The TSSApp class serves log files generated by the Tsung stress
|
13
|
+
# testing tool.
|
14
|
+
#
|
15
|
+
# @representation xml
|
16
|
+
# <?xml encoding="utf-8">
|
17
|
+
# <report>
|
18
|
+
# bla
|
19
|
+
# </report>
|
20
|
+
# @representation json
|
21
|
+
# { "report": "bla" }
|
22
|
+
#
|
23
|
+
class TSSApp < Sinatra::Application
|
24
|
+
include Wilson::Web
|
25
|
+
|
26
|
+
configure do
|
27
|
+
set :public, COMMAND_LINE.logdir
|
28
|
+
set :logdir, COMMAND_LINE.logdir
|
29
|
+
set :tsung_stats, COMMAND_LINE.tsung_stats
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Shows the list of all logs present on the machine.
|
34
|
+
#
|
35
|
+
# @output_types [text/html]
|
36
|
+
# @output_languages [en-US]
|
37
|
+
#
|
38
|
+
get '/' do
|
39
|
+
logdirs = (Dir.entries(options.logdir) - [".", ".."]).sort
|
40
|
+
logdirs.reject! {|file| file =~ /\.zip/ }
|
41
|
+
list_dirs(logdirs)
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Shows a report. If the report is not generated already, it will be.
|
46
|
+
#
|
47
|
+
# @url_param dir The date on which the measurement was taken.
|
48
|
+
# @get force If present and set to any value,
|
49
|
+
# regeneration of the report is forced
|
50
|
+
# @output_types [text/html]
|
51
|
+
# @output_languages [en-US]
|
52
|
+
#
|
53
|
+
get '/:dir/report.html' do
|
54
|
+
run_stats(params[:dir])
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# Delivers a report as zip file. If not generated, report generation takes place.
|
59
|
+
#
|
60
|
+
# @url_param [dir] The date on which the measurement was taken.
|
61
|
+
#
|
62
|
+
# @output_types [application/zip]
|
63
|
+
#
|
64
|
+
get '/:dir.zip' do
|
65
|
+
filename = params[:dir].gsub(/:/, '-')
|
66
|
+
unless File.exists?(File.join(options.logdir, "#{filename}.zip"))
|
67
|
+
zip(params[:dir], filename)
|
68
|
+
end
|
69
|
+
attachment("#{filename}.zip")
|
70
|
+
content_type("application/zip")
|
71
|
+
File.read(File.join(options.logdir, "#{filename}.zip"))
|
72
|
+
end
|
73
|
+
|
74
|
+
#
|
75
|
+
# Runs the report generation. If a report already exists,
|
76
|
+
# it wont be generated a second time, unless forced explicitly.
|
77
|
+
#
|
78
|
+
# @param dir [String] The logfile directory of the report.
|
79
|
+
# @param force [true, false] If set to true, the report gets
|
80
|
+
# created unconditionally.
|
81
|
+
#
|
82
|
+
# @return [String] The contents of #{dir}/report.html
|
83
|
+
def run_stats(dir, force = false)
|
84
|
+
Dir.chdir( File.join(options.logdir, dir) ) do
|
85
|
+
unless File.exists?('report.html') && force == false
|
86
|
+
system(options.tsung_stats)
|
87
|
+
end
|
88
|
+
File.read('report.html')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# Creates a zip file out of a directory.
|
94
|
+
#
|
95
|
+
# @param dir [String] The directories name.
|
96
|
+
# @param filename [String] The output filename.
|
97
|
+
#
|
98
|
+
# @return [undefined] unspecified
|
99
|
+
def zip(dir, filename)
|
100
|
+
Dir.chdir( File.join(options.logdir) ) do
|
101
|
+
unless File.exists?("#{dir}.zip")
|
102
|
+
Zip::ZipFile.open("#{filename}.zip", true) do |zf|
|
103
|
+
Dir["#{dir}/**/*"].each { |f| zf.add(f, f) }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
#
|
110
|
+
# Generates a HTML document listing of all logs present on the machine.
|
111
|
+
#
|
112
|
+
# @param logdirs [Array<String>] The directories that contain logs.
|
113
|
+
#
|
114
|
+
# @return [String<text/html>] The generated document.
|
115
|
+
def list_dirs(logdirs)
|
116
|
+
doc = Markaby::Builder.new
|
117
|
+
doc.html do
|
118
|
+
head do
|
119
|
+
title "Logpickin'"
|
120
|
+
end
|
121
|
+
body do
|
122
|
+
h1 "Pick a log:"
|
123
|
+
ul.logs do
|
124
|
+
logdirs.each do |dir|
|
125
|
+
li.log do
|
126
|
+
a "Log #{dir}", :href => "/#{dir}/report.html"
|
127
|
+
a "As zip", :href => "/#{dir}.zip"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#describe TsungStatsServer do
|
2
|
+
# it 'has inochi' do
|
3
|
+
# assert TsungStatsServer.const_defined? :INOCHI
|
4
|
+
#
|
5
|
+
# TsungStatsServer::INOCHI.each do |param, value|
|
6
|
+
# const = param.to_s.upcase
|
7
|
+
#
|
8
|
+
# assert TsungStatsServer.const_defined? const
|
9
|
+
# TsungStatsServer.const_get(const).must_equal value
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
#end
|
13
|
+
#
|
metadata
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tsung_stats_server
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Florian Gilcher
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-07-28 00:00:00 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: sinatra
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0.9"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rubyzip
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0.9"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: markaby
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0.5"
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: inochi
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "1"
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: inochi
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "1"
|
64
|
+
version:
|
65
|
+
description: A simple webserver serving tsung stats
|
66
|
+
email: flo@andersground.net
|
67
|
+
executables:
|
68
|
+
- tsung_stats_server
|
69
|
+
extensions: []
|
70
|
+
|
71
|
+
extra_rdoc_files: []
|
72
|
+
|
73
|
+
files:
|
74
|
+
- bin/tsung_stats_server
|
75
|
+
- doc/all-files.html
|
76
|
+
- doc/all-methods.html
|
77
|
+
- doc/all-namespaces.html
|
78
|
+
- doc/api/apple-touch-icon.png
|
79
|
+
- doc/api/classes/Object.html
|
80
|
+
- doc/api/classes/TSSApp.html
|
81
|
+
- doc/api/created.rid
|
82
|
+
- doc/api/css/main.css
|
83
|
+
- doc/api/css/panel.css
|
84
|
+
- doc/api/css/reset.css
|
85
|
+
- doc/api/favicon.ico
|
86
|
+
- doc/api/files/lib/tsung_stats_server_rb.html
|
87
|
+
- doc/api/files/lib/webapp_rb.html
|
88
|
+
- doc/api/files/LICENSE.html
|
89
|
+
- doc/api/files/Rakefile.html
|
90
|
+
- doc/api/files/README.html
|
91
|
+
- doc/api/i/arrows.png
|
92
|
+
- doc/api/i/results_bg.png
|
93
|
+
- doc/api/i/tree_bg.png
|
94
|
+
- doc/api/index.html
|
95
|
+
- doc/api/js/jquery-1.3.2.min.js
|
96
|
+
- doc/api/js/jquery-effect.js
|
97
|
+
- doc/api/js/main.js
|
98
|
+
- doc/api/js/searchdoc.js
|
99
|
+
- doc/api/panel/index.html
|
100
|
+
- doc/api/panel/search_index.js
|
101
|
+
- doc/api/panel/tree.js
|
102
|
+
- doc/app.js
|
103
|
+
- doc/custom.css
|
104
|
+
- doc/history.erb
|
105
|
+
- doc/index.erb
|
106
|
+
- doc/index.html
|
107
|
+
- doc/index.xhtml
|
108
|
+
- doc/intro.erb
|
109
|
+
- doc/jquery.js
|
110
|
+
- doc/README.html
|
111
|
+
- doc/setup.erb
|
112
|
+
- doc/style.css
|
113
|
+
- doc/syntax_highlight.css
|
114
|
+
- doc/theory.erb
|
115
|
+
- doc/top-level-namespace.html
|
116
|
+
- doc/TSSApp.html
|
117
|
+
- doc/usage.erb
|
118
|
+
- lib/tsung_stats_server.rb
|
119
|
+
- lib/webapp.rb
|
120
|
+
- LICENSE
|
121
|
+
- Rakefile
|
122
|
+
- README
|
123
|
+
- test/tsung_stats_server.rb
|
124
|
+
has_rdoc: true
|
125
|
+
homepage: http://skadesgems.rubyforge.org
|
126
|
+
licenses: []
|
127
|
+
|
128
|
+
post_install_message:
|
129
|
+
rdoc_options: []
|
130
|
+
|
131
|
+
require_paths:
|
132
|
+
- lib
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: "0"
|
138
|
+
version:
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: "0"
|
144
|
+
version:
|
145
|
+
requirements: []
|
146
|
+
|
147
|
+
rubyforge_project: skadesgems
|
148
|
+
rubygems_version: 1.3.4
|
149
|
+
signing_key:
|
150
|
+
specification_version: 3
|
151
|
+
summary: A simple webserver serving tsung stats
|
152
|
+
test_files: []
|
153
|
+
|