tsung_stats_server 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|