bi-frost 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|