bi-frost 0.1.3 → 0.1.4
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/lib/bifrost/bus.rb +27 -1
- data/lib/bifrost/topic.rb +12 -11
- data/lib/bifrost/version.rb +1 -1
- data/spec/bifrost/bus_spec.rb +22 -0
- data/spec/bifrost/topic_spec.rb +19 -10
- data/spec/spec_helper.rb +1 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bae9c137149abf5f29d00b38d46763ead852eec
|
4
|
+
data.tar.gz: 6dbd4e1370c6b62ce67bd7df6826b0a8d75e664b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e07411b6991e054810097254fc39d2e5745ff2fccb2a75bdb0e9c4051c269feed887094c4e2eaef128a37d4978ba453c263da0c903e199163d6e4b7b1b0f3ea0
|
7
|
+
data.tar.gz: 105f3f014d5fb0d5444f03b6c258eb9fdc2e0cbaf65b97089b87167ddf0f728f9a78dda8dc7356736b043f1bc57d8f087e1eaec197cad6cd2339be00e9285962
|
data/lib/bifrost/bus.rb
CHANGED
@@ -10,15 +10,41 @@ module Bifrost
|
|
10
10
|
def initialize
|
11
11
|
Azure.sb_namespace = ENV['AZURE_BUS_NAMESPACE']
|
12
12
|
host = "https://#{Azure.sb_namespace}.servicebus.windows.net"
|
13
|
-
signer = Azure::ServiceBus::Auth::SharedAccessSigner.new(
|
13
|
+
signer = Azure::ServiceBus::Auth::SharedAccessSigner.new(key, secret)
|
14
14
|
@interface ||= Azure::ServiceBus::ServiceBusService.new(host, signer: signer)
|
15
15
|
end
|
16
16
|
|
17
|
+
# To encapsulate the underlying bus object we provide a custom interface
|
18
|
+
# for the methods of the Azure smb we use
|
19
|
+
def create_topic(name)
|
20
|
+
@interface.create_topic(name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_topic(name)
|
24
|
+
@interface.delete_topic(name)
|
25
|
+
end
|
26
|
+
|
17
27
|
# This method returns a list of topics currently defined on the Bifrost
|
18
28
|
def topics
|
19
29
|
@interface.list_topics.map do |t|
|
20
30
|
Topic.new(t.name)
|
21
31
|
end
|
22
32
|
end
|
33
|
+
|
34
|
+
# Tells us if the topic has already been defined
|
35
|
+
def topic_exists?(topic)
|
36
|
+
topics.include?(topic)
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
# Simple utlity method to keep the code legible
|
42
|
+
def key
|
43
|
+
ENV['AZURE_BUS_KEY_NAME']
|
44
|
+
end
|
45
|
+
|
46
|
+
def secret
|
47
|
+
ENV['AZURE_BUS_KEY_SECRET']
|
48
|
+
end
|
23
49
|
end
|
24
50
|
end
|
data/lib/bifrost/topic.rb
CHANGED
@@ -13,21 +13,12 @@ module Bifrost
|
|
13
13
|
super()
|
14
14
|
end
|
15
15
|
|
16
|
-
# If the topic has been defined this method returns true, if not
|
17
|
-
# it returns false
|
18
|
-
def exists?
|
19
|
-
@bus.topics.each do |topic|
|
20
|
-
return true if topic.name == name
|
21
|
-
end
|
22
|
-
false
|
23
|
-
end
|
24
|
-
|
25
16
|
# If a topic has not been defined we can save it, so it becomes defined
|
26
17
|
def save
|
27
18
|
if exists?
|
28
19
|
false
|
29
20
|
else
|
30
|
-
@bus.
|
21
|
+
@bus.create_topic(name)
|
31
22
|
true
|
32
23
|
end
|
33
24
|
end
|
@@ -35,7 +26,7 @@ module Bifrost
|
|
35
26
|
# If a topic is defined, we can remove the definition
|
36
27
|
def delete
|
37
28
|
if exists?
|
38
|
-
@bus.
|
29
|
+
@bus.delete_topic(name)
|
39
30
|
true
|
40
31
|
else
|
41
32
|
false
|
@@ -71,5 +62,15 @@ module Bifrost
|
|
71
62
|
false
|
72
63
|
end
|
73
64
|
end
|
65
|
+
|
66
|
+
def ==(another_topic)
|
67
|
+
self.name == another_topic.name && self.class == another_topic.class
|
68
|
+
end
|
69
|
+
|
70
|
+
# Topics are self aware, and know if they exist or not, but only with the help
|
71
|
+
# of the almighty bus
|
72
|
+
def exists?
|
73
|
+
@bus.topic_exists?(self)
|
74
|
+
end
|
74
75
|
end
|
75
76
|
end
|
data/lib/bifrost/version.rb
CHANGED
@@ -9,7 +9,7 @@ module Bifrost
|
|
9
9
|
|
10
10
|
# The patch version of Bifrost, updated only for bug fixes from the last
|
11
11
|
# feature release.
|
12
|
-
PATCH_VERSION =
|
12
|
+
PATCH_VERSION = 4
|
13
13
|
|
14
14
|
# The full version as a string.
|
15
15
|
VERSION = "#{MAJOR_VERSION}.#{MINOR_VERSION}.#{PATCH_VERSION}".freeze
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bifrost::Bus do
|
4
|
+
let(:bus) { Bifrost::Bus.new }
|
5
|
+
|
6
|
+
context 'for an undefined topic' do
|
7
|
+
it 'should return false for defined?' do
|
8
|
+
new_topic = Bifrost::Topic.new('new-topic')
|
9
|
+
expect(bus.topic_exists?(new_topic)).to be_falsey
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'for a defined topic' do
|
14
|
+
it 'should return true for defined?' do
|
15
|
+
topic = Bifrost::Topic.new('bus-topic')
|
16
|
+
topic.save
|
17
|
+
dup_topic = Bifrost::Topic.new('bus-topic')
|
18
|
+
expect(bus.topic_exists?(dup_topic)).to be_truthy
|
19
|
+
topic.delete
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/spec/bifrost/topic_spec.rb
CHANGED
@@ -5,7 +5,6 @@ describe Bifrost::Topic do
|
|
5
5
|
subject(:topic) { Bifrost::Topic.new('topic_name') }
|
6
6
|
|
7
7
|
it { is_expected.to respond_to(:name) }
|
8
|
-
it { is_expected.to respond_to(:exists?) }
|
9
8
|
it { is_expected.to respond_to(:save) }
|
10
9
|
it { is_expected.to respond_to(:delete) }
|
11
10
|
it { is_expected.to respond_to(:add_subscriber) }
|
@@ -16,11 +15,23 @@ describe Bifrost::Topic do
|
|
16
15
|
expect { invalid_topic.save }.to raise_error(TypeError)
|
17
16
|
end
|
18
17
|
|
19
|
-
|
20
|
-
it 'should return
|
21
|
-
expect(topic
|
18
|
+
describe 'equality' do
|
19
|
+
it 'should return true for the same object' do
|
20
|
+
expect(topic).to eq(topic)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should return true for topics with the same name' do
|
24
|
+
same_topic = Bifrost::Topic.new('topic_name')
|
25
|
+
expect(same_topic).to eq(topic)
|
22
26
|
end
|
23
27
|
|
28
|
+
it 'should return false for topics with disimilar names' do
|
29
|
+
different_topic = Bifrost::Topic.new('different_topic_name')
|
30
|
+
expect(different_topic).not_to eq(topic)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'for an undefined topic' do
|
24
35
|
it 'should persist the topic' do
|
25
36
|
new_topic = Bifrost::Topic.new('new_topic_name')
|
26
37
|
expect(new_topic.save).to be_truthy
|
@@ -46,17 +57,15 @@ describe Bifrost::Topic do
|
|
46
57
|
let(:new_topic) { Bifrost::Topic.new('test_donotdelete') }
|
47
58
|
|
48
59
|
before(:all) do
|
60
|
+
bus = Bifrost::Bus.new
|
49
61
|
tp = Bifrost::Topic.new('test_donotdelete')
|
50
|
-
tp.save unless
|
62
|
+
tp.save unless bus.topic_exists?(tp)
|
51
63
|
end
|
52
64
|
|
53
65
|
after(:all) do
|
66
|
+
bus = Bifrost::Bus.new
|
54
67
|
tp = Bifrost::Topic.new('test_donotdelete')
|
55
|
-
tp.delete if
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'should return true for defined?' do
|
59
|
-
expect(new_topic.exists?).to be_truthy
|
68
|
+
tp.delete if bus.topic_exists?(tp)
|
60
69
|
end
|
61
70
|
|
62
71
|
it 'should return false for save' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bi-frost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shirren Premaratne
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- lib/bifrost/topic.rb
|
172
172
|
- lib/bifrost/version.rb
|
173
173
|
- lib/bifrost/worker.rb
|
174
|
+
- spec/bifrost/bus_spec.rb
|
174
175
|
- spec/bifrost/manager_spec.rb
|
175
176
|
- spec/bifrost/message_spec.rb
|
176
177
|
- spec/bifrost/subscriber_spec.rb
|
@@ -204,6 +205,7 @@ specification_version: 4
|
|
204
205
|
summary: Bifrost is a pub/sub wrapper library which uses the Azure message bus and
|
205
206
|
actors.
|
206
207
|
test_files:
|
208
|
+
- spec/bifrost/bus_spec.rb
|
207
209
|
- spec/bifrost/manager_spec.rb
|
208
210
|
- spec/bifrost/message_spec.rb
|
209
211
|
- spec/bifrost/subscriber_spec.rb
|