beetle 0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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?