def on_host_power_state_changed(self, sender: Host) -> None: if sender.id in self.__last_pstate_id and sender.pstate and self.__last_pstate_id[ sender.id] != sender.pstate.id: assert sender.pstate assert self.simulator self.__last_pstate_id[sender.id] = sender.pstate.id if sender.pstate.type == PowerStateType.SWITCHING_OFF: new_pstate_id = -2 elif sender.pstate.type == PowerStateType.SWITCHING_ON: new_pstate_id = -1 else: new_pstate_id = sender.pstate.id if self.__info['time'][ -1] == self.simulator.current_time and self.__info[ 'new_pstate'][-1] == new_pstate_id: # Update last record procset = ProcSet.from_str(self.__info['machine_id'][-1]) procset.update(ProcSet(sender.id)) self.__info['machine_id'][-1] = str(procset) else: # Record new state self.__info['time'].append(self.simulator.current_time) self.__info['machine_id'].append(str(sender.id)) self.__info['new_pstate'].append(new_pstate_id)
def __init__(self, timestamp: float, data: dict) -> None: super().__init__(timestamp, BatsimEventType.NOTIFY) self.__notify_type = BatsimNotifyType[data["type"].upper()] self.__resources: Optional[Sequence[int]] = None external_events = (BatsimNotifyType.EVENT_MACHINE_AVAILABLE, BatsimNotifyType.EVENT_MACHINE_UNAVAILABLE) if self.__notify_type in external_events: self.__resources = list(ProcSet.from_str(data["resources"]))
def test_invalid_string(self, string): pattern = r'^Invalid interval format, parsed string is: \'{}\'$'.format( string) with pytest.raises(ValueError, match=pattern): ProcSet.from_str(string)
def test_nostring(self): with pytest.raises( TypeError, match=r'^from_str\(\) argument 2 must be str, not int$'): ProcSet.from_str(42)
def test_disjoint_ii(self): pset = ProcSet.from_str('0-1 2-3') assert pset == ProcSet(ProcInt(0, 3))
def test_disjoint_ip(self): pset = ProcSet.from_str('0-1 2') assert pset == ProcSet(ProcInt(0, 1), 2)
def test_disjoint_pp(self): pset = ProcSet.from_str('1 2') assert pset == ProcSet(1, 2)
def test_contiguous(self): pset = ProcSet.from_str('0-3') assert pset == ProcSet(ProcInt(0, 3))
def test_single_point(self): pset = ProcSet.from_str('0') assert pset == ProcSet(0)
def test_empty(self): pset = ProcSet.from_str('') assert pset == ProcSet()
def string_to_interval_set(string, separator=" "): """[deprecated] Transform a string to an intervals' set.""" return list(_ProcSet.from_str(string, outsep=separator).intervals())
def __init__(self, timestamp: float, data: dict) -> None: super().__init__(timestamp, BatsimEventType.RESOURCE_STATE_CHANGED) self.__resources = list(ProcSet.from_str(data["resources"])) self.__state = int(data["state"])
def __init__(self, timestamp: float, data: dict) -> None: super().__init__(timestamp, BatsimEventType.JOB_COMPLETED) self.__job_id = str(data["job_id"]) self.__job_state = JobState[data["job_state"]] self.__return_code = int(data["return_code"]) self.__alloc = list(ProcSet.from_str(data["alloc"]))