cql-rb 1.0.0.pre7 → 1.0.0.pre8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/lib/cql/byte_buffer.rb +22 -0
  2. data/lib/cql/client.rb +79 -310
  3. data/lib/cql/client/asynchronous_client.rb +254 -0
  4. data/lib/cql/client/asynchronous_prepared_statement.rb +19 -0
  5. data/lib/cql/client/column_metadata.rb +22 -0
  6. data/lib/cql/client/query_result.rb +34 -0
  7. data/lib/cql/client/result_metadata.rb +31 -0
  8. data/lib/cql/client/synchronous_client.rb +47 -0
  9. data/lib/cql/client/synchronous_prepared_statement.rb +47 -0
  10. data/lib/cql/future.rb +7 -3
  11. data/lib/cql/io.rb +1 -0
  12. data/lib/cql/io/io_reactor.rb +9 -3
  13. data/lib/cql/io/node_connection.rb +2 -2
  14. data/lib/cql/protocol.rb +5 -4
  15. data/lib/cql/protocol/request.rb +23 -0
  16. data/lib/cql/protocol/requests/credentials_request.rb +1 -1
  17. data/lib/cql/protocol/requests/execute_request.rb +13 -84
  18. data/lib/cql/protocol/requests/options_request.rb +1 -1
  19. data/lib/cql/protocol/requests/prepare_request.rb +2 -1
  20. data/lib/cql/protocol/requests/query_request.rb +3 -1
  21. data/lib/cql/protocol/requests/register_request.rb +1 -1
  22. data/lib/cql/protocol/requests/startup_request.rb +1 -2
  23. data/lib/cql/protocol/{response_body.rb → response.rb} +1 -1
  24. data/lib/cql/protocol/responses/authenticate_response.rb +1 -1
  25. data/lib/cql/protocol/responses/error_response.rb +1 -1
  26. data/lib/cql/protocol/responses/ready_response.rb +1 -1
  27. data/lib/cql/protocol/responses/result_response.rb +1 -1
  28. data/lib/cql/protocol/responses/rows_result_response.rb +1 -1
  29. data/lib/cql/protocol/responses/supported_response.rb +1 -1
  30. data/lib/cql/protocol/type_converter.rb +226 -46
  31. data/lib/cql/version.rb +1 -1
  32. data/spec/cql/byte_buffer_spec.rb +38 -0
  33. data/spec/cql/client/asynchronous_client_spec.rb +472 -0
  34. data/spec/cql/client/client_shared.rb +27 -0
  35. data/spec/cql/client/synchronous_client_spec.rb +104 -0
  36. data/spec/cql/client/synchronous_prepared_statement_spec.rb +65 -0
  37. data/spec/cql/future_spec.rb +4 -0
  38. data/spec/cql/io/io_reactor_spec.rb +39 -20
  39. data/spec/cql/protocol/request_spec.rb +17 -0
  40. data/spec/cql/protocol/requests/credentials_request_spec.rb +82 -0
  41. data/spec/cql/protocol/requests/execute_request_spec.rb +174 -0
  42. data/spec/cql/protocol/requests/options_request_spec.rb +24 -0
  43. data/spec/cql/protocol/requests/prepare_request_spec.rb +70 -0
  44. data/spec/cql/protocol/requests/query_request_spec.rb +95 -0
  45. data/spec/cql/protocol/requests/register_request_spec.rb +24 -0
  46. data/spec/cql/protocol/requests/startup_request_spec.rb +29 -0
  47. data/spec/integration/client_spec.rb +26 -19
  48. data/spec/integration/protocol_spec.rb +2 -2
  49. data/spec/integration/regression_spec.rb +1 -1
  50. metadata +35 -9
  51. data/lib/cql/protocol/request_body.rb +0 -15
  52. data/lib/cql/protocol/request_frame.rb +0 -20
  53. data/spec/cql/client_spec.rb +0 -454
  54. data/spec/cql/protocol/request_frame_spec.rb +0 -456
@@ -0,0 +1,24 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ module Cql
7
+ module Protocol
8
+ describe OptionsRequest do
9
+ describe '#encode_frame' do
10
+ it 'encodes an OPTIONS request frame' do
11
+ bytes = OptionsRequest.new.encode_frame(3)
12
+ bytes.should == "\x01\x00\x03\x05\x00\x00\x00\x00"
13
+ end
14
+ end
15
+
16
+ describe '#to_s' do
17
+ it 'returns a pretty string' do
18
+ request = OptionsRequest.new
19
+ request.to_s.should == 'OPTIONS'
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ module Cql
7
+ module Protocol
8
+ describe PrepareRequest do
9
+ describe '#initialize' do
10
+ it 'raises an error when the CQL is nil' do
11
+ expect { PrepareRequest.new(nil) }.to raise_error(ArgumentError)
12
+ end
13
+ end
14
+
15
+ describe '#encode_frame' do
16
+ it 'encodes a PREPARE request frame' do
17
+ bytes = PrepareRequest.new('UPDATE users SET email = ? WHERE user_name = ?').encode_frame(3)
18
+ bytes.should == "\x01\x00\x03\x09\x00\x00\x00\x32\x00\x00\x00\x2eUPDATE users SET email = ? WHERE user_name = ?"
19
+ end
20
+ end
21
+
22
+ describe '#to_s' do
23
+ it 'returns a pretty string' do
24
+ request = PrepareRequest.new('UPDATE users SET email = ? WHERE user_name = ?')
25
+ request.to_s.should == 'PREPARE "UPDATE users SET email = ? WHERE user_name = ?"'
26
+ end
27
+ end
28
+
29
+ describe '#eql?' do
30
+ it 'returns true when the CQL is the same' do
31
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
32
+ p2 = PrepareRequest.new('SELECT * FROM system.peers')
33
+ p1.should eql(p2)
34
+ end
35
+
36
+ it 'returns false when the CQL is different' do
37
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
38
+ p2 = PrepareRequest.new('SELECT * FROM peers')
39
+ p1.should_not eql(p2)
40
+ end
41
+
42
+ it 'does not know about CQL syntax' do
43
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
44
+ p2 = PrepareRequest.new('SELECT * FROM system.peers')
45
+ p1.should_not eql(p2)
46
+ end
47
+
48
+ it 'is aliased as ==' do
49
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
50
+ p2 = PrepareRequest.new('SELECT * FROM system.peers')
51
+ p1.should == p2
52
+ end
53
+ end
54
+
55
+ describe '#hash' do
56
+ it 'has the same hash code as another identical object' do
57
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
58
+ p2 = PrepareRequest.new('SELECT * FROM system.peers')
59
+ p1.hash.should == p2.hash
60
+ end
61
+
62
+ it 'does not have the same hash code when the CQL is different' do
63
+ p1 = PrepareRequest.new('SELECT * FROM system.peers')
64
+ p2 = PrepareRequest.new('SELECT * FROM peers')
65
+ p1.hash.should_not == p2.hash
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,95 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ module Cql
7
+ module Protocol
8
+ describe QueryRequest do
9
+ describe '#initialize' do
10
+ it 'raises an error when the CQL is nil' do
11
+ expect { QueryRequest.new(nil, :one) }.to raise_error(ArgumentError)
12
+ end
13
+
14
+ it 'raises an error when the consistency is nil' do
15
+ expect { QueryRequest.new('USE system', nil) }.to raise_error(ArgumentError)
16
+ end
17
+
18
+ it 'raises an error when the consistency is invalid' do
19
+ expect { QueryRequest.new('USE system', :hello) }.to raise_error(ArgumentError)
20
+ end
21
+ end
22
+
23
+ describe '#encode_frame' do
24
+ it 'encodes a QUERY request frame' do
25
+ bytes = QueryRequest.new('USE system', :all).encode_frame(3)
26
+ bytes.should == "\x01\x00\x03\x07\x00\x00\x00\x10\x00\x00\x00\x0aUSE system\x00\x05"
27
+ end
28
+
29
+ it 'correctly encodes queries with multibyte characters' do
30
+ bytes = QueryRequest.new("INSERT INTO users (user_id, first, last, age) VALUES ('test', 'ümlaut', 'test', 1)", :all).encode_frame(3)
31
+ bytes.should eql_bytes("\x01\x00\x03\a\x00\x00\x00Y\x00\x00\x00SINSERT INTO users (user_id, first, last, age) VALUES ('test', '\xC3\xBCmlaut', 'test', 1)\x00\x05")
32
+ end
33
+ end
34
+
35
+ describe '#to_s' do
36
+ it 'returns a pretty string' do
37
+ request = QueryRequest.new('SELECT * FROM system.peers', :local_quorum)
38
+ request.to_s.should == 'QUERY "SELECT * FROM system.peers" LOCAL_QUORUM'
39
+ end
40
+ end
41
+
42
+ describe '#eql?' do
43
+ it 'returns true when the CQL and consistency are the same' do
44
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
45
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :two)
46
+ q2.should eql(q2)
47
+ end
48
+
49
+ it 'returns false when the consistency is different' do
50
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
51
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :three)
52
+ q1.should_not eql(q2)
53
+ end
54
+
55
+ it 'returns false when the CQL is different' do
56
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
57
+ q2 = QueryRequest.new('SELECT * FROM peers', :two)
58
+ q1.should_not eql(q2)
59
+ end
60
+
61
+ it 'does not know about CQL syntax' do
62
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
63
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :two)
64
+ q1.should_not eql(q2)
65
+ end
66
+
67
+ it 'is aliased as ==' do
68
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
69
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :two)
70
+ q1.should == q2
71
+ end
72
+ end
73
+
74
+ describe '#hash' do
75
+ it 'has the same hash code as another identical object' do
76
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
77
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :two)
78
+ q1.hash.should == q2.hash
79
+ end
80
+
81
+ it 'does not have the same hash code when the consistency is different' do
82
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
83
+ q2 = QueryRequest.new('SELECT * FROM system.peers', :three)
84
+ q1.hash.should_not == q2.hash
85
+ end
86
+
87
+ it 'does not have the same hash code when the CQL is different' do
88
+ q1 = QueryRequest.new('SELECT * FROM system.peers', :two)
89
+ q2 = QueryRequest.new('SELECT * FROM peers', :two)
90
+ q1.hash.should_not == q2.hash
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ module Cql
7
+ module Protocol
8
+ describe RegisterRequest do
9
+ describe '#encode_frame' do
10
+ it 'encodes a REGISTER request frame' do
11
+ bytes = RegisterRequest.new('TOPOLOGY_CHANGE', 'STATUS_CHANGE').encode_frame(3)
12
+ bytes.should == "\x01\x00\x03\x0b\x00\x00\x00\x22\x00\x02\x00\x0fTOPOLOGY_CHANGE\x00\x0dSTATUS_CHANGE"
13
+ end
14
+ end
15
+
16
+ describe '#to_s' do
17
+ it 'returns a pretty string' do
18
+ request = RegisterRequest.new('TOPOLOGY_CHANGE', 'STATUS_CHANGE')
19
+ request.to_s.should == 'REGISTER ["TOPOLOGY_CHANGE", "STATUS_CHANGE"]'
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ module Cql
7
+ module Protocol
8
+ describe StartupRequest do
9
+ describe '#encode_frame' do
10
+ it 'encodes a STARTUP request frame' do
11
+ bytes = StartupRequest.new('3.0.0', 'snappy').encode_frame(3)
12
+ bytes.should == "\x01\x00\x03\x01\x00\x00\x00\x2b\x00\x02\x00\x0bCQL_VERSION\x00\x053.0.0\x00\x0bCOMPRESSION\x00\x06snappy"
13
+ end
14
+
15
+ it 'defaults to CQL 3.0.0 and no compression' do
16
+ bytes = StartupRequest.new.encode_frame(3)
17
+ bytes.should == "\x01\x00\x03\x01\x00\x00\x00\x16\x00\x01\x00\x0bCQL_VERSION\x00\x053.0.0"
18
+ end
19
+ end
20
+
21
+ describe '#to_s' do
22
+ it 'returns a pretty string' do
23
+ request = StartupRequest.new
24
+ request.to_s.should == 'STARTUP {"CQL_VERSION"=>"3.0.0"}'
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -9,7 +9,7 @@ describe 'A CQL client' do
9
9
  end
10
10
 
11
11
  let :client do
12
- Cql::Client.new(connection_options)
12
+ Cql::Client.connect(connection_options)
13
13
  end
14
14
 
15
15
  before do
@@ -37,7 +37,7 @@ describe 'A CQL client' do
37
37
  end
38
38
 
39
39
  it 'can be initialized with a keyspace' do
40
- c = Cql::Client.new(connection_options.merge(:keyspace => 'system'))
40
+ c = Cql::Client.connect(connection_options.merge(:keyspace => 'system'))
41
41
  c.connect
42
42
  begin
43
43
  c.keyspace.should == 'system'
@@ -47,29 +47,38 @@ describe 'A CQL client' do
47
47
  end
48
48
  end
49
49
 
50
- it 'prepares a statement' do
51
- statement = client.prepare('SELECT * FROM system.schema_keyspaces WHERE keyspace_name = ?')
52
- statement.should_not be_nil
53
- end
50
+ context 'when using prepared statements' do
51
+ before do
52
+ client.use('system')
53
+ end
54
54
 
55
- it 'executes a prepared statement' do
56
- statement = client.prepare('SELECT * FROM system.schema_keyspaces WHERE keyspace_name = ?')
57
- result = statement.execute('system')
58
- result.should have(1).item
59
- result = statement.execute('system', :one)
60
- result.should have(1).item
55
+ let :statement do
56
+ client.prepare('SELECT * FROM schema_keyspaces WHERE keyspace_name = ?')
57
+ end
58
+
59
+ it 'prepares a statement' do
60
+ statement.should_not be_nil
61
+ end
62
+
63
+ it 'executes a prepared statement' do
64
+ result = statement.execute('system')
65
+ result.should have(1).item
66
+ result = statement.execute('system', :one)
67
+ result.should have(1).item
68
+ end
61
69
  end
62
70
 
63
71
  context 'with multiple connections' do
64
72
  let :multi_client do
65
73
  opts = connection_options.dup
66
74
  opts[:host] = ([opts[:host]] * 10).join(',')
67
- Cql::Client.new(opts)
75
+ Cql::Client.connect(opts)
68
76
  end
69
77
 
70
78
  before do
71
79
  client.close
72
80
  multi_client.connect
81
+ multi_client.use('system')
73
82
  end
74
83
 
75
84
  after do
@@ -77,7 +86,6 @@ describe 'A CQL client' do
77
86
  end
78
87
 
79
88
  it 'handles keyspace changes with #use' do
80
- multi_client.use('system')
81
89
  100.times do
82
90
  result = multi_client.execute(%<SELECT * FROM schema_keyspaces WHERE keyspace_name = 'system'>)
83
91
  result.should have(1).item
@@ -85,7 +93,6 @@ describe 'A CQL client' do
85
93
  end
86
94
 
87
95
  it 'handles keyspace changes with #execute' do
88
- multi_client.execute('USE system')
89
96
  100.times do
90
97
  result = multi_client.execute(%<SELECT * FROM schema_keyspaces WHERE keyspace_name = 'system'>)
91
98
  result.should have(1).item
@@ -130,7 +137,7 @@ describe 'A CQL client' do
130
137
 
