Create a base class for weighting
This class should contain methods, which are used in more than one weighting class. At the moment it contains the bucket handling.
This commit is contained in:
parent
7c7c554d83
commit
a80c46c5c9
|
@ -0,0 +1,57 @@
|
|||
module Rubella
|
||||
module Weighting
|
||||
|
||||
|
||||
# The Rubella::Weighting object processes the given input data to an valid
|
||||
# output processable Array.
|
||||
# These arrays contain a subarray for every unit of time. And these Array
|
||||
# contain the buckets within the values for the output objects.
|
||||
# The Weighting of the print intensitiy is done here, so that the output
|
||||
# objects job is simply to print the stuff.
|
||||
#
|
||||
class Base
|
||||
attr_reader :buckets
|
||||
# :steps
|
||||
|
||||
# Constructor
|
||||
# Creates a new Rubella::Weighting::xy object.
|
||||
#
|
||||
# @param buckets int must be one of 1, 2, 5, 10, 20, 50 default is 10
|
||||
# @return Rubella::Weighting::PerValue
|
||||
# @raise ArgumentError
|
||||
#
|
||||
def initialize(buckets = 10)
|
||||
self.buckets = buckets
|
||||
end
|
||||
|
||||
# Sets the buckets, if the value is valid
|
||||
#
|
||||
# @param buckets int The amount of buckets
|
||||
# @raise ArgumentError
|
||||
#
|
||||
def buckets= buckets
|
||||
# Must be divideable by 100
|
||||
if([1, 2, 5, 10, 20, 50].index(buckets) == nil)
|
||||
raise ArgumentError, "Amount of buckets must be 1, 2, 5, 10, 20 or 50"
|
||||
end
|
||||
|
||||
@steps = 100/buckets
|
||||
@buckets = buckets
|
||||
end
|
||||
|
||||
# Creates a output readable list.
|
||||
# This list is Array within a subarrays, which contain the buckets for
|
||||
# every time value unit.
|
||||
#
|
||||
# @param input Rubella::Input An input object
|
||||
# @return Array
|
||||
#
|
||||
def parse input
|
||||
raise NotImplementedError "Please override 'parse' in your concrete "+
|
||||
"implementation"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
|
@ -1,30 +1,14 @@
|
|||
require "rubella/weighting/base"
|
||||
|
||||
module Rubella
|
||||
module Weighting
|
||||
|
||||
# The Rubella::Weighting object processes the given input data to an valid
|
||||
# output processable Array.
|
||||
# These arrays contain a subarray for every unit of time. And these Array
|
||||
# contain the buckets within the values for the output objects.
|
||||
# The Weighting of the print intensitiy is done here, so that the output
|
||||
# objects job is simply to print the stuff.
|
||||
#
|
||||
# The Rubella::Weighting::PerValue object weights every bucket set to 1 in
|
||||
# ammount. So if you have have for example four cores, every core is
|
||||
# weighted to 0.25 no matter how much the load of a single core is. It's
|
||||
# just a "as is" weighting.
|
||||
class PerValue
|
||||
attr_reader :buckets
|
||||
# :steps
|
||||
|
||||
# Constructor
|
||||
# Creates a new Rubella::Weighting::PerValue object.
|
||||
#
|
||||
# @param buckets int must be one of 1, 2, 5, 10, 20, 50 default is 10
|
||||
# @return Rubella::Weighting::PerValue
|
||||
# @raise ArgumentError
|
||||
def initialize(buckets = 10)
|
||||
self.buckets = buckets
|
||||
end
|
||||
#
|
||||
class PerValue < Base
|
||||
|
||||
# Creates a output readable list.
|
||||
# This list is Array within a subarrays, which contain the buckets for
|
||||
|
@ -57,20 +41,6 @@ module Rubella
|
|||
data_list
|
||||
end
|
||||
|
||||
# Sets the buckets, if the value is valid
|
||||
#
|
||||
# @param buckets int The amount of buckets
|
||||
# @raise ArgumentError
|
||||
def buckets= buckets
|
||||
# Must be divideable by 100
|
||||
if([1, 2, 5, 10, 20, 50].index(buckets) == nil)
|
||||
raise ArgumentError, "Amount of buckets must be 1, 2, 5, 10, 20 or 50"
|
||||
end
|
||||
|
||||
@steps = 100/buckets
|
||||
@buckets = buckets
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue