ruby_rabbitmq_janus 3.0.0.pre.354 → 3.0.0.pre.358

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rrj/models/concerns/instances.rb +11 -6
  3. data/lib/rrj/process/concurrency.rb +0 -1
  4. data/lib/rrj/process/event.rb +7 -5
  5. data/lib/rrj/process/event_admin.rb +7 -5
  6. data/lib/rrj/process/thread_runner_concern.rb +30 -29
  7. data/lib/rrj/rails.rb +9 -5
  8. data/spec/config/database.rb +1 -0
  9. data/spec/factories/janus_instance.rb +2 -0
  10. data/spec/ruby_rabbitmq_janus/janus/responses/errors_spec.rb +175 -0
  11. data/spec/ruby_rabbitmq_janus/models/{janus_instance_definition_spec.rb → janus_instance_field_spec.rb} +0 -0
  12. data/spec/ruby_rabbitmq_janus/models/janus_instance_instance_spec.rb +47 -0
  13. data/spec/ruby_rabbitmq_janus/models/{janus_instance_spec.rb → janus_instance_validation_spec.rb} +10 -2
  14. data/spec/ruby_rabbitmq_janus/process/concurrencies/concurrency_spec.rb +1 -5
  15. data/spec/ruby_rabbitmq_janus/process/concurrencies/event_admin_spec.rb +3 -2
  16. data/spec/ruby_rabbitmq_janus/process/concurrencies/event_spec.rb +3 -2
  17. data/spec/ruby_rabbitmq_janus/tools/logger_spec.rb +34 -0
  18. data/spec/spec_helper.rb +23 -1
  19. data/spec/support/examples_model.rb +45 -0
  20. data/spec/support/examples_thread.rb +15 -9
  21. data/tmp/coverage/assets/0.10.2/application.css +799 -0
  22. data/tmp/coverage/assets/0.10.2/application.js +1707 -0
  23. data/tmp/coverage/assets/0.10.2/colorbox/border.png +0 -0
  24. data/tmp/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  25. data/tmp/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  26. data/tmp/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  27. data/tmp/coverage/assets/0.10.2/favicon_green.png +0 -0
  28. data/tmp/coverage/assets/0.10.2/favicon_red.png +0 -0
  29. data/tmp/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  30. data/tmp/coverage/assets/0.10.2/loading.gif +0 -0
  31. data/tmp/coverage/assets/0.10.2/magnify.png +0 -0
  32. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  33. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  34. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  35. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  36. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  37. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  38. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  39. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  40. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  41. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  42. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  43. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  44. data/tmp/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  45. data/tmp/coverage/index.html +21117 -0
  46. metadata +47 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c734f054b82c7313cc2f700856897005589fc8cd85083b21562ee2574ad038eb
4
- data.tar.gz: 617e6caa75c5cad2280d07c6056161a25ed549d825fb9524ae6cc3c098132085
3
+ metadata.gz: d71f0e648c88b66a515f531f9363854ac8bfe3219412ab6c25dbbad0e35c49ae
4
+ data.tar.gz: f6188b1fff85bd230cc0d44356c879388eb32d809e70a26248c00261e5ff23de
5
5
  SHA512:
6
- metadata.gz: 9ec5a373c987a2bf9c18d2ea1b1478a6a4814967af89d73cdc7a04cd0cd79922d8f9e7ad6d5d4da555e64f1f23c13598da1ba403d7f84741da424154e92ff22a
7
- data.tar.gz: 74ab344770f32f388f0fcb009dd90e82388b74b1dd8732903ef6c658a0b714b084f7595bee353419510ef08f65f2fc41499e09a2a12c1ef6f050802bf2d28918
6
+ metadata.gz: ea2469541044db09a0b6fdfb34371f81cd441b7e2a8e566876628a88a2742b8be18e5af996eef47df3adf9d2a8076a5c562a0e4116a3b0a9bae2dc5b185133b7
7
+ data.tar.gz: b611d921872a181c05d4da95f7dddc75f032842fa48ba3435bba379465267b8e3674b99d84149e577d9252665156115bf9f0ba6894e0c091920542248aef4279
@@ -12,32 +12,37 @@ module RubyRabbitmqJanus
12
12
  module ClassMethods
13
13
  # Disable an instance
14
14
  def disable(session_id)
15
- JanusInstance.find_by(session: session_id).set(enable: false)
15
+ find_by_session(session_id).set(enable: false)
16
+ end
17
+
18
+ # Enable an instance
19
+ def enable(session_id)
20
+ find_by_session(session_id).set(enable: true)
16
21
  end
