Class: ApiHeaderOptimizer::Tester
- Inherits:
-
Object
- Object
- ApiHeaderOptimizer::Tester
- Defined in:
- lib/api_header_optimizer/tester.rb
Instance Attribute Summary collapse
-
#all_headers ⇒ Object
readonly
Returns the value of attribute all_headers.
-
#results ⇒ Object
readonly
Returns the value of attribute results.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Instance Method Summary collapse
-
#initialize(uri, all_headers) ⇒ Tester
constructor
A new instance of Tester.
-
#test_combinations ⇒ Object
Header kombinasyonlarını test eder.
-
#test_header_set(header_set) ⇒ Object
Tek bir header seti ile istek yapar ve sonucu kontrol eder.
Constructor Details
#initialize(uri, all_headers) ⇒ Tester
Returns a new instance of Tester.
8 9 10 11 12 13 |
# File 'lib/api_header_optimizer/tester.rb', line 8 def initialize(uri, all_headers) @uri = URI(uri) @all_headers = all_headers @results = [] @mutex = Mutex.new # Erişim problemlerini önlemek için mutex kullanıyoruz end |
Instance Attribute Details
#all_headers ⇒ Object (readonly)
Returns the value of attribute all_headers.
6 7 8 |
# File 'lib/api_header_optimizer/tester.rb', line 6 def all_headers @all_headers end |
#results ⇒ Object (readonly)
Returns the value of attribute results.
6 7 8 |
# File 'lib/api_header_optimizer/tester.rb', line 6 def results @results end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
6 7 8 |
# File 'lib/api_header_optimizer/tester.rb', line 6 def uri @uri end |
Instance Method Details
#test_combinations ⇒ Object
Header kombinasyonlarını test eder
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/api_header_optimizer/tester.rb', line 27 def test_combinations header_keys = @all_headers.keys subsets = ApiHeaderOptimizer::Helpers.subsets(header_keys) # Eşzamanlılık için thread'ler oluşturuyoruz threads = subsets.map do |subset| Thread.new do header_set = subset.to_h { |key| [key, @all_headers[key]] } test_header_set(header_set) end end # Tüm thread'lerin bitmesini bekliyoruz threads.each(&:join) end |
#test_header_set(header_set) ⇒ Object
Tek bir header seti ile istek yapar ve sonucu kontrol eder
16 17 18 19 20 21 22 23 24 |
# File 'lib/api_header_optimizer/tester.rb', line 16 def test_header_set(header_set) response = make_request(header_set) return unless response # İstek başarısızsa geç # Sonuçları güvenli bir şekilde eklemek için mutex kullanıyoruz @mutex.synchronize do @results << { headers: header_set, code: response.code, body: response.body } end end |