queue-bus 0.5.9 → 0.6.0
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 +5 -5
- data/CHANGELOG.md +16 -0
- data/lib/queue-bus.rb +2 -1
- data/lib/queue_bus/config.rb +4 -0
- data/lib/queue_bus/middleware.rb +54 -0
- data/lib/queue_bus/version.rb +1 -1
- data/lib/queue_bus/worker.rb +3 -1
- data/spec/adapter/publish_at_spec.rb +10 -10
- data/spec/adapter_spec.rb +2 -2
- data/spec/application_spec.rb +48 -48
- data/spec/config_spec.rb +18 -18
- data/spec/dispatch_spec.rb +13 -13
- data/spec/driver_spec.rb +30 -30
- data/spec/heartbeat_spec.rb +3 -3
- data/spec/integration_spec.rb +23 -23
- data/spec/matcher_spec.rb +70 -70
- data/spec/middleware_spec.rb +112 -0
- data/spec/publish_spec.rb +20 -20
- data/spec/rider_spec.rb +7 -7
- data/spec/spec_helper.rb +2 -2
- data/spec/subscriber_spec.rb +98 -98
- data/spec/subscription_list_spec.rb +15 -15
- data/spec/subscription_spec.rb +17 -17
- data/spec/worker_spec.rb +30 -25
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f18ed6e21b956ce928e0c3ede7e1493eb7806413706e92e1f4c991667e9e06b8
|
4
|
+
data.tar.gz: 4043918b7705741e3719d6460b9823367b9e271e6344193c2b616aab063a4d9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6894d383941edf09df6d245eaffc57ecd2ef3185bb3196d89a29c7714cc7b3f849639e285764ee57832158a566538bc2c1b8b6691af2d73ab5a3760d8893ef5e
|
7
|
+
data.tar.gz: 9b08d34ff3309f039640a1c154b5f33cfc186f69f18511a09201e4eeb5553ef8f5b8ad053405fc6f9bf3658d5750543d7fa92d431d88ba72af5c3ab8f0d50e45
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [Unreleased]
|
8
|
+
|
9
|
+
## [0.6.0]
|
10
|
+
|
11
|
+
### Added
|
12
|
+
- New middleware implementation that allows middleware to wrap the execution of work from the `QueueBus::Worker`
|
13
|
+
- Changelog!
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
- Specs are now using the `expect` syntax instead of `should`. This more closely aligns with the rspec recommendations.
|
data/lib/queue-bus.rb
CHANGED
@@ -11,6 +11,7 @@ module QueueBus
|
|
11
11
|
autoload :Heartbeat, 'queue_bus/heartbeat'
|
12
12
|
autoload :Local, 'queue_bus/local'
|
13
13
|
autoload :Matcher, 'queue_bus/matcher'
|
14
|
+
autoload :Middleware, 'queue_bus/middleware'
|
14
15
|
autoload :Publishing, 'queue_bus/publishing'
|
15
16
|
autoload :Publisher, 'queue_bus/publisher'
|
16
17
|
autoload :Rider, 'queue_bus/rider'
|
@@ -39,7 +40,7 @@ module QueueBus
|
|
39
40
|
:hostname=, :hostname,
|
40
41
|
:adapter=, :adapter,
|
41
42
|
:incoming_queue=, :incoming_queue,
|
42
|
-
:redis
|
43
|
+
:redis, :worker_middleware_stack
|
43
44
|
|
44
45
|
def_delegators :_dispatchers, :dispatch, :dispatchers, :dispatcher_by_key, :dispatcher_execute
|
45
46
|
|
data/lib/queue_bus/config.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module QueueBus
|
4
|
+
module Middleware
|
5
|
+
# A base class for implementing a middleware. Inheriting from this will
|
6
|
+
# provide a constructor and a basic call method. Override the call method
|
7
|
+
# to implement your own logic. Calling the instance variable `@app` will
|
8
|
+
# drive the middleware stack.
|
9
|
+
class Abstract
|
10
|
+
def initialize(app)
|
11
|
+
@app = app
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(_args)
|
15
|
+
@app.call
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# A stack of middleware. You can modify the stack using the provided
|
20
|
+
# helper methods.
|
21
|
+
class Stack
|
22
|
+
def initialize
|
23
|
+
@middlewares = []
|
24
|
+
end
|
25
|
+
|
26
|
+
def use(middleware)
|
27
|
+
@middlewares << middleware
|
28
|
+
end
|
29
|
+
|
30
|
+
def run(args, &inner)
|
31
|
+
Runner.new(args: args, stack: @middlewares.dup, inner: inner).call
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Runs the middleware stack by passing it self to each class.
|
36
|
+
class Runner
|
37
|
+
def initialize(args:, stack:, inner:)
|
38
|
+
@stack = stack
|
39
|
+
@inner = inner
|
40
|
+
@args = args
|
41
|
+
end
|
42
|
+
|
43
|
+
def call
|
44
|
+
middleware = @stack.shift
|
45
|
+
|
46
|
+
if middleware
|
47
|
+
middleware.new(self).call(@args)
|
48
|
+
else
|
49
|
+
@inner.call
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/queue_bus/version.rb
CHANGED
data/lib/queue_bus/worker.rb
CHANGED
@@ -4,7 +4,7 @@ describe "Publishing an event in the future" do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
Timecop.freeze(now)
|
7
|
-
QueueBus.
|
7
|
+
allow(QueueBus).to receive(:generate_uuid).and_return("idfhlkj")
|
8
8
|
end
|
9
9
|
after(:each) do
|
10
10
|
Timecop.return
|
@@ -25,27 +25,27 @@ describe "Publishing an event in the future" do
|
|
25
25
|
QueueBus.publish_at(future, event_name, hash)
|
26
26
|
|
27
27
|
schedule = QueueBus.redis { |redis| redis.zrange("delayed_queue_schedule", 0, 1) }
|
28
|
-
schedule.
|
28
|
+
expect(schedule).to eq([future.to_i.to_s])
|
29
29
|
|
30
30
|
val = QueueBus.redis { |redis| redis.lpop("delayed:#{future.to_i}") }
|
31
31
|
hash = JSON.parse(val)
|
32
32
|
|
33
|
-
hash["class"].
|
34
|
-
hash["args"].size.
|
35
|
-
JSON.parse(hash["args"].first).
|
36
|
-
hash["queue"].
|
33
|
+
expect(hash["class"]).to eq("QueueBus::Worker")
|
34
|
+
expect(hash["args"].size).to eq(1)
|
35
|
+
expect(JSON.parse(hash["args"].first)).to eq({"bus_class_proxy"=>"QueueBus::Publisher", "bus_event_type"=>"event_name", "two"=>"here", "one"=>1, "id" => 12}.merge(delayed_attrs))
|
36
|
+
expect(hash["queue"]).to eq("bus_incoming")
|
37
37
|
|
38
38
|
val = QueueBus.redis { |redis| redis.lpop("queue:bus_incoming") }
|
39
|
-
val.
|
39
|
+
expect(val).to eq(nil) # nothing really added
|
40
40
|
|
41
41
|
Timecop.freeze(worktime)
|
42
42
|
QueueBus::Publisher.perform(JSON.parse(hash["args"].first))
|
43
43
|
|
44
44
|
val = QueueBus.redis { |redis| redis.lpop("queue:bus_incoming") }
|
45
45
|
hash = JSON.parse(val)
|
46
|
-
hash["class"].
|
47
|
-
hash["args"].size.
|
48
|
-
JSON.parse(hash["args"].first).
|
46
|
+
expect(hash["class"]).to eq("QueueBus::Worker")
|
47
|
+
expect(hash["args"].size).to eq(1)
|
48
|
+
expect(JSON.parse(hash["args"].first)).to eq({"bus_class_proxy"=>"QueueBus::Driver", "bus_event_type"=>"event_name", "two"=>"here", "one"=>1, "id" => 12}.merge(bus_attrs))
|
49
49
|
end
|
50
50
|
|
51
51
|
end
|
data/spec/adapter_spec.rb
CHANGED
@@ -3,12 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe "adapter is set" do
|
4
4
|
it "should call it's enabled! method on init" do
|
5
5
|
QueueBus.send(:reset)
|
6
|
-
adapter_under_test_class.
|
6
|
+
expect_any_instance_of(adapter_under_test_class).to receive(:enabled!)
|
7
7
|
instance = adapter_under_test_class.new
|
8
8
|
QueueBus.send(:reset)
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should be defaulting to Data from spec_helper" do
|
12
|
-
QueueBus.adapter.is_a?(adapter_under_test_class).
|
12
|
+
expect(QueueBus.adapter.is_a?(adapter_under_test_class)).to eq(true)
|
13
13
|
end
|
14
14
|
end
|
data/spec/application_spec.rb
CHANGED
@@ -4,42 +4,42 @@ module QueueBus
|
|
4
4
|
describe Application do
|
5
5
|
describe ".all" do
|
6
6
|
it "should return empty array when none" do
|
7
|
-
Application.all.
|
7
|
+
expect(Application.all).to eq([])
|
8
8
|
end
|
9
9
|
it "should return registered applications when there are some" do
|
10
10
|
Application.new("One").subscribe(test_list(test_sub("fdksjh")))
|
11
11
|
Application.new("Two").subscribe(test_list(test_sub("fdklhf")))
|
12
12
|
Application.new("Three").subscribe(test_list(test_sub("fkld")))
|
13
13
|
|
14
|
-
Application.all.collect(&:app_key).
|
14
|
+
expect(Application.all.collect(&:app_key)).to match_array(["one", "two", "three"])
|
15
15
|
|
16
16
|
Application.new("two").unsubscribe
|
17
|
-
Application.all.collect(&:app_key).
|
17
|
+
expect(Application.all.collect(&:app_key)).to match_array(["one", "three"])
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe ".new" do
|
22
22
|
it "should have a key" do
|
23
|
-
Application.new("something").app_key.
|
23
|
+
expect(Application.new("something").app_key).to eq("something")
|
24
24
|
|
25
|
-
Application.new("some thing").app_key.
|
26
|
-
Application.new("some-thing").app_key.
|
27
|
-
Application.new("some_thing").app_key.
|
28
|
-
Application.new("Some Thing").app_key.
|
25
|
+
expect(Application.new("some thing").app_key).to eq("some_thing")
|
26
|
+
expect(Application.new("some-thing").app_key).to eq("some_thing")
|
27
|
+
expect(Application.new("some_thing").app_key).to eq("some_thing")
|
28
|
+
expect(Application.new("Some Thing").app_key).to eq("some_thing")
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should raise an error if not valid" do
|
32
|
-
|
32
|
+
expect {
|
33
33
|
Application.new("")
|
34
|
-
}.
|
34
|
+
}.to raise_error(RuntimeError, "Invalid application name")
|
35
35
|
|
36
|
-
|
36
|
+
expect {
|
37
37
|
Application.new(nil)
|
38
|
-
}.
|
38
|
+
}.to raise_error(RuntimeError, "Invalid application name")
|
39
39
|
|
40
|
-
|
40
|
+
expect {
|
41
41
|
Application.new("/")
|
42
|
-
}.
|
42
|
+
}.to raise_error(RuntimeError, "Invalid application name")
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -50,7 +50,7 @@ module QueueBus
|
|
50
50
|
QueueBus.redis { |redis| redis.hset("bus_app:myapp", "old_one", "oldqueue_name") }
|
51
51
|
app = Application.new("myapp")
|
52
52
|
val = app.send(:read_redis_hash)
|
53
|
-
val.
|
53
|
+
expect(val).to eq({"new_one" => {"queue_name" => "x", "bus_event_type" => "event_name"}, "old_one" => "oldqueue_name"})
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -59,45 +59,45 @@ module QueueBus
|
|
59
59
|
let(:sub2) { test_sub("event_two", "default") }
|
60
60
|
let(:sub3) { test_sub("event_three", "other") }
|
61
61
|
it "should add array to redis" do
|
62
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
62
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
63
63
|
Application.new("myapp").subscribe(test_list(sub1, sub2))
|
64
64
|
|
65
|
-
QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.
|
66
|
-
"event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"}
|
67
|
-
QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.
|
68
|
-
QueueBus.redis { |redis| redis.smembers("bus_apps") }.
|
65
|
+
expect(QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }).to eq({"event_two"=>"{\"queue_name\":\"default\",\"key\":\"event_two\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_two\"}}",
|
66
|
+
"event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"})
|
67
|
+
expect(QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }).to match_array(["event_one", "event_two"])
|
68
|
+
expect(QueueBus.redis { |redis| redis.smembers("bus_apps") }).to match_array(["myapp"])
|
69
69
|
end
|
70
70
|
it "should add string to redis" do
|
71
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
71
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
72
72
|
Application.new("myapp").subscribe(test_list(sub1))
|
73
73
|
|
74
|
-
QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.
|
75
|
-
QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.
|
76
|
-
QueueBus.redis { |redis| redis.smembers("bus_apps") }.
|
74
|
+
expect(QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }).to eq({"event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"})
|
75
|
+
expect(QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }).to match_array(["event_one"])
|
76
|
+
expect(QueueBus.redis { |redis| redis.smembers("bus_apps") }).to match_array(["myapp"])
|
77
77
|
end
|
78
78
|
it "should multiple queues to redis" do
|
79
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
79
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
80
80
|
Application.new("myapp").subscribe(test_list(sub1, sub2, sub3))
|
81
|
-
QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.
|
82
|
-
"event_three"=>"{\"queue_name\":\"other\",\"key\":\"event_three\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_three\"}}"}
|
83
|
-
QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.
|
84
|
-
QueueBus.redis { |redis| redis.smembers("bus_apps") }.
|
81
|
+
expect(QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }).to eq({"event_two"=>"{\"queue_name\":\"default\",\"key\":\"event_two\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_two\"}}", "event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}",
|
82
|
+
"event_three"=>"{\"queue_name\":\"other\",\"key\":\"event_three\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_three\"}}"})
|
83
|
+
expect(QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }).to match_array(["event_three", "event_two", "event_one"])
|
84
|
+
expect(QueueBus.redis { |redis| redis.smembers("bus_apps") }).to match_array(["myapp"])
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should do nothing if nil or empty" do
|
88
88
|
|
89
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
89
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
90
90
|
|
91
91
|
Application.new("myapp").subscribe(nil)
|
92
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
92
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
93
93
|
|
94
94
|
Application.new("myapp").subscribe([])
|
95
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
95
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should call unsubscribe" do
|
99
99
|
app = Application.new("myapp")
|
100
|
-
app.
|
100
|
+
expect(app).to receive(:unsubscribe)
|
101
101
|
app.subscribe([])
|
102
102
|
end
|
103
103
|
end
|
@@ -110,42 +110,42 @@ module QueueBus
|
|
110
110
|
|
111
111
|
Application.new("myapp").unsubscribe
|
112
112
|
|
113
|
-
QueueBus.redis { |redis| redis.smembers("bus_apps") }.
|
114
|
-
QueueBus.redis { |redis| redis.get("bus_app:myapp") }.
|
113
|
+
expect(QueueBus.redis { |redis| redis.smembers("bus_apps") }).to eq(["other"])
|
114
|
+
expect(QueueBus.redis { |redis| redis.get("bus_app:myapp") }).to be_nil
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
describe "#subscription_matches" do
|
119
119
|
it "should return if it is there" do
|
120
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
120
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to eq([])
|
121
121
|
|
122
122
|
subs = test_list(test_sub("one_x"), test_sub("one_y"), test_sub("one"), test_sub("two"))
|
123
123
|
Application.new("myapp").subscribe(subs)
|
124
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
124
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to eq([])
|
125
125
|
|
126
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"two").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
127
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
126
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"two").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "two", "default", "::QueueBus::Rider"]])
|
127
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "one", "default", "::QueueBus::Rider"]])
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should handle * wildcards" do
|
131
131
|
subs = test_list(test_sub("one.+"), test_sub("one"), test_sub("one_.*"), test_sub("two"))
|
132
132
|
Application.new("myapp").subscribe(subs)
|
133
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
133
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to eq([])
|
134
134
|
|
135
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
136
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
137
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
135
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "one.+", "default", "::QueueBus::Rider"]])
|
136
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "one", "default", "::QueueBus::Rider"]])
|
137
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "one.+","default", "::QueueBus::Rider"], ["myapp", "one_.*", "default", "::QueueBus::Rider"]])
|
138
138
|
end
|
139
139
|
|
140
140
|
it "should handle actual regular expressions" do
|
141
141
|
subs = test_list(test_sub(/one.+/), test_sub("one"), test_sub(/one_.*/), test_sub("two"))
|
142
142
|
Application.new("myapp").subscribe(subs)
|
143
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
143
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to eq([])
|
144
144
|
|
145
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
146
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"donex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
147
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
148
|
-
Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.
|
145
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"]])
|
146
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"donex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"]])
|
147
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "one" ,"default", "::QueueBus::Rider"]])
|
148
|
+
expect(Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}).to match_array([["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"], ["myapp", "(?-mix:one_.*)", "default", "::QueueBus::Rider"]])
|
149
149
|
end
|
150
150
|
end
|
151
151
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -10,51 +10,51 @@ end
|
|
10
10
|
|
11
11
|
describe "QueueBus config" do
|
12
12
|
it "should set the default app key" do
|
13
|
-
QueueBus.default_app_key.
|
13
|
+
expect(QueueBus.default_app_key).to eq(nil)
|
14
14
|
|
15
15
|
QueueBus.default_app_key = "my_app"
|
16
|
-
QueueBus.default_app_key.
|
16
|
+
expect(QueueBus.default_app_key).to eq("my_app")
|
17
17
|
|
18
18
|
QueueBus.default_app_key = "something here"
|
19
|
-
QueueBus.default_app_key.
|
19
|
+
expect(QueueBus.default_app_key).to eq("something_here")
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should set the default queue" do
|
23
|
-
QueueBus.default_queue.
|
23
|
+
expect(QueueBus.default_queue).to eq(nil)
|
24
24
|
|
25
25
|
QueueBus.default_queue = "my_queue"
|
26
|
-
QueueBus.default_queue.
|
26
|
+
expect(QueueBus.default_queue).to eq("my_queue")
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should set the local mode" do
|
30
|
-
QueueBus.local_mode.
|
30
|
+
expect(QueueBus.local_mode).to eq(nil)
|
31
31
|
QueueBus.local_mode = :standalone
|
32
|
-
QueueBus.local_mode.
|
32
|
+
expect(QueueBus.local_mode).to eq(:standalone)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should set the hostname" do
|
36
|
-
QueueBus.hostname.
|
36
|
+
expect(QueueBus.hostname).not_to eq(nil)
|
37
37
|
QueueBus.hostname = "whatever"
|
38
|
-
QueueBus.hostname.
|
38
|
+
expect(QueueBus.hostname).to eq("whatever")
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should set before_publish callback" do
|
42
42
|
QueueBus.before_publish = lambda {|attributes| 42 }
|
43
|
-
QueueBus.before_publish_callback({}).
|
43
|
+
expect(QueueBus.before_publish_callback({})).to eq(42)
|
44
44
|
end
|
45
45
|
|
46
46
|
|
47
47
|
it "should use the default Redis connection" do
|
48
|
-
QueueBus.redis { |redis| redis }.
|
48
|
+
expect(QueueBus.redis { |redis| redis }).not_to eq(nil)
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should default to given adapter" do
|
52
|
-
QueueBus.adapter.is_a?(adapter_under_test_class).
|
52
|
+
expect(QueueBus.adapter.is_a?(adapter_under_test_class)).to eq(true)
|
53
53
|
|
54
54
|
# and should raise if already set
|
55
|
-
|
55
|
+
expect {
|
56
56
|
QueueBus.adapter = :data
|
57
|
-
}.
|
57
|
+
}.to raise_error(RuntimeError, "Adapter already set to QueueBus::Adapters::Data")
|
58
58
|
end
|
59
59
|
|
60
60
|
context "with a fresh load" do
|
@@ -64,18 +64,18 @@ describe "QueueBus config" do
|
|
64
64
|
|
65
65
|
it "should be able to be set to resque" do
|
66
66
|
QueueBus.adapter = adapter_under_test_symbol
|
67
|
-
QueueBus.adapter.is_a?(adapter_under_test_class).
|
67
|
+
expect(QueueBus.adapter.is_a?(adapter_under_test_class)).to eq(true)
|
68
68
|
|
69
69
|
# and should raise if already set
|
70
|
-
|
70
|
+
expect {
|
71
71
|
QueueBus.adapter = :data
|
72
|
-
}.
|
72
|
+
}.to raise_error(RuntimeError, "Adapter already set to QueueBus::Adapters::Data")
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should be able to be set to something else" do
|
76
76
|
|
77
77
|
QueueBus.adapter = :test_one
|
78
|
-
QueueBus.adapter.is_a?(QueueBus::Adapters::TestOne).
|
78
|
+
expect(QueueBus.adapter.is_a?(QueueBus::Adapters::TestOne)).to eq(true)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|