redis_counters 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7e6d0cc5b4ca4ed565bb19a6d630460ca7f83a9
4
- data.tar.gz: b7962325e5af14aa63f6231b9053cc8d5f020b66
3
+ metadata.gz: 98ed479650224ea88e6e4bd246261c38f9aad322
4
+ data.tar.gz: 935fca9f98e46caed3bb0fec2326297659bfae0e
5
5
  SHA512:
6
- metadata.gz: ea9edd7ea8fbc50f901de96b70cf51ea983c5e8bc07e0017bdddb844af3b4ec0f2105996b9dd200d7c0e5021955bc017af63e3240ec97af24ff824d3d6ea9f2b
7
- data.tar.gz: 03a615b5e096b657e5e1982e3b568167b71b463d57d820e28062dc890b6af109e717de64ab3a7e64cffca2afbc5c0a5e14d27ebe03828772a8c4d721cff680c3
6
+ metadata.gz: fad9d9cf5db41a260a2f40c4893ced84ada4a40c350ad383455edd9867cd3581b881af2bb3cd73262b95363fc8a8f02e0ed74ec65b1203d8379edf888f25c1bf
7
+ data.tar.gz: 889bf55c4d9d95fc056130aa5cf72db60784e3f3a29af928799db2c0e1cebfcf77d9b3eb572c7e1eb62801d43e92ae2f340a91a9a42c9491055cc77515f9fc6d
data/.drone.yml CHANGED
@@ -1,22 +1,82 @@
1
- build:
2
- test:
3
- image: abakpress/dind-testing
4
- pull: true
5
- privileged: true
6
- volumes:
7
- - /home/data/drone/images:/images
8
- - /home/data/drone/gems:/bundle
1
+ name: build
2
+
3
+ kind: pipeline
4
+ type: docker
5
+
6
+ volumes:
7
+ - name: rubygems
8
+ host:
9
+ path: /home/data/drone/rubygems
10
+ - name: images
11
+ host:
12
+ path: /home/data/drone/images
13
+ - name: bundle
14
+ host:
15
+ path: /home/data/drone/gems
16
+ - name: keys
17
+ host:
18
+ path: /home/data/drone/key_cache
19
+
20
+ spec_step_common: &spec_step_common
21
+ image: abakpress/dind-testing:1.0.3
22
+ pull: if-not-exists
23
+ privileged: true
24
+ volumes:
25
+ - name: images
26
+ path: /images
27
+ - name: bundle
28
+ path: /bundle
29
+ - name: keys
30
+ path: /ssh_keys
31
+ commands:
32
+ - prepare-build
33
+
34
+ - fetch-images
35
+ --image whilp/ssh-agent
36
+ --image abakpress/ruby-app:$RUBY_IMAGE_TAG
37
+ --image redis:$REDIS_IMAGE_TAG
38
+
39
+ - dip ssh add -T -v /ssh_keys -k /ssh_keys/id_rsa
40
+ - dip provision
41
+ - dip rspec
42
+
43
+ steps:
44
+ - name: Tests Ruby 2.2
9
45
  environment:
10
- - COMPOSE_FILE_EXT=drone
11
- - POSTGRES_IMAGE_TAG=9.3-latest
12
- - SPHINX_IMAGE_TAG=2.2-latest
13
- commands:
14
- - wrapdocker docker -v
46
+ COMPOSE_FILE_EXT: drone
47
+ DOCKER_RUBY_VERSION: 2.2
48
+ RUBY_IMAGE_TAG: 2.2-latest
49
+ REDIS_IMAGE_TAG: 4-alpine
50
+ RAILS_ENV: test
51
+ <<: *spec_step_common
52
+
53
+ - name: Tests Ruby 2.3
54
+ environment:
55
+ COMPOSE_FILE_EXT: drone
56
+ DOCKER_RUBY_VERSION: 2.3
57
+ RUBY_IMAGE_TAG: 2.3-latest
58
+ REDIS_IMAGE_TAG: 4-alpine
59
+ RAILS_ENV: test
60
+ <<: *spec_step_common
15
61
 
16
- - fetch-images
17
- --image abakpress/ruby-app:$RUBY_IMAGE_TAG
18
- --image abakpress/postgres-db:$POSTGRES_IMAGE_TAG
19
- --image abakpress/sphinx-index:$SPHINX_IMAGE_TAG
62
+ - name: Tests Ruby 2.4
63
+ environment:
64
+ COMPOSE_FILE_EXT: drone
65
+ DOCKER_RUBY_VERSION: 2.4
66
+ RUBY_IMAGE_TAG: 2.4-latest
67
+ REDIS_IMAGE_TAG: 4-alpine
68
+ RAILS_ENV: test
69
+ <<: *spec_step_common
20
70
 
21
- - dip provision
22
- - dip rspec
71
+ - name: release
72
+ image: abakpress/gem-publication:latest
73
+ pull: if-not-exists
74
+ when:
75
+ event: push
76
+ branch: master
77
+ status: success
78
+ volumes:
79
+ - name: rubygems
80
+ path: /root/.gem
81
+ commands:
82
+ - release-gem --public
data/Appraisals ADDED
@@ -0,0 +1,9 @@
1
+ if RUBY_VERSION < '2.4'
2
+ appraise 'rails4.0' do
3
+ gem 'activesupport', '~> 4.0.0'
4
+ end
5
+ end
6
+
7
+ appraise 'rails4.2' do
8
+ gem 'activesupport', '~> 4.2.0'
9
+ end
data/CHANGELOG.md CHANGED
@@ -1,42 +1,60 @@
1
+ # v1.5.1
1
2
 
2
- #### [Current]
3
- * 2016-07-21 [4f56a74](../../commit/4f56a74) - __(Stanislav Gordanov)__ Release 1.4.0
4
- * 2016-07-20 [e6be297](../../commit/e6be297) - __(Stanislav Gordanov)__ feat: переместит значение инкремента в начало массива данных
5
- * 2015-07-26 [e4771c5](../../commit/e4771c5) - __(Artem Napolskih)__ Update README.md
6
- * 2015-02-19 [c86a1aa](../../commit/c86a1aa) - __(bibendi)__ commit changelog after generate it
7
- * 2015-02-19 [b5ec9f8](../../commit/b5ec9f8) - __(bibendi)__ change releasing tasks to upload on rubygems
8
-
9
- #### v1.2.0
10
- * 2014-11-10 [be642ce](../../commit/be642ce) - __(Artem Napolskih)__ Release 1.2.0
11
- * 2014-11-10 [6257dc2](../../commit/6257dc2) - __(Artem Napolskih)__ feature(hash_counter): added float mode
12
- * 2014-10-17 [48deb40](../../commit/48deb40) - __(Artem Napolskih)__ feature(unique_values_list): introduced a list of unique values to expiry of the members
13
- * 2014-10-17 [e1206b7](../../commit/e1206b7) - __(Artem Napolskih)__ feature(unique_values_list): introduce has_value? method
14
- * 2014-10-17 [cccc2be](../../commit/cccc2be) - __(Artem Napolskih)__ feature(unique_values_list): rename Standard and Fast unique values list to Blocking and NonBlocking respectively
15
- * 2014-10-17 [7521fd8](../../commit/7521fd8) - __(Artem Napolskih)__ chore(specs): reorganize unique lists specs
16
- * 2014-04-23 [94fada3](../../commit/94fada3) - __(Artem Napolskih)__ chore(all): fix circleci badge
17
- * 2013-11-20 [0ae5531](../../commit/0ae5531) - __(Artem Napolskih)__ Release 1.1.0
18
-
19
- #### v1.1.0
20
- * 2013-11-20 [01f12f9](../../commit/01f12f9) - __(Artem Napolskih)__ Release 1.1.0
21
- * 2013-11-20 [3897988](../../commit/3897988) - __(Artem Napolskih)__ refactor(all): back delete_all! methods
22
- * 2013-11-15 [2d1c733](../../commit/2d1c733) - __(Artem Napolskih)__ refactor(all): extract Cluster and Partition classes
23
- * 2013-10-22 [020cc8e](../../commit/020cc8e) - __(Napolskih)__ refactor(all): shared code of clustering and partitioning extracted into module - group_keys -> cluster_keys - shared code of clustering and partitioning extracted into module
24
-
25
- #### v1.0.1
26
- * 2013-10-21 [9b5e13b](../../commit/9b5e13b) - __(Artem Napolskih)__ Release 1.0.1
27
- * 2013-10-21 [bfa328a](../../commit/bfa328a) - __(Artem Napolskih)__ feature(hash_counter): method date when called with a block, now returns the total number of lines
28
- * 2013-10-21 [6d04c95](../../commit/6d04c95) - __(Artem Napolskih)__ Release 1.0.0
29
-
30
- #### v1.0.0
31
- * 2013-10-21 [b5f5344](../../commit/b5f5344) - __(Artem Napolskih)__ Release 1.0.0
32
- * 2013-10-10 [b29eab7](../../commit/b29eab7) - __(Artem Napolskih)__ feature(unique_values_lists): added methods to read and delete data
33
- * 2013-10-10 [67c5200](../../commit/67c5200) - __(Artem Napolskih)__ feature(unique_hash_counter): introduce unique list postfix delimiter
34
- * 2013-10-08 [8a9a2a9](../../commit/8a9a2a9) - __(Artem Napolskih)__ feature(hash_counter): added methods to read and delete data
35
- * 2013-09-13 [f8d037c](../../commit/f8d037c) - __(Artem Napolskih)__ docs(all): documenting
36
-
37
- #### v1.0.0beta1
38
- * 2013-09-13 [43016ec](../../commit/43016ec) - __(Artem Napolskih)__ Release 1.0.0beta1
39
- * 2013-09-12 [0a176fa](../../commit/0a176fa) - __(Artem Napolskih)__ feature(all) introduce key and value delimiters
40
- * 2013-09-12 [addbb40](../../commit/addbb40) - __(Artem Napolskih)__ feature(unique_values_list): fast (non blocking) unique values list added
41
- * 2013-08-23 [897418d](../../commit/897418d) - __(Artem Napolskih)__ Initial commit
42
- * 2013-08-21 [21ed53b](../../commit/21ed53b) - __(napolskih)__ dummy commit
3
+ * 2021-08-06 [3302af4](../../commit/3302af4) - __(TamarinEA)__ Release 1.5.1
4
+ * 2021-08-06 [09ed078](../../commit/09ed078) - __(TamarinEA)__ chore: support ruby 2.4 and use redis in test
5
+
6
+ # v1.5.0
7
+
8
+ * 2017-04-21 [d64da5e](../../commit/d64da5e) - __(Pavel Galkin)__ feat: support two value delimiters
9
+ https://jira.railsc.ru/browse/CK-862
10
+
11
+ * 2017-04-21 [a4f458c](../../commit/a4f458c) - __(Pavel Galkin)__ chore: update infrastructure
12
+
13
+ # v1.4.0
14
+
15
+ * 2016-07-20 [e6be297](../../commit/e6be297) - __(Stanislav Gordanov)__ feat: переместит значение инкремента в начало массива данных
16
+ * 2015-07-26 [e4771c5](../../commit/e4771c5) - __(Artem Napolskih)__ Update README.md
17
+ * 2015-02-19 [c86a1aa](../../commit/c86a1aa) - __(bibendi)__ commit changelog after generate it
18
+ * 2015-02-19 [b5ec9f8](../../commit/b5ec9f8) - __(bibendi)__ change releasing tasks to upload on rubygems
19
+
20
+ # v1.2.0
21
+
22
+ * 2014-11-10 [6257dc2](../../commit/6257dc2) - __(Artem Napolskih)__ feature(hash_counter): added float mode
23
+ * 2014-10-17 [48deb40](../../commit/48deb40) - __(Artem Napolskih)__ feature(unique_values_list): introduced a list of unique values to expiry of the members
24
+ * 2014-10-17 [e1206b7](../../commit/e1206b7) - __(Artem Napolskih)__ feature(unique_values_list): introduce has_value? method
25
+ * 2014-10-17 [cccc2be](../../commit/cccc2be) - __(Artem Napolskih)__ feature(unique_values_list): rename Standard and Fast unique values list to Blocking and NonBlocking respectively
26
+ * 2014-10-17 [7521fd8](../../commit/7521fd8) - __(Artem Napolskih)__ chore(specs): reorganize unique lists specs
27
+ * 2014-04-23 [94fada3](../../commit/94fada3) - __(Artem Napolskih)__ chore(all): fix circleci badge
28
+ * 2013-11-20 [0ae5531](../../commit/0ae5531) - __(Artem Napolskih)__ Release 1.1.0
29
+
30
+ # v1.1.0
31
+
32
+ * 2013-11-20 [3897988](../../commit/3897988) - __(Artem Napolskih)__ refactor(all): back delete_all! methods
33
+ * 2013-11-15 [2d1c733](../../commit/2d1c733) - __(Artem Napolskih)__ refactor(all): extract Cluster and Partition classes
34
+ * 2013-10-22 [020cc8e](../../commit/020cc8e) - __(Napolskih)__ refactor(all): shared code of clustering and partitioning extracted into module - group_keys -> cluster_keys - shared code of clustering and partitioning extracted into module
35
+
36
+ # v1.0.1
37
+
38
+ * 2013-10-21 [bfa328a](../../commit/bfa328a) - __(Artem Napolskih)__ feature(hash_counter): method date when called with a block, now returns the total number of lines
39
+ * 2013-10-21 [6d04c95](../../commit/6d04c95) - __(Artem Napolskih)__ Release 1.0.0
40
+ * 2013-10-10 [b29eab7](../../commit/b29eab7) - __(Artem Napolskih)__ feature(unique_values_lists): added methods to read and delete data
41
+ * 2013-10-10 [67c5200](../../commit/67c5200) - __(Artem Napolskih)__ feature(unique_hash_counter): introduce unique list postfix delimiter
42
+ * 2013-10-08 [8a9a2a9](../../commit/8a9a2a9) - __(Artem Napolskih)__ feature(hash_counter): added methods to read and delete data
43
+ * 2013-09-13 [f8d037c](../../commit/f8d037c) - __(Artem Napolskih)__ docs(all): documenting
44
+
45
+ # v1.0.0beta1
46
+
47
+ # v1.0.0
48
+
49
+ * 2013-10-10 [b29eab7](../../commit/b29eab7) - __(Artem Napolskih)__ feature(unique_values_lists): added methods to read and delete data
50
+ * 2013-10-10 [67c5200](../../commit/67c5200) - __(Artem Napolskih)__ feature(unique_hash_counter): introduce unique list postfix delimiter
51
+ * 2013-10-08 [8a9a2a9](../../commit/8a9a2a9) - __(Artem Napolskih)__ feature(hash_counter): added methods to read and delete data
52
+ * 2013-09-13 [f8d037c](../../commit/f8d037c) - __(Artem Napolskih)__ docs(all): documenting
53
+ * 2013-09-12 [0a176fa](../../commit/0a176fa) - __(Artem Napolskih)__ feature(all) introduce key and value delimiters
54
+ * 2013-09-12 [addbb40](../../commit/addbb40) - __(Artem Napolskih)__ feature(unique_values_list): fast (non blocking) unique values list added
55
+ - refactoring unique_values_list;
56
+ - fast (non blocking) unique values list added;
57
+ - unique_list[:list_class] property introduced on UniqueHashCounter.
58
+
59
+ * 2013-08-23 [897418d](../../commit/897418d) - __(Artem Napolskih)__ Initial commit
60
+ * 2013-08-21 [21ed53b](../../commit/21ed53b) - __(napolskih)__ dummy commit
data/dip.yml CHANGED
@@ -3,6 +3,7 @@ version: '1'
3
3
  environment:
4
4
  DOCKER_RUBY_VERSION: 2.2
5
5
  RUBY_IMAGE_TAG: 2.2-latest
6
+ REDIS_IMAGE_TAG: 4-alpine
6
7
  COMPOSE_FILE_EXT: development
7
8
  RAILS_ENV: test
8
9
 
data/docker-compose.yml CHANGED
@@ -6,4 +6,11 @@ services:
6
6
  environment:
7
7
  - BUNDLE_PATH=/bundle/$DOCKER_RUBY_VERSION
8
8
  - BUNDLE_CONFIG=/app/.bundle/config
9
+ - TEST_REDIS_HOST=redis
9
10
  command: bash
11
+ depends_on:
12
+ - redis
13
+
14
+ redis:
15
+ image: redis:$REDIS_IMAGE_TAG
16
+ command: 'redis-server --bind 0.0.0.0'
@@ -1,3 +1,3 @@
1
1
  module RedisCounters
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '1.5.1'.freeze
3
3
  end
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'redis_counters/version'
@@ -16,12 +15,13 @@ Gem::Specification.new do |spec|
16
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
16
  spec.require_paths = ['lib']
18
17
 
19
- spec.add_dependency 'activesupport', '>= 3.0', '< 5'
18
+ spec.add_runtime_dependency 'activesupport', '>= 4.0', '< 5'
20
19
 
21
20
  spec.add_development_dependency 'bundler'
22
21
  spec.add_development_dependency 'rake'
23
22
  spec.add_development_dependency 'rspec', '~> 2.14.0'
24
- spec.add_development_dependency 'mock_redis'
23
+ spec.add_development_dependency 'redis', '>= 3.0'
24
+ spec.add_development_dependency 'appraisal', '>= 1.0.2'
25
25
  spec.add_development_dependency 'timecop'
26
26
  spec.add_development_dependency 'codeclimate-test-reporter', '>= 0.4.1'
27
27
  spec.add_development_dependency 'simplecov'
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RedisCounters::BaseCounter do
4
- let(:redis) { MockRedis.new }
4
+ let(:redis) { Redis.current }
5
5
 
6
6
  let(:options) { {
7
7
  :counter_class => RedisCounters::HashCounter,
@@ -26,4 +26,4 @@ describe RedisCounters::BaseCounter do
26
26
 
27
27
  it { expect { counter }.to raise_error KeyError }
28
28
  end
29
- end
29
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RedisCounters::HashCounter do
4
- let(:redis) { MockRedis.new }
4
+ let(:redis) { Redis.current }
5
5
  let(:value) { rand(10) + 1 }
6
6
  let(:options) { { :counter_name => :test_counter, :field_name => :test_field } }
7
7
  let(:counter) { described_class.new(redis, options) }
@@ -89,8 +89,7 @@ describe RedisCounters::HashCounter do
89
89
  before { 3.times { counter.process(:param1 => 21, :param2 => 22, :param3 => 33) } }
90
90
 
91
91
  it { expect(redis.keys('*')).to have(2).key }
92
- it { expect(redis.keys('*').first).to eq 'test_counter:11:22' }
93
- it { expect(redis.keys('*').last).to eq 'test_counter:21:22' }
92
+ it { expect(redis.keys('*')).to match_array ['test_counter:11:22', 'test_counter:21:22'] }
94
93
  it { expect(redis.hexists('test_counter:11:22', 'test_field')).to be_true }
95
94
  it { expect(redis.hget('test_counter:11:22', 'test_field')).to eq value.to_s }
96
95
  it { expect(redis.hexists('test_counter:21:22', 'test_field')).to be_true }
@@ -108,8 +107,7 @@ describe RedisCounters::HashCounter do
108
107
  before { 3.times { counter.process(:param1 => 2, :param2 => 2) } }
109
108
 
110
109
  it { expect(redis.keys('*')).to have(2).key }
111
- it { expect(redis.keys('*').first).to eq 'test_counter:true' }
112
- it { expect(redis.keys('*').last).to eq 'test_counter:false' }
110
+ it { expect(redis.keys('*')).to match_array ['test_counter:true', 'test_counter:false'] }
113
111
  it { expect(redis.hexists('test_counter:true', 'test_field')).to be_true }
114
112
  it { expect(redis.hget('test_counter:true', 'test_field')).to eq 2.to_s }
115
113
  it { expect(redis.hexists('test_counter:false', 'test_field')).to be_true }
@@ -129,9 +127,7 @@ describe RedisCounters::HashCounter do
129
127
  before { 1.times { counter.process(:param1 => 21, :param2 => '', :param3 => 33) } }
130
128
 
131
129
  it { expect(redis.keys('*')).to have(3).key }
132
- it { expect(redis.keys('*').first).to eq 'test_counter:11:22' }
133
- it { expect(redis.keys('*').second).to eq 'test_counter:21:22' }
134
- it { expect(redis.keys('*').third).to eq 'test_counter:21:' }
130
+ it { expect(redis.keys('*')).to match_array ['test_counter:11:22', 'test_counter:21:22', 'test_counter:21:'] }
135
131
  it { expect(redis.hexists('test_counter:11:22', 'test_field')).to be_true }
136
132
  it { expect(redis.hget('test_counter:11:22', 'test_field')).to eq value.to_s }
137
133
  it { expect(redis.hexists('test_counter:21:22', 'test_field')).to be_true }
@@ -153,9 +149,13 @@ describe RedisCounters::HashCounter do
153
149
  before { 1.times { counter.process(:param1 => 2, :param2 => 2, :date => '2013-04-28') } }
154
150
 
155
151
  it { expect(redis.keys('*')).to have(3).key }
156
- it { expect(redis.keys('*').first).to eq 'test_counter:2013-04-27:true' }
157
- it { expect(redis.keys('*').second).to eq 'test_counter:2013-04-27:false' }
158
- it { expect(redis.keys('*').third).to eq 'test_counter:2013-04-28:false' }
152
+ it do
153
+ expect(redis.keys('*')).to match_array [
154
+ 'test_counter:2013-04-27:true',
155
+ 'test_counter:2013-04-27:false',
156
+ 'test_counter:2013-04-28:false'
157
+ ]
158
+ end
159
159
  it { expect(redis.hexists('test_counter:2013-04-27:true', 'test_field')).to be_true }
160
160
  it { expect(redis.hget('test_counter:2013-04-27:true', 'test_field')).to eq 3.to_s }
161
161
  it { expect(redis.hexists('test_counter:2013-04-27:false', 'test_field')).to be_true }
@@ -182,17 +182,14 @@ describe RedisCounters::HashCounter do
182
182
 
183
183
  context 'when no partition params given' do
184
184
  it { expect(counter.partitions).to have(3).partition }
185
- it { expect(counter.partitions.first).to eq partition_1 }
186
- it { expect(counter.partitions.second).to eq partition_2 }
187
- it { expect(counter.partitions.third).to eq partition_3 }
185
+ it { expect(counter.partitions).to match_array [partition_1, partition_2, partition_3] }
188
186
  end
189
187
 
190
188
  context 'when one partition param given' do
191
189
  it { expect(counter.partitions(:param1 => 11)).to have(1).partition }
192
190
  it { expect(counter.partitions(:param1 => 11).first).to eq partition_1 }
193
191
  it { expect(counter.partitions(:param1 => 21)).to have(2).partition }
194
- it { expect(counter.partitions(:param1 => 21).first).to eq partition_2 }
195
- it { expect(counter.partitions('param1' => 21).second).to eq partition_3 }
192
+ it { expect(counter.partitions(:param1 => 21)).to match_array [partition_2, partition_3] }
196
193
  end
197
194
 
198
195
  context 'when two partition params given' do
@@ -231,9 +228,7 @@ describe RedisCounters::HashCounter do
231
228
  before { 4.times { counter.process(:param1 => 21, :param2 => '', :param3 => 31) } }
232
229
 
233
230
  it { expect(counter.data(partitions)).to have(3).row }
234
- it { expect(counter.data(partitions).first[:value]).to eq 3 }
235
- it { expect(counter.data(partitions).second[:value]).to eq 2 }
236
- it { expect(counter.data(partitions).third[:value]).to eq 5 }
231
+ it { expect(counter.data(partitions)).to match_array [{'value' => 3}, {'value' => 2}, {'value' => 5}] }
237
232
  end
238
233
 
239
234
  context 'when group_keys and one group key is nil' do
@@ -375,8 +370,7 @@ describe RedisCounters::HashCounter do
375
370
  before { counter.delete_partitions!(partition_2) }
376
371
 
377
372
  it { expect(counter.partitions).to have(2).row }
378
- it { expect(counter.partitions.first).to eq partition_1 }
379
- it { expect(counter.partitions.last).to eq partition_3 }
373
+ it { expect(counter.partitions).to match_array [partition_1, partition_3] }
380
374
  end
381
375
 
382
376
  context 'when not leaf partition given' do
@@ -396,9 +390,7 @@ describe RedisCounters::HashCounter do
396
390
  before { counter.delete_partitions!(:param1 => 21, &error_proc) rescue nil }
397
391
 
398
392
  it { expect(counter.partitions).to have(3).row }
399
- it { expect(counter.partitions.first).to eq partition_1 }
400
- it { expect(counter.partitions.second).to eq partition_2 }
401
- it { expect(counter.partitions.last).to eq partition_3 }
393
+ it { expect(counter.partitions).to match_array [partition_1, partition_2, partition_3] }
402
394
  end
403
395
  end
404
396
 
@@ -407,8 +399,7 @@ describe RedisCounters::HashCounter do
407
399
  before { counter.delete_partitions!(partition_2) }
408
400
 
409
401
  it { expect(counter.partitions).to have(2).row }
410
- it { expect(counter.partitions.first).to eq partition_1 }
411
- it { expect(counter.partitions.last).to eq partition_3 }
402
+ it { expect(counter.partitions).to match_array [partition_1, partition_3] }
412
403
  end
413
404
 
414
405
  context 'when not leaf partition given' do
@@ -434,16 +425,21 @@ describe RedisCounters::HashCounter do
434
425
  before { 2.times { counter.process(partition_2) } }
435
426
  before { 3.times { counter.process(partition_3) } }
436
427
 
437
- it { expect(counter.partitions.first[:param2]).to eq '22:35' }
438
- it { expect(counter.partitions.second[:param2]).to eq '23:26' }
439
- it { expect(counter.partitions.third[:param2]).to eq '24:26' }
428
+ it do
429
+ expect(counter.partitions).to match_array [
430
+ {'param1' => '11', 'param2' => '22:35'},
431
+ {'param1' => '11', 'param2' => '23:26'},
432
+ {'param1' => '11', 'param2' => '24:26'}
433
+ ]
434
+ end
440
435
 
441
- it { expect(counter.data.first[:param3]).to eq '11:64' }
442
- it { expect(counter.data.first[:value]).to eq 1 }
443
- it { expect(counter.data.second[:param3]).to eq '11:36' }
444
- it { expect(counter.data.second[:value]).to eq 2 }
445
- it { expect(counter.data.third[:param3]).to eq '21:54' }
446
- it { expect(counter.data.third[:value]).to eq 3 }
436
+ it do
437
+ expect(counter.data).to match_array [
438
+ {'value' => 1, 'param3' => '11:64'},
439
+ {'value' => 2, 'param3' => '11:36'},
440
+ {'value' => 3, 'param3' => '21:54'}
441
+ ]
442
+ end
447
443
  end
448
444
 
449
445
  context 'two delimiters' do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RedisCounters::UniqueHashCounter do
4
- let(:redis) { MockRedis.new }
4
+ let(:redis) { Redis.current }
5
5
  let(:unique_list_postfix) { described_class.const_get(:UNIQUE_LIST_POSTFIX) }
6
6
 
7
7
  let(:options) { {
@@ -76,8 +76,8 @@ describe RedisCounters::UniqueHashCounter do
76
76
 
77
77
  it { expect(redis.lrange('test_counter_uq:1:partitions', 0, -1)).to eq ['2013-04-28', '2013-04-27'] }
78
78
  it { expect(redis.lrange('test_counter_uq:2:partitions', 0, -1)).to eq ['2013-04-27'] }
79
- it { expect(redis.smembers('test_counter_uq:1:2013-04-27')).to eq ['4'] }
80
- it { expect(redis.smembers('test_counter_uq:2:2013-04-27')).to eq ['3', '2', '1'] }
81
- it { expect(redis.smembers('test_counter_uq:1:2013-04-28')).to eq ['5', '1'] }
79
+ it { expect(redis.smembers('test_counter_uq:1:2013-04-27')).to match_array ['4'] }
80
+ it { expect(redis.smembers('test_counter_uq:2:2013-04-27')).to match_array ['3', '2', '1'] }
81
+ it { expect(redis.smembers('test_counter_uq:1:2013-04-28')).to match_array ['5', '1'] }
82
82
  end
83
- end
83
+ end
@@ -5,7 +5,7 @@ describe RedisCounters::UniqueValuesLists::Blocking do
5
5
  it_behaves_like 'unique_values_lists/set'
6
6
 
7
7
  context 'when check partitions list' do
8
- let(:redis) { MockRedis.new }
8
+ let(:redis) { Redis.current }
9
9
  let(:values) { rand(10) + 1 }
10
10
  let(:partitions_list_postfix) { described_class.const_get(:PARTITIONS_LIST_POSTFIX) }
11
11
 
@@ -91,4 +91,4 @@ describe RedisCounters::UniqueValuesLists::Blocking do
91
91
  end
92
92
  end
93
93
  end
94
- end
94
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'bundler/setup'
2
2
  require 'rspec'
3
- require 'mock_redis'
4
3
  require 'timecop'
5
4
  require 'codeclimate-test-reporter'
6
5
  require 'simplecov'
@@ -9,6 +8,9 @@ require 'pry-byebug'
9
8
  SimpleCov.start('test_frameworks')
10
9
 
11
10
  require 'redis_counters'
11
+ require 'redis'
12
+
13
+ Redis.current = Redis.new(host: ENV['TEST_REDIS_HOST'])
12
14
 
13
15
  # require helpers
14
16
  support_dir = File.expand_path(File.join('..', 'support'), __FILE__)
@@ -16,4 +18,5 @@ Dir[File.join(support_dir, '**', '*.rb')].each { |f| require f }
16
18
 
17
19
  RSpec.configure do |config|
18
20
  config.backtrace_exclusion_patterns = [/lib\/rspec\/(core|expectations|matchers|mocks)/]
21
+ config.before { Redis.current.flushdb }
19
22
  end
@@ -1,6 +1,5 @@
1
- # coding: utf-8
2
1
  shared_examples_for 'unique_values_lists/common' do
3
- let(:redis) { MockRedis.new }
2
+ let(:redis) { Redis.current }
4
3
  let(:values) { rand(10) + 1 }
5
4
 
6
5
  let(:options) { {
@@ -139,9 +138,10 @@ shared_examples_for 'unique_values_lists/common' do
139
138
 
140
139
  context 'when no partition given' do
141
140
  it { expect(counter.partitions(cluster1_subcluster1)).to have(3).partitions }
142
- it { expect(counter.partitions(cluster1_subcluster1).first).to eq part1_subpart1 }
143
- it { expect(counter.partitions(cluster1_subcluster1).second).to eq part1_subpart2 }
144
- it { expect(counter.partitions(cluster1_subcluster1).third).to eq part2_subpart1 }
141
+ it do
142
+ expect(counter.partitions(cluster1_subcluster1)).
143
+ to match_array [part1_subpart1, part1_subpart2, part2_subpart1]
144
+ end
145
145
  #
146
146
  it { expect(counter.partitions(cluster2_subcluster1)).to have(1).partitions }
147
147
  it { expect(counter.partitions(cluster2_subcluster1).first).to eq part1_subpart1 }
@@ -149,8 +149,10 @@ shared_examples_for 'unique_values_lists/common' do
149
149
 
150
150
  context 'when not leaf partition given' do
151
151
  it { expect(counter.partitions(cluster1_subcluster1.merge(:part => :part1))).to have(2).partitions }
152
- it { expect(counter.partitions(cluster1_subcluster1.merge(:part => :part1)).first).to eq part1_subpart1 }
153
- it { expect(counter.partitions(cluster1_subcluster1.merge(:part => :part1)).second).to eq part1_subpart2 }
152
+ it do
153
+ expect(counter.partitions(cluster1_subcluster1.merge(:part => :part1))).
154
+ to match_array [part1_subpart1, part1_subpart2]
155
+ end
154
156
  end
155
157
 
156
158
  context 'when leaf partition given' do
@@ -182,15 +184,12 @@ shared_examples_for 'unique_values_lists/common' do
182
184
 
183
185
  context 'when no partition given' do
184
186
  it { expect(counter.partitions).to have(3).partitions }
185
- it { expect(counter.partitions.first).to eq part1_subpart1 }
186
- it { expect(counter.partitions.second).to eq part1_subpart2 }
187
- it { expect(counter.partitions.third).to eq part2_subpart1 }
187
+ it { expect(counter.partitions).to match_array [part1_subpart1, part1_subpart2, part2_subpart1] }
188
188
  end
189
189
 
190
190
  context 'when not leaf partition given' do
191
191
  it { expect(counter.partitions(:part => :part1)).to have(2).partitions }
192
- it { expect(counter.partitions(:part => :part1).first).to eq part1_subpart1 }
193
- it { expect(counter.partitions(:part => :part1).second).to eq part1_subpart2 }
192
+ it { expect(counter.partitions(:part => :part1)).to match_array [part1_subpart1, part1_subpart2] }
194
193
  end
195
194
 
196
195
  context 'when leaf partition given' do
@@ -560,4 +559,4 @@ shared_examples_for 'unique_values_lists/common' do
560
559
  end
561
560
  end
562
561
  end
563
- end
562
+ end
@@ -1,6 +1,5 @@
1
- # coding: utf-8
2
1
  shared_examples_for 'unique_values_lists/expirable' do
3
- let(:redis) { MockRedis.new }
2
+ let(:redis) { Redis.current }
4
3
  let(:counter) { described_class.new(redis, options) }
5
4
 
6
5
  after do
@@ -159,4 +158,4 @@ shared_examples_for 'unique_values_lists/expirable' do
159
158
  end
160
159
  end
161
160
  end
162
- end
161
+ end
@@ -1,6 +1,5 @@
1
- # coding: utf-8
2
1
  shared_examples_for 'unique_values_lists/set' do
3
- let(:redis) { MockRedis.new }
2
+ let(:redis) { Redis.current }
4
3
  let(:values) { rand(10) + 1 }
5
4
 
6
5
  let(:counter) { described_class.new(redis, options) }
@@ -116,4 +115,4 @@ shared_examples_for 'unique_values_lists/set' do
116
115
  it { expect(redis.smembers("test_counter:cluster2")).to include '4:5' }
117
116
  end
118
117
  end
119
- end
118
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_counters
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Napolskih
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-11 00:00:00.000000000 Z
11
+ date: 2021-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '4.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '5'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '3.0'
29
+ version: '4.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '5'
@@ -73,19 +73,33 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: 2.14.0
75
75
  - !ruby/object:Gem::Dependency
76
- name: mock_redis
76
+ name: redis
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '0'
81
+ version: '3.0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: '3.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: appraisal
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.0.2
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.0.2
89
103
  - !ruby/object:Gem::Dependency
90
104
  name: timecop
91
105
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +194,7 @@ files:
180
194
  - ".drone.yml"
181
195
  - ".gitignore"
182
196
  - ".rspec"
197
+ - Appraisals
183
198
  - CHANGELOG.md
184
199
  - Gemfile
185
200
  - Makefile
@@ -237,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
252
  version: '0'
238
253
  requirements: []
239
254
  rubyforge_project:
240
- rubygems_version: 2.4.6
255
+ rubygems_version: 2.6.1
241
256
  signing_key:
242
257
  specification_version: 4
243
258
  summary: Redis Counters