beetle 0.1 → 0.2.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.
Files changed (48) hide show
  1. data/README.rdoc +18 -8
  2. data/beetle.gemspec +37 -121
  3. data/bin/beetle +9 -0
  4. data/examples/README.rdoc +0 -2
  5. data/examples/rpc.rb +3 -2
  6. data/ext/mkrf_conf.rb +19 -0
  7. data/lib/beetle/base.rb +1 -8
  8. data/lib/beetle/client.rb +16 -14
  9. data/lib/beetle/commands/configuration_client.rb +73 -0
  10. data/lib/beetle/commands/configuration_server.rb +85 -0
  11. data/lib/beetle/commands.rb +30 -0
  12. data/lib/beetle/configuration.rb +70 -7
  13. data/lib/beetle/deduplication_store.rb +50 -38
  14. data/lib/beetle/handler.rb +2 -5
  15. data/lib/beetle/logging.rb +7 -0
  16. data/lib/beetle/message.rb +11 -13
  17. data/lib/beetle/publisher.rb +2 -2
  18. data/lib/beetle/r_c.rb +2 -1
  19. data/lib/beetle/redis_configuration_client.rb +136 -0
  20. data/lib/beetle/redis_configuration_server.rb +301 -0
  21. data/lib/beetle/redis_ext.rb +79 -0
  22. data/lib/beetle/redis_master_file.rb +35 -0
  23. data/lib/beetle/redis_server_info.rb +65 -0
  24. data/lib/beetle/subscriber.rb +4 -1
  25. data/lib/beetle.rb +2 -2
  26. data/test/beetle/configuration_test.rb +14 -2
  27. data/test/beetle/deduplication_store_test.rb +61 -43
  28. data/test/beetle/message_test.rb +28 -4
  29. data/test/beetle/redis_configuration_client_test.rb +97 -0
  30. data/test/beetle/redis_configuration_server_test.rb +278 -0
  31. data/test/beetle/redis_ext_test.rb +71 -0
  32. data/test/beetle/redis_master_file_test.rb +39 -0
  33. data/test/test_helper.rb +13 -1
  34. metadata +59 -50
  35. data/.gitignore +0 -5
  36. data/MIT-LICENSE +0 -20
  37. data/Rakefile +0 -114
  38. data/TODO +0 -7
  39. data/doc/redundant_queues.graffle +0 -7744
  40. data/etc/redis-master.conf +0 -189
  41. data/etc/redis-slave.conf +0 -189
  42. data/examples/redis_failover.rb +0 -65
  43. data/script/start_rabbit +0 -29
  44. data/snafu.rb +0 -55
  45. data/test/beetle/bla.rb +0 -0
  46. data/test/beetle.yml +0 -81
  47. data/tmp/master/.gitignore +0 -2
  48. data/tmp/slave/.gitignore +0 -3
metadata CHANGED
@@ -1,18 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beetle
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Kaes
8
8
  - Pascal Friederich
9
9
  - Ali Jelveh
10
+ - Sebastian Roebke
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
14
 
14
- date: 2010-04-14 00:00:00 +02:00
15
- default_executable:
15
+ date: 2010-07-14 00:00:00 +02:00
16
+ default_executable: beetle
16
17
  dependencies:
17
18
  - !ruby/object:Gem::Dependency
18
19
  name: uuid4r
@@ -42,7 +43,7 @@ dependencies:
42
43
  requirements:
43
44
  - - ">="
44
45
  - !ruby/object:Gem::Version
45
- version: 0.1.2
46
+ version: 2.0.3
46
47
  version:
47
48
  - !ruby/object:Gem::Dependency
48
49
  name: amqp
@@ -64,6 +65,16 @@ dependencies:
64
65
  - !ruby/object:Gem::Version
65
66
  version: 2.3.4
66
67
  version:
68
+ - !ruby/object:Gem::Dependency
69
+ name: daemons
70
+ type: :runtime
71
+ version_requirement:
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 1.0.10
77
+ version:
67
78
  - !ruby/object:Gem::Dependency
68
79
  name: mocha
69
80
  type: :development
@@ -84,67 +95,71 @@ dependencies:
84
95
  - !ruby/object:Gem::Version
85
96
  version: "0"
86
97
  version:
98
+ - !ruby/object:Gem::Dependency
99
+ name: cucumber
100
+ type: :development
101
+ version_requirement:
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 0.7.2
107
+ version:
108
+ - !ruby/object:Gem::Dependency
109
+ name: daemon_controller
110
+ type: :development
111
+ version_requirement:
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: "0"
117
+ version:
87
118
  description: A highly available, reliable messaging infrastructure
88
119
  email: developers@xing.com
89
- executables: []
90
-
91
- extensions: []
92
-
120
+ executables:
121
+ - beetle
122
+ extensions:
123
+ - ext/mkrf_conf.rb
93
124
  extra_rdoc_files:
94
125
  - README.rdoc
95
- - TODO
96
126
  files:
97
- - .gitignore
98
- - MIT-LICENSE
99
- - README.rdoc
100
- - Rakefile
101
- - TODO
102
- - beetle.gemspec
103
- - doc/redundant_queues.graffle
104
- - etc/redis-master.conf
105
- - etc/redis-slave.conf
106
- - examples/README.rdoc
107
127
  - examples/attempts.rb
108
128
  - examples/handler_class.rb
109
129
  - examples/handling_exceptions.rb
110
130
  - examples/multiple_exchanges.rb
111
131
  - examples/multiple_queues.rb
112
- - examples/redis_failover.rb
113
132
  - examples/redundant.rb
114
133
  - examples/rpc.rb
115
134
  - examples/simple.rb
116
- - lib/beetle.rb
135
+ - ext/mkrf_conf.rb
117
136
  - lib/beetle/base.rb
118
137
  - lib/beetle/client.rb
138
+ - lib/beetle/commands/configuration_client.rb
139
+ - lib/beetle/commands/configuration_server.rb
140
+ - lib/beetle/commands.rb
119
141
  - lib/beetle/configuration.rb
120
142
  - lib/beetle/deduplication_store.rb
121
143
  - lib/beetle/handler.rb
144
+ - lib/beetle/logging.rb
122
145
  - lib/beetle/message.rb
123
146
  - lib/beetle/publisher.rb
124
147
  - lib/beetle/r_c.rb
148
+ - lib/beetle/redis_configuration_client.rb
149
+ - lib/beetle/redis_configuration_server.rb
150
+ - lib/beetle/redis_ext.rb
151
+ - lib/beetle/redis_master_file.rb
152
+ - lib/beetle/redis_server_info.rb
125
153
  - lib/beetle/subscriber.rb
126
- - script/start_rabbit
127
- - snafu.rb
128
- - test/beetle.yml
129
- - test/beetle/base_test.rb
130
- - test/beetle/bla.rb
131
- - test/beetle/client_test.rb
132
- - test/beetle/configuration_test.rb
133
- - test/beetle/deduplication_store_test.rb
134
- - test/beetle/handler_test.rb
135
- - test/beetle/message_test.rb
136
- - test/beetle/publisher_test.rb
137
- - test/beetle/r_c_test.rb
138
- - test/beetle/subscriber_test.rb
139
- - test/beetle_test.rb
140
- - test/test_helper.rb
141
- - tmp/master/.gitignore
142
- - tmp/slave/.gitignore
154
+ - lib/beetle.rb
155
+ - beetle.gemspec
156
+ - examples/README.rdoc
157
+ - README.rdoc
143
158
  has_rdoc: true
144
159
  homepage: http://xing.github.com/beetle/
145
160
  licenses: []
146
161
 
147
- post_install_message:
162
+ post_install_message: " *********************************************************************************************\n\n If you're running a ruby version < 1.9 we silently installed the SystemTimer gem for you.\n See: http://ph7spot.com/musings/system-timer\n\n *********************************************************************************************\n"
148
163
  rdoc_options:
149
164
  - --charset=UTF-8
150
165
  require_paths:
@@ -159,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
174
  requirements:
160
175
  - - ">="
161
176
  - !ruby/object:Gem::Version
162
- version: "0"
177
+ version: 1.3.1
163
178
  version:
164
179
  requirements: []
165
180
 
@@ -170,7 +185,6 @@ specification_version: 3
170
185
  summary: High Availability AMQP Messaging with Redundant Queues
171
186
  test_files:
172
187
  - test/beetle/base_test.rb
173
- - test/beetle/bla.rb
174
188
  - test/beetle/client_test.rb
175
189
  - test/beetle/configuration_test.rb
176
190
  - test/beetle/deduplication_store_test.rb
@@ -178,15 +192,10 @@ test_files:
178
192
  - test/beetle/message_test.rb
179
193
  - test/beetle/publisher_test.rb
180
194
  - test/beetle/r_c_test.rb
195
+ - test/beetle/redis_configuration_client_test.rb
196
+ - test/beetle/redis_configuration_server_test.rb
197
+ - test/beetle/redis_ext_test.rb
198
+ - test/beetle/redis_master_file_test.rb
181
199
  - test/beetle/subscriber_test.rb
182
200
  - test/beetle_test.rb
183
201
  - test/test_helper.rb
184
- - examples/attempts.rb
185
- - examples/handler_class.rb
186
- - examples/handling_exceptions.rb
187
- - examples/multiple_exchanges.rb
188
- - examples/multiple_queues.rb
189
- - examples/redis_failover.rb
190
- - examples/redundant.rb
191
- - examples/rpc.rb
192
- - examples/simple.rb
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- *.log
2
- doc
3
- pkg
4
- site
5
- test/coverage
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2010 XING AG
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,114 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'lib/beetle'
4
- require 'rcov/rcovtask'
5
-
6
- namespace :test do
7
- namespace :coverage do
8
- desc "Delete aggregate coverage data."
9
- task(:clean) { rm_f "coverage.data" }
10
- end
11
-
12
- desc 'Aggregate code coverage'
13
- task :coverage => "test:coverage:clean"
14
-
15
- Rcov::RcovTask.new(:coverage) do |t|
16
- t.libs << "test"
17
- t.test_files = FileList["test/**/*_test.rb"]
18
- t.output_dir = "test/coverage"
19
- t.verbose = true
20
- t.rcov_opts << "--exclude '.*' --include-file 'lib/beetle/'"
21
- end
22
- task :coverage do
23
- system 'open test/coverage/index.html'
24
- end if RUBY_PLATFORM =~ /darwin/
25
- end
26
-
27
-
28
- namespace :beetle do
29
- task :test do
30
- Beetle::Client.new.test
31
- end
32
-
33
- task :trace do
34
- trap('INT'){ EM.stop_event_loop }
35
- Beetle::Client.new.trace
36
- end
37
- end
38
-
39
- namespace :rabbit do
40
- def start(node_name, port)
41
- script = File.expand_path(File.dirname(__FILE__)+"/script/start_rabbit")
42
- puts "starting rabbit #{node_name} on port #{port}"
43
- puts "type ^C a RETURN to abort"
44
- sleep 1
45
- exec "sudo #{script} #{node_name} #{port}"
46
- end
47
- desc "start rabbit instance 1"
48
- task :start1 do
49
- start "rabbit1", 5672
50
- end
51
- desc "start rabbit instance 2"
52
- task :start2 do
53
- start "rabbit2", 5673
54
- end
55
- end
56
-
57
- namespace :redis do
58
- def config_file(suffix)
59
- File.expand_path(File.dirname(__FILE__)+"/etc/redis-#{suffix}.conf")
60
- end
61
- desc "start main redis"
62
- task :start1 do
63
- exec "redis-server #{config_file(:master)}"
64
- end
65
- desc "start slave redis"
66
- task :start2 do
67
- exec "redis-server #{config_file(:slave)}"
68
- end
69
- end
70
-
71
- task :default do
72
- Rake::Task[:test].invoke
73
- end
74
-
75
- Rake::TestTask.new do |t|
76
- t.libs << "test"
77
- t.test_files = FileList['test/**/*_test.rb']
78
- t.verbose = true
79
- end
80
-
81
- require 'rake/rdoctask'
82
-
83
- Rake::RDocTask.new do |rdoc|
84
- rdoc.rdoc_dir = 'site/rdoc'
85
- rdoc.title = 'Beetle'
86
- rdoc.options << '--line-numbers' << '--inline-source' << '--quiet'
87
- rdoc.rdoc_files.include('README.rdoc')
88
- rdoc.rdoc_files.include('lib/**/*.rb')
89
- end
90
-
91
- begin
92
- require 'jeweler'
93
- Jeweler::Tasks.new do |gemspec|
94
- gemspec.name = 'beetle'
95
- gemspec.version = '0.1'
96
- gemspec.summary = "High Availability AMQP Messaging with Redundant Queues"
97
- gemspec.description = "A highly available, reliable messaging infrastructure"
98
- gemspec.email = "developers@xing.com"
99
- gemspec.homepage = "http://xing.github.com/beetle/"
100
- gemspec.authors = ["Stefan Kaes", "Pascal Friederich", "Ali Jelveh"]
101
- gemspec.add_dependency('uuid4r', '>=0.1.1')
102
- gemspec.add_dependency('bunny', '>=0.6.0')
103
- gemspec.add_dependency('redis', '>=0.1.2')
104
- gemspec.add_dependency('amqp', '>=0.6.7')
105
- gemspec.add_dependency('activesupport', '>=2.3.4')
106
-
107
- gemspec.add_development_dependency('mocha')
108
- gemspec.add_development_dependency('rcov')
109
- end
110
- Jeweler::GemcutterTasks.new
111
- rescue LoadError
112
- # puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
113
- end
114
-
data/TODO DELETED
@@ -1,7 +0,0 @@
1
- - docs
2
- - example scripts
3
- - let handlers decide dynamically how long to wait for a retry
4
- - review log levels in all logger statements
5
- - optimize redis accesses:
6
- - combine multiple redis accesses into one
7
- - ack redundant messages with attempts limit 1 immediately?