selenium-grid-parser 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c67b67b2c32df2a55bdbb0f198cef4a9e3114ce
4
- data.tar.gz: 34d19cb4a5ef692dc51ca872ac3dea1157fbb828
3
+ metadata.gz: 28c90e3c7577fd14150f06be813abe183b7f6547
4
+ data.tar.gz: bfcf06e4d3c64eff177b4f942adf7ab4e6b44ead
5
5
  SHA512:
6
- metadata.gz: cfc61932a8031f3c59561b3e15fb40da91e6ac11bbd9c3d167a26cbf8d18fda06069a346cd120273406ce6c3f1979197003c670e3e5330aa991938a19f5676b5
7
- data.tar.gz: 6a4e58bb35885f396b1ae9c9fd97ef4315801fa3a00cfacbd3cc895c1b8e617a4d4bbc03248500e98c036228b525f7d374f1f8e2cb3c671e583ea061500536ad
6
+ metadata.gz: 7e8b74275ad846c91937355ed4afa5370260b990733b253ff2c2676fb5ee72781179d20e176b8990d4f452e39072661e6f99708bfd146f20a88970b26a73e439
7
+ data.tar.gz: 146321282d026792a3f42ad009a55b2a84dbfa0fb5c259e840b7bd87e0afafb206c6579e2ad81e6e121909ba2d243593369bf77483d4e98eaac3aaeb86122b39
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- selenium-grid-parser (0.0.2)
4
+ selenium-grid-parser (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
File without changes
@@ -8,9 +8,15 @@ module SeleniumGridConsoleParser
8
8
  end
9
9
 
10
10
  def sessions
11
- response = HTTParty.get("#{@url}/wd/hub/sessions")
11
+ begin
12
+ response = HTTParty.get("#{@url}/wd/hub/sessions", timeout: 10)
13
+ rescue Net::ReadTimeout
14
+ raise NodeDownException
15
+ end
12
16
  return response.body if response.code == 200
13
17
  end
14
18
  end
19
+
20
+ class NodeDownException < Exception; end
15
21
  end
16
22
  end
@@ -7,11 +7,44 @@ module SeleniumGridConsoleParser
7
7
  class GridNodeData
8
8
  def initialize(node)
9
9
  @node = node
10
+ @cache = GridNodeCacheData.new()
10
11
  end
11
12
 
12
13
  def sessions
13
- node_client = GridNodeClient.new(@node.remoteHost)
14
- JSON.parse(node_client.sessions)
14
+ if (@cache.valid? && @cache.read("sessions"))
15
+ sessions = @cache.read("sessions")
16
+ else
17
+ sessions = GridNodeClient.new(@node.remoteHost).sessions
18
+ @cache.write("sessions", sessions)
19
+ end
20
+ JSON.parse(sessions)
21
+ end
22
+ end
23
+
24
+ class GridNodeCacheData
25
+ def initialize(cache_duration_in_secs = 20)
26
+ @max_seconds = cache_duration_in_secs
27
+ @data = {}
28
+ @time = 0
29
+ end
30
+
31
+ def valid?
32
+ time_difference = (Time.now - @time).to_i
33
+ if time_difference > @max_seconds
34
+ @data = {}
35
+ return false
36
+ else
37
+ return true
38
+ end
39
+ end
40
+
41
+ def write(key,value)
42
+ @data[key] = value
43
+ @time = Time.now
44
+ end
45
+
46
+ def read(key)
47
+ @data[key]
15
48
  end
16
49
  end
17
50
  end
@@ -8,6 +8,8 @@ module SeleniumGridConsoleParser
8
8
  def initialize(configuration)
9
9
  @remoteHost = configuration["remoteHost"]
10
10
  @configuration = configuration.delete_if {|key, value| key == "remoteHost"}
11
+ @down = false
12
+ @data = GridNodeData.new(self)
11
13
  end
12
14
 
13
15
  def name
@@ -15,13 +17,30 @@ module SeleniumGridConsoleParser
15
17
  end
16
18
 
17
19
  def free?
18
- sessions = GridNodeData.new(self).sessions
19
- @free = sessions["value"].size == 0 ? true : false
20
+ if down?
21
+ @free = false
22
+ else
23
+ sessions = @data.sessions
24
+ @free = sessions["value"].size == 0 ? true : false
25
+ end
26
+ @free
27
+ end
28
+
29
+ def down?
30
+ begin
31
+ @data.sessions
32
+ rescue NodeDownException
33
+ @down = true
34
+ return true
35
+ end
36
+ @down = false
37
+ return false
20
38
  end
21
39
 
22
40
  def to_hash
41
+ free?
23
42
  grid_node_hash = self.instance_variables.each_with_object({}) { |var, hash| hash[var.to_s.delete("@")] = self.instance_variable_get(var) }
24
- grid_node_hash["free"] = free?
43
+ grid_node_hash.delete("data")
25
44
  grid_node_hash
26
45
  end
27
46
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "selenium-grid-parser"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.authors = ["jjortega"]
9
9
  spec.email = ["juanjortcan@gmail.com"]
10
10
  spec.summary = %q{Selenium-Grid doesn't have a pretty API so let parse it!}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-grid-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jjortega
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-22 00:00:00.000000000 Z
11
+ date: 2016-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -73,7 +73,7 @@ email:
73
73
  - juanjortcan@gmail.com
74
74
  executables:
75
75
  - console
76
- - parse
76
+ - selenium_grid_parser
77
77
  extensions: []
78
78
  extra_rdoc_files: []
79
79
  files:
@@ -84,7 +84,7 @@ files:
84
84
  - README.md
85
85
  - Rakefile
86
86
  - bin/console
87
- - bin/parse
87
+ - bin/selenium_grid_parser
88
88
  - lib/nodes/client/grid_node_client.rb
89
89
  - lib/nodes/configuration/capabilities.rb
90
90
  - lib/nodes/configuration/node_configuration.rb