예제 #1
0
def add_reading(sensor_type):
    """creates reading object and add to csv"""
    reading = request.get_json()
    print(reading)
    print(json_to_list(reading))
    sensor_input = json_to_list(reading)

    datetime_object = datetime.strptime(sensor_input[0],
                                        "%Y-%m-%d %H:%M:%S.%f")
    sensor_input[0] = datetime_object

    if sensor_type == "temperature":
        sensor = TemperatureReadingManager("data/temperature_results.csv")
        temp_read = TemperatureReading(*sensor_input)
        print(temp_read.get_timestamp())
        sensor.add_reading(temp_read)
    elif sensor_type == "pressure":
        sensor = PressureReadingManager("data/pressure_results2.csv")
        temp_read = PressureReading(*sensor_input)
        print(temp_read.get_timestamp())
        sensor.add_reading(temp_read)

    response = app.response_class(response=reading,
                                  status=200,
                                  mimetype='text/plain')

    return response
 def setUp(self):
     """ Called once, before any tests """
     conn = sqlite3.connect("test_temp_reading.sqlite")
     c = conn.cursor()
     c.execute('''
               CREATE TABLE temperature_reading
               (id INTEGER PRIMARY KEY ASC,
                timestamp DATETIME NOT NULL,
                model VARCHAR(250) NOT NULL,
                min_reading NUMBER NOT NULL,
                avg_reading NUMBER NOT NULL,
                max_reading NUMBER NOT NULL,
                status VARCHAR(250) NOT NULL
               )
               ''')
     conn.commit()
     conn.close()
     self.test_temp_manager = TemperatureReadingManager(
         TestTemperatureReadingManager.DATABASE_NAME)
     test_temp_reading = TemperatureReading(
         datetime.datetime.strptime(
             TestTemperatureReadingManager.TEST_TIMESTAMP,
             TestTemperatureReadingManager.DATE_FORMAT),
         TestTemperatureReadingManager.TEST_MODEL,
         TestTemperatureReadingManager.TEST_MIN_VALUE,
         TestTemperatureReadingManager.TEST_AVG_VALUE,
         TestTemperatureReadingManager.TEST_MAX_VALUE,
         TestTemperatureReadingManager.TEST_STATUS)
     self.test_temp_manager.add_reading(test_temp_reading)
     self.logPoint()
 def test_update_reading_valid(self):
     """ 030A - Valid Update Reading """
     new_reading = TemperatureReading(
         datetime.datetime.strptime("2018-09-23 19:59", "%Y-%m-%d %H:%M"),
         "ABC Sensor New Temp M100", float(21.000), float(22.000),
         float(23.000), "OK")
     updated_reading = self.test_temp_manager.update_reading(1, new_reading)
     self.assertTrue(updated_reading)
    def setUp(self, test_readings=TEST_TEMP_READINGS):
        """ Creates fixtures before each test """

        self.logPoint()
        # This mocks the csv reader to return our test readings
        csv.reader = MagicMock(return_value=test_readings)
        self.reading_manager = TemperatureReadingManager(
            "temp_testresults.csv")

        reading_datetime = datetime.datetime.strptime(
            "2018-09-23 19:56:01.345", "%Y-%m-%d %H:%M:%S.%f")
        self.reading = TemperatureReading(reading_datetime, 1,
                                          "ABC Sensor Temp M301A", 20.152,
                                          21.367, 22.005, "OK")
        self.reading_update = TemperatureReading(reading_datetime, 1,
                                                 "ABC Sensor Temp M301A",
                                                 20.152, 21.367, 22.005,
                                                 "UPDATED")
    def test_update_reading_not_in_list_fail(self):
        """ 030C - Doesn't update reading if not in the list """

        reading_datetime = datetime.datetime.strptime(
            "2018-09-23 19:56:01.345", "%Y-%m-%d %H:%M:%S.%f")
        reading_update_fail = TemperatureReading(reading_datetime, 0,
                                                 "ABC Sensor Temp M301A",
                                                 20.152, 21.367, 22.005,
                                                 "UPDATED")
        self.assertEqual(
            self.reading_manager.update_reading(reading_update_fail), 0,
            "Must return 0 if seq num is not in the list")
 def test_update_reading_invalid(self):
     """ 030B - Invalid Update Reading """
     new_reading = TemperatureReading(
         datetime.datetime.strptime("2018-09-23 19:59", "%Y-%m-%d %H:%M"),
         "ABC Sensor New Temp M100", float(21.000), float(22.000),
         float(23.000), "OK")
     with self.assertRaises(ValueError):
         self.test_temp_manager.update_reading(None, None)
         self.test_temp_manager.update_reading(1, None)
         self.test_temp_manager.update_reading(None, new_reading)
         self.test_temp_manager.update_reading("", "")
         self.test_temp_manager.update_reading(1, "")
         self.test_temp_manager.update_reading("", new_reading)
 def test_add_reading_valid(self):
     """ 020A - Valid Add Reading """
     new_reading = TemperatureReading(
         datetime.datetime.strptime(
             TestTemperatureReadingManager.TEST_TIMESTAMP,
             TestTemperatureReadingManager.DATE_FORMAT),
         TestTemperatureReadingManager.TEST_MODEL,
         TestTemperatureReadingManager.TEST_MIN_VALUE,
         TestTemperatureReadingManager.TEST_AVG_VALUE,
         TestTemperatureReadingManager.TEST_MAX_VALUE,
         TestTemperatureReadingManager.TEST_STATUS)
     added_reading = self.test_temp_manager.add_reading(new_reading)
     self.assertEqual(new_reading, added_reading)
     rows = len(self.test_temp_manager.get_all_readings())
     self.assertEqual(rows, 2)
    def _load_reading_row(self, row):
        """ Loads list into a TemperatureReading object """
        print("row is", row)
        reading_datetime = datetime.datetime.strptime(
            row[TemperatureReadingManager.DATETIME_INDEX],
            "%Y-%m-%d %H:%M:%S.%f")

        temp_reading = TemperatureReading(
            reading_datetime,
            int(row[TemperatureReadingManager.SEQ_NUM_INDEX]),
            row[TemperatureReadingManager.SENSOR_NAME_INDEX],
            float(row[TemperatureReadingManager.LOW_INDEX]),
            float(row[TemperatureReadingManager.AVG_INDEX]),
            float(row[TemperatureReadingManager.HIGH_INDEX]),
            row[TemperatureReadingManager.STATUS_INDEX])
        print("temp reading is", temp_reading)
        return temp_reading
    def _load_reading_row(self, row):
        """ Loads list into a TemperatureReading object """

        try:
            reading_datetime = datetime.datetime.strptime(
                row[TemperatureReadingManager.TIMESTAMP_INDEX],
                "%Y-%m-%d %H:%M:%S.%f")
            temp_reading = TemperatureReading(
                reading_datetime,
                int(row[TemperatureReadingManager.SEQ_NUM_INDEX]),
                row[TemperatureReadingManager.SENSOR_MODEL_INDEX],
                float(row[TemperatureReadingManager.MIN_INDEX]),
                float(row[TemperatureReadingManager.AVG_INDEX]),
                float(row[TemperatureReadingManager.MAX_INDEX]),
                row[TemperatureReadingManager.STATUS_INDEX])
        except:
            raise ValueError("Invalid data entry")

        return temp_reading
예제 #10
0
    def add_log_message(self, model, min_reading, avg_reading, max_reading,
                        status):
        """ Add a log message to the database """

        TemperatureReadingManager._validate_input(
            TemperatureReadingManager.NAME, model)
        TemperatureReadingManager._validate_input(
            TemperatureReadingManager.MIN_READING, min_reading)
        TemperatureReadingManager._validate_input(
            TemperatureReadingManager.AVERAGE_READING, avg_reading)
        TemperatureReadingManager._validate_input(
            TemperatureReadingManager.MAX_READING, max_reading)
        TemperatureReadingManager._validate_input(
            TemperatureReadingManager.READING_STATUS, status)

        session = self.DBSession()
        new_log_message = TemperatureReading(model, min_reading, avg_reading,
                                             max_reading, status)
        session.add(new_log_message)
        session.commit()
예제 #11
0
def create_reading(sensor_type, json_reading, seq_num=0):
    """ Returns reading if valid input, None otherwise """

    if sensor_type == "temperature":    
        try:
            reading = TemperatureReading(datetime.datetime.strptime(json_reading["timestamp"], "%Y-%m-%d %H:%M:%S.%f"),
                            seq_num, json_reading["model"], float(json_reading["min"]), float(json_reading["avg"]), 
                            float(json_reading["max"]), json_reading["status"])
        except:
            return None

    if sensor_type == "pressure":
        try:
            reading = PressureReading(datetime.datetime.strptime(json_reading["timestamp"], "%Y-%m-%d %H:%M"),
                        seq_num, json_reading["model"], float(json_reading["min"]), float(json_reading["avg"]),
                        float(json_reading["max"]), json_reading["status"])
        except:
            return None
        
    return reading