resque-bus 0.3.7 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +2 -2
  3. data/README.mdown +42 -64
  4. data/Rakefile +0 -1
  5. data/lib/resque-bus.rb +13 -305
  6. data/lib/resque_bus/adapter.rb +65 -0
  7. data/lib/resque_bus/compatibility/deprecated.rb +38 -0
  8. data/lib/resque_bus/compatibility/driver.rb +10 -0
  9. data/lib/resque_bus/compatibility/heartbeat.rb +10 -0
  10. data/lib/resque_bus/compatibility/publisher.rb +13 -0
  11. data/lib/resque_bus/compatibility/rider.rb +32 -0
  12. data/lib/resque_bus/compatibility/subscriber.rb +8 -0
  13. data/lib/resque_bus/compatibility/task_manager.rb +8 -0
  14. data/lib/resque_bus/server/views/bus.erb +2 -2
  15. data/lib/resque_bus/server.rb +5 -4
  16. data/lib/resque_bus/tasks.rb +46 -46
  17. data/lib/resque_bus/version.rb +2 -4
  18. data/resque-bus.gemspec +5 -10
  19. data/spec/adapter/compatibility_spec.rb +97 -0
  20. data/spec/adapter/integration_spec.rb +111 -0
  21. data/spec/adapter/publish_at_spec.rb +50 -0
  22. data/spec/adapter/retry_spec.rb +47 -0
  23. data/spec/adapter/support.rb +23 -0
  24. data/spec/adapter_spec.rb +14 -0
  25. data/spec/application_spec.rb +62 -62
  26. data/spec/config_spec.rb +83 -0
  27. data/spec/dispatch_spec.rb +6 -6
  28. data/spec/driver_spec.rb +62 -44
  29. data/spec/heartbeat_spec.rb +4 -4
  30. data/spec/integration_spec.rb +2 -2
  31. data/spec/matcher_spec.rb +29 -29
  32. data/spec/publish_spec.rb +46 -43
  33. data/spec/publisher_spec.rb +7 -0
  34. data/spec/rider_spec.rb +14 -66
  35. data/spec/spec_helper.rb +25 -25
  36. data/spec/subscriber_spec.rb +194 -176
  37. data/spec/subscription_list_spec.rb +1 -1
  38. data/spec/subscription_spec.rb +1 -1
  39. data/spec/worker_spec.rb +32 -0
  40. metadata +47 -58
  41. data/lib/resque_bus/application.rb +0 -115
  42. data/lib/resque_bus/compatibility.rb +0 -24
  43. data/lib/resque_bus/dispatch.rb +0 -61
  44. data/lib/resque_bus/driver.rb +0 -30
  45. data/lib/resque_bus/heartbeat.rb +0 -106
  46. data/lib/resque_bus/local.rb +0 -38
  47. data/lib/resque_bus/matcher.rb +0 -81
  48. data/lib/resque_bus/publisher.rb +0 -12
  49. data/lib/resque_bus/rider.rb +0 -54
  50. data/lib/resque_bus/subscriber.rb +0 -63
  51. data/lib/resque_bus/subscription.rb +0 -55
  52. data/lib/resque_bus/subscription_list.rb +0 -53
  53. data/lib/resque_bus/task_manager.rb +0 -52
  54. data/lib/resque_bus/util.rb +0 -42
  55. data/lib/tasks/resquebus.rake +0 -2
  56. data/spec/compatibility_spec.rb +0 -93
  57. data/spec/publish_at_spec.rb +0 -74
  58. data/spec/redis_spec.rb +0 -13
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ResqueBus
3
+ module QueueBus
4
4
  describe Application do
5
5
  describe ".all" do
6
6
  it "should return empty array when none" do
@@ -10,143 +10,143 @@ module ResqueBus
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
14
  Application.all.collect(&:app_key).should =~ ["one", "two", "three"]
15
-
15
+
16
16
  Application.new("two").unsubscribe
17
17
  Application.all.collect(&:app_key).should =~ ["one", "three"]
18
18
  end
19
19
  end
20
-
20
+
21
21
  describe ".new" do
22
22
  it "should have a key" do
23
23
  Application.new("something").app_key.should == "something"
24
-
24
+
25
25
  Application.new("some thing").app_key.should == "some_thing"
26
26
  Application.new("some-thing").app_key.should == "some_thing"
27
27
  Application.new("some_thing").app_key.should == "some_thing"
28
28
  Application.new("Some Thing").app_key.should == "some_thing"
29
29
  end
30
-
30
+
31
31
  it "should raise an error if not valid" do
32
32
  lambda {
33
33
  Application.new("")
34
34
  }.should raise_error
35
-
35
+
36
36
  lambda {
37
37
  Application.new(nil)
38
38
  }.should raise_error
39
-
39
+
40
40
  lambda {
41
41
  Application.new("/")
42
42
  }.should raise_error
43
43
  end
44
44
  end
45
-
45
+
46
46
  describe "#read_redis_hash" do
47
47
  it "should handle old and new values" do
48
-
49
- ResqueBus.redis.hset("resquebus_app:myapp", "new_one", Resque.encode("queue_name" => "x", "bus_event_type" => "event_name"))
50
- ResqueBus.redis.hset("resquebus_app:myapp", "old_one", "oldqueue_name")
48
+
49
+ QueueBus.redis { |redis| redis.hset("bus_app:myapp", "new_one", QueueBus::Util.encode("queue_name" => "x", "bus_event_type" => "event_name") ) }
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
53
  val.should == {"new_one" => {"queue_name" => "x", "bus_event_type" => "event_name"}, "old_one" => "oldqueue_name"}
54
54
  end
55
55
  end
56
-
56
+
57
57
  describe "#subscribe" do
58
58
  let(:sub1) { test_sub("event_one", "default") }
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
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
62
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
63
63
  Application.new("myapp").subscribe(test_list(sub1, sub2))
