gremlin_client 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/gremlin_client/connection.rb +17 -2
- data/lib/gremlin_client/version.rb +1 -1
- data/spec/connection_spec.rb +47 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac1726d69ef30e73f89b9df036282fdaaa2ba7ec
|
4
|
+
data.tar.gz: 5cc55e6a074faad8e7ed1b95a3e5832a572ac3b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 577ae755b2dd6838ae88caa683af726f65b6e8423717608a1fe23173b0dc85a5a96c6f7695e06136de2ed559f337eeafdb0134ced79f53f7765434ce283a6804
|
7
|
+
data.tar.gz: ca42b57048b747bf4816aa1b7e4ebd4f556fddcdbe743e0037744c7f4f7153fa59bc31aeb746a4bcf8bdc53a57428980a12a7cdc8cb34d76637a44ca043b26a0
|
data/Gemfile.lock
CHANGED
@@ -97,7 +97,15 @@ module GremlinClient
|
|
97
97
|
def receive_message(msg)
|
98
98
|
response = JSON.parse(msg.data)
|
99
99
|
# this check is important in case a request timeout and we make new ones after
|
100
|
-
|
100
|
+
if response['requestId'] == @request_id
|
101
|
+
if @response.nil?
|
102
|
+
@response = response
|
103
|
+
else
|
104
|
+
@response['result']['data'].concat response['result']['data']
|
105
|
+
@response['result']['meta'].merge! response['result']['meta']
|
106
|
+
@response['status'] = response['status']
|
107
|
+
end
|
108
|
+
end
|
101
109
|
end
|
102
110
|
|
103
111
|
def receive_error(e)
|
@@ -128,8 +136,15 @@ module GremlinClient
|
|
128
136
|
@response = nil
|
129
137
|
end
|
130
138
|
|
139
|
+
def is_finished?
|
140
|
+
return true unless @error.nil?
|
141
|
+
return false if @response.nil?
|
142
|
+
return false if @response['status'].nil?
|
143
|
+
return @response['status']['code'] != STATUS[:partial_content]
|
144
|
+
end
|
145
|
+
|
131
146
|
def wait_response
|
132
|
-
while
|
147
|
+
while !is_finished? && (Time.now.to_i - @started_at < @timeout)
|
133
148
|
sleep 0.001
|
134
149
|
end
|
135
150
|
|
data/spec/connection_spec.rb
CHANGED
@@ -27,9 +27,17 @@ RSpec.describe :connection do
|
|
27
27
|
def self.data
|
28
28
|
@called ||= 0
|
29
29
|
@called += 1
|
30
|
-
rid = ", \"requestId\" : \"#{@request_id}\"" unless @request_id.nil?
|
31
|
-
stt = ", \"status\" : { \"code\" : #{@status_code} }" unless @status_code.nil?
|
32
|
-
"{\"example\" : \"data #{@called}\"#{rid}#{stt}}"
|
30
|
+
#rid = ", \"requestId\" : \"#{@request_id}\"" unless @request_id.nil?
|
31
|
+
#stt = ", \"status\" : { \"code\" : #{@status_code} }" unless @status_code.nil?
|
32
|
+
#"{\'{\"example\" : \"data #{@called}\"#{rid}#{stt}}"
|
33
|
+
{
|
34
|
+
requestId: @request_id,
|
35
|
+
status: { code: @status_code },
|
36
|
+
result: {
|
37
|
+
data: [@called],
|
38
|
+
meta: {},
|
39
|
+
},
|
40
|
+
}.to_json
|
33
41
|
end
|
34
42
|
end
|
35
43
|
|
@@ -75,8 +83,10 @@ RSpec.describe :connection do
|
|
75
83
|
it :socket_listeners do
|
76
84
|
Message.called = 0
|
77
85
|
conn = GremlinClient::Connection.new
|
78
|
-
expect(conn.instance_variable_get('@response')).to eq(
|
79
|
-
expect(conn.instance_variable_get('@error').data).to eq(
|
86
|
+
expect(conn.instance_variable_get('@response')['result']['data']).to eq([1])
|
87
|
+
expect(conn.instance_variable_get('@error').data).to eq(
|
88
|
+
"{\"requestId\":null,\"status\":{\"code\":null},\"result\":{\"data\":[2],\"meta\":{}}}"
|
89
|
+
)
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
@@ -133,9 +143,37 @@ RSpec.describe :connection do
|
|
133
143
|
conn.send(:reset_request)
|
134
144
|
conn.instance_variable_set('@request_id', '123')
|
135
145
|
conn.receive_message(Message)
|
136
|
-
expect(conn.instance_variable_get('@response')).to eq({
|
146
|
+
expect(conn.instance_variable_get('@response')).to eq({
|
147
|
+
'requestId' => '123',
|
148
|
+
'status' => { 'code' => nil },
|
149
|
+
'result' => { 'data' => [2], 'meta' => {} }
|
150
|
+
})
|
151
|
+
# exit this block reseting this value
|
152
|
+
Message.request_id = nil
|
153
|
+
end
|
154
|
+
|
155
|
+
it :partial_message do
|
156
|
+
Message.called = 0
|
157
|
+
|
158
|
+
conn = GremlinClient::Connection.new
|
159
|
+
conn.send(:reset_request)
|
160
|
+
Message.request_id = conn.instance_variable_get('@request_id')
|
161
|
+
Message.status = :partial_content
|
162
|
+
conn.receive_message(Message)
|
163
|
+
expect(conn.send('is_finished?')).to be false
|
164
|
+
Message.status = :success
|
165
|
+
conn.receive_message(Message)
|
166
|
+
expect(conn.send('is_finished?')).to be true
|
167
|
+
expect(conn.instance_variable_get('@response')).to eq({
|
168
|
+
'requestId' => conn.instance_variable_get('@request_id'),
|
169
|
+
'status' => { 'code' => 200 },
|
170
|
+
# not 1, 2 because it is called once uppon init
|
171
|
+
'result' => { 'data' => [2, 3], 'meta' => {} }
|
172
|
+
})
|
137
173
|
# exit this block reseting this value
|
138
174
|
Message.request_id = nil
|
175
|
+
# clear the status
|
176
|
+
Message.status = nil
|
139
177
|
end
|
140
178
|
end
|
141
179
|
|
@@ -217,8 +255,9 @@ RSpec.describe :connection do
|
|
217
255
|
conn.receive_message(Message)
|
218
256
|
conn.send(:wait_response)
|
219
257
|
expect(conn.instance_variable_get('@response')).to eq({
|
220
|
-
'
|
221
|
-
'
|
258
|
+
'requestId' => conn.instance_variable_get('@request_id'),
|
259
|
+
'status' => { 'code' => nil } ,
|
260
|
+
'result' => { 'data' => [1], 'meta' => {} }
|
222
261
|
})
|
223
262
|
end
|
224
263
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gremlin_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcelo Coraça de Freitas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-client-simple
|
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
requirements: []
|
160
160
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.6.10
|
162
162
|
signing_key:
|
163
163
|
specification_version: 4
|
164
164
|
summary: Simple Gremlin server client for the WebSocketChannelizer
|