anyt 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc9f527d5ead1058291854236f7b011c64df27da0be2559bb27893c1dbb471fc
4
- data.tar.gz: 0dce342de8720db9d2208e4fc44c7c1ba3b489c0d82bce7b936152df2c70ccca
3
+ metadata.gz: 42cd66b2a05dcf5d46c060a2a9540c26368fe003f86febfb94c8104a3ccfacc9
4
+ data.tar.gz: e1f8c0cbe88a223d9383f8467e44f75f05ad6d1718c309d19f7d90a102b7f9ad
5
5
  SHA512:
6
- metadata.gz: 6237b496a2cfb034d4b0d83eff127be84c360a124039bf14c32e4886732f9b9cff9def7e1515168dc87027ca85bcc64b78dfdd4d10988a1e84206b9fc4be7b3a
7
- data.tar.gz: 9cd9d41ebdaf1321d13a08685b1955fe92875fb86fda8c4a230b1df9d30e7e39e5564a2614fb1693666a203926770cbdf3d9a0fda7265f3893524baa7cb8f89a
6
+ metadata.gz: 86714f4bfbddf5242491bb371b714becfaffd3353fe275f8badb3839731bcdcfc66b96d2188d9fe4089ca612234edd72243c13c0e0263932337df5758a19eaa9
7
+ data.tar.gz: b3b2af67d98a2542ba05912694f76b052d5a51b4bb3d84159af45aece063faf03242f46065687e765268395fef52d607a7bfc0989918af62b4d2582e46d37020
@@ -32,7 +32,7 @@ module Anyt
32
32
  end
33
33
 
34
34
  # Load all test scenarios
35
- Tests.load_tests
35
+ Tests.load_tests unless @skip_tests
36
36
 
37
37
  Rails.application.initialize!
38
38
 
@@ -50,8 +50,14 @@ module Anyt
50
50
  # Start webosocket server under test
51
51
  Command.run
52
52
 
53
- # Run tests
54
- result = Tests.run ? 0 : 1
53
+ unless @skip_tests
54
+ # Run tests
55
+ result = Tests.run ? 0 : 1
56
+ end
57
+
58
+ wait_till_terminated if @only_rails
59
+ rescue Interrupt => e
60
+ $stdout.puts "#{e.message}. Good-bye!"
55
61
  ensure
56
62
  RPC.stop unless @skip_rpc
57
63
  Command.stop
@@ -91,16 +97,21 @@ module Anyt
91
97
 
92
98
  cli.on("--only-rpc", TrueClass, "Run only RPC server") do |flag|
93
99
  @only_rpc = flag
100
+ @skip_tests = true
101
+ end
102
+
103
+ cli.on("--only-rails", TrueClass, "Run only Rails server") do
104
+ @skip_rpc = true
105
+ @only_rails = true
106
+ @skip_tests = true
107
+
108
+ configure_rails_command!
94
109
  end
95
110
 
96
111
  cli.on("--self-check", "Run tests again Action Cable itself") do
97
112
  @skip_rpc = true
98
- dummy_path = ::File.expand_path(
99
- "config.ru",
100
- ::File.join(::File.dirname(__FILE__), "dummy")
101
- )
102
- Anyt.config.command = "bundle exec puma #{dummy_path}"
103
- Anyt.config.use_action_cable = true
113
+
114
+ configure_rails_command!
104
115
  end
105
116
 
106
117
  cli.on("--only test1,test2,test3", Array, "Run only specified tests") do |only_tests|
@@ -149,6 +160,36 @@ module Anyt
149
160
  puts "Use `anyt --help` to list all available options."
150
161
  exit 1
151
162
  end
163
+
164
+ def configure_rails_command!
165
+ dummy_path = ::File.expand_path(
166
+ "config.ru",
167
+ ::File.join(::File.dirname(__FILE__), "dummy")
168
+ )
169
+ Anyt.config.command = "bundle exec puma #{dummy_path}"
170
+ Anyt.config.use_action_cable = true
171
+ end
172
+
173
+ def wait_till_terminated
174
+ self_read = setup_signals
175
+
176
+ while readable_io = IO.select([self_read]) # rubocop:disable Lint/AssignmentInCondition
177
+ signal = readable_io.first[0].gets.strip
178
+ raise Interrupt, "SIG#{signal} received"
179
+ end
180
+ end
181
+
182
+ def setup_signals
183
+ self_read, self_write = IO.pipe
184
+
185
+ %w[INT TERM].each do |signal|
186
+ trap signal do
187
+ self_write.puts signal
188
+ end
189
+ end
190
+
191
+ self_read
192
+ end
152
193
  end
153
194
  end
154
195
  end
@@ -11,6 +11,8 @@ module Anyt
11
11
  def run
12
12
  return if running?
13
13
 
14
+ raise "Please, specify command via -c (--command) option" unless Anyt.config.command
15
+
14
16
  AnyCable.logger.debug "Running command: #{Anyt.config.command}"
15
17
 
16
18
  @process = ChildProcess.build(*Anyt.config.command.split(/\s+/))
@@ -42,6 +42,29 @@ module ApplicationCable
42
42
  end
43
43
  end
44
44
 
45
+ # BenchmarkChannel is useful when running Rails app only or RPC only
46
+ class BenchmarkChannel < ApplicationCable::Channel
47
+ def subscribed
48
+ stream_from "all#{stream_id}"
49
+ end
50
+
51
+ def echo(data)
52
+ transmit data
53
+ end
54
+
55
+ def broadcast(data)
56
+ ActionCable.server.broadcast "all#{stream_id}", data
57
+ data["action"] = "broadcastResult"
58
+ transmit data
59
+ end
60
+
61
+ private
62
+
63
+ def stream_id
64
+ params[:id] || ""
65
+ end
66
+ end
67
+
45
68
  ActionCable.server.config.cable = {"adapter" => "redis"}
46
69
  ActionCable.server.config.connection_class = -> { ApplicationCable::Connection }
47
70
  ActionCable.server.config.disable_request_forgery_protection = true
@@ -17,6 +17,8 @@ feature "Channel state" do
17
17
  end
18
18
 
19
19
  def unsubscribed
20
+ return unless params["notify_disconnect"]
21
+
20
22
  ActionCable.server.broadcast("state_counts", data: "user left: #{user[:name]}")
21
23
  end
22
24
  end
@@ -24,7 +26,7 @@ feature "Channel state" do
24
26
  let(:identifier) { {channel: channel, name: "chipolino"}.to_json }
25
27
 
26
28
  let(:client2) { build_client(ignore: %w[ping welcome]) }
27
- let(:identifier2) { {channel: channel, name: "chipollone"}.to_json }
29
+ let(:identifier2) { {channel: channel, name: "chipollone", notify_disconnect: true}.to_json }
28
30
 
29
31
  before do
30
32
  subscribe_request = {command: "subscribe", identifier: identifier}
@@ -67,13 +69,13 @@ feature "Channel state" do
67
69
 
68
70
  assert_equal ack, client2.receive
69
71
 
70
- client.close
72
+ client2.close
71
73
 
72
74
  msg = {
73
- "identifier" => identifier2,
74
- "message" => {"data" => "user left: chipolino"}
75
+ "identifier" => identifier,
76
+ "message" => {"data" => "user left: chipollone"}
75
77
  }
76
78
 
77
- assert_equal msg, client2.receive
79
+ assert_equal msg, client.receive
78
80
  end
79
81
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Anyt
4
- VERSION = "1.0.2"
4
+ VERSION = "1.0.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anyt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-08 00:00:00.000000000 Z
11
+ date: 2020-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack