dalli-elasticache 0.1.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,14 +1,117 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'spec_helper'
2
4
 
3
5
  describe 'Dalli::Elasticache::AutoDiscovery::StatsResponse' do
4
- let :response do
5
- text = "STAT pid 1\r\nSTAT uptime 68717\r\nSTAT time 1398885375\r\nSTAT version 1.4.14\r\nSTAT libevent 1.4.13-stable\r\nSTAT pointer_size 64\r\nSTAT rusage_user 0.136008\r\nSTAT rusage_system 0.424026\r\nSTAT curr_connections 5\r\nSTAT total_connections 1159\r\nSTAT connection_structures 6\r\nSTAT reserved_fds 5\r\nSTAT cmd_get 0\r\nSTAT cmd_set 0\r\nSTAT cmd_flush 0\r\nSTAT cmd_touch 0\r\nSTAT cmd_config_get 4582\r\nSTAT cmd_config_set 2\r\nSTAT get_hits 0\r\nSTAT get_misses 0\r\nSTAT delete_misses 0\r\nSTAT delete_hits 0\r\nSTAT incr_misses 0\r\nSTAT incr_hits 0\r\nSTAT decr_misses 0\r\nSTAT decr_hits 0\r\nSTAT cas_misses 0\r\nSTAT cas_hits 0\r\nSTAT cas_badval 0\r\nSTAT touch_hits 0\r\nSTAT touch_misses 0\r\nSTAT auth_cmds 0\r\nSTAT auth_errors 0\r\nSTAT bytes_read 189356\r\nSTAT bytes_written 2906615\r\nSTAT limit_maxbytes 209715200\r\nSTAT accepting_conns 1\r\nSTAT listen_disabled_num 0\r\nSTAT threads 1\r\nSTAT conn_yields 0\r\nSTAT curr_config 1\r\nSTAT hash_power_level 16\r\nSTAT hash_bytes 524288\r\nSTAT hash_is_expanding 0\r\nSTAT expired_unfetched 0\r\nSTAT evicted_unfetched 0\r\nSTAT bytes 0\r\nSTAT curr_items 0\r\nSTAT total_items 0\r\nSTAT evictions 0\r\nSTAT reclaimed 0\r\n"
6
- Dalli::Elasticache::AutoDiscovery::StatsResponse.new(text)
7
- end
8
-
9
- describe '#version' do
10
- it 'parses version' do
11
- response.version.should == Gem::Version.new("1.4.14")
6
+ let(:response) { Dalli::Elasticache::AutoDiscovery::StatsResponse.new(response_text) }
7
+
8
+ describe '#engine_version' do
9
+ context 'when the version number is a number' do
10
+ let(:engine_version) { ['1.4.14', '1.5.6', '1.6.10'].sample }
11
+
12
+ context 'when the response with the version stat only includes the version number' do
13
+ let(:response_text) do
14
+ "STAT pid 1\r\nSTAT uptime 68717\r\nSTAT time 1398885375\r\n"\
15
+ "STAT version #{engine_version}\r\n"\
16
+ "STAT libevent 1.4.13-stable\r\nSTAT pointer_size 64\r\nSTAT rusage_user 0.136008\r\n"\
17
+ "STAT rusage_system 0.424026\r\nSTAT curr_connections 5\r\nSTAT total_connections 1159\r\n"\
18
+ "STAT connection_structures 6\r\nSTAT reserved_fds 5\r\nSTAT cmd_get 0\r\n"\
19
+ "STAT cmd_set 0\r\nSTAT cmd_flush 0\r\nSTAT cmd_touch 0\r\nSTAT cmd_config_get 4582\r\n"\
20
+ "STAT cmd_config_set 2\r\nSTAT get_hits 0\r\nSTAT get_misses 0\r\nSTAT delete_misses 0\r\n"\
21
+ "STAT delete_hits 0\r\nSTAT incr_misses 0\r\nSTAT incr_hits 0\r\nSTAT decr_misses 0\r\n"\
22
+ "STAT decr_hits 0\r\nSTAT cas_misses 0\r\nSTAT cas_hits 0\r\nSTAT cas_badval 0\r\n"\
23
+ "STAT touch_hits 0\r\nSTAT touch_misses 0\r\nSTAT auth_cmds 0\r\nSTAT auth_errors 0\r\n"\
24
+ "STAT bytes_read 189356\r\nSTAT bytes_written 2906615\r\nSTAT limit_maxbytes 209715200\r\n"\
25
+ "STAT accepting_conns 1\r\nSTAT listen_disabled_num 0\r\nSTAT threads 1\r\n"\
26
+ "STAT conn_yields 0\r\nSTAT curr_config 1\r\nSTAT hash_power_level 16\r\n"\
27
+ "STAT hash_bytes 524288\r\nSTAT hash_is_expanding 0\r\nSTAT expired_unfetched 0\r\n"\
28
+ "STAT evicted_unfetched 0\r\nSTAT bytes 0\r\nSTAT curr_items 0\r\nSTAT total_items 0\r\n"\
29
+ "STAT evictions 0\r\nSTAT reclaimed 0\r\n"
30
+ end
31
+
32
+ it 'parses out the engine version' do
33
+ expect(response.engine_version).to eq engine_version
34
+ end
35
+ end
36
+
37
+ context 'when the response with the version stat includes the version number and trailing text' do
38
+ let(:response_text) do
39
+ "STAT pid 1\r\nSTAT uptime 68717\r\nSTAT time 1398885375\r\n"\
40
+ "STAT version #{engine_version} #{SecureRandom.hex(5)}\r\n"\
41
+ "STAT libevent 1.4.13-stable\r\nSTAT pointer_size 64\r\nSTAT rusage_user 0.136008\r\n"\
42
+ "STAT rusage_system 0.424026\r\nSTAT curr_connections 5\r\nSTAT total_connections 1159\r\n"\
43
+ "STAT connection_structures 6\r\nSTAT reserved_fds 5\r\nSTAT cmd_get 0\r\n"\
44
+ "STAT cmd_set 0\r\nSTAT cmd_flush 0\r\nSTAT cmd_touch 0\r\nSTAT cmd_config_get 4582\r\n"\
45
+ "STAT cmd_config_set 2\r\nSTAT get_hits 0\r\nSTAT get_misses 0\r\nSTAT delete_misses 0\r\n"\
46
+ "STAT delete_hits 0\r\nSTAT incr_misses 0\r\nSTAT incr_hits 0\r\nSTAT decr_misses 0\r\n"\
47
+ "STAT decr_hits 0\r\nSTAT cas_misses 0\r\nSTAT cas_hits 0\r\nSTAT cas_badval 0\r\n"\
48
+ "STAT touch_hits 0\r\nSTAT touch_misses 0\r\nSTAT auth_cmds 0\r\nSTAT auth_errors 0\r\n"\
49
+ "STAT bytes_read 189356\r\nSTAT bytes_written 2906615\r\nSTAT limit_maxbytes 209715200\r\n"\
50
+ "STAT accepting_conns 1\r\nSTAT listen_disabled_num 0\r\nSTAT threads 1\r\n"\
51
+ "STAT conn_yields 0\r\nSTAT curr_config 1\r\nSTAT hash_power_level 16\r\n"\
52
+ "STAT hash_bytes 524288\r\nSTAT hash_is_expanding 0\r\nSTAT expired_unfetched 0\r\n"\
53
+ "STAT evicted_unfetched 0\r\nSTAT bytes 0\r\nSTAT curr_items 0\r\nSTAT total_items 0\r\n"\
54
+ "STAT evictions 0\r\nSTAT reclaimed 0\r\n"
55
+ end
56
+
57
+ it 'parses out the engine version' do
58
+ expect(response.engine_version).to eq engine_version
59
+ end
60
+ end
61
+ end
62
+
63
+ context "when the version number is the string 'unknown'" do
64
+ let(:engine_version) { 'UNKNOWN' }
65
+
66
+ context 'when the response with the version stat only includes the version number' do
67
+ let(:response_text) do
68
+ "STAT pid 1\r\nSTAT uptime 68717\r\nSTAT time 1398885375\r\n"\
69
+ "STAT version #{engine_version}\r\n"\
70
+ "STAT libevent 1.4.13-stable\r\nSTAT pointer_size 64\r\nSTAT rusage_user 0.136008\r\n"\
71
+ "STAT rusage_system 0.424026\r\nSTAT curr_connections 5\r\nSTAT total_connections 1159\r\n"\
72
+ "STAT connection_structures 6\r\nSTAT reserved_fds 5\r\nSTAT cmd_get 0\r\n"\
73
+ "STAT cmd_set 0\r\nSTAT cmd_flush 0\r\nSTAT cmd_touch 0\r\nSTAT cmd_config_get 4582\r\n"\
74
+ "STAT cmd_config_set 2\r\nSTAT get_hits 0\r\nSTAT get_misses 0\r\nSTAT delete_misses 0\r\n"\
75
+ "STAT delete_hits 0\r\nSTAT incr_misses 0\r\nSTAT incr_hits 0\r\nSTAT decr_misses 0\r\n"\
76
+ "STAT decr_hits 0\r\nSTAT cas_misses 0\r\nSTAT cas_hits 0\r\nSTAT cas_badval 0\r\n"\
77
+ "STAT touch_hits 0\r\nSTAT touch_misses 0\r\nSTAT auth_cmds 0\r\nSTAT auth_errors 0\r\n"\
78
+ "STAT bytes_read 189356\r\nSTAT bytes_written 2906615\r\nSTAT limit_maxbytes 209715200\r\n"\
79
+ "STAT accepting_conns 1\r\nSTAT listen_disabled_num 0\r\nSTAT threads 1\r\n"\
80
+ "STAT conn_yields 0\r\nSTAT curr_config 1\r\nSTAT hash_power_level 16\r\n"\
81
+ "STAT hash_bytes 524288\r\nSTAT hash_is_expanding 0\r\nSTAT expired_unfetched 0\r\n"\
82
+ "STAT evicted_unfetched 0\r\nSTAT bytes 0\r\nSTAT curr_items 0\r\nSTAT total_items 0\r\n"\
83
+ "STAT evictions 0\r\nSTAT reclaimed 0\r\n"
84
+ end
85
+
86
+ it "parses out the engine version as 'UNKNOWN'" do
87
+ expect(response.engine_version).to eq engine_version
88
+ end
89
+ end
90
+
91
+ context 'when the response with the version stat includes the version number and trailing text' do
92
+ let(:response_text) do
93
+ "STAT pid 1\r\nSTAT uptime 68717\r\nSTAT time 1398885375\r\n"\
94
+ "STAT version #{engine_version} #{SecureRandom.hex(5)}\r\n"\
95
+ "STAT libevent 1.4.13-stable\r\nSTAT pointer_size 64\r\nSTAT rusage_user 0.136008\r\n"\
96
+ "STAT rusage_system 0.424026\r\nSTAT curr_connections 5\r\nSTAT total_connections 1159\r\n"\
97
+ "STAT connection_structures 6\r\nSTAT reserved_fds 5\r\nSTAT cmd_get 0\r\n"\
98
+ "STAT cmd_set 0\r\nSTAT cmd_flush 0\r\nSTAT cmd_touch 0\r\nSTAT cmd_config_get 4582\r\n"\
99
+ "STAT cmd_config_set 2\r\nSTAT get_hits 0\r\nSTAT get_misses 0\r\nSTAT delete_misses 0\r\n"\
100
+ "STAT delete_hits 0\r\nSTAT incr_misses 0\r\nSTAT incr_hits 0\r\nSTAT decr_misses 0\r\n"\
101
+ "STAT decr_hits 0\r\nSTAT cas_misses 0\r\nSTAT cas_hits 0\r\nSTAT cas_badval 0\r\n"\
102
+ "STAT touch_hits 0\r\nSTAT touch_misses 0\r\nSTAT auth_cmds 0\r\nSTAT auth_errors 0\r\n"\
103
+ "STAT bytes_read 189356\r\nSTAT bytes_written 2906615\r\nSTAT limit_maxbytes 209715200\r\n"\
104
+ "STAT accepting_conns 1\r\nSTAT listen_disabled_num 0\r\nSTAT threads 1\r\n"\
105
+ "STAT conn_yields 0\r\nSTAT curr_config 1\r\nSTAT hash_power_level 16\r\n"\
106
+ "STAT hash_bytes 524288\r\nSTAT hash_is_expanding 0\r\nSTAT expired_unfetched 0\r\n"\
107
+ "STAT evicted_unfetched 0\r\nSTAT bytes 0\r\nSTAT curr_items 0\r\nSTAT total_items 0\r\n"\
108
+ "STAT evictions 0\r\nSTAT reclaimed 0\r\n"
109
+ end
110
+
111
+ it "parses out the engine version as 'UNKNOWN'" do
112
+ expect(response.engine_version).to eq engine_version
113
+ end
114
+ end
12
115
  end
