Class: NethttpAb::Requester

Inherits:
Object
  • Object
show all
Defined in:
lib/requester.rb

Constant Summary collapse

URL_REGEXP =

list of all available TLD domains data.iana.org/TLD/tlds-alpha-by-domain.txt

/^(https?:\/\/)?(?:[a-zA-Z0-9-]+\.)+(AC|AD|AE|AERO|AF|AG|AI|AL|AM|AN|AO|AQ|AR|ARPA|AS|ASIA|AT|AU|AW|AX|AZ|BA|BB|BD|BE|BF|BG|BH|BI|BIZ|BJ|BM|BN|BO|BR|BS|BT|BV|BW|BY|BZ|CA|CAT|CC|CD|CF|CG|CH|CI|CK|CL|CM|CN|CO|COM|COOP|CR|CU|CV|CX|CY|CZ|DE|DJ|DK|DM|DO|DZ|EC|EDU|EE|EG|ER|ES|ET|EU|FI|FJ|FK|FM|FO|FR|GA|GB|GD|GE|GF|GG|GH|GI|GL|GM|GN|GOV|GP|GQ|GR|GS|GT|GU|GW|GY|HK|HM|HN|HR|HT|HU|ID|IE|IL|IM|IN|INFO|INT|IO|IQ|IR|IS|IT|JE|JM|JO|JOBS|JP|KE|KG|KH|KI|KM|KN|KP|KR|KW|KY|KZ|LA|LB|LC|LI|LK|LR|LS|LT|LU|LV|LY|MA|MC|MD|ME|MG|MH|MIL|MK|ML|MM|MN|MO|MOBI|MP|MQ|MR|MS|MT|MU|MUSEUM|MV|MW|MX|MY|MZ|NA|NAME|NC|NE|NET|NF|NG|NI|NL|NO|NP|NR|NU|NZ|OM|ORG|PA|PE|PF|PG|PH|PK|PL|PM|PN|PR|PRO|PS|PT|PW|PY|QA|RE|RO|RS|RU|RW|SA|SB|SC|SD|SE|SG|SH|SI|SJ|SK|SL|SM|SN|SO|SR|ST|SU|SV|SY|SZ|TC|TD|TEL|TF|TG|TH|TJ|TK|TL|TM|TN|TO|TP|TR|TRAVEL|TT|TV|TW|TZ|UA|UG|UK|US|UY|UZ|VA|VC|VE|VG|VI|VN|VU|WF|WS|YE|YT|ZA|ZM|ZW)(\?|\Z|\/)(.*)?/i

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRequester

Returns a new instance of Requester.



20
21
22
23
24
25
26
27
28
# File 'lib/requester.rb', line 20

def initialize
  @response_length = 0
  @total_time = 0.0
  @threads = []
  @mutex = Mutex.new
  @failed_requests   = 0
  @successfull_requests  = 0
  @follow_links = false
end

Instance Attribute Details

#failed_requestsObject

Returns the value of attribute failed_requests.



12
13
14
# File 'lib/requester.rb', line 12

def failed_requests
  @failed_requests
end

#successfull_requestsObject

Returns the value of attribute successfull_requests.



11
12
13
# File 'lib/requester.rb', line 11

def successfull_requests
  @successfull_requests
end

Instance Method Details

#concurrent_users=(num) ⇒ Object



30
31
32
# File 'lib/requester.rb', line 30

def concurrent_users=(num)
  @concurrent_users = num
end

#follow_links=(flag) ⇒ Object



38
39
40
41
42
# File 'lib/requester.rb', line 38

def follow_links=(flag)
  @follow_links = flag
  # we could follow links on the pages if there's --follow-links=2 option
  require 'nokogiri'  if @follow_links
end

#num_of_requests=(num) ⇒ Object



34
35
36
# File 'lib/requester.rb', line 34

def num_of_requests=(num)
  @num_of_requests = num
end


49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/requester.rb', line 49

def print_stats
  puts
  print "Failed requests: #{@failed_requests}\n"
  print "Succeeded requests: #{@successfull_requests}\n\n"

  print "Total response length: #{@response_length} bytes\n"
  if @successfull_requests > 0
    print "Recieved characters per one page: #{@response_length / @successfull_requests} bytes\n\n"
  end

  printf "Total time: %.03f s\n", @total_time
  printf "Average time per request: %.03f s\n", @total_time / @successfull_requests.to_f
  printf "Requests per second: %.01f rps\n", 1.0 / (@total_time / @successfull_requests.to_f)
end

#proceedObject



64
65
66
67
# File 'lib/requester.rb', line 64

def proceed  
  prepare_queue     
  start_threads
end

#url=(link) ⇒ Object



44
45
46
47
# File 'lib/requester.rb', line 44

def url=(link)
  @url = URI.parse(link)
  @url.path = '/' if @url.path == "" # ensure we requesting main page (if url is like http://google.com)
end