stopango_tester 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ config.yml
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in stopango_tester.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ require 'rubygems'
4
+ require 'stopango_tester'
5
+ # require 'pry'
6
+
7
+ # binding.pry
8
+
9
+ raise "musisz podac sciezke do pliku konfiguracyjnego" unless ARGV[0]
10
+ config = File.join(Dir.pwd,ARGV[0])
11
+
12
+ f = StopangoTester::Fetcher.new(config)
13
+ f.run
14
+
@@ -0,0 +1,96 @@
1
+ module StopangoTester
2
+ require 'typhoeus'
3
+ require 'yaml'
4
+ require 'json'
5
+ require 'pry'
6
+
7
+ require_relative 'report'
8
+
9
+ class Fetcher
10
+
11
+ attr_accessor :responses, :reports
12
+
13
+ def initialize(config_path)
14
+ @config_path = config_path
15
+ self.responses = Array.new
16
+ self.reports = []
17
+ end
18
+
19
+ def run
20
+ # fetch test_urls
21
+ puts "pobieram url do testow"
22
+ urls.each do |url|
23
+ request = hydra_request(url)
24
+
25
+ request.on_complete do |response|
26
+ responses << response
27
+ end
28
+
29
+ hydra.queue request
30
+ end
31
+ hydra.run
32
+
33
+ puts "przeprowadzam test"
34
+ # fetch every test_url page
35
+ test_records do |record|
36
+ request = hydra_request(record.test_url)
37
+
38
+ request.on_complete do |response|
39
+ reports << Report.new(record,response).to_json
40
+ end
41
+
42
+ hydra.queue request
43
+ end
44
+ hydra.run
45
+
46
+ # send reports
47
+ puts "wysylam raport"
48
+ reports.each do |report|
49
+ request = report_request(report)
50
+ hydra.queue request
51
+ end
52
+ hydra.run
53
+
54
+ end
55
+
56
+
57
+ private
58
+
59
+ def config
60
+ @config ||= YAML.load_file(@config_path)
61
+ end
62
+
63
+ def urls
64
+ @urls ||= config['urls']
65
+ end
66
+
67
+ def hydra
68
+ @hydra ||= Typhoeus::Hydra.new
69
+ end
70
+
71
+ def test_records
72
+ responses.each do |response|
73
+ body = JSON.parse(response.body)
74
+
75
+ body['feeds'].each do |feed|
76
+ feed['test_urls'].each do |url|
77
+ struct = Struct.new(:named_fid,:test_url).new
78
+ struct.named_fid = feed['named_fid']
79
+ struct.test_url = url
80
+
81
+ yield struct
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ def hydra_request(url)
88
+ Typhoeus::Request.new(url, :username => config['username'], :password => config['password'])
89
+ end
90
+
91
+ def report_request(report)
92
+ Typhoeus::Request.new(config['api_endpoint'], :method => :post, :username => config['username'], :password => config['password'], :params => {:feed_log => report}, :headers => {:Accept => "application/json"})
93
+ end
94
+
95
+ end
96
+ end
@@ -0,0 +1,21 @@
1
+ module StopangoTester
2
+
3
+ require 'cgi'
4
+
5
+ class Report < Struct.new(:record,:response)
6
+
7
+ #  field :named_fid
8
+ #  field :url
9
+ #  field :time, type: Float
10
+ #  field :status
11
+ def to_json
12
+ {
13
+ :named_fid => record.named_fid,
14
+ :status => response.code,
15
+ :url => ::CGI.escape(record.test_url),
16
+ :time => response.time
17
+ }
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module StopangoTester
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,7 @@
1
+ require "stopango_tester/version"
2
+ require "stopango_tester/fetcher"
3
+
4
+ module StopangoTester
5
+ # Your code goes here...
6
+
7
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "stopango_tester/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "stopango_tester"
7
+ s.version = StopangoTester::VERSION
8
+ s.authors = ["Pawel Lewinski"]
9
+ s.email = ["lewy313@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Api endpoint to measure page fetch times}
12
+ s.description = %q{Something later maybe}
13
+
14
+ s.rubyforge_project = "stopango_tester"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = ["stopango_tester.rb"]
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "pry"
23
+ s.add_runtime_dependency "typhoeus"
24
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stopango_tester
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Pawel Lewinski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pry
16
+ requirement: &70351649300780 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70351649300780
25
+ - !ruby/object:Gem::Dependency
26
+ name: typhoeus
27
+ requirement: &70351649300300 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70351649300300
36
+ description: Something later maybe
37
+ email:
38
+ - lewy313@gmail.com
39
+ executables:
40
+ - stopango_tester.rb
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - Rakefile
47
+ - bin/stopango_tester.rb
48
+ - lib/stopango_tester.rb
49
+ - lib/stopango_tester/fetcher.rb
50
+ - lib/stopango_tester/report.rb
51
+ - lib/stopango_tester/version.rb
52
+ - stopango_tester.gemspec
53
+ homepage: ''
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project: stopango_tester
73
+ rubygems_version: 1.8.15
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: Api endpoint to measure page fetch times
77
+ test_files: []
78
+ has_rdoc: