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



46
47
48
49
50
51
52
# File 'lib/ring/sqa/analyzer.rb', line 46

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.



45
46
47
# File 'lib/ring/sqa/analyzer.rb', line 45

def array
  @array
end

Instance Method Details

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



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

def exceed_median? tolerance=CFG.analyzer.tolerance
  violate = (median+1)*tolerance
  node_count[@median_of..-1].all? { |e| e > violate }
end

#exceeding_nodesObject



68
69
70
71
# File 'lib/ring/sqa/analyzer.rb', line 68

def exceeding_nodes
  exceed = @array[@median_of..-1].inject :&
  exceed - @array[0..@median_of-1].flatten.uniq
end

#medianObject



57
58
59
60
# File 'lib/ring/sqa/analyzer.rb', line 57

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

#node_countObject



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

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

#push(e) ⇒ Object



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

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