13
116
  end
14
117
  end
metadata CHANGED
@@ -1,106 +1,192 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dalli-elasticache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Suggs
8
- autorequire:
8
+ - Zach Millman
9
+ - Peter M. Goldstein
10
+ autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2014-05-02 00:00:00.000000000 Z
13
+ date: 2022-01-24 00:00:00.000000000 Z
12
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: faker
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '2.19'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '2.19'
13
29
  - !ruby/object:Gem::Dependency
14
30
  name: rake
15
31
  requirement: !ruby/object:Gem::Requirement
16
32
  requirements:
17
- - - ! '>='
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '13.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '13.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.10'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.10'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rubocop
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rubocop-performance
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
18
76
  - !ruby/object:Gem::Version
19
77
  version: '0'
20
78
  type: :development
21
79
  prerelease: false
22
80
  version_requirements: !ruby/object:Gem::Requirement
23
81
  requirements:
24
- - - ! '>='
82
+ - - ">="
25
83
  - !ruby/object:Gem::Version
26
84
  version: '0'
27
85
  - !ruby/object:Gem::Dependency
28
- name: rspec
86
+ name: rubocop-rake
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rubocop-rspec
29
101
  requirement: !ruby/object:Gem::Requirement
30
102
  requirements:
31
- - - ! '>='
103
+ - - ">="
32
104
  - !ruby/object:Gem::Version
