cassilds 0.9.1

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 (47) hide show
  1. data/CHANGELOG +53 -0
  2. data/LICENSE +202 -0
  3. data/Manifest +45 -0
  4. data/README.rdoc +83 -0
  5. data/Rakefile +9 -0
  6. data/bin/cassandra_helper +16 -0
  7. data/cassandra.gemspec +46 -0
  8. data/conf/cassandra.in.sh +47 -0
  9. data/conf/cassandra.yaml +113 -0
  10. data/conf/log4j.properties +38 -0
  11. data/conf/storage-conf.xml +342 -0
  12. data/lib/cassandra/0.6/cassandra.rb +68 -0
  13. data/lib/cassandra/0.6/columns.rb +35 -0
  14. data/lib/cassandra/0.6/protocol.rb +92 -0
  15. data/lib/cassandra/0.6.rb +7 -0
  16. data/lib/cassandra/0.7/cassandra.rb +272 -0
  17. data/lib/cassandra/0.7/column_family.rb +3 -0
  18. data/lib/cassandra/0.7/columns.rb +67 -0
  19. data/lib/cassandra/0.7/keyspace.rb +3 -0
  20. data/lib/cassandra/0.7/protocol.rb +139 -0
  21. data/lib/cassandra/0.7.rb +7 -0
  22. data/lib/cassandra/array.rb +8 -0
  23. data/lib/cassandra/cassandra.rb +302 -0
  24. data/lib/cassandra/columns.rb +79 -0
  25. data/lib/cassandra/comparable.rb +28 -0
  26. data/lib/cassandra/constants.rb +11 -0
  27. data/lib/cassandra/debug.rb +9 -0
  28. data/lib/cassandra/helpers.rb +40 -0
  29. data/lib/cassandra/long.rb +58 -0
  30. data/lib/cassandra/mock.rb +326 -0
  31. data/lib/cassandra/ordered_hash.rb +200 -0
  32. data/lib/cassandra/time.rb +11 -0
  33. data/lib/cassandra.rb +39 -0
  34. data/test/cassandra_client_test.rb +20 -0
  35. data/test/cassandra_mock_test.rb +73 -0
  36. data/test/cassandra_test.rb +412 -0
  37. data/test/comparable_types_test.rb +45 -0
  38. data/test/eventmachine_test.rb +42 -0
  39. data/test/ordered_hash_test.rb +380 -0
  40. data/test/test_helper.rb +14 -0
  41. data/vendor/0.6/gen-rb/cassandra.rb +1481 -0
  42. data/vendor/0.6/gen-rb/cassandra_constants.rb +12 -0
  43. data/vendor/0.6/gen-rb/cassandra_types.rb +482 -0
  44. data/vendor/0.7/gen-rb/cassandra.rb +1937 -0
  45. data/vendor/0.7/gen-rb/cassandra_constants.rb +12 -0
  46. data/vendor/0.7/gen-rb/cassandra_types.rb +679 -0
  47. metadata +176 -0
