scout 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,91 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/scout'
3
+ require "logger"
4
+
5
+ class ScoutTest < Test::Unit::TestCase
6
+
7
+ SCOUT_TEST_SERVER = "http://localhost:4000/"
8
+ SCOUT_TEST_VALID_CLIENT_KEY = "valid key goes here"
9
+ SCOUT_TEST_VALID_PLUGIN_ID = "valid plugin id goes here"
10
+
11
+ def setup
12
+ @log = Logger.new('test.log')
13
+ @scout_server = create_scout_server(SCOUT_TEST_SERVER,
14
+ SCOUT_TEST_VALID_CLIENT_KEY)
15
+ end
16
+
17
+ def teardown
18
+ File.delete('test.log')
19
+ end
20
+
21
+ def test_create
22
+ assert @scout_server
23
+ end
24
+
25
+ def test_should_initialize_new_server
26
+ ["@history_file", "@client_key", "@logger", "@server", "@history"].each do |var|
27
+ assert @scout_server.instance_variables.include?(var)
28
+ end
29
+ end
30
+
31
+ def test_should_send_report
32
+ report = {:server_load => "99.99"}
33
+ assert_does_not_exit { @scout_server.send_report(report, SCOUT_TEST_VALID_PLUGIN_ID) }
34
+ assert_log_contains("Report sent")
35
+ end
36
+
37
+ def test_should_not_send_report_with_invalid_client_key
38
+ @scout_server_invalid_client_key = create_scout_server(SCOUT_TEST_SERVER,
39
+ "1111-2222-3333-4444-5555")
40
+ report = {:server_load => "99.99"}
41
+ assert_does_exit { @scout_server_invalid_client_key.send_report(report, SCOUT_TEST_VALID_PLUGIN_ID) }
42
+ assert_log_contains("Unable to send report to server")
43
+ assert_log_contains("An HTTP error occurred: exit")
44
+ end
45
+
46
+ def test_should_not_send_report_with_invalid_plugin_id
47
+ report = {:server_load => "99.99"}
48
+ assert_does_exit { @scout_server.send_report(report, 9999999999) }
49
+ assert_log_contains("Unable to send report to server")
50
+ assert_log_contains("An HTTP error occurred: exit")
51
+ end
52
+
53
+ def test_should_not_send_report_with_plugin_not_belonging_to_client
54
+ report = {:server_load => "99.99"}
55
+ assert_does_exit { @scout_server.send_report(report, 4) }
56
+ assert_log_contains("Unable to send report to server")
57
+ assert_log_contains("An HTTP error occurred: exit")
58
+ end
59
+
60
+ def create_scout_server(server, client_key, history=File.join("/tmp", "client_history.yaml"), logger=@log)
61
+ Scout::Server.new(server, client_key, history, logger)
62
+ end
63
+
64
+ def assert_log_contains(pattern)
65
+ @log_file = File.read('test.log')
66
+ assert @log_file.include?(pattern), "log does not include the pattern:\n#{pattern}\nlog contains:\n#{@log_file}"
67
+ end
68
+
69
+ # asserts that the program actually exits, terminating.
70
+ def assert_does_exit(&block)
71
+ begin
72
+ yield
73
+ rescue SystemExit
74
+ assert true, "Expected program to not exit, but program did exit."
75
+ return
76
+ end
77
+ flunk "Expected program to exit, but program did not exit."
78
+ end
79
+
80
+ # asserts that the program does not exit.
81
+ def assert_does_not_exit(&block)
82
+ begin
83
+ yield
84
+ rescue SystemExit
85
+ flunk "Expected program to not exit, but program did exit."
86
+ return
87
+ end
88
+ assert true, "Expected program to not exit, but program did exit."
89
+ end
90
+
91
+ end
metadata CHANGED
@@ -1,88 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scout
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
- - Charles Brian Quinn
7
+ - Highgroove Studios
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-18 00:00:00 -04:00
12
+ date: 2008-07-31 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: hoe
17
- type: :development
16
+ name: elif
17
+ type: :runtime
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.7.0
23
+ version: "0"
24
24
  version:
25
- description: Scout is a simple web monitoring and reporting client. It can connect to a plugin server, download plugins (written in Ruby) and run them on at specified intervals.
26
- email:
27
- - hello@highgroove.com
25
+ description: Scout makes monitoring and reporting on your web applications as flexible and simple as possible. Scout is a product of Highgroove Studios.
26
+ email: scout@highgroove.com
28
27
  executables:
29
28
  - scout
30
29
  extensions: []
31
30
 
32
31
  extra_rdoc_files:
33
- - History.txt
34
- - License.txt
35
- - Manifest.txt
36
- - PostInstall.txt
37
- - README.txt
38
- - website/index.txt
32
+ - AUTHORS
33
+ - COPYING
34
+ - README
35
+ - INSTALL
36
+ - TODO
37
+ - CHANGELOG
38
+ - LICENSE
39
39
  files:
40
- - History.txt
41
- - License.txt
42
- - Manifest.txt
43
- - PostInstall.txt
44
- - README.txt
45
- - Rakefile
46
- - bin/scout
47
- - config/hoe.rb
48
- - config/requirements.rb
49
- - lib/scout.rb
50
- - lib/scout/version.rb
51
- - lib/scout/server.rb
52
- - lib/scout/plugin.rb
53
- - lib/scout/command.rb
54
40
  - lib/scout/command/clone.rb
55
41
  - lib/scout/command/install.rb
56
42
  - lib/scout/command/run.rb
57
43
  - lib/scout/command/test.rb
58
- - script/console
59
- - script/destroy
60
- - script/generate
61
- - script/txt2html
44
+ - lib/scout/command.rb
45
+ - lib/scout/plugin.rb
46
+ - lib/scout/server.rb
47
+ - lib/scout.rb
48
+ - test/scout_test.rb
49
+ - Rakefile
62
50
  - setup.rb
63
- - tasks/deployment.rake
64
- - tasks/environment.rake
65
- - tasks/website.rake
66
- - test/test_helper.rb
67
- - test/test_scout.rb
68
- - website/index.html
69
- - website/index.txt
70
- - website/javascripts/rounded_corners_lite.inc.js
71
- - website/stylesheets/screen.css
72
- - website/template.html.erb
51
+ - AUTHORS
52
+ - COPYING
53
+ - README
54
+ - INSTALL
55
+ - TODO
56
+ - CHANGELOG
57
+ - LICENSE
73
58
  has_rdoc: true
74
- homepage: http://scout.rubyforge.org
75
- post_install_message: |+
76
-
77
- For more information on scout, see http://scout.rubyforge.org
78
-
79
- NOTE: Change this information in PostInstall.txt
80
- You can also delete it if you don't want it.
81
-
82
-
59
+ homepage: http://scoutapp.com
60
+ post_install_message:
83
61
  rdoc_options:
62
+ - --title
63
+ - Scout Client Documentation
84
64
  - --main
85
- - README.txt
65
+ - README
86
66
  require_paths:
87
67
  - lib
88
68
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -103,7 +83,6 @@ rubyforge_project: scout
103
83
  rubygems_version: 1.2.0
104
84
  signing_key:
105
85
  specification_version: 2