33
105
  version: '0'
34
106
  type: :development
35
107
  prerelease: false
36
108
  version_requirements: !ruby/object:Gem::Requirement
37
109
  requirements:
38
- - - ! '>='
110
+ - - ">="
39
111
  - !ruby/object:Gem::Version
40
112
  version: '0'
41
113
  - !ruby/object:Gem::Dependency
42
114
  name: dalli
43
115
  requirement: !ruby/object:Gem::Requirement
44
116
  requirements:
45
- - - ! '>='
117
+ - - ">="
46
118
  - !ruby/object:Gem::Version
47
- version: 1.0.0
119
+ version: 2.0.0
48
120
  type: :runtime
49
121
  prerelease: false
50
122
  version_requirements: !ruby/object:Gem::Requirement
51
123
  requirements:
52
- - - ! '>='
124
+ - - ">="
53
125
  - !ruby/object:Gem::Version
54
- version: 1.0.0
55
- description: ! " This gem provides an interface for fetching cluster information
56
- from an AWS\n ElastiCache AutoDiscovery server and configuring a Dalli client
57
- to connect\n to all nodes in the cache cluster.\n"
58
- email: aaron@ktheory.com
126
+ version: 2.0.0
127
+ description: |2
128
+ This gem provides an interface for fetching cluster information from an AWS
129
+ ElastiCache AutoDiscovery server and configuring a Dalli client to connect
130
+ to all nodes in the cache cluster.
131
+ email:
132
+ - aaron@ktheory.com
133
+ - zach@magoosh.com
134
+ - peter.m.goldstein@gmail.com
59
135
  executables: []