131
138
  it 'raises an error when the credentials are bad' do
132
139
  if authentication_enabled
133
- client = Cql::Client.new(connection_options.merge(credentials: {username: 'foo', password: 'bar'}))
140
+ client = Cql::Client.connect(connection_options.merge(credentials: {username: 'foo', password: 'bar'}))
134
141
  expect { client.connect }.to raise_error(Cql::AuthenticationError)
135
142
  else
136
143
  pending 'authentication not configured'
@@ -144,12 +151,12 @@ describe 'A CQL client' do
144
151
  end
145
152
 
146
153
  it 'raises an error for bad consistency levels' do
147
- expect { client.execute('SELECT * FROM system.peers', :helloworld) }.to raise_error(Cql::CqlError)
154
+ expect { client.execute('SELECT * FROM system.peers', :helloworld) }.to raise_error(ArgumentError)
148
155
  end
149
156
 
150
157
  it 'fails gracefully when connecting to the Thrift port' do
151
- client = Cql::Client.new(connection_options.merge(port: 9160))
152
- expect { client.connect }.to raise_error(Cql::IoError)
158
+ opts = connection_options.merge(port: 9160)
159
+ expect { Cql::Client.connect(opts) }.to raise_error(Cql::IoError)
153
160
  end
154
161
 
155
162
  it 'fails gracefully when connecting to something that does not run C*' do
@@ -41,7 +41,7 @@ describe 'Protocol parsing and communication' do
41
41
  end
42
42
 
43
43
  def create_keyspace!
44
- query("CREATE KEYSPACE #{keyspace_name} WITH REPLICATION = {'CLASS': 'SimpleStrategy', 'replication_factor': 1}")
44
+ query("CREATE KEYSPACE #{keyspace_name} WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}")
45
45
  end
46
46
 
47
47
  def use_keyspace!
@@ -208,7 +208,7 @@ describe 'Protocol parsing and communication' do
208
208
  end
209
209
 
210
210
  it 'sends a CREATE KEYSPACE command' do
211
- response = query("CREATE KEYSPACE #{keyspace_name} WITH REPLICATION = {'CLASS': 'SimpleStrategy', 'replication_factor': 1}")
211
+ response = query("CREATE KEYSPACE #{keyspace_name} WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}")
212
212
  begin
213
213
  response.change.should == 'CREATED'
214
214
  response.keyspace.should == keyspace_name
@@ -9,7 +9,7 @@ describe 'Regressions' do
9
9
  end
10
10
 
11
11
  let :client do
12
- Cql::Client.new(connection_options)
12
+ Cql::Client.connect(connection_options)
13
13
  end
14
14
 
15
15
  before do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cql-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre7
4
+ version: 1.0.0.pre8
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-15 00:00:00.000000000 Z
12
+ date: 2013-06-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A pure Ruby CQL3 driver for Cassandra
15
15
  email:
@@ -19,6 +19,13 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - lib/cql/byte_buffer.rb
22
+ - lib/cql/client/asynchronous_client.rb
23
+ - lib/cql/client/asynchronous_prepared_statement.rb
24
+ - lib/cql/client/column_metadata.rb
25
+ - lib/cql/client/query_result.rb
26
+ - lib/cql/client/result_metadata.rb
27
+ - lib/cql/client/synchronous_client.rb
28
+ - lib/cql/client/synchronous_prepared_statement.rb
22
29
  - lib/cql/client.rb
23
30
  - lib/cql/future.rb
24
31
  - lib/cql/io/io_reactor.rb
@@ -26,8 +33,7 @@ files:
26
33
  - lib/cql/io.rb
27
34
  - lib/cql/protocol/decoding.rb
28
35
  - lib/cql/protocol/encoding.rb
