Class: Resilient::CircuitBreaker::Metrics
- Inherits:
-
Object
- Object
- Resilient::CircuitBreaker::Metrics
- Defined in:
- lib/resilient/circuit_breaker/metrics.rb,
lib/resilient/circuit_breaker/metrics/bucket.rb,
lib/resilient/circuit_breaker/metrics/bucket_size.rb,
lib/resilient/circuit_breaker/metrics/window_size.rb,
lib/resilient/circuit_breaker/metrics/bucket_range.rb,
lib/resilient/circuit_breaker/metrics/storage/memory.rb
Defined Under Namespace
Modules: Storage Classes: Bucket, BucketRange, BucketSize, WindowSize
Constant Summary collapse
- StorageSuccessKeys =
[ :successes, ].freeze
- StorageFailureKeys =
[ :failures, ].freeze
- StorageKeys =
(StorageSuccessKeys + StorageFailureKeys).freeze
Instance Attribute Summary collapse
-
#bucket_size_in_seconds ⇒ Object
readonly
Returns the value of attribute bucket_size_in_seconds.
-
#buckets ⇒ Object
readonly
Returns the value of attribute buckets.
-
#storage ⇒ Object
readonly
Returns the value of attribute storage.
-
#window_size_in_seconds ⇒ Object
readonly
Returns the value of attribute window_size_in_seconds.
Instance Method Summary collapse
- #failure ⇒ Object
-
#initialize(options = {}) ⇒ Metrics
constructor
A new instance of Metrics.
- #reset ⇒ Object
- #success ⇒ Object
- #under_error_threshold_percentage?(error_threshold_percentage) ⇒ Boolean
- #under_request_volume_threshold?(request_volume_threshold) ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ Metrics
Returns a new instance of Metrics.
24 25 26 27 28 29 30 31 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 24 def initialize( = {}) @window_size_in_seconds = .fetch(:window_size_in_seconds, 60) @bucket_size_in_seconds = .fetch(:bucket_size_in_seconds, 10) @window_size = WindowSize.new(@window_size_in_seconds) @bucket_size = BucketSize.new(@bucket_size_in_seconds) @storage = .fetch(:storage) { Storage::Memory.new } @buckets = [] end |
Instance Attribute Details
#bucket_size_in_seconds ⇒ Object (readonly)
Returns the value of attribute bucket_size_in_seconds.
10 11 12 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 10 def bucket_size_in_seconds @bucket_size_in_seconds end |
#buckets ⇒ Object (readonly)
Returns the value of attribute buckets.
11 12 13 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 11 def buckets @buckets end |
#storage ⇒ Object (readonly)
Returns the value of attribute storage.
12 13 14 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 12 def storage @storage end |
#window_size_in_seconds ⇒ Object (readonly)
Returns the value of attribute window_size_in_seconds.
9 10 11 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 9 def window_size_in_seconds @window_size_in_seconds end |
Instance Method Details
#failure ⇒ Object
47 48 49 50 51 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 47 def failure @storage.increment(current_bucket, StorageFailureKeys) prune_buckets nil end |
#reset ⇒ Object
53 54 55 56 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 53 def reset @storage.prune(@buckets, StorageKeys) nil end |
#success ⇒ Object
41 42 43 44 45 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 41 def success @storage.increment(current_bucket, StorageSuccessKeys) prune_buckets nil end |
#under_error_threshold_percentage?(error_threshold_percentage) ⇒ Boolean
37 38 39 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 37 def under_error_threshold_percentage?(error_threshold_percentage) error_percentage < error_threshold_percentage end |
#under_request_volume_threshold?(request_volume_threshold) ⇒ Boolean
33 34 35 |
# File 'lib/resilient/circuit_breaker/metrics.rb', line 33 def under_request_volume_threshold?(request_volume_threshold) requests < request_volume_threshold end |