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 +4 -4
- data/Gemfile.lock +1 -1
- data/bin/{parse → selenium_grid_parser} +0 -0
- data/lib/nodes/client/grid_node_client.rb +7 -1
- data/lib/nodes/data/grid_node_data.rb +35 -2
- data/lib/nodes/grid_node.rb +22 -3
- data/selenium-grid-parser.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28c90e3c7577fd14150f06be813abe183b7f6547
|
4
|
+
data.tar.gz: bfcf06e4d3c64eff177b4f942adf7ab4e6b44ead
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e8b74275ad846c91937355ed4afa5370260b990733b253ff2c2676fb5ee72781179d20e176b8990d4f452e39072661e6f99708bfd146f20a88970b26a73e439
|
7
|
+
data.tar.gz: 146321282d026792a3f42ad009a55b2a84dbfa0fb5c259e840b7bd87e0afafb206c6579e2ad81e6e121909ba2d243593369bf77483d4e98eaac3aaeb86122b39
|
data/Gemfile.lock
CHANGED
File without changes
|
@@ -8,9 +8,15 @@ module SeleniumGridConsoleParser
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def sessions
|
11
|
-
|
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
|
-
|
14
|
-
|
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
|
data/lib/nodes/grid_node.rb
CHANGED
@@ -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
|
-
|
19
|
-
|
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
|
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.
|
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.
|
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-
|
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
|
-
-
|
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/
|
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
|