cassilds 0.9.1

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