17
22
 
18
23
  # Clean all instance disabled
19
24
  def destroys
20
- JanusInstance.where(enable: false).delete_all
25
+ where(enable: false).delete_all
21
26
  end
22
27
 
23
28
  # Search a record by instance number
24
29
  def find_by_instance(instance_search)
25
- JanusInstance.find_by(instance: instance_search)
30
+ find_by(instance: instance_search)
26
31
  end
27
32
 
28
33
  # Search a record by session number
29
34
  def find_by_session(session_search)
30
- JanusInstance.find_by(session: session_search)
35
+ find_by(session_id: session_search)
31
36
  end
32
37
 
33
38
  # Get all instance active
34
39
  def enabled
35
- JanusInstance.where(enable: true)
40
+ where(enable: true)
36
41
  end
37
42
 
38
43
  # Get all instance not active
39
44
  def disabled
40
- JanusInstance.where(enable: false)
45
+ where(enable: false)
41
46
  end
42
47
  end
43
48
  end
@@ -40,6 +40,5 @@ module RubyRabbitmqJanus
40
40
  end
41
41
  end
42
42
 
43
- require 'rrj/process/thread_runner_concern'
44
43
  require 'rrj/process/event'
45
44
  require 'rrj/process/event_admin'
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rrj/process/thread_runner_concern'
4
+
3
5
  module RubyRabbitmqJanus
4
6
  module Process
5
7
  module Concurrencies
@@ -16,17 +18,17 @@ module RubyRabbitmqJanus
16
18
 
17
19
  private
18
20
 
19
- def raise_nil_block
20
- raise RubyRabbitmqJanus::Errors::Process::Event::Run
21
- end
22
-
23
21
  def name_publisher
24
- :publish
22
+ :pub_classic
25
23
  end
26
24
 
27
25
  def publisher
28
26
  Rabbit::Listener::From.new(rabbit)
29
27
  end
28
+
29
+ def raise_nil_block
30
+ raise RubyRabbitmqJanus::Errors::Process::Event::Run
31
+ end
30
32
  end
31
33
  end
32
34
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rrj/process/thread_runner_concern'
4
+
3
5
  module RubyRabbitmqJanus
4
6
  module Process
5
7
  module Concurrencies
@@ -16,17 +18,17 @@ module RubyRabbitmqJanus
16
18
 
17
19
  private
18
20
 
19
- def raise_nil_block
20
- raise RubyRabbitmqJanus::Errors::Process::EventAdmin::Run
21
- end
22
-
23
21
  def name_publisher
24
- :publish_adm
22
+ :pub_admin
25
23
  end
26
24
 
27
25
  def publisher
28
26
  Rabbit::Listener::FromAdmin.new(rabbit)
29
27
  end
28
+
29
+ def raise_nil_block
30
+ raise RubyRabbitmqJanus::Errors::Process::EventAdmin::Run
31
+ end
30
32
  end
31
33
  end
32
34
  end
@@ -13,41 +13,42 @@ module RubyRabbitmqJanus
13
13
  module ThreadRunnerConcern
14
14
  extend ActiveSupport::Concern
15
15
 
16
- # Initialize an process (event/event_admin) and configure
17
- # the life cycle to thread.
18
- def initialize
19
- super
20
- @thread = Thread.new { initialize_thread }
21
- @thread.abort_on_exception = true
22
- end
16
+ included do
17
+ # Initialize an process (event/event_admin) and configure
18
+ # the life cycle to thread.
19
+ def initialize
20
+ super
21
+ @thread = Thread.new { initialize_thread }
22
+ end
23
23
 
24
- # Create a thread for execute a block code in a thread.
25
- # This code is outside to `RRJ` gem so is very important
26
- # to be sure this code execution is not fail.
27
- #
28
- # @param [Proc] block Block code for execute action when queue
29
- # standard 'from-janus' receive a message.This block is sending to
30
- # publisher created for this thread.
31
- #
32
- # @return [Thread] It's a thread who listen queue and execute action
33
- def run(&block)
34
- raise_nil_block unless block_given?
24
+ # Create a thread for execute a block code in a thread.
25
+ # This code is outside to `RRJ` gem so is very important
26
+ # to be sure this code execution is not fail.
27
+ #
28
+ # @param [Proc] block Block code for execute action when queue
29
+ # standard 'from-janus' receive a message.This block is sending to
30
+ # publisher created for this thread.
31
+ #
32
+ # @return [Thread] It's a thread who listen queue and execute action
33
+ def run(&block)
34
+ raise_nil_block unless block_given?
35
35
 
