def test_probability_distribution_source(self): processing_times = selection(self.cols['Event_Name'], lambda x: x == Constants.NEXT_ARRIVAL, self.big_matrix) processing_times = transformCols( [self.cols['Event_Scheduled'], self.cols['Event-Time']], self.cols['Current_Time'], lambda x, y: y - x, processing_times) processing_times = groupBy([self.cols['Shift']], [ self.cols['Current_Time'], self.cols['Current_Time'], self.cols['Current_Time'], self.cols['Current_Time'] ], [countA, sumA, minA, maxA], processing_times, True) processing_times = transformCols([1, 2], 1, lambda x, y: y / x, processing_times) # average processing_times = projection([0, 1, 3, 4], processing_times) self.assertEquals(len(processing_times), 1, "There should not be any shifts") shift3 = processing_times[0] self.assertGreater(shift3[2], 0, "The time should be greater or equal") random = Random() self.assertTrue( abs(shift3[2] - random.LAMBDA) < 50, "The lambda should be almost equal")
def scheduleEndService(self): operationType = self.hostedEntity.getOperationType() rand = Random() serviceIncrement = rand.processorIncrement(operationType) endServiceEvent = Event( self, # eventCreator Constants.END_SERVICE, # eventName self.core.currentTime, # eventScheduled self.core.currentTime + serviceIncrement # eventTime ) return endServiceEvent
def scheduleNextArrival(self): shift = self.core.getCurrentShift() rand = Random() arrivalIncrement = rand.sourceIncrement(shift) arrivalEvent = Event( self, # eventCreator Constants.NEXT_ARRIVAL, # eventName self.core.currentTime, # eventSheduled self.core.currentTime + arrivalIncrement # eventTime ) return arrivalEvent
def __init__(self, parameters=None): if parameters is None: self.parameters = Parameters() else: self.parameters = parameters num_sources = Constants.DEFAULT_SOURCES num_processors = self.parameters.num_processors # Attributes initialization self.processors = [] self.sources = [] self.eventsList = PriorityQueue(0) # maxsize = 0 (infinite) self.previousTime = Constants.SIMULATION_INITIAL_TIME self.currentTime = Constants.SIMULATION_INITIAL_TIME self.idleProcessors = 0 self.serviceProcessors = 0 self.entitiesSystem = 0 self.service_per_shift = [] self.service_per_total = [] self.shift_durations = self.parameters.getParameters()[1] self.shift_next_time = self.shift_durations[0] self.shift_next_index = 1 # Instance creation self.queue = Queue(Constants.SLOTS_BUFFER) self.parking = Queue(Constants.SLOTS_QUEUE) self.random = Random() for _ in range(0, num_processors): self.processors.append(Processor(self)) for _ in range(0, num_sources): self.sources.append(Source(self)) # Dependency injection for source in self.sources: source.addOutput(self.queue) # source -> queue self.queue.addOutput(self.parking) # queue -> parking self.parking.addInput(self.queue) # parking <- queue for processor in self.processors: self.parking.addOutput(processor) # parking -> processor processor.addInput(self.parking) # processor <- parking self.output_file = None self.numberOfIdleProcessors = num_processors
def setUp(self): self.parametersObj = Parameters() self.parametersObj.WITH_SHIFTS = True rand = Random() rand.initialization()
def setWithShifts(self, value): param = Parameters() param.WITH_SHIFTS = value self.randObj = Random() self.randObj.initialization()
def test_ensure_there_s_one_instance(self): rand = Random() assert rand is self.randObj
def setUp(self): param = Parameters() param.WITH_SHIFTS = True self.randObj = Random() self.randObj.initialization() self.coreObj = Core()
def setWithShifts(cls, value): param = Parameters() param.WITH_SHIFTS = value cls.randObj = Random() cls.randObj.initialization()