wsdirector-core 1.0.2 → 1.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/CHANGELOG.md +6 -0
- data/lib/.rbnext/2.7/wsdirector/protocols/base.rb +12 -3
- data/lib/.rbnext/2.7/wsdirector/scenario_reader.rb +6 -1
- data/lib/.rbnext/3.0/wsdirector/protocols/base.rb +12 -3
- data/lib/.rbnext/3.1/wsdirector/scenario_reader.rb +6 -1
- data/lib/wsdirector/protocols/base.rb +12 -3
- data/lib/wsdirector/scenario_reader.rb +6 -1
- data/lib/wsdirector/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d062f547a78c242ffc0b863fc7cd0e9405fc8b4621791ca2bb30f077a6778885
|
4
|
+
data.tar.gz: c75f03818f180eb0ee202402272189ec23a2d53ad2dd28cc9657971b9abde523
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a276cdde656fd94d4e019aa398d1bbce8509e57561bc318e9af681871d3647137f367db714c70eaaeea1b1722c81f19881c6fccb57db123885b4b6c04618ebe7
|
7
|
+
data.tar.gz: d735cf99e4c64f826ce23cf82bd66fbb2469066c3c660d05e30ed4c31610cff3498ea5d58b98558ce60ef007c34a1717326677f2457ac132a8bb43a7af401bc1
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.0.3 (2023-10-03)
|
6
|
+
|
7
|
+
- Add `timeout` option to receive to limit the amount of time we wait for the expected message. ([@palkan][])
|
8
|
+
|
9
|
+
- Add `loop` action to multiply several actions. ([@palkan][])
|
10
|
+
|
5
11
|
## 1.0.2 (2023-01-12)
|
6
12
|
|
7
13
|
- Fix adding transpiled files to releases. ([@palkan][])
|
@@ -99,6 +99,9 @@ module WSDirector
|
|
99
99
|
|
100
100
|
# Base protocol describes basic actions
|
101
101
|
class Base
|
102
|
+
class ReceiveTimeoutError < StandardError
|
103
|
+
end
|
104
|
+
|
102
105
|
include WSDirector::Utils
|
103
106
|
|
104
107
|
def initialize(task, scale: 1, logger: nil, id: nil, color: nil)
|
@@ -155,9 +158,11 @@ module WSDirector
|
|
155
158
|
def receive(step)
|
156
159
|
expected = step["data"] || PartialMatcher.new(step["data>"])
|
157
160
|
ordered = step["ordered"]
|
161
|
+
timeout = step.fetch("timeout", 5).to_f
|
158
162
|
|
159
|
-
log { "Receive a message: #{expected.truncate(
|
163
|
+
log { "Receive a message in #{timeout}s: #{expected.truncate(100)}" }
|
160
164
|
|
165
|
+
start = Time.now.to_f
|
161
166
|
received = nil
|
162
167
|
|
163
168
|
client.each_message do |msg, id|
|
@@ -170,10 +175,14 @@ module WSDirector
|
|
170
175
|
if ordered
|
171
176
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
172
177
|
end
|
178
|
+
|
179
|
+
if Time.now.to_f - start > timeout
|
180
|
+
raise ReceiveTimeoutError
|
181
|
+
end
|
173
182
|
end
|
174
183
|
|
175
|
-
log(:done) { "Received a message: #{received&.truncate(
|
176
|
-
rescue ThreadError
|
184
|
+
log(:done) { "Received a message: #{received&.truncate(100)}" }
|
185
|
+
rescue ThreadError, ReceiveTimeoutError
|
177
186
|
if received
|
178
187
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
179
188
|
else
|
@@ -92,7 +92,12 @@ module WSDirector
|
|
92
92
|
data["sample"] = [1, parse_multiplier(data["sample"])].max if data["sample"]
|
93
93
|
|
94
94
|
multiplier = parse_multiplier(data.delete("multiplier") || "1")
|
95
|
-
|
95
|
+
|
96
|
+
if type == "loop"
|
97
|
+
handle_steps(data.fetch("actions")) * multiplier
|
98
|
+
else
|
99
|
+
Array.new(multiplier) { {"type" => type, "id" => id}.merge(data) }
|
100
|
+
end
|
96
101
|
else
|
97
102
|
{"type" => step, "id" => id}
|
98
103
|
end
|
@@ -99,6 +99,9 @@ module WSDirector
|
|
99
99
|
|
100
100
|
# Base protocol describes basic actions
|
101
101
|
class Base
|
102
|
+
class ReceiveTimeoutError < StandardError
|
103
|
+
end
|
104
|
+
|
102
105
|
include WSDirector::Utils
|
103
106
|
|
104
107
|
def initialize(task, scale: 1, logger: nil, id: nil, color: nil)
|
@@ -155,9 +158,11 @@ module WSDirector
|
|
155
158
|
def receive(step)
|
156
159
|
expected = step["data"] || PartialMatcher.new(step["data>"])
|
157
160
|
ordered = step["ordered"]
|
161
|
+
timeout = step.fetch("timeout", 5).to_f
|
158
162
|
|
159
|
-
log { "Receive a message: #{expected.truncate(
|
163
|
+
log { "Receive a message in #{timeout}s: #{expected.truncate(100)}" }
|
160
164
|
|
165
|
+
start = Time.now.to_f
|
161
166
|
received = nil
|
162
167
|
|
163
168
|
client.each_message do |msg, id|
|
@@ -170,10 +175,14 @@ module WSDirector
|
|
170
175
|
if ordered
|
171
176
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
172
177
|
end
|
178
|
+
|
179
|
+
if Time.now.to_f - start > timeout
|
180
|
+
raise ReceiveTimeoutError
|
181
|
+
end
|
173
182
|
end
|
174
183
|
|
175
|
-
log(:done) { "Received a message: #{received&.truncate(
|
176
|
-
rescue ThreadError
|
184
|
+
log(:done) { "Received a message: #{received&.truncate(100)}" }
|
185
|
+
rescue ThreadError, ReceiveTimeoutError
|
177
186
|
if received
|
178
187
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
179
188
|
else
|
@@ -92,7 +92,12 @@ module WSDirector
|
|
92
92
|
data["sample"] = [1, parse_multiplier(data["sample"])].max if data["sample"]
|
93
93
|
|
94
94
|
multiplier = parse_multiplier(data.delete("multiplier") || "1")
|
95
|
-
|
95
|
+
|
96
|
+
if type == "loop"
|
97
|
+
handle_steps(data.fetch("actions")) * multiplier
|
98
|
+
else
|
99
|
+
Array.new(multiplier) { {"type" => type, "id" => id}.merge(data) }
|
100
|
+
end
|
96
101
|
else
|
97
102
|
{"type" => step, "id" => id}
|
98
103
|
end
|
@@ -99,6 +99,9 @@ module WSDirector
|
|
99
99
|
|
100
100
|
# Base protocol describes basic actions
|
101
101
|
class Base
|
102
|
+
class ReceiveTimeoutError < StandardError
|
103
|
+
end
|
104
|
+
|
102
105
|
include WSDirector::Utils
|
103
106
|
|
104
107
|
def initialize(task, scale: 1, logger: nil, id: nil, color: nil)
|
@@ -155,9 +158,11 @@ module WSDirector
|
|
155
158
|
def receive(step)
|
156
159
|
expected = step["data"] || PartialMatcher.new(step["data>"])
|
157
160
|
ordered = step["ordered"]
|
161
|
+
timeout = step.fetch("timeout", 5).to_f
|
158
162
|
|
159
|
-
log { "Receive a message: #{expected.truncate(
|
163
|
+
log { "Receive a message in #{timeout}s: #{expected.truncate(100)}" }
|
160
164
|
|
165
|
+
start = Time.now.to_f
|
161
166
|
received = nil
|
162
167
|
|
163
168
|
client.each_message do |msg, id|
|
@@ -170,10 +175,14 @@ module WSDirector
|
|
170
175
|
if ordered
|
171
176
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
172
177
|
end
|
178
|
+
|
179
|
+
if Time.now.to_f - start > timeout
|
180
|
+
raise ReceiveTimeoutError
|
181
|
+
end
|
173
182
|
end
|
174
183
|
|
175
|
-
log(:done) { "Received a message: #{received&.truncate(
|
176
|
-
rescue ThreadError
|
184
|
+
log(:done) { "Received a message: #{received&.truncate(100)}" }
|
185
|
+
rescue ThreadError, ReceiveTimeoutError
|
177
186
|
if received
|
178
187
|
raise UnmatchedExpectationError, prepare_receive_error(expected, received)
|
179
188
|
else
|
@@ -92,7 +92,12 @@ module WSDirector
|
|
92
92
|
data["sample"] = [1, parse_multiplier(data["sample"])].max if data["sample"]
|
93
93
|
|
94
94
|
multiplier = parse_multiplier(data.delete("multiplier") || "1")
|
95
|
-
|
95
|
+
|
96
|
+
if type == "loop"
|
97
|
+
handle_steps(data.fetch("actions")) * multiplier
|
98
|
+
else
|
99
|
+
Array.new(multiplier) { {"type" => type, "id" => id}.merge(data) }
|
100
|
+
end
|
96
101
|
else
|
97
102
|
{"type" => step, "id" => id}
|
98
103
|
end
|
data/lib/wsdirector/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wsdirector-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-10-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: websocket-client-simple
|
@@ -245,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
245
|
- !ruby/object:Gem::Version
|
246
246
|
version: '0'
|
247
247
|
requirements: []
|
248
|
-
rubygems_version: 3.
|
248
|
+
rubygems_version: 3.4.8
|
249
249
|
signing_key:
|
250
250
|
specification_version: 4
|
251
251
|
summary: Scenario-based WebSocket black-box testing
|