64
-
65
- ResqueBus.redis.hgetall("resquebus_app:myapp").should == {"event_two"=>"{\"queue_name\":\"default\",\"key\":\"event_two\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_two\"}}",
66
- "event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"}
67
- ResqueBus.redis.hkeys("resquebus_app:myapp").should =~ ["event_one", "event_two"]
68
- ResqueBus.redis.smembers("resquebus_apps").should =~ ["myapp"]
64
+
65
+ QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.should == {"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
+ QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.should =~ ["event_one", "event_two"]
68
+ QueueBus.redis { |redis| redis.smembers("bus_apps") }.should =~ ["myapp"]
69
69
  end
70
70
  it "should add string to redis" do
71
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
71
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
72
72
  Application.new("myapp").subscribe(test_list(sub1))
73
-
74
- ResqueBus.redis.hgetall("resquebus_app:myapp").should == {"event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"}
75
- ResqueBus.redis.hkeys("resquebus_app:myapp").should =~ ["event_one"]
76
- ResqueBus.redis.smembers("resquebus_apps").should =~ ["myapp"]
73
+
74
+ QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.should == {"event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::QueueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}"}
75
+ QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.should =~ ["event_one"]
76
+ QueueBus.redis { |redis| redis.smembers("bus_apps") }.should =~ ["myapp"]
77
77
  end
78
78
  it "should multiple queues to redis" do
79
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
79
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
80
80
  Application.new("myapp").subscribe(test_list(sub1, sub2, sub3))
81
- ResqueBus.redis.hgetall("resquebus_app:myapp").should == {"event_two"=>"{\"queue_name\":\"default\",\"key\":\"event_two\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_two\"}}", "event_one"=>"{\"queue_name\":\"default\",\"key\":\"event_one\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_one\"}}",
82
- "event_three"=>"{\"queue_name\":\"other\",\"key\":\"event_three\",\"class\":\"::ResqueBus::Rider\",\"matcher\":{\"bus_event_type\":\"event_three\"}}"}
83
- ResqueBus.redis.hkeys("resquebus_app:myapp").should =~ ["event_three", "event_two", "event_one"]
84
- ResqueBus.redis.smembers("resquebus_apps").should =~ ["myapp"]
81
+ QueueBus.redis { |redis| redis.hgetall("bus_app:myapp") }.should == {"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
+ QueueBus.redis { |redis| redis.hkeys("bus_app:myapp") }.should =~ ["event_three", "event_two", "event_one"]
84
+ QueueBus.redis { |redis| redis.smembers("bus_apps") }.should =~ ["myapp"]
85
85
  end
86
-
86
+
87
87
  it "should do nothing if nil or empty" do
88
-
89
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
90
-
88
+
89
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
90
+
91
91
  Application.new("myapp").subscribe(nil)
92
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
93
-
92
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
93
+
94
94
  Application.new("myapp").subscribe([])
95
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
95
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should be_nil
96
96
  end
97
-
97
+
98
98
  it "should call unsubscribe" do
99
99
  app = Application.new("myapp")
100
100
  app.should_receive(:unsubscribe)
101
101
  app.subscribe([])
102
102
  end
103
103
  end
104
-
104
+
105
105
  describe "#unsubscribe" do
106
106
  it "should remove items" do
107
- ResqueBus.redis.sadd("resquebus_apps", "myapp")
108
- ResqueBus.redis.sadd("resquebus_apps", "other")
109
- ResqueBus.redis.hset("resquebus_app:myapp", "event_one", "myapp_default")
110
-
107
+ QueueBus.redis { |redis| redis.sadd("bus_apps", "myapp") }
108
+ QueueBus.redis { |redis| redis.sadd("bus_apps", "other") }
109
+ QueueBus.redis { |redis| redis.hset("bus_app:myapp", "event_one", "myapp_default") }
110
+
111
111
  Application.new("myapp").unsubscribe
112
-
113
- ResqueBus.redis.smembers("resquebus_apps").should == ["other"]
114
- ResqueBus.redis.get("resquebus_app:myapp").should be_nil
112
+
113
+ QueueBus.redis { |redis| redis.smembers("bus_apps") }.should == ["other"]
114
+ QueueBus.redis { |redis| redis.get("bus_app:myapp") }.should 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
120
  Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
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
124
  Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
125
-
126
- Application.new("myapp").subscription_matches("bus_event_type"=>"two").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "two", "default", "::ResqueBus::Rider"]]
127
- Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one", "default", "::ResqueBus::Rider"]]
125
+
126
+ Application.new("myapp").subscription_matches("bus_event_type"=>"two").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "two", "default", "::QueueBus::Rider"]]
127
+ Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["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
133
  Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
134
-
135
- Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one.+", "default", "::ResqueBus::Rider"]]
136
- Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one", "default", "::ResqueBus::Rider"]]
137
- Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one.+","default", "::ResqueBus::Rider"], ["myapp", "one_.*", "default", "::ResqueBus::Rider"]]
134
+
135
+ Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one.+", "default", "::QueueBus::Rider"]]
136
+ Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one", "default", "::QueueBus::Rider"]]
137
+ Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["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
143
  Application.new("myapp").subscription_matches("bus_event_type"=>"three").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
144
-
145
- Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::ResqueBus::Rider"]]
146
- Application.new("myapp").subscription_matches("bus_event_type"=>"donex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::ResqueBus::Rider"]]
147
- Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one" ,"default", "::ResqueBus::Rider"]]
148
- Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::ResqueBus::Rider"], ["myapp", "(?-mix:one_.*)", "default", "::ResqueBus::Rider"]]
144
+
145
+ Application.new("myapp").subscription_matches("bus_event_type"=>"onex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"]]
146
+ Application.new("myapp").subscription_matches("bus_event_type"=>"donex").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"]]
147
+ Application.new("myapp").subscription_matches("bus_event_type"=>"one").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "one" ,"default", "::QueueBus::Rider"]]
148
+ Application.new("myapp").subscription_matches("bus_event_type"=>"one_x").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["myapp", "(?-mix:one.+)", "default", "::QueueBus::Rider"], ["myapp", "(?-mix:one_.*)", "default", "::QueueBus::Rider"]]
149
149
  end
