pause 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
-