class Toxiproxy::ToxicCollection

Attributes

proxies[R]
toxics[RW]

Public Class Methods

new(proxies) click to toggle source
# File lib/toxiproxy/toxic_collection.rb, line 10
def initialize(proxies)
  @proxies = proxies
  @toxics = []
end

Public Instance Methods

apply() { || ... } click to toggle source
# File lib/toxiproxy/toxic_collection.rb, line 15
def apply(&block)
  names = toxics.group_by { |t| [t.name, t.proxy.name] }
  dups  = names.values.select { |toxics| toxics.length > 1 }
  if !dups.empty?
    raise ArgumentError, "There are two toxics with the name #{dups.first[0]} for proxy #{dups.first[1]}, please override the default name (<type>_<direction>)"
  end

  begin
    @toxics.each(&:save)
    yield
  ensure
    @toxics.each(&:destroy)
  end
end
downstream(type, attrs = {}) click to toggle source
# File lib/toxiproxy/toxic_collection.rb, line 44
def downstream(type, attrs = {})
  proxies.each do |proxy|
    toxics << Toxic.new(
      name: attrs.delete('name') || attrs.delete(:name),
      type: type,
      proxy: proxy,
      stream: :downstream,
      toxicity: attrs.delete('toxicitiy') || attrs.delete(:toxicity),
      attributes: attrs
    )
  end
  self
end
Also aliased as: toxic, toxicate
toxic(type, attrs = {})
Alias for: downstream
toxicate(type, attrs = {})
Alias for: downstream
upstream(type, attrs = {}) click to toggle source
# File lib/toxiproxy/toxic_collection.rb, line 30
def upstream(type, attrs = {})
  proxies.each do |proxy|
    toxics << Toxic.new(
      name: attrs.delete('name') || attrs.delete(:name),
      type: type,
      proxy: proxy,
      stream: :upstream,
      toxicity: attrs.delete('toxicitiy') || attrs.delete(:toxicity),
      attributes: attrs
    )
  end
  self
end