rookout 0.1.15 → 0.1.20
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/lib/rookout/com_ws/pinger.rb +8 -3
- data/lib/rookout/com_ws/websocket_client.rb +49 -18
- data/lib/rookout/commit.rb +1 -1
- data/lib/rookout/exceptions.rb +18 -0
- data/lib/rookout/interface.rb +17 -2
- data/lib/rookout/logger.rb +2 -1
- data/lib/rookout/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 481ca24b7cd172e3416b29fee18905c6282d589db6cb316b2aa4d5adab26da1a
|
4
|
+
data.tar.gz: 5e391b43a1e7177ef5c020bc64d133fb9e62810bc4596301b2ed7298d18182d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30d63371644e94dba222b0e63650158d92f1de63e96d4731dd4eaa300c6a8e2d8220cd6f93fdcc0fdee5aaf390d3170bb52ebbcb7e82d2611228a7341c15faed
|
7
|
+
data.tar.gz: 5d0c24c4f132464d38b547d68f221983500fb76d7a6a4b438378abdb5d6f3bfb7f924e8784ac64b9da9642f7f84b2bf5c9facaa835a2f3d75d103d4e72df615c
|
@@ -17,9 +17,14 @@ module Rookout
|
|
17
17
|
if Time.now - @last_ping > @interval
|
18
18
|
Logger.instance.debug "Sending Ping"
|
19
19
|
@last_ping = Time.now
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
begin
|
21
|
+
@connection.ping Time.now.to_s do
|
22
|
+
Logger.instance.debug "Got Ping reply"
|
23
|
+
@last_pong = Time.now
|
24
|
+
end
|
25
|
+
rescue RuntimeError, Errno::EPIPE
|
26
|
+
Logger.instance.debug "Failed to send ping"
|
27
|
+
break
|
23
28
|
end
|
24
29
|
end
|
25
30
|
|
@@ -2,6 +2,7 @@ module Rookout
|
|
2
2
|
module ComWs
|
3
3
|
require "openssl"
|
4
4
|
require "websocket/driver"
|
5
|
+
require "uri"
|
5
6
|
|
6
7
|
require_relative "../config"
|
7
8
|
require_relative "../logger"
|
@@ -11,14 +12,12 @@ module Rookout
|
|
11
12
|
def initialize url, proxy, token
|
12
13
|
@token = token
|
13
14
|
@connection = WebsocketConnection.new url, proxy
|
15
|
+
@proxy = proxy
|
14
16
|
@driver = nil
|
15
|
-
@error = nil
|
16
|
-
@last_ping = nil
|
17
17
|
end
|
18
18
|
|
19
19
|
def connect
|
20
|
-
|
21
|
-
@connection.connect
|
20
|
+
connection_error = nil
|
22
21
|
@driver = WebSocket::Driver.client @connection
|
23
22
|
|
24
23
|
headers.each do |key, value|
|
@@ -26,18 +25,20 @@ module Rookout
|
|
26
25
|
end
|
27
26
|
|
28
27
|
@driver.on :error do |error|
|
29
|
-
|
28
|
+
connection_error = error
|
30
29
|
end
|
31
30
|
|
32
31
|
# Connect to the remote server
|
33
|
-
@driver.start
|
34
32
|
# TODO: ADD CONNECT TIMEOUT
|
33
|
+
@connection.connect @driver
|
34
|
+
@driver.start
|
35
|
+
|
35
36
|
while @driver.state == :connecting
|
36
37
|
recv_data = @connection.read_char
|
37
38
|
@driver.parse recv_data
|
38
39
|
end
|
39
40
|
|
40
|
-
raise Exceptions::RookWebsocketException,
|
41
|
+
raise Exceptions::RookWebsocketException, connection_error if @driver.state != :open
|
41
42
|
end
|
42
43
|
|
43
44
|
def connection_pump message_handler
|
@@ -62,7 +63,12 @@ module Rookout
|
|
62
63
|
def close
|
63
64
|
return if @driver.nil?
|
64
65
|
|
65
|
-
|
66
|
+
begin
|
67
|
+
@driver.close
|
68
|
+
rescue RuntimeError, Errno::EPIPE
|
69
|
+
# Protocol close may fail if the connection is already closed
|
70
|
+
nil
|
71
|
+
end
|
66
72
|
@connection.close
|
67
73
|
end
|
68
74
|
|
@@ -88,14 +94,36 @@ module Rookout
|
|
88
94
|
@secure = %w[https wss].include? @uri.scheme
|
89
95
|
|
90
96
|
@socket = nil
|
97
|
+
|
98
|
+
@proxy_connected = false
|
91
99
|
end
|
92
100
|
|
93
|
-
def connect
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
101
|
+
def connect driver
|
102
|
+
@socket = tcp_connect
|
103
|
+
|
104
|
+
proxy_connect driver if @proxy
|
105
|
+
|
106
|
+
@socket = ssl_connect @socket if @secure
|
107
|
+
end
|
108
|
+
|
109
|
+
def proxy_connect driver
|
110
|
+
connection_error = nil
|
111
|
+
@proxy_connected = false
|
112
|
+
proxy = driver.proxy @proxy
|
113
|
+
|
114
|
+
proxy.on :connect do
|
115
|
+
@proxy_connected = true
|
98
116
|
end
|
117
|
+
|
118
|
+
proxy.on :error do |error|
|
119
|
+
connection_error = error
|
120
|
+
end
|
121
|
+
|
122
|
+
proxy.start
|
123
|
+
|
124
|
+
proxy.parse read_char until @proxy_connected == true || !connection_error.nil?
|
125
|
+
|
126
|
+
raise Exceptions::RookProxyException, connection_error unless connection_error.nil?
|
99
127
|
end
|
100
128
|
|
101
129
|
attr_reader :url
|
@@ -118,13 +146,16 @@ module Rookout
|
|
118
146
|
private
|
119
147
|
|
120
148
|
def tcp_connect
|
121
|
-
|
122
|
-
|
149
|
+
if @proxy
|
150
|
+
uri = URI(@proxy)
|
151
|
+
TCPSocket.new uri.host, uri.port
|
152
|
+
else
|
153
|
+
TCPSocket.new @uri.host,
|
154
|
+
@uri.port || (@secure ? 443 : 80)
|
155
|
+
end
|
123
156
|
end
|
124
157
|
|
125
|
-
def ssl_connect
|
126
|
-
tcp_socket = tcp_connect
|
127
|
-
|
158
|
+
def ssl_connect tcp_socket
|
128
159
|
ctx = ::OpenSSL::SSL::SSLContext.new
|
129
160
|
ctx.min_version = ::OpenSSL::SSL::TLS1_2_VERSION
|
130
161
|
cert_store = ::OpenSSL::X509::Store.new
|
data/lib/rookout/commit.rb
CHANGED
data/lib/rookout/exceptions.rb
CHANGED
@@ -144,6 +144,12 @@ module Rookout
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
+
class RookInvalidLabel < ToolException
|
148
|
+
def initialize label_name
|
149
|
+
super "Invalid label: must not start with the '$' character (#{label_name})"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
147
153
|
class RookCrcMismatchException < ToolException
|
148
154
|
def initialize filepath, expected, calculated
|
149
155
|
super "Line CRC32s do not match! path: #{filepath}, expected: #{expected}, calculated:#{calculated}",
|
@@ -178,10 +184,22 @@ module Rookout
|
|
178
184
|
end
|
179
185
|
end
|
180
186
|
|
187
|
+
class RookProxyException < ToolException
|
188
|
+
def initialize error
|
189
|
+
super "Error from proxy #{error}", { "error" => error }
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
181
193
|
class RookBadProtobuf < ToolException
|
182
194
|
def initialize
|
183
195
|
super 'Bad protobuf version. Please execute "bundle config force_ruby_platform true" before "bundler install".'
|
184
196
|
end
|
185
197
|
end
|
198
|
+
|
199
|
+
class RookBadProtobufPlatform < ToolException
|
200
|
+
def initialize platform
|
201
|
+
super "Bad protobuf platform: #{platform}"
|
202
|
+
end
|
203
|
+
end
|
186
204
|
end
|
187
205
|
end
|
data/lib/rookout/interface.rb
CHANGED
@@ -12,11 +12,18 @@ module Rookout
|
|
12
12
|
@start_options = nil
|
13
13
|
end
|
14
14
|
|
15
|
+
def print_debug_messages
|
16
|
+
puts "[Rookout] Running in debug mode"
|
17
|
+
puts "[Rookout] Rookout SDK for ruby: " + Config.rookout_version
|
18
|
+
end
|
19
|
+
|
15
20
|
def start options = {}
|
16
21
|
return unless @rook.nil?
|
17
22
|
throw_errors = options[:throw_errors] == true
|
18
23
|
Config.debug = evaluate_flag options[:debug], "ROOKOUT_DEBUG"
|
19
24
|
|
25
|
+
print_debug_messages if Config.debug
|
26
|
+
|
20
27
|
begin
|
21
28
|
verify_env
|
22
29
|
|
@@ -75,7 +82,11 @@ module Rookout
|
|
75
82
|
return unless File.exist? "/etc/alpine-release"
|
76
83
|
|
77
84
|
protobuf = Gem::Specification.find_by_path "google/protobuf"
|
78
|
-
|
85
|
+
STDERR.puts RookBadProtobuf.new.message if protobuf.nil?
|
86
|
+
return unless protobuf.platform != "ruby"
|
87
|
+
|
88
|
+
error = RookBadProtobufPlatform.new protobuf.platform
|
89
|
+
STDERR.puts error.message
|
79
90
|
end
|
80
91
|
|
81
92
|
def configure_globals options
|
@@ -103,7 +114,7 @@ module Rookout
|
|
103
114
|
proxy = evaluate_config options[:proxy], "ROOKOUT_PROXY"
|
104
115
|
token = evaluate_config options[:token], "ROOKOUT_TOKEN"
|
105
116
|
|
106
|
-
raise RookMissingToken if token.nil? &&
|
117
|
+
raise RookMissingToken if token.nil? && !(host_specified options)
|
107
118
|
verify_token token if token
|
108
119
|
|
109
120
|
labels = stringify_labels(options[:labels]) || parse_labels(ENV["ROOKOUT_LABELS"])
|
@@ -115,6 +126,10 @@ module Rookout
|
|
115
126
|
{ host: host, port: port, proxy: proxy, token: token, labels: labels, async_start: async_start, fork: fork }
|
116
127
|
end
|
117
128
|
|
129
|
+
def host_specified options
|
130
|
+
!options[:host].nil? || !ENV["ROOKOUT_CONTROLLER_HOST"].nil? || !ENV["ROOKOUT_AGENT_HOST"].nil?
|
131
|
+
end
|
132
|
+
|
118
133
|
def evaluate_flag argument, env_var_name
|
119
134
|
return true? argument unless argument.nil?
|
120
135
|
true? ENV[env_var_name]
|
data/lib/rookout/logger.rb
CHANGED
@@ -12,7 +12,8 @@ module Rookout
|
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
# Detect unit tests
|
15
|
-
if (
|
15
|
+
if (Config.debug ||
|
16
|
+
$PROGRAM_NAME.end_with?("minitest_runner.rb") ||
|
16
17
|
$PROGRAM_NAME.end_with?("tunit_or_minitest_in_folder_runner.rb")) &&
|
17
18
|
Dir.pwd.end_with?("ruby-sdk")
|
18
19
|
Config.logger_log_level = :DEBUG
|
data/lib/rookout/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rookout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liran Haimovitch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
name: google-style
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.24.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.24.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -268,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
268
|
- !ruby/object:Gem::Version
|
269
269
|
version: '0'
|
270
270
|
requirements: []
|
271
|
-
rubygems_version: 3.1.
|
271
|
+
rubygems_version: 3.1.4
|
272
272
|
signing_key:
|
273
273
|
specification_version: 4
|
274
274
|
summary: rookout is the Ruby SDK for the Rookout Debugging Platform
|