cassanity 0.6.0.beta2 → 0.6.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cassanity/client.rb +8 -9
- data/lib/cassanity/cql/reconnectable_driver.rb +34 -0
- data/lib/cassanity/retry_strategies/retry_strategy.rb +1 -1
- data/lib/cassanity/version.rb +1 -1
- data/spec/support/cassanity_helpers.rb +1 -1
- data/spec/unit/cassanity/client_spec.rb +7 -7
- data/spec/unit/cassanity/cql/reconnectable_driver_spec.rb +42 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f55c2651855af2b3beae8140f050e24ffce99b92
|
4
|
+
data.tar.gz: 03ebc3e813d4e4b5875516fbb2dba386d965a1b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a53e35e81287014b86092ae6269ba89929610d3234194cf1c9d42d1af9a7d0ea99370a7022eab777c0bfb89f2541fe3e910482afad2a4f8dbe086393b35d9959
|
7
|
+
data.tar.gz: b4aee0161df84024daff56121d12aa67810a08aa66f535ca79447bbb49dc11789d8d9b4181d93add6aed69d60701d8988139e2e826208e5288bd3d9999d1e599
|
data/lib/cassanity/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'forwardable'
|
2
2
|
require 'cql'
|
3
|
+
require 'cassanity/cql/reconnectable_driver'
|
3
4
|
require 'cassanity/executors/cql_rb'
|
4
5
|
require 'cassanity/connection'
|
5
6
|
|
@@ -35,14 +36,7 @@ module Cassanity
|
|
35
36
|
@instrumenter = @options.delete(:instrumenter)
|
36
37
|
@retry_strategy = @options.delete(:retry_strategy)
|
37
38
|
|
38
|
-
connect
|
39
|
-
end
|
40
|
-
|
41
|
-
# Connect or reconnect to cassandra
|
42
|
-
def connect
|
43
|
-
disconnect
|
44
|
-
|
45
|
-
@driver = Cql::Client.connect(@options)
|
39
|
+
@driver = Cassanity::Cql::ReconnectableDriver.connect(@options)
|
46
40
|
@executor = Cassanity::Executors::CqlRb.new({
|
47
41
|
driver: @driver,
|
48
42
|
instrumenter: @instrumenter,
|
@@ -53,9 +47,14 @@ module Cassanity
|
|
53
47
|
})
|
54
48
|
end
|
55
49
|
|
50
|
+
# Reconnect to cassandra.
|
51
|
+
def connect
|
52
|
+
@driver.connect
|
53
|
+
end
|
54
|
+
|
56
55
|
# Disconnect from cassandra.
|
57
56
|
def disconnect
|
58
|
-
@driver.
|
57
|
+
@driver.disconnect
|
59
58
|
end
|
60
59
|
|
61
60
|
# Methods on client that should be delegated to connection.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
module Cassanity
|
4
|
+
module Cql
|
5
|
+
# Internal: An intermediate driver for cql-rb that supports reconnecting
|
6
|
+
# by recycling the underlying Cql::Client instance.
|
7
|
+
#
|
8
|
+
# Reconnecting is important when using a forking web server like unicorn,
|
9
|
+
# but cql-rb does not allow a Cql::Client instances that has been
|
10
|
+
# disconnected to be reconnected.
|
11
|
+
class ReconnectableDriver
|
12
|
+
extend Forwardable
|
13
|
+
def_delegators :@driver, :use, :execute, :keyspace
|
14
|
+
|
15
|
+
def self.connect(cql_options = {})
|
16
|
+
new(cql_options).tap(&:connect)
|
17
|
+
end
|
18
|
+
|
19
|
+
# cql_options: Options for constructing a Cql::Client
|
20
|
+
def initialize(cql_options = {})
|
21
|
+
@cql_options = cql_options
|
22
|
+
end
|
23
|
+
|
24
|
+
def connect
|
25
|
+
disconnect
|
26
|
+
@driver = ::Cql::Client.connect(@cql_options)
|
27
|
+
end
|
28
|
+
|
29
|
+
def disconnect
|
30
|
+
@driver.close if @driver
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/cassanity/version.rb
CHANGED
@@ -6,26 +6,26 @@ describe Cassanity::Client do
|
|
6
6
|
|
7
7
|
before do
|
8
8
|
# Ensure that we never hit cassandra for real here.
|
9
|
-
Cql::
|
9
|
+
Cassanity::Cql::ReconnectableDriver.stub(:connect => driver)
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "#initialize" do
|
13
13
|
it "passes arguments to cassandra cql database instance" do
|
14
|
-
Cql::
|
14
|
+
Cassanity::Cql::ReconnectableDriver.should_receive(:connect).
|
15
15
|
with(hash_including(hosts: ['localhost'], port: 1234, some: 'option'))
|
16
16
|
|
17
17
|
described_class.new(['localhost'], 1234, some: 'option')
|
18
18
|
end
|
19
19
|
|
20
20
|
it "defaults servers if not present" do
|
21
|
-
Cql::
|
21
|
+
Cassanity::Cql::ReconnectableDriver.should_receive(:connect).
|
22
22
|
with(hash_including(hosts: ['127.0.0.1'], port: 9042))
|
23
23
|
|
24
24
|
described_class.new
|
25
25
|
end
|
26
26
|
|
27
27
|
it "defaults servers if nil" do
|
28
|
-
Cql::
|
28
|
+
Cassanity::Cql::ReconnectableDriver.should_receive(:connect).
|
29
29
|
with(hash_including(hosts: ['127.0.0.1'], port: 9042))
|
30
30
|
|
31
31
|
described_class.new(nil)
|
@@ -36,7 +36,7 @@ describe Cassanity::Client do
|
|
36
36
|
driver = double('Driver')
|
37
37
|
executor = double('Executor')
|
38
38
|
|
39
|
-
Cql::
|
39
|
+
Cassanity::Cql::ReconnectableDriver.should_receive(:connect).
|
40
40
|
with(hash_not_including(instrumenter: instrumenter)).
|
41
41
|
and_return(driver)
|
42
42
|
|
@@ -57,7 +57,7 @@ describe Cassanity::Client do
|
|
57
57
|
executor = double('Executor')
|
58
58
|
connection = double('Connection')
|
59
59
|
|
60
|
-
Cql::
|
60
|
+
Cassanity::Cql::ReconnectableDriver.should_receive(:connect).and_return(driver)
|
61
61
|
|
62
62
|
Cassanity::Executors::CqlRb.should_receive(:new).
|
63
63
|
with(hash_including(driver: driver)).
|
@@ -118,7 +118,7 @@ describe Cassanity::Client do
|
|
118
118
|
|
119
119
|
describe "#disconnect" do
|
120
120
|
it "allows the connection to be terminated" do
|
121
|
-
driver.should_receive(:
|
121
|
+
driver.should_receive(:disconnect)
|
122
122
|
|
123
123
|
client = described_class.new
|
124
124
|
client.disconnect
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Cassanity::Cql::ReconnectableDriver do
|
4
|
+
let(:client) { double('Cql::Client') }
|
5
|
+
|
6
|
+
describe '.connect' do
|
7
|
+
it 'constructs a CQL client using the provided options' do
|
8
|
+
Cql::Client.should_receive(:connect).with(:foo => "bar") { client }
|
9
|
+
driver = described_class.connect(:foo => "bar")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#disconnect' do
|
14
|
+
it 'closes the underlying driver' do
|
15
|
+
Cql::Client.stub(:connect => client)
|
16
|
+
driver = described_class.connect(:foo => "bar")
|
17
|
+
|
18
|
+
client.should_receive(:close)
|
19
|
+
driver.disconnect
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#use' do
|
24
|
+
it 'forwards the message to the underlying driver' do
|
25
|
+
Cql::Client.stub(:connect => client)
|
26
|
+
driver = described_class.connect(:foo => "bar")
|
27
|
+
|
28
|
+
client.should_receive(:use).with("keyspace")
|
29
|
+
driver.use("keyspace")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#execute' do
|
34
|
+
it 'forwards the message to the underlying driver' do
|
35
|
+
Cql::Client.stub(:connect => client)
|
36
|
+
driver = described_class.connect(:foo => "bar")
|
37
|
+
|
38
|
+
client.should_receive(:execute).with("query")
|
39
|
+
driver.execute("query")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassanity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.0.
|
4
|
+
version: 0.6.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/cassanity/column.rb
|
99
99
|
- lib/cassanity/column_family.rb
|
100
100
|
- lib/cassanity/connection.rb
|
101
|
+
- lib/cassanity/cql/reconnectable_driver.rb
|
101
102
|
- lib/cassanity/decrement.rb
|
102
103
|
- lib/cassanity/error.rb
|
103
104
|
- lib/cassanity/executors/cql_rb.rb
|
@@ -173,6 +174,7 @@ files:
|
|
173
174
|
- spec/unit/cassanity/column_family_spec.rb
|
174
175
|
- spec/unit/cassanity/column_spec.rb
|
175
176
|
- spec/unit/cassanity/connection_spec.rb
|
177
|
+
- spec/unit/cassanity/cql/reconnectable_driver_spec.rb
|
176
178
|
- spec/unit/cassanity/decrement_spec.rb
|
177
179
|
- spec/unit/cassanity/error_spec.rb
|
178
180
|
- spec/unit/cassanity/increment_spec.rb
|
@@ -262,6 +264,7 @@ test_files:
|
|
262
264
|
- spec/unit/cassanity/column_family_spec.rb
|
263
265
|
- spec/unit/cassanity/column_spec.rb
|
264
266
|
- spec/unit/cassanity/connection_spec.rb
|
267
|
+
- spec/unit/cassanity/cql/reconnectable_driver_spec.rb
|
265
268
|
- spec/unit/cassanity/decrement_spec.rb
|
266
269
|
- spec/unit/cassanity/error_spec.rb
|
267
270
|
- spec/unit/cassanity/increment_spec.rb
|