150
150
  end
151
151
  end
152
- end
152
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ module QueueBus
4
+ module Adapters
5
+ class TestOne
6
+
7
+ end
8
+ end
9
+ end
10
+
11
+ describe "QueueBus config" do
12
+ it "should set the default app key" do
13
+ QueueBus.default_app_key.should == nil
14
+
15
+ QueueBus.default_app_key = "my_app"
16
+ QueueBus.default_app_key.should == "my_app"
17
+
18
+ QueueBus.default_app_key = "something here"
19
+ QueueBus.default_app_key.should == "something_here"
20
+ end
21
+
22
+ it "should set the default queue" do
23
+ QueueBus.default_queue.should == nil
24
+
25
+ QueueBus.default_queue = "my_queue"
26
+ QueueBus.default_queue.should == "my_queue"
27
+ end
28
+
29
+ it "should set the local mode" do
30
+ QueueBus.local_mode.should == nil
31
+ QueueBus.local_mode = :standalone
32
+ QueueBus.local_mode.should == :standalone
33
+ end
34
+
35
+ it "should set the hostname" do
36
+ QueueBus.hostname.should_not == nil
37
+ QueueBus.hostname = "whatever"
38
+ QueueBus.hostname.should == "whatever"
39
+ end
40
+
41
+ it "should set before_publish callback" do
42
+ QueueBus.before_publish = lambda {|attributes| 42 }
43
+ QueueBus.before_publish_callback({}).should == 42
44
+ end
45
+
46
+
47
+ it "should use the default Redis connection" do
48
+ QueueBus.redis { |redis| redis }.should_not eq(nil)
49
+ end
50
+
51
+ it "should default to given adapter" do
52
+ QueueBus.adapter.is_a?(adapter_under_test_class).should == true
53
+
54
+ # and should raise if already set
55
+ lambda {
56
+ QueueBus.adapter = :data
57
+ }.should raise_error
58
+ end
59
+
60
+ context "with a fresh load" do
61
+ before(:each) do
62
+ QueueBus.send(:reset)
63
+ end
64
+
65
+ it "should be able to be set to resque" do
66
+ QueueBus.adapter = adapter_under_test_symbol
67
+ QueueBus.adapter.is_a?(adapter_under_test_class).should == true
68
+
69
+ # and should raise if already set
70
+ lambda {
71
+ QueueBus.adapter = :data
72
+ }.should raise_error
73
+ end
74
+
75
+ it "should be able to be set to something else" do
76
+
77
+ QueueBus.adapter = :test_one
78
+ QueueBus.adapter.is_a?(QueueBus::Adapters::TestOne).should == true
79
+ end
80
+ end
81
+
82
+
83
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ResqueBus
3
+ module QueueBus
4
4
  describe Dispatch do
5
5
  it "should not start with any applications" do
6
6
  Dispatch.new("d").subscriptions.size.should == 0
@@ -29,7 +29,7 @@ module ResqueBus
29
29
 
30
30
  describe "Top Level" do
31
31
  before(:each) do
32
- ResqueBus.dispatch("testit") do
32
+ QueueBus.dispatch("testit") do
33
33
  subscribe "event1" do |attributes|
34
34
  Runner2.run(attributes)
35
35
  end
@@ -50,16 +50,16 @@ module ResqueBus
50
50
 
51
51
  it "should register and run" do
52
52
  Runner2.value.should == 0
53
- ResqueBus.dispatcher_execute("testit", "event2", "bus_event_type" => "event2")
53
+ QueueBus.dispatcher_execute("testit", "event2", "bus_event_type" => "event2")
54
54
  Runner2.value.should == 1