36
- @thread.join
37
- Thread.new do
38
- loop do
39
- @thread.thread_variable_get(name_publisher).listen_events(&block)
40
- rescue => exception
41
- ::Log.warn 'An exception to was encountered in the thread !'
42
- ::Log.warn exception
36
+ @thread.join
37
+ Thread.new do
38
+ loop do
39
+ @thread.thread_variable_get(name_publisher)
40
+ .listen_events(&block)
41
+ rescue => exception
42
+ ::Log.warn exception
43
+ end
43
44
  end
44
45
  end
45
- end
46
46
 
47
- private
47
+ private
48
48
 
49
- def transaction_running
50
- @thread.thread_variable_set(name_publisher, publisher)
49
+ def transaction_running
50
+ @thread.thread_variable_set(name_publisher, publisher)
51
+ end
51
52
  end
52
53
  end
53
54
  end
data/lib/rrj/rails.rb CHANGED
@@ -25,11 +25,15 @@ module RubyRabbitmqJanus
25
25
  actions = RubyRabbitmqJanus::ActionEvents.new.actions
26
26
  admin_actions = RubyRabbitmqJanus::ActionAdminEvents.new.actions
27
27
 
28
- Parallel.map([
29
- process::Event.new.run(&actions),
30
- process::EventAdmin.new.run(&admin_actions)
31
- ], in_processes: number) do |listener|
32
- "Item: #{listener}, Worker: #{Parallel.worker_number}"
28
+ listeners = []
29
+ (1..number).each do
30
+ listeners.push process::Event.new.run(&actions)
31
+ listeners.push process::EventAdmin.new.run(&admin_actions)
32
+ end
33
+
34
+ Parallel.each(listeners, in_processes: number) do |listener|
35
+ item = "[Item##{listener}]"
36
+ Log.warn "#{item}, Worker : #{Parallel.worker_number + 1} / #{number}"
33
37
  end
34
38
  end
35
39
  end
@@ -16,6 +16,7 @@ def migrate
16
16
  ActiveRecord::Base.connection.create_table(:janus_instances) do |table|
17
17
  table.integer :session, limit: 8
18
18
  table.boolean :enable
19
+ table.string :name
19
20
  end
20
21
  end
21
22
 
@@ -3,5 +3,7 @@
3
3
  FactoryBot.define do
4
4
  factory :janus_instance, class: 'RubyRabbitmqJanus::Models::JanusInstance' do
5
5
  enable { true }
6
+ session_id { (rand * 10_000_000_000).to_i }
7
+ name { [*('a'..'z'), *('0'..'9')].sample(12).join }
6
8
  end