29
- - lib/cql/protocol/request_body.rb
30
- - lib/cql/protocol/request_frame.rb
36
+ - lib/cql/protocol/request.rb
31
37
  - lib/cql/protocol/requests/credentials_request.rb
32
38
  - lib/cql/protocol/requests/execute_request.rb
33
39
  - lib/cql/protocol/requests/options_request.rb
@@ -35,7 +41,7 @@ files:
35
41
  - lib/cql/protocol/requests/query_request.rb
36
42
  - lib/cql/protocol/requests/register_request.rb
37
43
  - lib/cql/protocol/requests/startup_request.rb
38
- - lib/cql/protocol/response_body.rb
44
+ - lib/cql/protocol/response.rb
39
45
  - lib/cql/protocol/response_frame.rb
40
46
  - lib/cql/protocol/responses/authenticate_response.rb
41
47
  - lib/cql/protocol/responses/detailed_error_response.rb
@@ -60,12 +66,22 @@ files:
60
66
  - bin/cqlexec
61
67
  - README.md
62
68
  - spec/cql/byte_buffer_spec.rb
63
- - spec/cql/client_spec.rb
69
+ - spec/cql/client/asynchronous_client_spec.rb
70
+ - spec/cql/client/client_shared.rb
71
+ - spec/cql/client/synchronous_client_spec.rb
72
+ - spec/cql/client/synchronous_prepared_statement_spec.rb
64
73
  - spec/cql/future_spec.rb
65
74
  - spec/cql/io/io_reactor_spec.rb
66
75
  - spec/cql/protocol/decoding_spec.rb
67
76
  - spec/cql/protocol/encoding_spec.rb
68
- - spec/cql/protocol/request_frame_spec.rb
77
+ - spec/cql/protocol/request_spec.rb
78
+ - spec/cql/protocol/requests/credentials_request_spec.rb
79
+ - spec/cql/protocol/requests/execute_request_spec.rb
80
+ - spec/cql/protocol/requests/options_request_spec.rb
81
+ - spec/cql/protocol/requests/prepare_request_spec.rb
82
+ - spec/cql/protocol/requests/query_request_spec.rb
83
+ - spec/cql/protocol/requests/register_request_spec.rb
84
+ - spec/cql/protocol/requests/startup_request_spec.rb
69
85
  - spec/cql/protocol/response_frame_spec.rb
70
86
  - spec/cql/uuid_spec.rb
71
87
  - spec/integration/client_spec.rb
@@ -103,12 +119,22 @@ specification_version: 3
103
119
  summary: Cassandra CQL3 driver
104
120
  test_files:
105
121
  - spec/cql/byte_buffer_spec.rb
106
- - spec/cql/client_spec.rb
122
+ - spec/cql/client/asynchronous_client_spec.rb
123
+ - spec/cql/client/client_shared.rb
124
+ - spec/cql/client/synchronous_client_spec.rb
125
+ - spec/cql/client/synchronous_prepared_statement_spec.rb
107
126
  - spec/cql/future_spec.rb
108
127
  - spec/cql/io/io_reactor_spec.rb
109
128
  - spec/cql/protocol/decoding_spec.rb
110
129
  - spec/cql/protocol/encoding_spec.rb
111
- - spec/cql/protocol/request_frame_spec.rb
130
+ - spec/cql/protocol/request_spec.rb
131
+ - spec/cql/protocol/requests/credentials_request_spec.rb
132
+ - spec/cql/protocol/requests/execute_request_spec.rb
133
+ - spec/cql/protocol/requests/options_request_spec.rb
134
+ - spec/cql/protocol/requests/prepare_request_spec.rb
135
+ - spec/cql/protocol/requests/query_request_spec.rb
136
+ - spec/cql/protocol/requests/register_request_spec.rb
137
+ - spec/cql/protocol/requests/startup_request_spec.rb
112
138
  - spec/cql/protocol/response_frame_spec.rb
113
139
  - spec/cql/uuid_spec.rb
114
140
  - spec/integration/client_spec.rb