Class: Ring::SQA::AnalyzeBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/ring/sqa/analyzer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nodes_count, max_size = CFG.analyzer.size, median_of = CFG.analyzer.median_of) ⇒ AnalyzeBuffer

Returns a new instance of AnalyzeBuffer.



55
56
57
58
59
60
61
# 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

Instance Attribute Details

#arrayObject (readonly)

Returns the value of attribute array.



54
55
56
# File 'lib/ring/sqa/analyzer.rb', line 54

def array
  @array
end

Instance Method Details

#exceed_median?(tolerance = CFG.analyzer.tolerance) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
73
74
# 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_nodesObject



78
79
80
81
# 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

#medianObject



66
67
68
69
# File 'lib/ring/sqa/analyzer.rb', line 66

def median
  last   = @median_of-1
  node_count[0..last].sort[last/2]
end

#node_countObject



75
76
77
# File 'lib/ring/sqa/analyzer.rb', line 75

def node_count
  @array.map { |nodes| nodes.size }
end

#push(e) ⇒ Object



62
63
64
65
# File 'lib/ring/sqa/analyzer.rb', line 62

def push e
  @array.shift
  @array.push e
end