106
- summary: Scout is a simple web monitoring and reporting client. It can connect to a plugin server, download plugins (written in Ruby) and run them on at specified intervals.
107
- test_files:
108
- - test/test_helper.rb
109
- - test/test_scout.rb
86
+ summary: Scout makes monitoring and reporting on your web applications as flexible and simple as possible.
87
+ test_files: []
88
+
data/Manifest.txt DELETED
@@ -1,33 +0,0 @@
1
- History.txt
2
- License.txt
3
- Manifest.txt
4
- PostInstall.txt
5
- README.txt
6
- Rakefile
7
- bin/scout
8
- config/hoe.rb
9
- config/requirements.rb
10
- lib/scout.rb
11
- lib/scout/version.rb
12
- lib/scout/server.rb
13
- lib/scout/plugin.rb
14
- lib/scout/command.rb
15
- lib/scout/command/clone.rb
16
- lib/scout/command/install.rb
17
- lib/scout/command/run.rb
18
- lib/scout/command/test.rb
19
- script/console
20
- script/destroy
21
- script/generate
22
- script/txt2html
23
- setup.rb
24
- tasks/deployment.rake
25
- tasks/environment.rake
26
- tasks/website.rake
27
- test/test_helper.rb
28
- test/test_scout.rb
29
- website/index.html
30
- website/index.txt
31
- website/javascripts/rounded_corners_lite.inc.js
32
- website/stylesheets/screen.css
33
- website/template.html.erb
data/PostInstall.txt DELETED
@@ -1,7 +0,0 @@
1
-
2
- For more information on scout, see http://scout.rubyforge.org
3
-
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
6
-
7
-
data/config/hoe.rb DELETED
@@ -1,73 +0,0 @@
1
- require 'scout/version'
2
-
3
- AUTHOR = 'Charles Brian Quinn'
4
- EMAIL = "hello@highgroove.com"
5
- DESCRIPTION = "Scout is a simple web monitoring and reporting client. It can connect to a plugin server, download plugins (written in Ruby) and run them on at specified intervals."
6
- GEM_NAME = 'scout'
7
- RUBYFORGE_PROJECT = 'scout'
8
- HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
9
- DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
10
- EXTRA_DEPENDENCIES = [
11
- ['elif', '>= 0.1.0']
12
- ]
13
-
14
- @config_file = "~/.rubyforge/user-config.yml"
15
- @config = nil
16
- RUBYFORGE_USERNAME = "seebq"
17
- def rubyforge_username
18
- unless @config
19
- begin
20
- @config = YAML.load(File.read(File.expand_path(@config_file)))
21
- rescue
22
- puts <<-EOS
23
- ERROR: No rubyforge config file found: #{@config_file}
24
- Run 'rubyforge setup' to prepare your env for access to Rubyforge
25
- - See http://newgem.rubyforge.org/rubyforge.html for more details
26
- EOS
27
- exit
28
- end
29
- end
30
- RUBYFORGE_USERNAME.replace @config["username"]
31
- end
32
-
33
-
34
- REV = nil
35
- # UNCOMMENT IF REQUIRED:
36
- # REV = YAML.load(`svn info`)['Revision']
37
- VERS = Scout::VERSION::STRING + (REV ? ".#{REV}" : "")
38
- RDOC_OPTS = ['--quiet', '--title', 'scout documentation',
39
- "--opname", "index.html",
40
- "--line-numbers",
41
- "--main", "README",
42
- "--inline-source"]
43
-
44
- class Hoe
45
- def extra_deps
46
- @extra_deps.reject! { |x| Array(x).first == 'hoe' }
47
- @extra_deps
48
- end
49
- end
50
-
51
- # Generate all the Rake tasks
52
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
53
- $hoe = Hoe.new(GEM_NAME, VERS) do |p|
54
- p.developer(AUTHOR, EMAIL)
55
- p.description = DESCRIPTION
56
- p.summary = DESCRIPTION
57
- p.url = HOMEPATH
58
- p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
59
- p.test_globs = ["test/**/test_*.rb"]
60
- p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
61
-
62
- # == Optional
63
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
64
- #p.extra_deps = EXTRA_DEPENDENCIES
65
-
66
- #p.spec_extras = {} # A hash of extra values to set in the gemspec.
67
- end
68
-
69
- CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
70
- PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
71
- $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
72
- $hoe.rsync_args = '-av --delete --ignore-errors'
73
- $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
@@ -1,15 +0,0 @@
1
- require 'fileutils'
2
- include FileUtils
3
-
4
- require 'rubygems'
5
- %w[rake hoe newgem rubigen].each do |req_gem|
6
- begin
7
- require req_gem
8
- rescue LoadError
9
- puts "This Rakefile requires the '#{req_gem}' RubyGem."
10
- puts "Installation: gem install #{req_gem} -y"
11
- exit
12
- end
13
- end
14
-
15
- $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
data/lib/scout/version.rb DELETED
@@ -1,9 +0,0 @@
1
- module Scout
2
- module VERSION #:nodoc:
3
- MAJOR = 2
4
- MINOR = 0
5
- TINY = 4
6
-
7
- STRING = [MAJOR, MINOR, TINY].join('.')
8
- end
9
- end
data/script/console DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/scout.rb'}"
9
- puts "Loading scout gem"
10
- exec "#{irb} #{libs} --simple-prompt"
data/script/destroy DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
data/script/txt2html DELETED
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- GEM_NAME = 'scout' # what ppl will type to install your gem
4
- RUBYFORGE_PROJECT = 'scout'
5
-
6
- require 'rubygems'
7
- begin
8
- require 'newgem'
9
- require 'rubyforge'
10
- rescue LoadError
11
- puts "\n\nGenerating the website requires the newgem RubyGem"
12
- puts "Install: gem install newgem\n\n"
13
- exit(1)
14
- end
15
- require 'redcloth'
16
- require 'syntax/convertors/html'
17
- require 'erb'
18
- require File.dirname(__FILE__) + "/../lib/#{GEM_NAME}/version.rb"
19
-
20
- version = Scout::VERSION::STRING
21
- download = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
22
-
23
- def rubyforge_project_id
24
- RubyForge.new.autoconfig["group_ids"][RUBYFORGE_PROJECT]
25
- end
26
-
27
- class Fixnum
28
- def ordinal
29
- # teens
30
- return 'th' if (10..19).include?(self % 100)
31
- # others
32
- case self % 10
33
- when 1: return 'st'
34
- when 2: return 'nd'
35
- when 3: return 'rd'
36
- else return 'th'
37
- end
38
- end
39
- end
40
-
41
- class Time
42
- def pretty
43
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
44
- end
45
- end
46
-
47
- def convert_syntax(syntax, source)
48
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
49
- end
50
-
51
- if ARGV.length >= 1
52
- src, template = ARGV
53
- template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
54
- else
55
- puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
56
- exit!
57
- end
58
-
59
- template = ERB.new(File.open(template).read)
60
-
61
- title = nil
62
- body = nil
63
- File.open(src) do |fsrc|
64
- title_text = fsrc.readline
65
- body_text_template = fsrc.read
66
- body_text = ERB.new(body_text_template).result(binding)
67
- syntax_items = []
68
- body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
69
- ident = syntax_items.length
70
- element, syntax, source = $1, $2, $3
71
- syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
72
- "syntax-temp-#{ident}"
73
- }
74
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
75
- body = RedCloth.new(body_text).to_html
76
- body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
77
- end
78
- stat = File.stat(src)
79
- created = stat.ctime
80
- modified = stat.mtime
81
-
82
- $stdout << template.result(binding)