7
9
  end
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RubyRabbitmqJanus::Janus::Responses::Errors, type: :responses,
6
+ name: :errors do
7
+ let(:message) do
8
+ {
9
+ 'janus' => 'error',
10
+ 'error' => {
11
+ 'code' => number,
12
+ 'reason' => reason
13
+ }
14
+ }
15
+ end
16
+ let(:response) { RubyRabbitmqJanus::Janus::Responses::Response.new(message) }
17
+ let(:error) { described_class.new }
18
+ let(:reason) { [*('a'..'z'), *('0'..'9')].sample(12).join }
19
+
20
+ context 'when 403' do
21
+ let(:number) { 403 }
22
+
23
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::Unauthorized) }
24
+ end
25
+
26
+ context 'when 405' do
27
+ let(:number) { 405 }
28
+
29
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::UnauthorizedPlugin) }
30
+ end
31
+
32
+ context 'when 450' do
33
+ let(:number) { 450 }
34
+
35
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::TransportSpecific) }
36
+ end
37
+
38
+ context 'when 452' do
39
+ let(:number) { 452 }
40
+
41
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::MissingRequest) }
42
+ end
43
+
44
+ context 'when 453' do
45
+ let(:number) { 453 }
46
+
47
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::UnknownRequest) }
48
+ end
49
+
50
+ context 'when 454' do
51
+ let(:number) { 454 }
52
+
53
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::InvalidJSON) }
54
+ end
55
+
56
+ context 'when 455' do
57
+ let(:number) { 455 }
58
+
59
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::InvalidJSONObject) }
60
+ end
61
+
62
+ context 'when 456' do
63
+ let(:number) { 456 }
64
+
65
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::MissingMandatoryElement) }
66
+ end
67
+
68
+ context 'when 457' do
69
+ let(:number) { 457 }
70
+
71
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::InvalidRequestPath) }
72
+ end
73
+
74
+ context 'when 458' do
75
+ let(:number) { 458 }
76
+
77
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::SessionNotFound) }
78
+ end
79
+
80
+ context 'when 459' do
81
+ let(:number) { 459 }
82
+
83
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::HandleNotFound) }
84
+ end
85
+
86
+ context 'when 460' do
87
+ let(:number) { 460 }
88
+
89
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::PluginNotFound) }
90
+ end
91
+
92
+ context 'when 461' do
93
+ let(:number) { 461 }
94
+
95
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::PluginAttach) }
96
+ end
97
+
98
+ context 'when 462' do
99
+ let(:number) { 462 }
100
+
101
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::PluginMessage) }
102
+ end
103
+
104
+ context 'when 463' do
105
+ let(:number) { 463 }
106
+
107
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::PluginDetach) }
108
+ end
109
+
110
+ context 'when 464' do
111
+ let(:number) { 464 }
112
+
113
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::JSEPUnknownType) }
114
+ end
115
+
116
+ context 'when 465' do
117
+ let(:number) { 465 }
118
+
119
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::JSEPInvalidSDP) }
120
+ end
121
+
122
+ context 'when 466' do
123
+ let(:number) { 466 }
124
+
125
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::TrickleInvalidStream) }
126
+ end
127
+
128
+ context 'when 467' do
129
+ let(:number) { 467 }
130
+
131
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::InvalidElementType) }
132
+ end
133
+
134
+ context 'when 468' do
135
+ let(:number) { 468 }
136
+
137
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::SessionConflit) }
138
+ end
139
+
140
+ context 'when 469' do
141
+ let(:number) { 469 }
142
+
143
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::UnexpectedAnswer) }
144
+ end
145
+
146
+ context 'when 470' do
147
+ let(:number) { 470 }
148
+
149
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::TokenNotFound) }
150
+ end
151
+
152
+ context 'when 471' do
153
+ let(:number) { 471 }
154
+
155
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::WebRTCState) }
156
+ end
157
+
158
+ context 'when 472' do
159
+ let(:number) { 472 }
160
+
161
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::NotAcceptingSession) }
162
+ end
163
+
164
+ context 'when 490' do
165
+ let(:number) { 490 }
166
+
167
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::Unknown) }
168
+ end
169
+
170
+ context 'when error missing' do
171
+ let(:number) { 418 }
172
+
173
+ it { expect { error.send(:"_#{number}", response) }.to raise_error(RubyRabbitmqJanus::Errors::Janus::Responses::Nok) }
174
+ end
175
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RubyRabbitmqJanus::Models::JanusInstance, type: :model,
6
+ name: :janus_instance do
7
+ before do
8
+ instances
9
+ first
10
+ end
11
+
12
+ let(:model) { described_class }
13
+ let(:size) { (rand * 5).to_i + 1 }
14
+ let(:first) { model.first }
15
+ let(:session_id) { first.session_id }
16
+ let(:id) { first.id }
17
+
18
+ context 'when Janus instances are activated.' do
19
+ let(:instances) { FactoryBot.create_list(:janus_instance, size) }
20
+ let(:count_enabled) { size }
21
+ let(:count_destroyed) { 0 }
22
+ let(:count_disabled) { 0 }
23
+
24
+ include_examples 'when disable an instance'
25
+ include_examples 'when enable an instance not change'
26
+ include_examples 'when destroys all disable instance'
27
+ include_examples 'when search by instance'
28
+ include_examples 'when search by session'
29
+ include_examples 'when search instance enabled'
30
+ include_examples 'when search instance disabled'
31
+ end
32
+
33
+ context 'when Janus instances are disabled.' do
34
+ let(:instances) { FactoryBot.create_list(:janus_instance, size, enable: false) }
35
+ let(:count_enabled) { 0 }
36
+ let(:count_destroyed) { size }
37
+ let(:count_disabled) { size }
38
+
39
+ include_examples 'when disable an instance not change'
40
+ include_examples 'when enable an instance'
41
+ include_examples 'when destroys all disable instance'
42
+ include_examples 'when search by instance'
43
+ include_examples 'when search by session'
44
+ include_examples 'when search instance enabled'
45
+ include_examples 'when search instance disabled'
46
+ end
47
+ end