@@ -0,0 +1,380 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ class OrderedHashTestInt < Test::Unit::TestCase
4
+ def setup
5
+ @keys = %w( blue green red pink orange )
6
+ @values = %w( 000099 009900 aa0000 cc0066 cc6633 )
7
+ @hash = Hash.new
8
+ @ordered_hash = Cassandra::OrderedHash.new
9
+
10
+ @keys.each_with_index do |key, index|
11
+ @hash[key] = @values[index]
12
+ @ordered_hash[key] = @values[index]
13
+ end
14
+ end
15
+
16
+ def test_order
17
+ assert_equal @keys, @ordered_hash.keys
18
+ assert_equal @values, @ordered_hash.values
19
+ end
20
+
21
+ def test_access
22
+ assert @hash.all? { |k, v| @ordered_hash[k] == v }
23
+ end
24
+
25
+ def test_assignment
26
+ key, value = 'purple', '5422a8'
27
+
28
+ @ordered_hash[key] = value
29
+ assert_equal @keys.length + 1, @ordered_hash.length
30
+ assert_equal key, @ordered_hash.keys.last
31
+ assert_equal value, @ordered_hash.values.last
32
+ assert_equal value, @ordered_hash[key]
33
+ end
34
+
35
+ def test_delete
36
+ key, value = 'white', 'ffffff'
37
+ bad_key = 'black'
38
+
39
+ @ordered_hash[key] = value
40
+ assert_equal @keys.length + 1, @ordered_hash.length
41
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
42
+
43
+ assert_equal value, @ordered_hash.delete(key)
44
+ assert_equal @keys.length, @ordered_hash.length
45
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
46
+
47
+ assert_nil @ordered_hash.delete(bad_key)
48
+ end
49
+
50
+ def test_to_hash
51
+ assert_same @ordered_hash, @ordered_hash.to_hash
52
+ end
53
+
54
+ def test_to_a
55
+ assert_equal @keys.zip(@values), @ordered_hash.to_a
56
+ end
57
+
58
+ def test_has_key
59
+ assert_equal true, @ordered_hash.has_key?('blue')
60
+ assert_equal true, @ordered_hash.key?('blue')
61
+ assert_equal true, @ordered_hash.include?('blue')
62
+ assert_equal true, @ordered_hash.member?('blue')
63
+
64
+ assert_equal false, @ordered_hash.has_key?('indigo')
65
+ assert_equal false, @ordered_hash.key?('indigo')
66
+ assert_equal false, @ordered_hash.include?('indigo')
67
+ assert_equal false, @ordered_hash.member?('indigo')
68
+ end
69
+
70
+ def test_has_value
71
+ assert_equal true, @ordered_hash.has_value?('000099')
72
+ assert_equal true, @ordered_hash.value?('000099')
73
+ assert_equal false, @ordered_hash.has_value?('ABCABC')
74
+ assert_equal false, @ordered_hash.value?('ABCABC')
75
+ end
76
+
77
+ def test_each_key
78
+ keys = []
79
+ @ordered_hash.each_key { |k| keys << k }
80
+ assert_equal @keys, keys
81
+ end
82
+
83
+ def test_each_value
84
+ values = []
85
+ @ordered_hash.each_value { |v| values << v }
86
+ assert_equal @values, values
87
+ end
88
+
89
+ def test_each
90
+ values = []
91
+ @ordered_hash.each {|key, value| values << value}
92
+ assert_equal @values, values
93
+ end
94
+
95
+ def test_each_with_index
96
+ @ordered_hash.each_with_index { |pair, index| assert_equal [@keys[index], @values[index]], pair}
97
+ end
98
+
99
+ def test_each_pair
100
+ values = []
101
+ keys = []
102
+ @ordered_hash.each_pair do |key, value|
103
+ keys << key
104
+ values << value
105
+ end
106
+ assert_equal @values, values
107
+ assert_equal @keys, keys
108
+ end
109
+
110
+ def test_delete_if
111
+ copy = @ordered_hash.dup
112
+ copy.delete('pink')
113
+ assert_equal copy, @ordered_hash.delete_if { |k, _| k == 'pink' }
114
+ assert !@ordered_hash.keys.include?('pink')
115
+ end
116
+
117
+ def test_reject!
118
+ (copy = @ordered_hash.dup).delete('pink')
119
+ @ordered_hash.reject! { |k, _| k == 'pink' }
120
+ assert_equal copy, @ordered_hash
121
+ assert !@ordered_hash.keys.include?('pink')
122
+ end
123
+
124
+ def test_reject
125
+ copy = @ordered_hash.dup
126
+ new_ordered_hash = @ordered_hash.reject { |k, _| k == 'pink' }
127
+ assert_equal copy, @ordered_hash
128
+ assert !new_ordered_hash.keys.include?('pink')
129
+ assert @ordered_hash.keys.include?('pink')
130
+ end
131
+
132
+ def test_clear
133
+ @ordered_hash.clear
134
+ assert_equal [], @ordered_hash.keys
135
+ end
136
+
137
+ def test_merge
138
+ other_hash = Cassandra::OrderedHash.new
139
+ other_hash['purple'] = '800080'
140
+ other_hash['violet'] = 'ee82ee'
141
+ merged = @ordered_hash.merge other_hash
142
+ assert_equal merged.length, @ordered_hash.length + other_hash.length
143
+ assert_equal @keys + ['purple', 'violet'], merged.keys
144
+
145
+ @ordered_hash.merge! other_hash
146
+ assert_equal @ordered_hash, merged
147
+ assert_equal @ordered_hash.keys, merged.keys
148
+ end
149
+
150
+ def test_shift
151
+ pair = @ordered_hash.shift
152
+ assert_equal [@keys.first, @values.first], pair
153
+ assert !@ordered_hash.keys.include?(pair.first)
154
+ end
155
+
156
+ def test_keys
157
+ original = @ordered_hash.keys.dup
158
+ @ordered_hash.keys.pop
159
+ assert_equal original, @ordered_hash.keys
160
+ end
161
+
162
+ def test_inspect
163
+ assert @ordered_hash.inspect.include?(@hash.inspect)
164
+ end
165
+
166
+ def test_alternate_initialization_with_splat
167
+ alternate = Cassandra::OrderedHash[1,2,3,4]
168
+ assert_kind_of Cassandra::OrderedHash, alternate
169
+ assert_equal [1, 3], alternate.keys
170
+ end
171
+
172
+ def test_alternate_initialization_with_array
173
+ alternate = Cassandra::OrderedHash[ [
174
+ [1, 2],
175
+ [3, 4],
176
+ "bad key value pair",
177
+ [ 'missing value' ]
178
+ ]]
179
+
180
+ assert_kind_of Cassandra::OrderedHash, alternate
181
+ assert_equal [1, 3, 'missing value'], alternate.keys
182
+ assert_equal [2, 4, nil ], alternate.values
183
+ end
184
+
185
+ def test_alternate_initialization_raises_exception_on_odd_length_args
186
+ begin
187
+ alternate = Cassandra::OrderedHash[1,2,3,4,5]
188
+ flunk "Hash::[] should have raised an exception on initialization " +
189
+ "with an odd number of parameters"
190
+ rescue
191
+ assert_equal "odd number of arguments for Hash", $!.message
192
+ end
193
+ end
194
+
195
+ def test_replace_updates_keys
196
+ @other_ordered_hash = Cassandra::OrderedHash[:black, '000000', :white, '000000']
197
+ original = @ordered_hash.replace(@other_ordered_hash)
198
+ assert_same original, @ordered_hash
199
+ assert_equal @other_ordered_hash.keys, @ordered_hash.keys
200
+ end
201
+ end
202
+
203
+ class OrderedHashTest < Test::Unit::TestCase
204
+ def setup
205
+ @keys = %w( blue green red pink orange )
206
+ @values = %w( 000099 009900 aa0000 cc0066 cc6633 )
207
+ @timestamps = %w( 12 34 56 78 90 )
208
+ @hash = Hash.new
209
+ @timestamps_hash = Hash.new
210
+ @ordered_hash = Cassandra::OrderedHash.new
211
+
212
+ @keys.each_with_index do |key, index|
213
+ @hash[key] = @values[index]
214
+ @timestamps_hash[key] = @timestamps[index]
215
+ @ordered_hash.[]=(key, @values[index], @timestamps[index])
216
+ end
217
+ end
218
+
219
+ def test_order
220
+ assert_equal @keys, @ordered_hash.keys
221
+ assert_equal @values, @ordered_hash.values
222
+ assert_equal @timestamps_hash, @ordered_hash.timestamps
223
+ end
224
+
225
+ def test_access
226
+ assert @hash.all? { |k, v| @ordered_hash[k] == v }
227
+ assert @timestamps_hash.all? { |k, v| @ordered_hash.timestamps[k] == v }
228
+ end
229
+
230
+ def test_assignment
231
+ key, value, timestamp = 'purple', '5422a8', '1234'
232
+
233
+ @ordered_hash.[]=(key, value, timestamp)
234
+
235
+ assert_equal @keys.length + 1, @ordered_hash.length
236
+ assert_equal key, @ordered_hash.keys.last
237
+ assert_equal value, @ordered_hash.values.last
238
+ assert_equal value, @ordered_hash[key]
239
+
240
+ assert_equal @keys.length + 1, @ordered_hash.timestamps.length
241
+ assert_equal key, @ordered_hash.timestamps.keys.last
242
+ assert_equal timestamp, @ordered_hash.timestamps.values.last
243
+ assert_equal timestamp, @ordered_hash.timestamps[key]
244
+ end
245
+
246
+ def test_delete
247
+ key, value, timestamp = 'white', 'ffffff', '999'
248
+ bad_key = 'black'
249
+
250
+ @ordered_hash.[]=(key, value, timestamp)
251
+ assert_equal @keys.length + 1, @ordered_hash.length
252
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
253
+
254
+ assert_equal value, @ordered_hash.delete(key)
255
+ assert_equal @keys.length, @ordered_hash.length
256
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
257
+
258
+ assert_nil @ordered_hash.delete(bad_key)
259
+
260
+ @ordered_hash.[]=(key, value, timestamp)
261
+ assert_equal @keys.length + 1, @ordered_hash.timestamps.length
262
+ assert_equal @ordered_hash.keys.length, @ordered_hash.timestamps.length
263
+
264
+ assert_equal value, @ordered_hash.delete(key)
265
+ assert_equal @keys.length, @ordered_hash.timestamps.length
266
+ assert_equal @ordered_hash.keys.length, @ordered_hash.timestamps.length
267
+
268
+ assert_nil @ordered_hash.delete(bad_key)
269
+ end
270
+
271
+ def test_to_a
272
+ assert_equal @keys.zip(@timestamps).sort, @ordered_hash.timestamps.sort.to_a
273
+ end
274
+
275
+ def test_has_key
276
+ assert_equal true, @ordered_hash.timestamps.has_key?('blue')
277
+ assert_equal true, @ordered_hash.timestamps.key?('blue')
278
+ assert_equal true, @ordered_hash.timestamps.include?('blue')
279
+ assert_equal true, @ordered_hash.timestamps.member?('blue')
280
+
281
+ assert_equal false, @ordered_hash.timestamps.has_key?('indigo')
282
+ assert_equal false, @ordered_hash.timestamps.key?('indigo')
283
+ assert_equal false, @ordered_hash.timestamps.include?('indigo')
284
+ assert_equal false, @ordered_hash.timestamps.member?('indigo')
285
+ end
286
+
287
+ def test_has_value
288
+ assert_equal true, @ordered_hash.timestamps.has_value?('12')
289
+ assert_equal true, @ordered_hash.timestamps.value?('12')
290
+ assert_equal false, @ordered_hash.timestamps.has_value?('99')
291
+ assert_equal false, @ordered_hash.timestamps.value?('99')
292
+ end
293
+
294
+ def test_each_key
295
+ keys = []
296
+ @ordered_hash.timestamps.each_key { |k| keys << k }
297
+ assert_equal @keys.sort, keys.sort
298
+ end
299
+
300
+ def test_each_value
301
+ values = []
302
+ @ordered_hash.timestamps.each_value { |v| values << v }
303
+ assert_equal @timestamps.sort, values.sort
304
+ end
305
+
306
+ def test_each
307
+ values = []
308
+ @ordered_hash.timestamps.each {|key, value| values << value}
309
+ assert_equal @timestamps.sort, values.sort
310
+ end
311
+
312
+ def test_delete_if
313
+ copy = @ordered_hash.dup
314
+ copy.delete('pink')
315
+ assert_equal copy, @ordered_hash.delete_if { |k, _| k == 'pink' }
316
+ assert !@ordered_hash.timestamps.keys.include?('pink')
317
+ end
318
+
319
+ def test_reject!
320
+ (copy = @ordered_hash.dup).delete('pink')
321
+ @ordered_hash.reject! { |k, _| k == 'pink' }
322
+ assert_equal copy, @ordered_hash
323
+ assert !@ordered_hash.keys.include?('pink')
324
+ end
325
+
326
+ def test_reject
327
+ copy = @ordered_hash.dup
328
+ new_ordered_hash = @ordered_hash.reject { |k, _| k == 'pink' }
329
+ assert_equal copy, @ordered_hash
330
+ assert !new_ordered_hash.timestamps.keys.include?('pink')
331
+ assert @ordered_hash.timestamps.keys.include?('pink')
332
+ end
333
+
334
+ def test_clear
335
+ @ordered_hash.clear
336
+ assert_equal [], @ordered_hash.timestamps.keys
337
+ end
338
+
339
+ def test_merge
340
+ other_hash = Cassandra::OrderedHash.new
341
+ other_hash['purple'] = '800080'
342
+ other_hash['violet'] = 'ee82ee'
343
+ merged = @ordered_hash.merge other_hash
344
+ assert_equal merged.timestamps.length, @ordered_hash.timestamps.length + other_hash.timestamps.length
345
+ assert_equal (@keys + ['purple', 'violet']).sort, merged.timestamps.keys.sort
346
+
347
+ @ordered_hash.merge! other_hash
348
+ assert_equal @ordered_hash.timestamps, merged.timestamps
349
+ assert_equal @ordered_hash.timestamps.keys.sort, merged.timestamps.keys.sort
350
+ end
351
+
352
+ def test_shift
353
+ pair = @ordered_hash.shift
354
+ assert_equal [@keys.first, @values.first], pair
355
+ assert !@ordered_hash.timestamps.keys.include?(pair.first)
356
+ end
357
+
358
+ def test_keys
359
+ original = @ordered_hash.keys.dup
360
+ @ordered_hash.keys.pop
361
+ assert_equal original.sort, @ordered_hash.timestamps.keys.sort
362
+ end
363
+
364
+ def test_inspect
365
+ assert @ordered_hash.timestamps.sort.inspect.include?(@timestamps_hash.sort.inspect)
366
+ end
367
+
368
+ def test_alternate_initialization_with_splat
369
+ alternate = Cassandra::OrderedHash[1,2,3,4]
370
+ assert_kind_of Cassandra::OrderedHash, alternate
371
+ assert_equal [1, 3], alternate.timestamps.keys
372
+ end
373
+
374
+ def test_replace_updates_keys
375
+ @other_ordered_hash = Cassandra::OrderedHash[:black, '000000', :white, '000000']
376
+ original = @ordered_hash.replace(@other_ordered_hash)
377
+ assert_equal original.timestamps, @ordered_hash.timestamps
378
+ assert_equal @other_ordered_hash.timestamps.keys, @ordered_hash.timestamps.keys
379
+ end
380
+ end
@@ -0,0 +1,14 @@
1
+
2
+ require 'test/unit'
3
+ require "#{File.expand_path(File.dirname(__FILE__))}/../lib/cassandra"
4
+ begin; require 'ruby-debug'; rescue LoadError; end
5
+
6
+ begin
7
+ @test_client = Cassandra.new('Twitter', 'localhost:9160', {:exception_classes => []})
8
+ rescue Thrift::TransportException => e
9
+ #FIXME Make server automatically start if not running
10
+ if e.message =~ /Could not connect/
11
+ puts "*** Please start the Cassandra server by running 'rake cassandra'. ***"
12
+ exit 1
13
+ end
14
+ end