bleak_house 3.5.1 → 3.6

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.
Files changed (64) hide show
  1. data/CHANGELOG +2 -0
  2. data/Manifest +49 -2
  3. data/README +4 -1
  4. data/TODO +1 -1
  5. data/bleak_house.gemspec +48 -0
  6. data/ext/bleak_house/logger/snapshot.c +6 -7
  7. data/lib/bleak_house/analyzer/analyzer.rb +2 -2
  8. data/lib/bleak_house/analyzer.rb +0 -2
  9. data/lib/bleak_house/rails/bleak_house.rb +2 -0
  10. data/lib/bleak_house/rails/dispatcher.rb +11 -15
  11. data/test/integration/app/README +203 -0
  12. data/test/integration/app/Rakefile +10 -0
  13. data/test/integration/app/app/controllers/application.rb +12 -0
  14. data/test/integration/app/app/controllers/items_controller.rb +6 -0
  15. data/test/integration/app/app/helpers/application_helper.rb +3 -0
  16. data/test/integration/app/app/helpers/items_helper.rb +2 -0
  17. data/test/integration/app/app/views/items/index.rhtml +2 -0
  18. data/test/integration/app/config/boot.rb +109 -0
  19. data/test/integration/app/config/database.yml +19 -0
  20. data/test/integration/app/config/environment.rb +15 -0
  21. data/test/integration/app/config/environments/development.rb +18 -0
  22. data/test/integration/app/config/environments/production.rb +19 -0
  23. data/test/integration/app/config/environments/test.rb +22 -0
  24. data/test/integration/app/config/initializers/inflections.rb +10 -0
  25. data/test/integration/app/config/initializers/mime_types.rb +5 -0
  26. data/test/integration/app/config/routes.rb +35 -0
  27. data/test/integration/app/doc/README_FOR_APP +2 -0
  28. data/test/integration/app/log/bleak_house_production.dump +237342 -0
  29. data/test/integration/app/public/404.html +30 -0
  30. data/test/integration/app/public/422.html +30 -0
  31. data/test/integration/app/public/500.html +30 -0
  32. data/test/integration/app/public/dispatch.cgi +10 -0
  33. data/test/integration/app/public/dispatch.fcgi +24 -0
  34. data/test/integration/app/public/dispatch.rb +10 -0
  35. data/test/integration/app/public/favicon.ico +0 -0
  36. data/test/integration/app/public/images/rails.png +0 -0
  37. data/test/integration/app/public/javascripts/application.js +2 -0
  38. data/test/integration/app/public/javascripts/controls.js +963 -0
  39. data/test/integration/app/public/javascripts/dragdrop.js +972 -0
  40. data/test/integration/app/public/javascripts/effects.js +1120 -0
  41. data/test/integration/app/public/javascripts/prototype.js +4225 -0
  42. data/test/integration/app/public/robots.txt +5 -0
  43. data/test/integration/app/script/about +3 -0
  44. data/test/integration/app/script/console +3 -0
  45. data/test/integration/app/script/destroy +3 -0
  46. data/test/integration/app/script/generate +3 -0
  47. data/test/integration/app/script/performance/benchmarker +3 -0
  48. data/test/integration/app/script/performance/profiler +3 -0
  49. data/test/integration/app/script/performance/request +3 -0
  50. data/test/integration/app/script/plugin +3 -0
  51. data/test/integration/app/script/process/inspector +3 -0
  52. data/test/integration/app/script/process/reaper +3 -0
  53. data/test/integration/app/script/process/spawner +3 -0
  54. data/test/integration/app/script/runner +3 -0
  55. data/test/integration/app/script/server +3 -0
  56. data/test/integration/app/test/functional/items_controller_test.rb +8 -0
  57. data/test/integration/app/test/test_helper.rb +38 -0
  58. data/test/integration/server_test.rb +91 -0
  59. data/test/test_helper.rb +6 -0
  60. data.tar.gz.sig +0 -0
  61. metadata +54 -5
  62. metadata.gz.sig +0 -0
  63. data/Rakefile +0 -26
  64. data/lib/bleak_house/support/rake.rb +0 -25
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/about'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/request'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/inspector'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/reaper'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/spawner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/server'
@@ -0,0 +1,8 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ItemsControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,38 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ class Test::Unit::TestCase
6
+ # Transactional fixtures accelerate your tests by wrapping each test method
7
+ # in a transaction that's rolled back on completion. This ensures that the
8
+ # test database remains unchanged so your fixtures don't have to be reloaded
9
+ # between every test method. Fewer database queries means faster tests.
10
+ #
11
+ # Read Mike Clark's excellent walkthrough at
12
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
13
+ #
14
+ # Every Active Record database supports transactions except MyISAM tables
15
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
16
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
17
+ # is recommended.
18
+ #
19
+ # The only drawback to using transactional fixtures is when you actually
20
+ # need to test transactions. Since your test is bracketed by a transaction,
21
+ # any transactions started in your code will be automatically rolled back.
22
+ self.use_transactional_fixtures = true
23
+
24
+ # Instantiated fixtures are slow, but give you @david where otherwise you
25
+ # would need people(:david). If you don't want to migrate your existing
26
+ # test cases which use the @david style and don't mind the speed hit (each
27
+ # instantiated fixtures translates to a database query per test method),
28
+ # then set this back to true.
29
+ self.use_instantiated_fixtures = false
30
+
31
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
32
+ #
33
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
34
+ # -- they do not yet inherit this setting
35
+ fixtures :all
36
+
37
+ # Add more helper methods to be used by all tests here...
38
+ end
@@ -0,0 +1,91 @@
1
+
2
+ require "#{File.dirname(__FILE__)}/../test_helper"
3
+
4
+ class ServerTest < Test::Unit::TestCase
5
+
6
+ RAILS_ROOT = HERE + "/integration/app"
7
+ PORT = 43039
8
+ URL = "http://localhost:#{PORT}/"
9
+ LOG = "#{HERE}/integration/app/log/production.log"
10
+ system("touch #{LOG}")
11
+
12
+ def test_server_start
13
+ assert_match(/Ok/, browse("items"))
14
+ end
15
+
16
+ def test_too_few_frames
17
+ browse("items")
18
+ assert_match(/Not enough frames/, analyze)
19
+ end
20
+
21
+ def test_enough_frames
22
+ 24.times do
23
+ browse("items")
24
+ end
25
+
26
+ result = analyze
27
+
28
+ # XXX Doesn't test the caching mechanism
29
+
30
+ assert_match(/over 9 requests/, result)
31
+ assert_match(/items\/index\/GET leaked/mi, result)
32
+ assert_match(/core rails leaked/, result)
33
+ assert_match(/Impact.*core rails/m, result)
34
+ assert_match(/Impact.*items\/index\/GET/mi, result)
35
+ end
36
+
37
+ private
38
+
39
+ # Mostly copied from Interlock's tests
40
+
41
+ def browse(url = "")
42
+ flag = false
43
+ begin
44
+ open(URL + url).read
45
+ rescue Errno::ECONNREFUSED, OpenURI::HTTPError => e
46
+ raise "#{e.to_s}: #{URL + url}" if flag
47
+ flag = true
48
+ sleep 3
49
+ retry
50
+ end
51
+ end
52
+
53
+ def analyze
54
+ `#{HERE}/../bin/bleak #{HERE}/integration/app/log/bleak_house_production.dump`
55
+ end
56
+
57
+ def truncate
58
+ Dir["#{RAILS_ROOT}/log/bleak_house*"].each { |f| File.delete f }
59
+ system("> #{LOG}")
60
+ end
61
+
62
+ def log
63
+ File.open(LOG, 'r') { |f| f.read }
64
+ end
65
+
66
+ def setup
67
+ Process.fork do
68
+ Dir.chdir(RAILS_ROOT) do
69
+ ENV['RAILS_GEM_VERSION'] = ENV['MULTIRAILS_RAILS_VERSION']
70
+ exec("RAILS_ENV=production BLEAK_HOUSE=1 script/server -p #{PORT} &> #{LOG}")
71
+ end
72
+ end
73
+
74
+ 50.times do |n|
75
+ break if log =~ /available at 0.0.0.0:#{PORT}/
76
+ sleep(0.2)
77
+ raise "Server didn't start" if n == 49
78
+ end
79
+
80
+ truncate
81
+ end
82
+
83
+ def teardown
84
+ # Process.kill(9, pid) doesn't work because Mongrel has double-forked itself away
85
+ while (pids = `ps awx | grep #{PORT} | grep -v grep | awk '{print $1}'`.split("\n")).any?
86
+ pids.each {|pid| system("kill #{pid}")}
87
+ sleep(0.2)
88
+ end
89
+ end
90
+
91
+ end
@@ -0,0 +1,6 @@
1
+
2
+ require 'test/unit'
3
+ require 'open-uri'
4
+
5
+ HERE = File.expand_path(File.dirname(__FILE__))
6
+ $LOAD_PATH << HERE
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bleak_house
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.1
4
+ version: "3.6"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Weaver
@@ -30,7 +30,7 @@ cert_chain:
30
30
  yZ0=
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2007-11-28 00:00:00 -05:00
33
+ date: 2008-01-02 00:00:00 -05:00
34
34
  default_executable:
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
@@ -69,19 +69,67 @@ files:
69
69
  - lib/bleak_house/rails/dispatcher.rb
