pause 0.2.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,16 +31,22 @@ describe Pause::Redis::Adapter do
31
31
  expect(set[0].size).to eql(2)
32
32
  end
33
33
 
34
- it 'should remove old key from a redis set' do
35
- time = Time.now
36
- expect(redis_conn).to receive(:zrem).with(tracked_key, [adapter.period_marker(resolution, time)])
37
-
38
- adapter.time_blocks_to_keep = 1
39
- Timecop.freeze time do
40
- adapter.increment(scope, identifier, Time.now.to_i)
34
+ context 'removing two elements' do
35
+ let(:to_delete) { 2 }
36
+ let(:time) { Time.now }
37
+ before do
38
+ adapter
39
+ to_delete.times do |t|
40
+ expect(redis_conn).to receive(:zrem).with(tracked_key, [adapter.period_marker(resolution, time + t)]).once
41
+ end
42
+ adapter.time_blocks_to_keep = 1
41
43
  end
42
- Timecop.freeze time + (adapter.resolution + 1) do
43
- adapter.increment(scope, identifier, Time.now.to_i)
44
+ it 'should remove old elements' do
45
+ adapter.increment(scope, identifier, time.to_i)
46
+ to_delete.times do |t|
47
+ next_time = time + (adapter.resolution + t + 1)
48
+ adapter.increment(scope, identifier, next_time.to_i)
49
+ end
44
50
  end
45
51
  end
46
52
 
@@ -21,4 +21,18 @@ describe Pause::Redis::ShardedAdapter do
21
21
  expect { adapter.all_keys('cake') }.to raise_error(Pause::Redis::OperationNotSupported)
22
22
  end
23
23
  end
24
+
25
+ describe '#with_multi' do
26
+ let(:redis) { adapter.send(:redis) }
27
+ it 'should not call redis.multi' do
28
+ expect(redis).to_not receive(:multi)
29
+ expect { adapter.increment(:scope, 123, Time.now) }.to_not raise_error
30
+ end
31
+ end
32
+
33
+ describe '#redis' do
34
+ it 'should not use redis db when connecting' do
35
+ expect(adapter.send(:redis_connection_opts)).to_not include(:db)
36
+ end
37
+ end
24
38
  end
@@ -5,20 +5,29 @@
5
5
  #
6
6
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
7
 
8
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
9
- require 'rubygems'
10
- require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
11
8
  require 'pause'
12
- require 'pry'
13
- require 'support/fakeredis'
9
+ require 'fileutils'
10
+
11
+ if ENV['PAUSE_REAL_REDIS']
12
+ require 'pause/redis/adapter'
13
+ puts ; puts "NOTE: Using real Redis-server at #{Pause::Redis::Adapter.redis.inspect}\n\n"
14
+ else
15
+ require 'fakeredis/rspec'
16
+ end
14
17
 
15
18
  RSpec.configure do |config|
16
19
  config.run_all_when_everything_filtered = true
17
20
  config.filter_run :focus
18
21
 
19
- # Run specs in random order to surface order dependencies. If you find an
20
- # order dependency and want to debug it, you can fix the order by providing
21
- # the seed, which is printed after each run.
22
- # --seed 1234
22
+ rspec_dir = './.spec'.freeze
23
+ FileUtils.mkdir_p(rspec_dir)
24
+ config.example_status_persistence_file_path = "#{rspec_dir}/results.txt"
25
+
23
26
  config.order = 'random'
27
+
28
+ if ENV['PAUSE_REAL_REDIS']
29
+ config.before(:example) do
30
+ Pause::Redis::Adapter.redis.flushdb
31
+ end
32
+ end
24
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pause
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atasay Gokkaya
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-11-07 00:00:00.000000000 Z
14
+ date: 2018-03-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: redis
@@ -27,13 +27,127 @@ dependencies:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- description: Real time rate limiting for multi-process ruby environments based on
31
- Redis
30
+ - !ruby/object:Gem::Dependency
31
+ name: hiredis
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: simplecov
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: yard
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: rspec
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: fakeredis
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: guard-rspec
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ - !ruby/object:Gem::Dependency
115
+ name: timecop
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: rake
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ description: This gem provides highly flexible and easy to use interface to define
143
+ rate limit checks, register events as they come, and verify if the rate limit is
144
+ reached. Multiple checks for the same metric are easily supported. This gem is used
145
+ at very high scale on several popular web sites.
32
146
  email:
33
147
  - atasay@wanelo.com
34
148
  - paul@wanelo.com
35
- - sax@wanelo.com
36
- - kig@wanelo.com
149
+ - sax@ericsaxby.com
150
+ - kigster@gmail.com
37
151
  executables: []
38
152
  extensions: []
39
153
  extra_rdoc_files: []
@@ -65,8 +179,7 @@ files:
65
179
  - spec/pause/redis/adapter_spec.rb
66
180
  - spec/pause/redis/sharded_adapter_spec.rb
67
181
  - spec/spec_helper.rb
68
- - spec/support/fakeredis.rb
69
- homepage: https://github.com/wanelo/pause
182
+ homepage: https://github.com/kigster/pause
70
183
  licenses: []
71
184
  metadata: {}
72
185
  post_install_message:
@@ -85,10 +198,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
198
  version: '0'
86
199
  requirements: []
87
200
  rubyforge_project:
88
- rubygems_version: 2.2.2
201
+ rubygems_version: 2.7.6
89
202
  signing_key:
90
203
  specification_version: 4
91
- summary: RReal time rate limiting for multi-process ruby environments based on Redis
204
+ summary: Fast, scalable, and flexible real time rate limiting library for distributed
205
+ Ruby environments backed by Redis.
92
206
  test_files:
93
207
  - spec/pause/action_spec.rb
94
208
  - spec/pause/analyzer_spec.rb
@@ -97,4 +211,3 @@ test_files:
97
211
  - spec/pause/redis/adapter_spec.rb
98
212
  - spec/pause/redis/sharded_adapter_spec.rb
99
213
  - spec/spec_helper.rb
100
- - spec/support/fakeredis.rb
@@ -1,2 +0,0 @@
1
- require 'fakeredis/rspec'
2
-