bigrecord-driver 0.0.3

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.
@@ -0,0 +1,316 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'test/unit'
4
+ require 'big_record_driver'
5
+
6
+ module AbstractTestClient #< Test::Unit::TestCase
7
+
8
+ TABLE_NAME = :animals
9
+
10
+ def test_update_without_timestamps
11
+ ret = @big_db.update(TABLE_NAME,
12
+ 'dog-key',
13
+ {'columnfamily1:name' => 'Dog',
14
+ 'columnfamily1:size' => 'medium',
15
+ 'columnfamily2:toto' => 'some value'})
16
+
17
+ assert_not_nil ret, "The row was not inserted properly"
18
+ assert_equal 'Dog', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:name'), "A saved cell couldn't be retrieved"
19
+ assert_equal 'medium', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size'), "A saved cell couldn't be retrieved"
20
+ assert_equal 'some value', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily2:toto'), "A saved cell couldn't be retrieved"
21
+ end
22
+
23
+ def test_update_with_timestamps_in_chronological_order
24
+ t1 = Time.now.to_i
25
+ t2 = t1 + 1000
26
+ t3 = t2 + 1000
27
+
28
+ ret1 = @big_db.update(TABLE_NAME,
29
+ 'dog-key',
30
+ {'columnfamily1:name' => 'Dog',
31
+ 'columnfamily1:size' => 'medium',
32
+ 'columnfamily2:toto' => 'some value1'},
33
+ t1)
34
+
35
+ ret2 = @big_db.update(TABLE_NAME,
36
+ 'dog-key',
37
+ {'columnfamily1:size' => 'small',
38
+ 'columnfamily2:toto' => 'some value2'},
39
+ t2)
40
+
41
+ ret3 = @big_db.update(TABLE_NAME,
42
+ 'dog-key',
43
+ {'columnfamily1:size' => 'big'},
44
+ t3)
45
+
46
+ assert_not_nil ret1, "A row was not inserted properly"
47
+ assert_not_nil ret2, "A row was not inserted properly"
48
+ assert_not_nil ret3, "A row was not inserted properly"
49
+
50
+ assert_equal 'Dog', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:name'), "A saved cell couldn't be retrieved"
51
+ assert_equal 'big', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size'), "A saved cell couldn't be retrieved"
52
+ assert_equal 'some value2', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily2:toto'), "A saved cell couldn't be retrieved"
53
+ end
54
+
55
+ def test_update_with_timestamps_in_reverse_chronological_order
56
+ t1 = Time.now.to_i
57
+ t2 = t1 - 1000
58
+ t3 = t2 - 1000
59
+
60
+ ret1 = @big_db.update(TABLE_NAME,
61
+ 'dog-key',
62
+ {'columnfamily1:name' => 'Dog',
63
+ 'columnfamily1:size' => 'medium',
64
+ 'columnfamily2:toto' => 'some value1'},
65
+ t1)
66
+
67
+ ret2 = @big_db.update(TABLE_NAME,
68
+ 'dog-key',
69
+ {'columnfamily1:size' => 'small',
70
+ 'columnfamily2:toto' => 'some value2'},
71
+ t2)
72
+
73
+ ret3 = @big_db.update(TABLE_NAME,
74
+ 'dog-key',
75
+ {'columnfamily1:size' => 'big'},
76
+ t3)
77
+
78
+ assert_not_nil ret1, "A row was not inserted properly"
79
+ assert_not_nil ret2, "A row was not inserted properly"
80
+ assert_not_nil ret3, "A row was not inserted properly"
81
+
82
+ assert_equal 'Dog', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:name'), "A saved cell couldn't be retrieved"
83
+ assert_equal 'medium', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size'), "A saved cell couldn't be retrieved"
84
+ assert_equal 'some value1', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily2:toto'), "A saved cell couldn't be retrieved"
85
+ end
86
+
87
+ def test_get_and_get_columns
88
+ t1 = Time.now.to_i
89
+ t2 = t1 + 1000
90
+ t3 = t2 + 1000
91
+
92
+ @big_db.update(TABLE_NAME,
93
+ 'dog-key',
94
+ {'columnfamily1:name' => 'Dog',
95
+ 'columnfamily1:size' => 'medium',
96
+ 'columnfamily2:toto' => 'some value1'},
97
+ t1)
98
+
99
+ @big_db.update(TABLE_NAME,
100
+ 'dog-key',
101
+ {'columnfamily1:size' => 'small',
102
+ 'columnfamily2:toto' => 'some value2'},
103
+ t2)
104
+
105
+ @big_db.update(TABLE_NAME,
106
+ 'dog-key',
107
+ {'columnfamily1:size' => 'big'},
108
+ t3)
109
+
110
+ # normal calls
111
+ assert_equal 'big', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size'), "Didn't retrieved the last version of the cell"
112
+ assert_nil @big_db.get(TABLE_NAME, 'dog-key-that-does-not-exist', 'columnfamily1:size'), "Got a value for a cell that doesn't even exist"
113
+
114
+ # timestamps
115
+ assert_equal 'medium', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t1), "Didn't retrieved the requested version of the cell"
116
+ assert_equal 'small', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t2), "Didn't retrieved the requested version of the cell"
117
+ assert_equal 'small', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t2+500), "Didn't retrieved the requested version of the cell"
118
+ assert_equal 'big', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t3), "Didn't retrieved the requested version of the cell"
119
+ assert_equal 'big', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t3+1000), "Didn't retrieved the last version of the cell"
120
+ assert_nil @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :timestamp => t1-1000), "Got a value for a cell that was not even existing at that time"
121
+
122
+ # num_versions
123
+ assert_raises ArgumentError, "Specifying a number of version = 0 should be forbidden" do
124
+ @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 0)
125
+ end
126
+ assert_raises ArgumentError, "Specifying a number of version < 0 should be forbidden" do
127
+ @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => -10)
128
+ end
129
+ assert_instance_of String, @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 1)
130
+ assert_instance_of Array, @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 2)
131
+ assert_equal 2, @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 2).size
132
+ assert_equal 3, @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 3).size
133
+ assert_equal 3, @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10).size
134
+ assert_equal ['big', 'small', 'medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10)
135
+
136
+ # timestamps + num_versions
137
+ assert_equal ['big', 'small', 'medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t3+1000)
138
+ assert_equal ['big', 'small', 'medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t3)
139
+ assert_equal ['small', 'medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t2+500)
140
+ assert_equal ['small', 'medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t2)
141
+ assert_equal ['medium'], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t1)
142
+ assert_equal [], @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 10, :timestamp => t1-1000)
143
+ assert_equal 'small', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 1, :timestamp => t2+500)
144
+ assert_nil @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size', :num_versions => 1, :timestamp => t1-500)
145
+
146
+
147
+ ###################### GET COLUMNS ######################
148
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'big', 'columnfamily2:toto' => 'some value2'}
149
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:name', 'columnfamily1:size', 'columnfamily2:toto']), "Didn't retrieved the expected data"
150
+
151
+ expected = {'id' => 'dog-key', 'columnfamily2:toto' => 'some value2'}
152
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily2:toto']), "Didn't retrieved the expected data"
153
+
154
+ assert_nil @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily2:toto that does not exists']), "Didn't retrieved the expected data"
155
+
156
+ assert_nil @big_db.get_columns(TABLE_NAME, 'dog-key-akdfjlka', ['columnfamily2:toto']), "Retrieved values for a row that doesn't even exist"
157
+
158
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'big', 'columnfamily2:toto' => 'some value2'}
159
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:', 'columnfamily2:']), "Didn't retrieved the expected data"
160
+
161
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'big', 'columnfamily2:toto' => 'some value2'}
162
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:', 'columnfamily2:']), "Didn't retrieved the expected data"
163
+
164
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily2:toto' => 'some value2'}
165
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:name', 'columnfamily2:']), "Didn't retrieved the expected data"
166
+
167
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'big'}
168
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:']), "Didn't retrieved the expected data"
169
+
170
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'small'}
171
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:'], :timestamp => t2), "Didn't retrieved the expected data"
172
+
173
+ assert_nil @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:'], :timestamp => t1-500), "Didn't retrieved the expected data"
174
+
175
+ expected = {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'big'}
176
+ assert_equal expected, @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:'], :timestamp => t3+500), "Didn't retrieved the expected data"
177
+ end
178
+
179
+ def test_get_consecutive_rows
180
+ @big_db.update(TABLE_NAME,
181
+ 'dog-key',
182
+ {'columnfamily1:name' => 'Dog',
183
+ 'columnfamily1:size' => 'medium',
184
+ 'columnfamily2:description' => 'lives on earth',
185
+ 'columnfamily2:$pt-707' => '343220'})
186
+ @big_db.update(TABLE_NAME,
187
+ 'fish-key',
188
+ {'columnfamily1:name' => 'Fish',
189
+ 'columnfamily1:size' => 'varies but usually small',
190
+ 'columnfamily2:description' => 'must stay in water'})
191
+ @big_db.update(TABLE_NAME,
192
+ 'mouse-key',
193
+ {'columnfamily1:name' => 'Mouse',
194
+ 'columnfamily1:size' => 'small',
195
+ 'columnfamily2:description' => 'cats love them'})
196
+ @big_db.update(TABLE_NAME,
197
+ 'cat-key',
198
+ {'columnfamily1:name' => 'Cat',
199
+ 'columnfamily1:size' => 'small but bigger than a mouse and smaller than a dog',
200
+ 'columnfamily2:description' => 'likes mice'})
201
+
202
+ # find(:all)
203
+ expected = [{'id' => 'cat-key', 'columnfamily1:name' => 'Cat', 'columnfamily1:size' => 'small but bigger than a mouse and smaller than a dog', 'columnfamily2:description' => 'likes mice'},
204
+ {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'medium', 'columnfamily2:description' => 'lives on earth', 'columnfamily2:$pt-707' => '343220'},
205
+ {'id' => 'fish-key', 'columnfamily1:name' => 'Fish', 'columnfamily1:size' => 'varies but usually small', 'columnfamily2:description' => 'must stay in water'},
206
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse', 'columnfamily1:size' => 'small', 'columnfamily2:description' => 'cats love them'}]
207
+
208
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, nil, ['columnfamily1:', 'columnfamily2:']), "Didn't retrieved the expected data"
209
+
210
+ # find(:all, :condition => ...)
211
+ expected = [{'id' => 'cat-key', 'columnfamily1:name' => 'Cat', 'columnfamily2:description' => 'likes mice'},
212
+ {'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily2:description' => 'lives on earth', 'columnfamily2:$pt-707' => '343220'},
213
+ {'id' => 'fish-key', 'columnfamily1:name' => 'Fish', 'columnfamily2:description' => 'must stay in water'},
214
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse', 'columnfamily2:description' => 'cats love them'}]
215
+
216
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, nil, ['columnfamily1:name', 'columnfamily2:']), "Didn't retrieved the expected data"
217
+
218
+ # find(:all, :offset => before_first_row)
219
+ expected = [{'id' => 'cat-key', 'columnfamily1:name' => 'Cat'},
220
+ {'id' => 'dog-key', 'columnfamily1:name' => 'Dog'},
221
+ {'id' => 'fish-key', 'columnfamily1:name' => 'Fish'},
222
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse'}]
223
+
224
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, 'aaa-key', nil, ['columnfamily1:name']), "Didn't retrieved the expected data"
225
+
226
+ # find(:all, :offset => n_row)
227
+ expected = [{'id' => 'fish-key', 'columnfamily1:name' => 'Fish'},
228
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse'}]
229
+
230
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, 'fish-key', nil, ['columnfamily1:name']), "Didn't retrieved the expected data"
231
+
232
+ # find(:all, :limit > highest key)
233
+ expected = [{'id' => 'cat-key', 'columnfamily1:name' => 'Cat'},
234
+ {'id' => 'dog-key', 'columnfamily1:name' => 'Dog'},
235
+ {'id' => 'fish-key', 'columnfamily1:name' => 'Fish'},
236
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse'}]
237
+
238
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, 1000, ['columnfamily1:name']), "Didn't retrieved the expected data"
239
+
240
+ # find(:all, :limit => x)
241
+ expected = [{'id' => 'cat-key', 'columnfamily1:name' => 'Cat'},
242
+ {'id' => 'dog-key', 'columnfamily1:name' => 'Dog'}]
243
+
244
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, 2, ['columnfamily1:name']), "Didn't retrieved the expected data"
245
+
246
+ # find(:all, :offset => n_row, :limit => x)
247
+ expected = [{'id' => 'fish-key', 'columnfamily1:name' => 'Fish'},
248
+ {'id' => 'mouse-key', 'columnfamily1:name' => 'Mouse'}]
249
+
250
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, 'fish-key', 2, ['columnfamily1:name']), "Didn't retrieved the expected data"
251
+
252
+ # find(:all, :offset => n_row, :limit => 1)
253
+ expected = [{'id' => 'fish-key', 'columnfamily1:name' => 'Fish'}]
254
+
255
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, 'fish-key', 1, ['columnfamily1:name']), "Didn't retrieved the expected data"
256
+ end
257
+
258
+ def test_delete
259
+ @big_db.update(TABLE_NAME,
260
+ 'dog-key',
261
+ {'columnfamily1:name' => 'Dog',
262
+ 'columnfamily1:size' => 'medium',
263
+ 'columnfamily2:description' => 'lives on earth'})
264
+ @big_db.update(TABLE_NAME,
265
+ 'fish-key',
266
+ {'columnfamily1:name' => 'Fish',
267
+ 'columnfamily1:size' => 'varies but usually small',
268
+ 'columnfamily2:description' => 'must stay in water'})
269
+
270
+ # make sure the cells are there
271
+ expected = [{'id' => 'dog-key', 'columnfamily1:name' => 'Dog', 'columnfamily1:size' => 'medium', 'columnfamily2:description' => 'lives on earth'},
272
+ {'id' => 'fish-key', 'columnfamily1:name' => 'Fish', 'columnfamily1:size' => 'varies but usually small', 'columnfamily2:description' => 'must stay in water'}]
273
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, nil, ['columnfamily1:', 'columnfamily2:']), "The test data was not inserted properly"
274
+
275
+ # actual test
276
+ @big_db.delete(TABLE_NAME, 'dog-key')
277
+
278
+ expected = [{'id' => 'fish-key', 'columnfamily1:name' => 'Fish', 'columnfamily1:size' => 'varies but usually small', 'columnfamily2:description' => 'must stay in water'}]
279
+ assert_equal expected, @big_db.get_consecutive_rows(TABLE_NAME, nil, nil, ['columnfamily1:', 'columnfamily2:']), "The deleted data was found by a scanner"
280
+
281
+ assert_nil @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:name'), "The deleted data was found by a get()"
282
+
283
+ assert_nil @big_db.get_columns(TABLE_NAME, 'dog-key', ['columnfamily1:']), "The deleted data was found by a get_columns()"
284
+ end
285
+
286
+ def test_ping
287
+ db = nil
288
+ assert_nothing_raised("Couldn't initialize the client") do
289
+ db = BigRecordDriver::Client.new(:drb_port => 40005)
290
+ end
291
+ assert_not_nil db, "Couldn't initialize the client"
292
+ assert db.ping, "The client was initialized but we cannot communicate with the db itself"
293
+ end
294
+
295
+ def test_table_exists
296
+ assert @big_db.table_exists?(TABLE_NAME)
297
+ assert !@big_db.table_exists?(:some_non_existent_table)
298
+ end
299
+
300
+ def test_table_names
301
+ assert @big_db.table_names.include?(TABLE_NAME.to_s)
302
+ end
303
+
304
+ def test_method_missing
305
+ assert_raises NoMethodError do
306
+ @big_db.akdfjlajfl
307
+ end
308
+ end
309
+
310
+ def test_invalid_column_family
311
+ assert_raises BigRecordDriver::JavaError do
312
+ @big_db.get(TABLE_NAME, 'dog-key', 'nonexistentcolumnfamily:name')
313
+ end
314
+ end
315
+
316
+ end
@@ -0,0 +1,63 @@
1
+ require File.dirname(__FILE__) + '/abstract_test_client'
2
+
3
+ class TestCassandraClient < Test::Unit::TestCase
4
+ include AbstractTestClient
5
+
6
+ def setup
7
+ unless @big_db
8
+ BigRecordDriver::DriverManager.set_cmd('cassandra')
9
+ unless BigRecordDriver::DriverManager.running?(40005)
10
+ BigRecordDriver::DriverManager.restart(40005)
11
+ end
12
+ #TODO: don't use hard coded values for the config
13
+ @big_db = BigRecordDriver::Client.new(:drb_port => 40005)
14
+ end
15
+ end
16
+
17
+ def test_update_without_timestamps
18
+
19
+ end
20
+
21
+ def test_update_with_timestamps_in_chronological_order
22
+ end
23
+
24
+ def test_update_with_timestamps_in_reverse_chronological_order
25
+ end
26
+
27
+ def test_get_and_get_columns
28
+ t1 = Time.now.to_i
29
+ t2 = t1 + 1000
30
+ t3 = t2 + 1000
31
+ # Temporary copy-paste until all tests passes
32
+ @big_db.update(TABLE_NAME,
33
+ 'dog-key',
34
+ {'columnfamily1:name' => 'Dog',
35
+ 'columnfamily1:size' => 'medium',
36
+ 'columnfamily2:toto' => 'some value1'},
37
+ t1)
38
+
39
+ @big_db.update(TABLE_NAME,
40
+ 'dog-key',
41
+ {'columnfamily1:size' => 'small',
42
+ 'columnfamily2:toto' => 'some value2'},
43
+ t2)
44
+
45
+ @big_db.update(TABLE_NAME,
46
+ 'dog-key',
47
+ {'columnfamily1:size' => 'big'},
48
+ t3)
49
+
50
+ # normal calls
51
+ assert_equal 'big', @big_db.get(TABLE_NAME, 'dog-key', 'columnfamily1:size'), "Didn't retrieved the last version of the cell"
52
+ assert_nil @big_db.get(TABLE_NAME, 'dog-key-that-does-not-exist', 'columnfamily1:size'), "Got a value for a cell that doesn't even exist"
53
+ end
54
+
55
+ def test_get_consecutive_rows
56
+ end
57
+
58
+ def test_delete
59
+ end
60
+
61
+ def test_invalid_column_family
62
+ end
63
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/abstract_test_client'
2
+
3
+ class TestHbaseClient < Test::Unit::TestCase #TestClient
4
+ include AbstractTestClient
5
+ # Prepare the connection and the test tables.
6
+ def setup
7
+ unless @big_db
8
+ unless BigRecordDriver::DriverManager.running?(40005)
9
+ BigRecordDriver::DriverManager.restart(40005)
10
+ end
11
+
12
+ #TODO: don't use hard coded values for the config
13
+ @big_db = BigRecordDriver::Client.new(:zookeeper_quorum=> 'localhost', :zookeeper_client_port => '2181',:drb_port => 40005)
14
+ end
15
+
16
+ @big_db.drop_table(TABLE_NAME) if @big_db.table_exists?(TABLE_NAME)
17
+
18
+ # Create the test table
19
+ # unless @big_db.table_exists?(TABLE_NAME)
20
+ columns_descriptors = []
21
+ columns_descriptors << BigRecordDriver::ColumnDescriptor.new(:columnfamily1)
22
+ columns_descriptors << BigRecordDriver::ColumnDescriptor.new(:columnfamily2)
23
+ @big_db.create_table(TABLE_NAME, columns_descriptors)
24
+ # end
25
+ end
26
+ end
@@ -0,0 +1,46 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'test/unit'
4
+ require 'big_record_driver'
5
+
6
+ class TestDriverManager < Test::Unit::TestCase
7
+
8
+ # everything is in a sequence and therefore there's only 1 test
9
+ def test_all
10
+ port = 40000
11
+
12
+ # stop the driver if it's already running
13
+ assert_nothing_raised do
14
+ BigRecordDriver::DriverManager.stop(port) if BigRecordDriver::DriverManager.running?(port)
15
+ end
16
+ assert !BigRecordDriver::DriverManager.running?(port), "The driver is already running and it couldn't be stopped"
17
+
18
+ # start the real tests
19
+ assert_nothing_raised do
20
+ BigRecordDriver::DriverManager.start(port)
21
+ end
22
+ assert BigRecordDriver::DriverManager.running?(port), "The driver couldn't be started"
23
+
24
+ assert_nothing_raised do
25
+ BigRecordDriver::DriverManager.restart(port)
26
+ end
27
+ assert BigRecordDriver::DriverManager.running?(port), "The driver couldn't be restarted"
28
+
29
+ assert_nothing_raised("The driver should be able to do a silent start when it's already running") do
30
+ BigRecordDriver::DriverManager.silent_start(port)
31
+ end
32
+ assert BigRecordDriver::DriverManager.running?(port), "The driver stopped during a silent start instead of staying alive"
33
+
34
+ assert_nothing_raised do
35
+ BigRecordDriver::DriverManager.stop(port)
36
+ end
37
+ assert !BigRecordDriver::DriverManager.running?(port), "The driver couldn't be stopped"
38
+
39
+ assert_nothing_raised("The driver should be able to do a silent start when it's not running") do
40
+ BigRecordDriver::DriverManager.silent_start(port)
41
+ end
42
+ assert BigRecordDriver::DriverManager.running?(port), "The driver couldn't be started silently"
43
+
44
+ end
45
+
46
+ end
Binary file
Binary file
Binary file
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bigrecord-driver
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - openplaces.org
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-12 00:00:00 -04:00
13
+ default_executable: hbase-driver
14
+ dependencies: []
15
+
16
+ description: Bigrecord drivers that use JRuby DRb servers to connect with databases through their native Java APIs. Currently supported databases are HBase and Cassandra.
17
+ email: bigrecord@openplaces.org
18
+ executables:
19
+ - hbase-driver
20
+ - cassandra-driver
21
+ - launcher
22
+ extensions: []
23
+
24
+ extra_rdoc_files:
25
+ - README
26
+ files:
27
+ - bin/cassandra-driver
28
+ - bin/hbase-driver
29
+ - bin/launcher
30
+ - conf/log4j.properties
31
+ - lib/big_record_driver.rb
32
+ - lib/big_record_driver/bigrecord_server.rb
33
+ - lib/big_record_driver/cassandra_driver/server.rb
34
+ - lib/big_record_driver/client.rb
35
+ - lib/big_record_driver/column_descriptor.rb
36
+ - lib/big_record_driver/driver_manager.rb
37
+ - lib/big_record_driver/exceptions.rb
38
+ - lib/big_record_driver/hbase_driver/server.rb
39
+ - lib/bigrecord_driver.rb
40
+ - test/abstract_test_client.rb
41
+ - test/test_client_cassandra.rb
42
+ - test/test_client_hbase.rb
43
+ - test/test_driver_manager.rb
44
+ - vendor/java/cassandra/cassandra-0.3.0-dev.jar
45
+ - vendor/java/cassandra/libthrift.jar
46
+ - vendor/java/cassandra/log4j-1.2.15.jar
47
+ - vendor/java/hbase/commons-logging-1.0.4.jar
48
+ - vendor/java/hbase/commons-logging-api-1.0.4.jar
49
+ - vendor/java/hbase/hadoop-0.20.0-core.jar
50
+ - vendor/java/hbase/hbase-0.20.0.jar
51
+ - vendor/java/hbase/log4j-1.2.13.jar
52
+ - vendor/java/hbase/zookeeper-r785019-hbase-1329.jar
53
+ - README
54
+ has_rdoc: true
55
+ homepage: http://www.bigrecord.org
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options:
60
+ - --charset=UTF-8
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ requirements: []
76
+
77
+ rubyforge_project:
78
+ rubygems_version: 1.3.5
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Bigrecord drivers implemented as JRuby DRb servers
82
+ test_files: []
83
+