70
70
  - lib/bleak_house/rails.rb
71
71
  - lib/bleak_house/support/core_extensions.rb
72
- - lib/bleak_house/support/rake.rb
73
72
  - lib/bleak_house.rb
74
73
  - LICENSE
75
74
  - LICENSE_BSD
76
75
  - Manifest
77
- - Rakefile
78
76
  - README
79
77
  - ruby/gc.c.patch
80
78
  - ruby/parse.y.patch
81
79
  - ruby/ruby-1.8.6-p110.tar.bz2
80
+ - test/integration/app/app/controllers/application.rb
81
+ - test/integration/app/app/controllers/items_controller.rb
82
+ - test/integration/app/app/helpers/application_helper.rb
83
+ - test/integration/app/app/helpers/items_helper.rb
84
+ - test/integration/app/app/views/items/index.rhtml
85
+ - test/integration/app/config/boot.rb
86
+ - test/integration/app/config/database.yml
87
+ - test/integration/app/config/environment.rb
88
+ - test/integration/app/config/environments/development.rb
89
+ - test/integration/app/config/environments/production.rb
90
+ - test/integration/app/config/environments/test.rb
91
+ - test/integration/app/config/initializers/inflections.rb
92
+ - test/integration/app/config/initializers/mime_types.rb
93
+ - test/integration/app/config/routes.rb
94
+ - test/integration/app/doc/README_FOR_APP
95
+ - test/integration/app/log/bleak_house_production.dump
96
+ - test/integration/app/public/404.html
97
+ - test/integration/app/public/422.html
98
+ - test/integration/app/public/500.html
99
+ - test/integration/app/public/dispatch.cgi
100
+ - test/integration/app/public/dispatch.fcgi
101
+ - test/integration/app/public/dispatch.rb
102
+ - test/integration/app/public/favicon.ico
103
+ - test/integration/app/public/images/rails.png
104
+ - test/integration/app/public/javascripts/application.js
105
+ - test/integration/app/public/javascripts/controls.js
106
+ - test/integration/app/public/javascripts/dragdrop.js
107
+ - test/integration/app/public/javascripts/effects.js
108
+ - test/integration/app/public/javascripts/prototype.js
109
+ - test/integration/app/public/robots.txt
110
+ - test/integration/app/Rakefile
111
+ - test/integration/app/README
112
+ - test/integration/app/script/about
113
+ - test/integration/app/script/console
114
+ - test/integration/app/script/destroy
115
+ - test/integration/app/script/generate
116
+ - test/integration/app/script/performance/benchmarker
117
+ - test/integration/app/script/performance/profiler
118
+ - test/integration/app/script/performance/request
119
+ - test/integration/app/script/plugin
120
+ - test/integration/app/script/process/inspector
121
+ - test/integration/app/script/process/reaper
122
+ - test/integration/app/script/process/spawner
123
+ - test/integration/app/script/runner
124
+ - test/integration/app/script/server
125
+ - test/integration/app/test/functional/items_controller_test.rb
126
+ - test/integration/app/test/test_helper.rb
127
+ - test/integration/server_test.rb
82
128
  - test/misc/direct.rb
129
+ - test/test_helper.rb
83
130
  - test/unit/test_bleak_house.rb
84
131
  - TODO
132
+ - bleak_house.gemspec
85
133
  has_rdoc: true
86
134
  homepage: http://blog.evanweaver.com/files/doc/fauna/bleak_house/
87
135
  post_install_message:
@@ -105,9 +153,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
153
  requirements: []
106
154
 
107
155
  rubyforge_project: fauna
108
- rubygems_version: 0.9.5
156
+ rubygems_version: 1.0.1
109
157
  signing_key:
110
158
  specification_version: 2
111
159
  summary: A library for finding memory leaks.
112
160
  test_files:
161
+ - test/integration/server_test.rb
113
162
  - test/unit/test_bleak_house.rb
metadata.gz.sig CHANGED
Binary file
data/Rakefile DELETED
@@ -1,26 +0,0 @@
1
-
2
- require 'lib/bleak_house/support/rake'
3
-
4
- begin
5
- require 'echoe'
6
-
7
- Echoe.new("bleak_house") do |p|
8
- p.author = "Evan Weaver"
9
- p.project = "fauna"
10
- p.summary = "A library for finding memory leaks."
11
- p.url = "http://blog.evanweaver.com/files/doc/fauna/bleak_house/"
12
- p.docs_host = 'blog.evanweaver.com:~/www/bax/public/files/doc/'
13
- p.rdoc_pattern = /^ext.*\.c|lib.*logger.*rb|analyzer|rails\/bleak_house|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
14
- p.dependencies = ['ccsv']
15
- p.require_signed = true
16
- p.include_gemspec = false
17
- p.include_rakefile = true
18
- end
19
-
20
- rescue LoadError
21
- end
22
-
23
- desc 'Run tests.'
24
- Rake::Task.redefine_task("test") do
25
- system "ruby-bleak-house -Ibin:lib:test test/unit/test_bleak_house.rb #{ENV['METHOD'] ? "--name=#{ENV['METHOD']}" : ""}"
26
- end
@@ -1,25 +0,0 @@
1
-
2
- # http://www.bigbold.com/snippets/posts/show/2032
3
- module Rake
4
- module TaskManager
5
- def redefine_task(task_class, args, &block)
6
- task_name, deps = resolve_args(args)
7
- task_name = task_class.scope_name(@scope, task_name)
8
- deps = [deps] unless deps.respond_to?(:to_ary)
9
- deps = deps.collect {|d| d.to_s }
10
- task = @tasks[task_name.to_s] = task_class.new(task_name, self)
11
- task.application = self
12
- task.add_comment(@last_comment)
13
- @last_comment = nil
14
- task.enhance(deps, &block)
15
- task
16
- end
17
- end
18
- class Task
19
- class << self
20
- def redefine_task(args, &block)
21
- Rake.application.redefine_task(self, args, &block)
22
- end
23
- end
24
- end
25
- end