60
136
  extensions: []
61
137
  extra_rdoc_files: []
62
138
  files:
139
+ - README.md
140
+ - Rakefile
141
+ - lib/dalli-elasticache.rb
142
+ - lib/dalli/elasticache.rb
143
+ - lib/dalli/elasticache/auto_discovery/base_command.rb
144
+ - lib/dalli/elasticache/auto_discovery/config_command.rb
63
145
  - lib/dalli/elasticache/auto_discovery/config_response.rb
64
146
  - lib/dalli/elasticache/auto_discovery/endpoint.rb
147
+ - lib/dalli/elasticache/auto_discovery/node.rb
148
+ - lib/dalli/elasticache/auto_discovery/stats_command.rb
65
149
  - lib/dalli/elasticache/auto_discovery/stats_response.rb
66
150
  - lib/dalli/elasticache/version.rb
67
- - lib/dalli/elasticache.rb
68
- - lib/dalli-elasticache.rb
69
- - README.md
70
- - Rakefile
151
+ - spec/config_command_spec.rb
71
152
  - spec/config_response_spec.rb
72
153
  - spec/elasticache_spec.rb
73
154
  - spec/endpoint_spec.rb
155
+ - spec/node_spec.rb
74
156
  - spec/spec_helper.rb
157
+ - spec/stats_command_spec.rb
75
158
  - spec/stats_response_spec.rb
76
159
  homepage: http://github.com/ktheory/dalli-elasticache
77
160
  licenses:
78
161
  - MIT
79
- metadata: {}
80
- post_install_message:
162
+ metadata:
163
+ rubygems_mfa_required: 'true'
164
+ post_install_message:
81
165
  rdoc_options:
82
- - --charset=UTF-8
166
+ - "--charset=UTF-8"
83
167
  require_paths:
84
168
  - lib
85
169
  required_ruby_version: !ruby/object:Gem::Requirement
86
170
  requirements:
87
- - - ! '>='
171
+ - - ">="
88
172
  - !ruby/object:Gem::Version
89
- version: 1.9.2
173
+ version: 2.6.0
90
174
  required_rubygems_version: !ruby/object:Gem::Requirement
91
175
  requirements:
92
- - - ! '>='
176
+ - - ">="
93
177
  - !ruby/object:Gem::Version
94
178
  version: 1.3.5
95
179
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.1.11
98
- signing_key:
180
+ rubygems_version: 3.3.5
181
+ signing_key:
99
182
  specification_version: 4
100
183
  summary: Configure Dalli clients with ElastiCache's AutoDiscovery
101
184
  test_files:
185
+ - spec/config_command_spec.rb
102
186
  - spec/config_response_spec.rb
103
187
  - spec/elasticache_spec.rb
104
188
  - spec/endpoint_spec.rb
189
+ - spec/node_spec.rb
105
190
  - spec/spec_helper.rb
191
+ - spec/stats_command_spec.rb
106
192
  - spec/stats_response_spec.rb