class Ring::SQA::AnalyzeBuffer

Attributes

array[R]

Public Class Methods

new(nodes_count, max_size=CFG.analyzer.size, median_of=CFG.analyzer.median_of) click to toggle source
# File lib/ring/sqa/analyzer.rb, line 55
def initialize nodes_count, max_size=CFG.analyzer.size, median_of=CFG.analyzer.median_of
  @max_size   = max_size
  @median_of  = median_of
  nodes_count = CFG.fake? ? 0 : nodes_count
  init_nodes  = Array.new nodes_count * 2, ''
  @array      = Array.new max_size, init_nodes
end

Public Instance Methods

exceed_median?(tolerance=CFG.analyzer.tolerance) click to toggle source
# File lib/ring/sqa/analyzer.rb, line 70
def exceed_median? tolerance=CFG.analyzer.tolerance
  violate_relative = (median+1)*tolerance.relative
  violate_absolute = (median+1)+tolerance.absolute
  node_count[@median_of..-1].all? { |e| e > violate_relative && e > violate_absolute }
end
exceeding_nodes() click to toggle source
# File lib/ring/sqa/analyzer.rb, line 78
def exceeding_nodes
  exceed = @array[@median_of..-1].inject :&
  exceed - @array[0..@median_of-1].flatten.uniq
end
median() click to toggle source
# File lib/ring/sqa/analyzer.rb, line 66
def median
  last   = @median_of-1
  node_count[0..last].sort[last/2]
end
node_count() click to toggle source
# File lib/ring/sqa/analyzer.rb, line 75
def node_count
  @array.map { |nodes| nodes.size }
end
push(e) click to toggle source
# File lib/ring/sqa/analyzer.rb, line 62
def push e
  @array.shift
  @array.push e
end