def test_delete_sensor(self): """ Test Sensor object deleting. """ system_data = self._create_sensors() number_sensor_alerts = 3 for i in range(len(self.sensors)): for j in range(number_sensor_alerts): temp_sensor_alert = ManagerObjSensorAlert() temp_sensor_alert.sensorId = self.sensors[i % len( self.sensors)].sensorId temp_sensor_alert.state = j % 2 temp_sensor_alert.alertLevels = list( self.sensors[i % len(self.sensors)].alertLevels) temp_sensor_alert.hasOptionalData = False temp_sensor_alert.optionalData = None temp_sensor_alert.changeState = (j % 2) == 0 temp_sensor_alert.hasLatestData = False temp_sensor_alert.dataType = SensorDataType.NONE temp_sensor_alert.timeReceived = j system_data.add_sensor_alert(temp_sensor_alert) idx = 0 for sensor in system_data.get_sensors_list(): system_data.delete_sensor_by_id(sensor.sensorId) if not sensor.is_deleted(): self.fail("Sensor object not marked as deleted.") for stored_sensor in system_data.get_sensors_list(): if stored_sensor.is_deleted(): self.fail("Stored Sensor object marked as deleted.") if sensor.sensorId == stored_sensor.sensorId: self.fail( "Store still contains Sensor with id that was deleted." ) if ((len(self.sensors) - (idx + 1)) * number_sensor_alerts) != len( system_data.get_sensor_alerts_list()): self.fail("Wrong number of Sensor Alerts remaining stored.") for sensor_alert in system_data.get_sensor_alerts_list(): if sensor_alert.sensorId == sensor.sensorId: self.fail( "Sensor Alerts corresponding to Sensor object not deleted." ) idx += 1
def _invalid_alert_level_missing(self, system_data: SystemData): # Test non-existing alert level. sensor_alert = ManagerObjSensorAlert() sensor_alert.sensorId = self.sensors[0].sensorId sensor_alert.state = 0 sensor_alert.alertLevels = [99] sensor_alert.hasOptionalData = False sensor_alert.optionalData = None sensor_alert.changeState = True sensor_alert.hasLatestData = False sensor_alert.dataType = SensorDataType.NONE sensor_alert.timeReceived = 0 is_exception = False try: system_data.add_sensor_alert(sensor_alert) except ValueError: is_exception = True if not is_exception: self.fail("Exception because of wrong node type expected.")
def _invalid_wrong_data_type(self, system_data: SystemData): # Test data type mismatch. sensor_alert = ManagerObjSensorAlert() sensor_alert.sensorId = self.sensors[0].sensorId sensor_alert.state = 0 sensor_alert.alertLevels = [self.sensors[0].alertLevels[0]] sensor_alert.hasOptionalData = False sensor_alert.optionalData = None sensor_alert.changeState = True sensor_alert.hasLatestData = False sensor_alert.dataType = SensorDataType.INT sensor_alert.sensorData = 0 sensor_alert.timeReceived = 0 is_exception = False try: system_data.add_sensor_alert(sensor_alert) except ValueError: is_exception = True if not is_exception: self.fail("Exception because of wrong node type expected.")
def test_add_sensor_alert(self): """ Test Sensor Alert object adding. """ system_data = self._create_sensors() # Create objects that should be added. new_sensor_alerts = [] for i in range(len(self.sensors)): temp_sensor_alert = ManagerObjSensorAlert() temp_sensor_alert.sensorId = self.sensors[i % len(self.sensors)].sensorId temp_sensor_alert.state = i % 2 temp_sensor_alert.alertLevels = list(self.sensors[i % len(self.sensors)].alertLevels) temp_sensor_alert.hasOptionalData = False temp_sensor_alert.optionalData = None temp_sensor_alert.changeState = (i % 2) == 0 temp_sensor_alert.hasLatestData = False temp_sensor_alert.dataType = SensorDataType.NONE temp_sensor_alert.timeReceived = i + 5 new_sensor_alerts.append(temp_sensor_alert) for i in range(len(new_sensor_alerts)): # Add new object to store. temp_sensor_alert = new_sensor_alerts[i] system_data.add_sensor_alert(temp_sensor_alert) if temp_sensor_alert.internal_state != InternalState.STORED: self.fail("Sensor Alert object not stored in storage.") stored_sensor_alerts = system_data.get_sensor_alerts_list() if len(stored_sensor_alerts) != (i + 1): self.fail("Wrong number of objects stored.") latest_received = -1 for stored_sensor_alerts in stored_sensor_alerts: if latest_received > stored_sensor_alerts.timeReceived: self.fail("Sensor Alerts not stored in correct order.")
def test_delete_sensor_alerts(self): """ Test Sensor Alert object deleting. """ number_sensor_alerts = 10 system_data = self._create_sensors() # Create objects. new_sensor_alerts = [] for i in range(number_sensor_alerts): temp_sensor_alert = ManagerObjSensorAlert() temp_sensor_alert.sensorId = self.sensors[i % len(self.sensors)].sensorId temp_sensor_alert.state = i % 2 temp_sensor_alert.alertLevels = list(self.sensors[i % len(self.sensors)].alertLevels) temp_sensor_alert.hasOptionalData = False temp_sensor_alert.optionalData = None temp_sensor_alert.changeState = (i % 2) == 0 temp_sensor_alert.hasLatestData = False temp_sensor_alert.dataType = SensorDataType.NONE temp_sensor_alert.timeReceived = i new_sensor_alerts.append(temp_sensor_alert) system_data.add_sensor_alert(temp_sensor_alert) for i in range(int(number_sensor_alerts / 2), (number_sensor_alerts + 1)): system_data.delete_sensor_alerts_received_before(i) for j in range(i): if not new_sensor_alerts[j].is_deleted(): self.fail("Sensor Alert object not marked as deleted.") for j in range(i, number_sensor_alerts): if new_sensor_alerts[j].is_deleted(): self.fail("Sensor Alert object marked as deleted.") for sensor_alert in system_data.get_sensor_alerts_list(): if sensor_alert.timeReceived < i: self.fail("Sensor Alert object still stored that is younger than deleted timestamp.")
def _invalid_sensor_missing_alert_level(self, system_data: SystemData): # Test sensor does not handle alert level. sensor_alert = ManagerObjSensorAlert() sensor_alert.sensorId = self.sensors[0].sensorId sensor_alert.state = 0 sensor_alert.alertLevels = [] for alert_level in self.alert_levels: if alert_level.level not in self.sensors[0].alertLevels: sensor_alert.alertLevels.append(alert_level.level) sensor_alert.hasOptionalData = False sensor_alert.optionalData = None sensor_alert.changeState = True sensor_alert.hasLatestData = False sensor_alert.dataType = SensorDataType.NONE sensor_alert.timeReceived = 0 is_exception = False try: system_data.add_sensor_alert(sensor_alert) except ValueError: is_exception = True if not is_exception: self.fail("Exception because of wrong node type expected.")
def test_sensor_alert(self): """ Test Sensor Alert state change. """ system_data = self._create_sensors() for i in range(len(self.sensors)): curr_sensor = self.sensors[i] stored_sensor = system_data.get_sensor_by_id(curr_sensor.sensorId) if (stored_sensor.clientSensorId != curr_sensor.clientSensorId or stored_sensor.description != curr_sensor.description or stored_sensor.alertDelay != curr_sensor.alertDelay or stored_sensor.lastStateUpdated != curr_sensor.lastStateUpdated or stored_sensor.state != curr_sensor.state or stored_sensor.dataType != curr_sensor.dataType or stored_sensor.data != curr_sensor.data or any( map(lambda x: x not in curr_sensor.alertLevels, stored_sensor.alertLevels)) or any( map(lambda x: x not in stored_sensor.alertLevels, curr_sensor.alertLevels))): self.fail( "Stored object does not have initially correct content.") sensor_alert = ManagerObjSensorAlert() sensor_alert.sensorId = curr_sensor.sensorId sensor_alert.state = 1 - curr_sensor.state sensor_alert.alertLevels = curr_sensor.alertLevels sensor_alert.hasOptionalData = False sensor_alert.optionalData = None sensor_alert.changeState = True sensor_alert.hasLatestData = False sensor_alert.dataType = SensorDataType.NONE sensor_alert.timeReceived = 0 system_data.add_sensor_alert(sensor_alert) if (stored_sensor.clientSensorId != curr_sensor.clientSensorId or stored_sensor.description != curr_sensor.description or stored_sensor.alertDelay != curr_sensor.alertDelay or stored_sensor.lastStateUpdated != curr_sensor.lastStateUpdated or stored_sensor.dataType != curr_sensor.dataType or stored_sensor.data != curr_sensor.data or any( map(lambda x: x not in curr_sensor.alertLevels, stored_sensor.alertLevels)) or any( map(lambda x: x not in stored_sensor.alertLevels, curr_sensor.alertLevels))): self.fail( "Stored object does not have correct content after adding Sensor Alert." ) if stored_sensor.state == curr_sensor.state: self.fail("State of Sensor object was not updated.") # Check nothing has changed in other Sensor objects # (update state of current sensor manually for this check). curr_sensor.state = stored_sensor.state for gt_sensor in self.sensors: found = False for stored_sensor in system_data.get_sensors_list(): if stored_sensor.sensorId == gt_sensor.sensorId: found = True if (stored_sensor.clientSensorId != gt_sensor.clientSensorId or stored_sensor.description != gt_sensor.description or stored_sensor.alertDelay != gt_sensor.alertDelay or stored_sensor.lastStateUpdated != gt_sensor.lastStateUpdated or stored_sensor.state != gt_sensor.state or stored_sensor.dataType != gt_sensor.dataType or stored_sensor.data != gt_sensor.data or any( map( lambda x: x not in gt_sensor. alertLevels, stored_sensor.alertLevels)) or any( map( lambda x: x not in stored_sensor. alertLevels, gt_sensor.alertLevels))): self.fail("Sensor content has changed.") break if not found: self.fail( "Not able to find Sensor object corresponding to created sensors." ) if len(self.sensors) != len(system_data.get_sensors_list()): self.fail( "Number of stored Sensor objects differ from created ones." )