class Rookout::Augs::AugFactory
Public Class Methods
new(output)
click to toggle source
# File lib/rookout/augs/aug_factory.rb, line 16 def initialize output @output = output @factory = Processor::ProcessorFactory.new end
Public Instance Methods
create_aug(configuration)
click to toggle source
# File lib/rookout/augs/aug_factory.rb, line 21 def create_aug configuration aug_id = configuration["id"] raise Exceptions::RookAugInvalidKey.new("id", configuration) unless aug_id.is_a? String action_configuration = configuration["action"] raise Exceptions::RookAugInvalidKey.new("action", configuration) unless action_configuration.is_a? Hash action = Actions::ActionRunProcessor.new action_configuration, @factory max_aug_time = configuration["maxAugTime"] || Config.instrumentation_max_aug_time condition_configuration = configuration["conditional"] raise Exceptions::RookAugInvalidKey.new("conditional", configuration) unless condition_configuration.nil? || condition_configuration.is_a?(String) condition = condition_configuration.nil? ? nil : Conditions::Condition.new(condition_configuration) rate_limit = create_rate_limit configuration max_aug_time_ns = Utils.milliseconds_to_nanoseconds max_aug_time aug = Aug.new aug_id, action, condition, rate_limit, max_aug_time_ns location_configuration = configuration["location"] raise Exceptions::RookAugInvalidKey.new("location", configuration) unless location_configuration.is_a? Hash create_location location_configuration, aug end
Private Instance Methods
create_location(configuration, aug)
click to toggle source
# File lib/rookout/augs/aug_factory.rb, line 48 def create_location configuration, aug name = configuration["name"] raise Exceptions::RookObjectNameMissing if name.nil? case name when "file_line" return Locations::LocationFileLine.new configuration, @output, aug when "exception_handler" return Locations::LocationExceptionHandler.new configuration, @output, aug else raise Exceptions::RookUnsupportedLocation if name != "file_line" end end
create_rate_limit(configuration)
click to toggle source
# File lib/rookout/augs/aug_factory.rb, line 62 def create_rate_limit configuration window_quota = 200 window_size = 5000 rate_limit = configuration["rateLimit"] if rate_limit rate_limit_splitted = rate_limit.split "/" if rate_limit_splitted.length == 2 window_quota = rate_limit_splitted[0].to_i window_size = rate_limit_splitted[1].to_i end end rate_limit_modifier = configuration["rateLimitModifier"] || 5 window_quota_ns = Utils.milliseconds_to_nanoseconds window_quota window_size_ns = Utils.milliseconds_to_nanoseconds window_size AugRateLimiter.new window_quota_ns, window_size_ns, rate_limit_modifier end