Ticket #12: tarantula_less_mem.patch
| File tarantula_less_mem.patch, 7.0 kB (added by someone23, 5 months ago) |
|---|
-
tarantula.orig/lib/relevance/tarantula/crawler.rb
old new 20 21 @links_to_crawl = [] 21 22 @forms_to_crawl = [] 22 23 @referrers = {} 23 @skip_uri_patterns = [24 @skip_uri_patterns = [ 24 25 /^javascript/, 25 26 /^mailto/, 26 /^http/, 27 /^http/, 27 28 ] 28 29 self.transform_url_patterns = [ 29 30 [/#.*$/, ''] 30 31 ] 31 @reporters = [ ]32 @reporters = [Relevance::Tarantula::IOReporter.new($stderr)] 32 33 @decoder = HTMLEntities.new 33 34 34 end 35 35 36 36 def method_missing(meth, *args) … … 74 87 end 75 88 76 89 def save_result(result) 77 re turn if result.nil?78 collection = result.success ? successes : failures79 collection << result90 reporters.each do |reporter| 91 reporter.report(result) 92 end 80 93 end 81 94 82 95 def handle_link_results(link, response) … … 178 195 end 179 196 180 197 def generate_reports 181 FileUtils.mkdir_p(report_dir)198 errors = [] 182 199 reporters.each do |reporter| 183 reporter.report(report_dir, self) 184 end 185 end 186 187 def report_to_console 188 unless (failures).empty? 189 $stderr.puts "****** FAILURES" 190 failures.each do |failure| 191 $stderr.puts "#{failure.code}: #{failure.url}" 200 begin 201 reporter.finish_report 202 rescue RuntimeError => e 203 errors << e 192 204 end 193 raise "#{failures.size} failures" 205 end 206 unless errors.empty? 207 raise errors.map(&:message).join("\n") 194 208 end 195 209 end 196 210 197 211 def report_results 198 puts "Writing results to #{report_dir}"199 212 generate_reports 200 report_to_console201 213 end 202 214 203 215 def total_links_count -
tarantula.orig/lib/relevance/tarantula/html_reporter.rb
old new 1 1 class Relevance::Tarantula::HtmlReporter 2 2 3 include Relevance::Tarantula 3 attr_accessor :basedir, :results 4 attr_accessor :basedir, :results 4 5 delegate :successes, :failures, :to => :results 5 def self.report(basedir, results) 6 self.new(basedir, results) 7 end 8 9 def initialize(basedir, results) 6 7 HtmlResultOverview = Struct.new(:code, :url, :description, :method, :referrer, :file_name) 8 9 def initialize(basedir) 10 10 @basedir = basedir 11 @results = results 12 copy_styles 13 create_index 14 create_detail_reports 11 @results = Struct.new(:successes, :failures).new([], []) 12 FileUtils.mkdir_p(@basedir) 15 13 end 16 14 17 def template(name) 18 File.read(File.join(File.dirname(__FILE__), name)) 15 def report(result) 16 return if result.nil? 17 18 create_detail_report(result) 19 20 collection = result.success ? results.successes : results.failures 21 collection << HtmlResultOverview.new( 22 result.code, result.url, result.description, result.method, result.referrer, result.file_name 23 ) 19 24 end 20 25 21 def output(name, body)22 File.open(File.join(basedir, name), "w") do |file|23 file.write body24 end25 end 26 def finish_report 27 puts "Writing results to #{basedir}" 28 copy_styles 29 create_index 30 end 26 31 27 32 def copy_styles 28 33 # not using cp_r because it picks up .svn crap … … 44 49 template = ERB.new(template("index.html.erb")) 45 50 output("index.html", template.result(binding)) 46 51 end 47 48 def create_detail_reports49 template = ERB.new(template("detail.html.erb"))50 results.successes.each do |result|51 output(result.file_name, template.result(result.send(:binding)))52 end53 results.failures.each do |result|54 output(result.file_name, template.result(result.send(:binding)))52 53 def template(name) 54 File.read(File.join(File.dirname(__FILE__), name)) 55 end 56 57 def output(name, body) 58 File.open(File.join(basedir, name), "w") do |file| 59 file.write body 55 60 end 61 end 62 63 def create_detail_report(result) 64 template = ERB.new(template("detail.html.erb")) 65 output(result.file_name, template.result(result.send(:binding))) 56 66 end 57 67 58 68 # CSS class for HTML status codes 59 69 def class_for_code(code) 60 70 "r#{Integer(code)/100}" 61 71 end 72 73 62 74 end -
tarantula.orig/lib/relevance/tarantula/io_reporter.rb
old new 1 class Relevance::Tarantula::IOReporter 2 3 include Relevance::Tarantula 4 attr_accessor :io, :results 5 delegate :successes, :failures, :to => :results 6 7 IOResultOverview = Struct.new(:code, :url) 8 9 def initialize(io) 10 @io = io 11 @results = Struct.new(:successes, :failures).new([], []) 12 end 13 14 def report(result) 15 return if result.nil? 16 17 unless result.success # collection = result.success ? results.successes : results.failures 18 results.failures << IOResultOverview.new( 19 result.code, result.url 20 ) 21 end 22 end 23 24 def finish_report 25 unless (failures).empty? 26 io.puts "****** FAILURES" 27 failures.each do |failure| 28 io.puts "#{failure.code}: #{failure.url}" 29 end 30 raise "#{failures.size} failures" 31 end 32 end 33 34 end -
tarantula.orig/lib/relevance/tarantula/rails_integration_proxy.rb
old new 18 18 [/\?\d+$/, ''], # strip trailing numbers for assets 19 19 [/^http:\/\/#{integration_test.host}/, ''] # strip full path down to relative 20 20 ] 21 t.reporters << Relevance::Tarantula::HtmlReporter 21 t.reporters << Relevance::Tarantula::HtmlReporter.new(t.report_dir) 22 22 t 23 23 end 24 24 -
tarantula.orig/lib/relevance/tarantula/result.rb
old new 30 30 "#{DEFAULT_LOCALHOST}#{url}" 31 31 end 32 32 ALLOW_NNN_FOR = /^allow_(\d\d\d)_for$/ 33 class << self33 class << self 34 34 attr_accessor :next_number 35 35 def handle(result) 36 36 retval = result.dup
