def test_index_timestamp_reverse_order(self, sqlalchemy): service = SensorReadingPersistenceService() old = DigitalSensorReading() old.name = 'testsensor' old.value = True old.timestamp = datetime.now() new = DigitalSensorReading() new.name = 'testsensor' new.value = True new.timestamp = datetime.now() service.create(old) service.create(new) client = web.app.test_client() rv = client.get('/') rv_str = rv.data.decode('utf-8') matches = re.findall('\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d\d\d\d', rv_str) assert matches[0] == str(new.timestamp) assert matches[1] == str(old.timestamp)
def test_index_timestamp_reverse_order(self, sqlalchemy): service = SensorReadingPersistenceService() old = DigitalSensorReading() old.name = "testsensor" old.value = True old.timestamp = datetime.now() new = DigitalSensorReading() new.name = "testsensor" new.value = True new.timestamp = datetime.now() service.create(old) service.create(new) client = web.app.test_client() rv = client.get("/") rv_str = rv.data.decode("utf-8") matches = re.findall("\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d\d\d\d", rv_str) assert matches[0] == str(new.timestamp) assert matches[1] == str(old.timestamp)
def test_digital_sensor_reading(self, sqlalchemy): service = SensorReadingPersistenceService() reading = DigitalSensorReading() service.create(reading) assert service.get(reading.id).id == reading.id
def test_all_reversed_bad_paging(self, sqlalchemy): service = SensorReadingPersistenceService() older = AnalogSensorReading() older.timestamp = datetime.now() newer = DigitalSensorReading() newer.timestamp = datetime.now() service.create(older) service.create(newer) paged = service.all_reversed(1000, 1) assert paged.elements == [] paged = service.all_reversed(-1, 1) assert paged.elements == []
def _read_digital_sensor(self, digital_sensor): value = digital_sensor.read_digital_sensor() digital_reading = DigitalSensorReading() digital_reading.name = digital_sensor.sensor_name digital_reading.value = value digital_reading.timestamp = datetime.now() self.sensor_persistence.create(digital_reading) if value != digital_sensor.normal_value: logger.info(digital_reading.name + ' Digital Sensor Value: ' + str(digital_reading.value) + ' - Out of Normal Range') self._send_notification(digital_sensor, digital_reading) else: logger.info(digital_reading.name + ' Digital Sensor Value: ' + str(digital_reading.value) + ' - Within Normal Range')
def test_index_digital_sensor_reading(self, sqlalchemy): service = SensorReadingPersistenceService() timestamp = datetime.now() reading = DigitalSensorReading() reading.name = "testsensor" reading.value = True reading.timestamp = timestamp service.create(reading) client = web.app.test_client() rv = client.get("/") assert b"testsensor" in rv.data assert b"Digital" in rv.data assert b"True" in rv.data assert str.encode(str(timestamp)) in rv.data
def test_index_digital_sensor_reading(self, sqlalchemy): service = SensorReadingPersistenceService() timestamp = datetime.now() reading = DigitalSensorReading() reading.name = 'testsensor' reading.value = True reading.timestamp = timestamp service.create(reading) client = web.app.test_client() rv = client.get('/') assert b'testsensor' in rv.data assert b'Digital' in rv.data assert b'True' in rv.data assert str.encode(str(timestamp)) in rv.data
def test_polymorphic(self, sqlalchemy): service = SensorReadingPersistenceService() reading = SensorReading() analog = AnalogSensorReading() digital = DigitalSensorReading() service.create(reading) service.create(analog) service.create(digital) assert len(service.all()) == 3
def test_all_reversed(self, sqlalchemy): service = SensorReadingPersistenceService() older = AnalogSensorReading() older.timestamp = datetime.now() newer = DigitalSensorReading() newer.timestamp = datetime.now() service.create(older) service.create(newer) paged = service.all_reversed(0, 100) assert paged.page_number == 0 assert paged.page_size == 100 assert paged.total_pages == 1 readings = paged.elements assert readings[0].timestamp == newer.timestamp assert readings[1].timestamp == older.timestamp assert len(readings) == 2
def test_get_newest_notification_excludes_other_sensors(self, sqlalchemy): reading_service = SensorReadingPersistenceService() notification_service = NotificationPersistenceService() included_sensor = DigitalSensorReading() included_sensor.name = 'included' reading_service.create(included_sensor) excluded_sensor = DigitalSensorReading() excluded_sensor.name = 'excluded' reading_service.create(excluded_sensor) excluded_notification = NotificationEvent() excluded_notification.sensor_id = excluded_sensor.id excluded_notification.timestamp = datetime(2016, 1, 1) notification_service.create(excluded_notification) included_notification = NotificationEvent() included_notification.sensor_id = included_sensor.id included_notification.timestamp = datetime(2015, 1, 1) notification_service.create(included_notification) assert notification_service.get_newest_notification('included') \ .timestamp == included_notification.timestamp