55
- ResqueBus.dispatcher_execute("testit", "event1", "bus_event_type" => "event1")
55
+ QueueBus.dispatcher_execute("testit", "event1", "bus_event_type" => "event1")
56
56
  Runner2.value.should == 2
57
- ResqueBus.dispatcher_execute("testit", "event1", "bus_event_type" => "event1")
57
+ QueueBus.dispatcher_execute("testit", "event1", "bus_event_type" => "event1")
58
58
  Runner2.value.should == 3
59
59
  end
60
60
 
61
61
  it "should return the subscriptions" do
62
- dispatcher = ResqueBus.dispatcher_by_key("testit")
62
+ dispatcher = QueueBus.dispatcher_by_key("testit")
63
63
  subs = dispatcher.subscriptions.all
64
64
  tuples = subs.collect{ |sub| [sub.key, sub.queue_name]}
65
65
  tuples.should =~ [ ["event1", "testit_default"],
data/spec/driver_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ResqueBus
3
+ module QueueBus
4
4
  describe Driver do
5
5
  before(:each) do
6
6
  Application.new("app1").subscribe(test_list(test_sub("event1"), test_sub("event2"), test_sub("event3")))
@@ -11,81 +11,99 @@ module ResqueBus
11
11
  after(:each) do
12
12
  Timecop.return
13
13
  end
14
-
15
- let(:bus_attrs) { {"bus_driven_at" => Time.now.to_i, "bus_rider_class_name"=>"::ResqueBus::Rider"} }
16
-
14
+
15
+ let(:bus_attrs) { {"bus_driven_at" => Time.now.to_i, "bus_rider_class_name"=>"::QueueBus::Rider", "bus_class_proxy" => "::QueueBus::Rider"} }
16
+
17
17
  describe ".subscription_matches" do
18
18
  it "return empty array when none" do
19
19
  Driver.subscription_matches("bus_event_type" => "else").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
20
20
  Driver.subscription_matches("bus_event_type" => "event").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should == []
21
21
  end
22
22
  it "should return a match" do
23
- Driver.subscription_matches("bus_event_type" => "event1").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app1", "event1", "default", "::ResqueBus::Rider"]]
24
- Driver.subscription_matches("bus_event_type" => "event6").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event6", "default", "::ResqueBus::Rider"]]
23
+ Driver.subscription_matches("bus_event_type" => "event1").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app1", "event1", "default", "::QueueBus::Rider"]]
24
+ Driver.subscription_matches("bus_event_type" => "event6").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event6", "default", "::QueueBus::Rider"]]
25
25
  end
26
26
  it "should match multiple apps" do
27
- Driver.subscription_matches("bus_event_type" => "event2").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app1", "event2", "default", "::ResqueBus::Rider"], ["app2", "event2", "other", "::ResqueBus::Rider"]]
27
+ Driver.subscription_matches("bus_event_type" => "event2").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app1", "event2", "default", "::QueueBus::Rider"], ["app2", "event2", "other", "::QueueBus::Rider"]]
28
28
  end
29
29
  it "should match multiple apps with patterns" do
30
- Driver.subscription_matches("bus_event_type" => "event4").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event[45]", "default", "::ResqueBus::Rider"], ["app2", "event4", "more", "::ResqueBus::Rider"]]
30
+ Driver.subscription_matches("bus_event_type" => "event4").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event[45]", "default", "::QueueBus::Rider"], ["app2", "event4", "more", "::QueueBus::Rider"]]
31
31
  end
32
32
  it "should match multiple events in same app" do
33
- Driver.subscription_matches("bus_event_type" => "event5").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event[45]", "default", "::ResqueBus::Rider"], ["app3", "event5", "default", "::ResqueBus::Rider"]]
33
+ Driver.subscription_matches("bus_event_type" => "event5").collect{|s| [s.app_key, s.key, s.queue_name, s.class_name]}.should =~ [["app3", "event[45]", "default", "::QueueBus::Rider"], ["app3", "event5", "default", "::QueueBus::Rider"]]
34
34
  end
35
35
  end
36
-
36
+
37
37
  describe ".perform" do
38
38
  let(:attributes) { {"x" => "y"} }
39
-
39
+
40
40
  before(:each) do
41
- ResqueBus.redis.smembers("queues").should == []
42
- ResqueBus.redis.lpop("queue:app1_default").should be_nil
43
- ResqueBus.redis.lpop("queue:app2_default").should be_nil
44
- ResqueBus.redis.lpop("queue:app3_default").should be_nil
41
+ QueueBus.redis { |redis| redis.smembers("queues") }.should == []
42
+ QueueBus.redis { |redis| redis.lpop("queue:app1_default") }.should be_nil
43
+ QueueBus.redis { |redis| redis.lpop("queue:app2_default") }.should be_nil
44
+ QueueBus.redis { |redis| redis.lpop("queue:app3_default") }.should be_nil
45
45
  end
46
-
46
+
47
47
  it "should do nothing when empty" do
48
48
  Driver.perform(attributes.merge("bus_event_type" => "else"))
49
- ResqueBus.redis.smembers("queues").should == []
49
+ QueueBus.redis { |redis| redis.smembers("queues") }.should == []
50
50
  end
51
-
51
+
52
52
  it "should queue up the riders in redis" do
53
- ResqueBus.redis.lpop("queue:app1_default").should be_nil
53
+ QueueBus.redis { |redis| redis.lpop("queue:app1_default") }.should be_nil
54
54
  Driver.perform(attributes.merge("bus_event_type" => "event1"))
55
- ResqueBus.redis.smembers("queues").should =~ ["default"]
55
+ QueueBus.redis { |redis| redis.smembers("queues") }.should =~ ["default"]
56
56
 
57
- hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
58
- hash["class"].should == "::ResqueBus::Rider"
59
- hash["args"].should == [ {"bus_rider_app_key"=>"app1", "x" => "y", "bus_event_type" => "event1", "bus_rider_sub_key"=>"event1", "bus_rider_queue" => "default"}.merge(bus_attrs) ]
57
+ hash = JSON.parse(QueueBus.redis { |redis| redis.lpop("queue:default") })
58
+ hash["class"].should == "QueueBus::Worker"
59
+ hash["args"].size.should == 1
60
+ JSON.parse(hash["args"].first).should == {"bus_rider_app_key"=>"app1", "x" => "y", "bus_event_type" => "event1", "bus_rider_sub_key"=>"event1", "bus_rider_queue" => "default"}.merge(bus_attrs)
60
61
  end
61
-
62
+
62
63
  it "should queue up to multiple" do
63
64
  Driver.perform(attributes.merge("bus_event_type" => "event4"))
64
- ResqueBus.redis.smembers("queues").should =~ ["default", "more"]
65
-
66
- hash = JSON.parse(ResqueBus.redis.lpop("queue:more"))
67
- hash["class"].should == "::ResqueBus::Rider"
68
- hash["args"].should == [ {"bus_rider_app_key"=>"app2", "x" => "y", "bus_event_type" => "event4", "bus_rider_sub_key"=>"event4", "bus_rider_queue" => "more"}.merge(bus_attrs) ]
69
-
70
- hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
71
- hash["class"].should == "::ResqueBus::Rider"
72
- hash["args"].should == [ {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event4", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs) ]
65
+ QueueBus.redis { |redis| redis.smembers("queues") }.should =~ ["default", "more"]
66
+
67
+ hash = JSON.parse(QueueBus.redis { |redis| redis.lpop("queue:more") })
68
+ hash["class"].should == "QueueBus::Worker"
69
+ hash["args"].size.should == 1
70
+ JSON.parse(hash["args"].first).should == {"bus_rider_app_key"=>"app2", "x" => "y", "bus_event_type" => "event4", "bus_rider_sub_key"=>"event4", "bus_rider_queue" => "more"}.merge(bus_attrs)
71
+
72
+ hash = JSON.parse(QueueBus.redis { |redis| redis.lpop("queue:default") })
73
+ hash["class"].should == "QueueBus::Worker"
74
+ hash["args"].size.should == 1
75
+ JSON.parse(hash["args"].first).should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event4", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs)
73
76
  end
74
-
77
+
75
78
  it "should queue up to the same" do
76
79
  Driver.perform(attributes.merge("bus_event_type" => "event5"))
77
- ResqueBus.redis.smembers("queues").should =~ ["default"]
80
+ QueueBus.redis { |redis| redis.smembers("queues") }.should =~ ["default"]
81
+
82
+ QueueBus.redis { |redis| redis.llen("queue:default") }.should == 2
83
+
84
+ pop1 = JSON.parse(QueueBus.redis { |redis| redis.lpop("queue:default") })
85
+ pop2 = JSON.parse(QueueBus.redis { |redis| redis.lpop("queue:default") })
86
+
87
+ pargs1 = JSON.parse(pop1["args"].first)
88
+ pargs2 = JSON.parse(pop2["args"].first)
89
+ if pargs1["bus_rider_sub_key"] == "event5"
90
+ hash1 = pop1
91
+ hash2 = pop2
92
+ args1 = pargs1
93
+ args2 = pargs2
94
+ else
95
+ hash1 = pop2
96
+ hash2 = pop1
97
+ args1 = pargs2
98
+ args2 = pargs1
99
+ end
78
100
 
79
- ResqueBus.redis.llen("queue:default").should == 2
80
-
81
- hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
82
- hash["class"].should == "::ResqueBus::Rider"
83
- hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event5", "bus_rider_queue" => "default"}.merge(bus_attrs)
101
+ hash1["class"].should == "QueueBus::Worker"
102
+ args1.should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event5", "bus_rider_queue" => "default"}.merge(bus_attrs)
84
103
 
85
- hash = JSON.parse(ResqueBus.redis.lpop("queue:default"))
86
- hash["class"].should == "::ResqueBus::Rider"
87
- hash["args"][0].should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs)
104
+ hash2["class"].should == "QueueBus::Worker"
105
+ args2.should == {"bus_rider_app_key"=>"app3", "x" => "y", "bus_event_type" => "event5", "bus_rider_sub_key"=>"event[45]", "bus_rider_queue" => "default"}.merge(bus_attrs)
88
106
  end
89
107
  end
90
108
  end
91
- end
109
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ResqueBus
3
+ module QueueBus
4
4
  describe Heartbeat do
5
5
  def now_attributes
6
6
  {
@@ -20,7 +20,7 @@ module ResqueBus
20
20
 
21
21
  it "should publish the current time once" do
22
22
  Timecop.freeze "12/12/2013 12:01:19" do
23
- ResqueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
23
+ QueueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
24
24
  Heartbeat.perform
25
25
  end
26
26
 
@@ -31,12 +31,12 @@ module ResqueBus
31
31
 
32
32
  it "should publish a minute later" do
33
33
  Timecop.freeze "12/12/2013 12:01:19" do
34
- ResqueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
34
+ QueueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
35
35
  Heartbeat.perform
36
36
  end
37
37
 
38
38
  Timecop.freeze "12/12/2013 12:02:01" do
39
- ResqueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
39
+ QueueBus.should_receive(:publish).with("heartbeat_minutes", now_attributes)
40
40
  Heartbeat.perform
41
41
  end
42
42
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ResqueBus
3
+ module QueueBus
4
4
  describe "Integration" do
5
5
  it "should round trip attributes" do
6
6
  write1 = Subscription.new("default", "key1", "MyClass1", {"bus_event_type" => "event_one"})
@@ -23,7 +23,7 @@ module ResqueBus
23
23
  app = Application.new("test")
24
24
  app.subscribe(write)
25
25
 
26
- ResqueBus.send(:reset) # reset to make sure we read from redis
26
+ reset_test_adapter # reset to make sure we read from redis
27
27
  app = Application.new("test")
28
28
  read = app.send(:subscriptions)
29
29