Class: MockServer::RateLimit
- Inherits:
-
Object
- Object
- MockServer::RateLimit
- Defined in:
- lib/mockserver/models.rb
Overview
Per-expectation rate limit (org.mockserver.model.RateLimit). When the counter
keyed by name (or the expectation id when name is nil) exceeds the
configured limit, the server returns error_status (default 429).
algorithm is the wire enum value: "fixed_window" (default) or
"token_bucket" (the server serialises it lower-case). FIXED_WINDOW uses
limit / window_millis; TOKEN_BUCKET uses burst / refill_per_second.
Instance Attribute Summary collapse
-
#algorithm ⇒ Object
Returns the value of attribute algorithm.
-
#burst ⇒ Object
Returns the value of attribute burst.
-
#error_status ⇒ Object
Returns the value of attribute error_status.
-
#limit ⇒ Object
Returns the value of attribute limit.
-
#name ⇒ Object
Returns the value of attribute name.
-
#refill_per_second ⇒ Object
Returns the value of attribute refill_per_second.
-
#retry_after ⇒ Object
Returns the value of attribute retry_after.
-
#window_millis ⇒ Object
Returns the value of attribute window_millis.
Class Method Summary collapse
- .fixed_window(limit, window_millis, name: nil) ⇒ Object
- .from_hash(data) ⇒ Object
- .token_bucket(burst, refill_per_second, name: nil) ⇒ Object
Instance Method Summary collapse
-
#initialize(name: nil, algorithm: nil, limit: nil, window_millis: nil, burst: nil, refill_per_second: nil, error_status: nil, retry_after: nil) ⇒ RateLimit
constructor
A new instance of RateLimit.
- #to_h ⇒ Object
Constructor Details
#initialize(name: nil, algorithm: nil, limit: nil, window_millis: nil, burst: nil, refill_per_second: nil, error_status: nil, retry_after: nil) ⇒ RateLimit
Returns a new instance of RateLimit.
2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 |
# File 'lib/mockserver/models.rb', line 2188 def initialize(name: nil, algorithm: nil, limit: nil, window_millis: nil, burst: nil, refill_per_second: nil, error_status: nil, retry_after: nil) @name = name @algorithm = algorithm @limit = limit @window_millis = window_millis @burst = burst @refill_per_second = refill_per_second @error_status = error_status @retry_after = retry_after end |
Instance Attribute Details
#algorithm ⇒ Object
Returns the value of attribute algorithm.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def algorithm @algorithm end |
#burst ⇒ Object
Returns the value of attribute burst.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def burst @burst end |
#error_status ⇒ Object
Returns the value of attribute error_status.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def error_status @error_status end |
#limit ⇒ Object
Returns the value of attribute limit.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def limit @limit end |
#name ⇒ Object
Returns the value of attribute name.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def name @name end |
#refill_per_second ⇒ Object
Returns the value of attribute refill_per_second.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def refill_per_second @refill_per_second end |
#retry_after ⇒ Object
Returns the value of attribute retry_after.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def retry_after @retry_after end |
#window_millis ⇒ Object
Returns the value of attribute window_millis.
2185 2186 2187 |
# File 'lib/mockserver/models.rb', line 2185 def window_millis @window_millis end |
Class Method Details
.fixed_window(limit, window_millis, name: nil) ⇒ Object
2228 2229 2230 |
# File 'lib/mockserver/models.rb', line 2228 def self.fixed_window(limit, window_millis, name: nil) new(name: name, algorithm: 'fixed_window', limit: limit, window_millis: window_millis) end |
.from_hash(data) ⇒ Object
2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 |
# File 'lib/mockserver/models.rb', line 2213 def self.from_hash(data) return nil if data.nil? new( name: data['name'], algorithm: data['algorithm'], limit: data['limit'], window_millis: data['windowMillis'], burst: data['burst'], refill_per_second: data['refillPerSecond'], error_status: data['errorStatus'], retry_after: data['retryAfter'] ) end |
.token_bucket(burst, refill_per_second, name: nil) ⇒ Object
2232 2233 2234 |
# File 'lib/mockserver/models.rb', line 2232 def self.token_bucket(burst, refill_per_second, name: nil) new(name: name, algorithm: 'token_bucket', burst: burst, refill_per_second: refill_per_second) end |
Instance Method Details
#to_h ⇒ Object
2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 |
# File 'lib/mockserver/models.rb', line 2200 def to_h MockServer.strip_none({ 'name' => @name, 'algorithm' => @algorithm, 'limit' => @limit, 'windowMillis' => @window_millis, 'burst' => @burst, 'refillPerSecond' => @refill_per_second, 'errorStatus' => @error_status, 'retryAfter' => @retry_after }) end |