sessionm-cassandra_object 2.3.6 → 2.3.8
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.
- data/Gemfile +2 -0
- data/lib/cassandra_object/connection.rb +1 -1
- data/lib/cassandra_object/consistency.rb +2 -2
- data/lib/cassandra_object/persistence.rb +5 -5
- data/sessionm-cassandra_object.gemspec +1 -1
- data/test/README +18 -0
- data/test/persistence_test.rb +29 -0
- data/test/test_helper.rb +6 -0
- metadata +62 -72
data/Gemfile
CHANGED
@@ -18,7 +18,7 @@ module CassandraObject
|
|
18
18
|
def establish_connection(config)
|
19
19
|
spec = config.reverse_merge(DEFAULT_OPTIONS)
|
20
20
|
|
21
|
-
spec[:thrift] = (spec[:thrift] || {}).reverse_merge(DEFAULT_THRIFT_OPTIONS)
|
21
|
+
spec[:thrift] = (spec[:thrift].try(:symbolize_keys) || {}).reverse_merge(DEFAULT_THRIFT_OPTIONS)
|
22
22
|
spec[:thrift][:exception_class_overrides] = spec[:thrift][:exception_class_overrides].map(&:constantize)
|
23
23
|
|
24
24
|
self.connection = Cassandra.new(spec[:keyspace], spec[:servers], spec[:thrift])
|
@@ -20,8 +20,8 @@ module CassandraObject
|
|
20
20
|
:write_default => :quorum,
|
21
21
|
}
|
22
22
|
|
23
|
-
@@default_read_consistency
|
24
|
-
@@default_write_consistency
|
23
|
+
@@default_read_consistency = DEFAULT_OPTIONS[:read_default]
|
24
|
+
@@default_write_consistency = DEFAULT_OPTIONS[:write_default]
|
25
25
|
def set_default_consistencies(config)
|
26
26
|
config = (config[:consistency] || {}).reverse_merge(DEFAULT_OPTIONS)
|
27
27
|
@@default_read_consistency = config[:read_default].to_sym
|
@@ -4,17 +4,17 @@ module CassandraObject
|
|
4
4
|
|
5
5
|
module ClassMethods
|
6
6
|
def add(key, value, *columns_and_options)
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
column_family, column, sub_column, options = connection.extract_and_validate_params(self.column_family, key, columns_and_options, {})
|
8
|
+
# the options are removed, leaving just columns
|
9
|
+
columns = columns_and_options
|
10
10
|
|
11
11
|
ActiveSupport::Notifications.instrument("add.cassandra_object", column_family: column_family, key: key, column: column, sub_column: sub_column, value: value) do
|
12
|
-
connection.add(column_family, key, value, *
|
12
|
+
connection.add(column_family, key, value, *columns, :consistency => thrift_write_consistency)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
def remove(key)
|
17
|
-
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: column_family, key: key) do
|
17
|
+
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: column_family, key: key) do
|
18
18
|
connection.remove(column_family, key.to_s, consistency: thrift_write_consistency)
|
19
19
|
end
|
20
20
|
end
|
data/test/README
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
To run tests:
|
2
|
+
|
3
|
+
1) Install gems
|
4
|
+
|
5
|
+
$ rvm 1.9.3-p327@cassandra_object --create
|
6
|
+
$ bundle install
|
7
|
+
|
8
|
+
2) Create keyspace and CFs
|
9
|
+
|
10
|
+
$ cassandra-cli
|
11
|
+
] create keyspace place_directory_development;
|
12
|
+
] use place_directory_development;
|
13
|
+
] create column family Issues;
|
14
|
+
] create column family Counters with default_validation_class=CounterColumnType and comparator=UTF8Type;
|
15
|
+
|
16
|
+
3) Run tests
|
17
|
+
|
18
|
+
$ rake test
|
data/test/persistence_test.rb
CHANGED
@@ -45,6 +45,35 @@ class CassandraObject::PersistenceTest < CassandraObject::TestCase
|
|
45
45
|
assert !issue.new_record?
|
46
46
|
end
|
47
47
|
|
48
|
+
test 'add should work' do
|
49
|
+
assert_equal nil, Counter.connection.get(Counter.column_family, 'key', 'column')
|
50
|
+
|
51
|
+
Counter.add('key', 1, 'column')
|
52
|
+
assert_equal 1, Counter.connection.get(Counter.column_family, 'key', 'column')
|
53
|
+
|
54
|
+
Counter.add('key', -1, 'column')
|
55
|
+
assert_equal 0, Counter.connection.get(Counter.column_family, 'key', 'column')
|
56
|
+
end
|
57
|
+
|
58
|
+
test 'add should respect default and class consistency option' do
|
59
|
+
begin
|
60
|
+
old_default_write_cl = CassandraObject::Consistency::ClassMethods.class_variable_get(:@@default_read_consistency)
|
61
|
+
old_class_write_cl = Counter.write_consistency
|
62
|
+
CassandraObject::Consistency::ClassMethods.class_variable_set(:@@default_read_consistency, :quorum)
|
63
|
+
Counter.write_consistency = nil
|
64
|
+
|
65
|
+
Counter.connection.expects(:add).with(Counter.column_family, 'key', 2, 'column', :consistency => Cassandra::Consistency::QUORUM)
|
66
|
+
Counter.add('key', 2, 'column')
|
67
|
+
|
68
|
+
Counter.write_consistency = :local_quorum
|
69
|
+
Counter.connection.expects(:add).with(Counter.column_family, 'key', 2, 'column', :consistency => Cassandra::Consistency::LOCAL_QUORUM)
|
70
|
+
Counter.add('key', 2, 'column')
|
71
|
+
ensure
|
72
|
+
CassandraObject::Consistency::ClassMethods.class_variable_set(:@@default_read_consistency, old_class_write_cl)
|
73
|
+
Counter.write_consistency = old_class_write_cl
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
48
77
|
test 'update_attribute' do
|
49
78
|
issue = Issue.create
|
50
79
|
issue.update_attribute(:description, 'lol')
|
data/test/test_helper.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'cassandra/0.8'
|
5
5
|
require 'cassandra_object'
|
6
6
|
require 'rails/test_help'
|
7
|
+
require 'mocha/setup'
|
7
8
|
|
8
9
|
class Issue < CassandraObject::Base
|
9
10
|
key :uuid
|
@@ -17,6 +18,10 @@ class Issue < CassandraObject::Base
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
class Counter < CassandraObject::Base
|
22
|
+
self.write_consistency = :all
|
23
|
+
end
|
24
|
+
|
20
25
|
module CassandraObject
|
21
26
|
class TestCase < ActiveSupport::TestCase
|
22
27
|
TEST_KEYSPACE = 'place_directory_development'
|
@@ -31,6 +36,7 @@ module CassandraObject
|
|
31
36
|
|
32
37
|
teardown do
|
33
38
|
Issue.delete_all
|
39
|
+
Counter.delete_all
|
34
40
|
end
|
35
41
|
|
36
42
|
def connection
|
metadata
CHANGED
@@ -1,75 +1,73 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sessionm-cassandra_object
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 3
|
8
|
-
- 6
|
9
|
-
version: 2.3.6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.3.8
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Michael Koziarski
|
13
9
|
- gotime
|
14
10
|
- sessionm
|
15
11
|
autorequire:
|
16
12
|
bindir: bin
|
17
13
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
dependencies:
|
22
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
date: 2013-03-27 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
23
17
|
name: rails
|
24
|
-
|
25
|
-
|
26
|
-
requirements:
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
27
21
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
- 0
|
32
|
-
- 9
|
22
|
+
- !ruby/object:Gem::Version
|
33
23
|
version: 3.0.9
|
34
24
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: cassandra
|
38
25
|
prerelease: false
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ~>
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 3.0.9
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: cassandra
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
47
39
|
version: 0.11.3
|
48
40
|
type: :runtime
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: bundler
|
52
41
|
prerelease: false
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.11.3
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: bundler
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
61
55
|
version: 1.0.0
|
62
56
|
type: :development
|
63
|
-
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.0.0
|
64
64
|
description: Cassandra ActiveModel
|
65
65
|
email: klange@sessionm.com
|
66
66
|
executables: []
|
67
|
-
|
68
67
|
extensions: []
|
69
|
-
|
70
|
-
extra_rdoc_files:
|
68
|
+
extra_rdoc_files:
|
71
69
|
- README.markdown
|
72
|
-
files:
|
70
|
+
files:
|
73
71
|
- .gitignore
|
74
72
|
- CHANGELOG
|
75
73
|
- Gemfile
|
@@ -136,6 +134,7 @@ files:
|
|
136
134
|
- lib/cassandra_object/types/utf8_string_type.rb
|
137
135
|
- lib/cassandra_object/validations.rb
|
138
136
|
- sessionm-cassandra_object.gemspec
|
137
|
+
- test/README
|
139
138
|
- test/active_model_test.rb
|
140
139
|
- test/attributes_test.rb
|
141
140
|
- test/base_test.rb
|
@@ -160,41 +159,32 @@ files:
|
|
160
159
|
- test/types/time_type_test.rb
|
161
160
|
- test/types/utf8_string_type_test.rb
|
162
161
|
- test/validations_test.rb
|
163
|
-
has_rdoc: true
|
164
162
|
homepage: http://github.com/sessionm/cassandra_object
|
165
163
|
licenses: []
|
166
|
-
|
167
164
|
post_install_message:
|
168
165
|
rdoc_options: []
|
169
|
-
|
170
|
-
require_paths:
|
166
|
+
require_paths:
|
171
167
|
- lib
|
172
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
- 1
|
178
|
-
- 9
|
179
|
-
- 2
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
180
173
|
version: 1.9.2
|
181
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
- 1
|
187
|
-
- 3
|
188
|
-
- 5
|
174
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ! '>='
|
178
|
+
- !ruby/object:Gem::Version
|
189
179
|
version: 1.3.5
|
190
180
|
requirements: []
|
191
|
-
|
192
181
|
rubyforge_project:
|
193
|
-
rubygems_version: 1.
|
182
|
+
rubygems_version: 1.8.25
|
194
183
|
signing_key:
|
195
184
|
specification_version: 3
|
196
185
|
summary: Cassandra ActiveModel
|
197
|
-
test_files:
|
186
|
+
test_files:
|
187
|
+
- test/README
|
198
188
|
- test/active_model_test.rb
|
199
189
|
- test/attributes_test.rb
|
200
190
|
- test/base_test.rb
|