예제 #1
0
def main():
    '''display last 10 readings'''

    settings_file = os.path.abspath("settings.yaml")

    readingsdb = DataSource(settings_file=settings_file)

    for item in readingsdb.get_recent_readings():

        print(item)
예제 #2
0
class TestGasCloud:


    batcher = Batcher(TEST_SETTINGS)
    source = DataSource(TEST_SETTINGS)
    source.connect2db()

    def test_setup(self):
        '''check settings have been read'''
        assert self.batcher.settings['BATCH_MODE'] == "PASS"


    def test_get_gateway_key(self):

        assert self.batcher.get_gatewaykey() == "11794317e05a4cb3befb"

    def test_make_batch(self):

        json_data = json.dumps([{'1': 1, '2': '2'}])
        self.source.write_reading("TEST", temp=1.1, rh=2.2, raw_data=json_data)
        json_data = json.dumps([{'1': 2, '2': '3'}])
        self.source.write_reading("TEST", temp=1.2, rh=2.3, raw_data=json_data)

        key = self.batcher.make_batch()

        assert key == "11794317e05a4cb3befb"


    def test_quarantine_request(self):
        pass
    def test_upload_batch(self):
        pass
예제 #3
0
    def test_create_db_if_not_exists(self):

        if os.path.exists('./test_readings.db'):
            os.remove('./test_readings.db')

        new_source = DataSource(
            settings_file="test_settings/test_settings.yaml")
        new_source.connect2db()

        assert os.path.exists('./test_readings.db')

        # check no records
        sql = f'SELECT * FROM {new_source.db_table}'

        result = new_source.db.execute(sql)

        assert result.lastrowid == 0
예제 #4
0
class TestOPC:

    source = None
    readings1 = {'temp': 15.6, 'rh': 67.9, 'pm1': 5, 'pm25': 6, 'pm10': 3, 'raw_data':json.dumps({'bin1':5, 'bin2': 1})}
    gadget_id = "TEST"
    settings = {
        "GADGET_ID": "TST_001",
        "GASCLOUD_KEY": "DEMO",
        "UPLOAD_INTERVAL_SECS": 3600,  # how often batches are uploaded
        "LOGGING_INTERVAL_SECS": 300,   # how often data is collected from the device
        "DBNAME": "./test_readings.db",
        "DB_TABLE": "Readings",
    }

    def setup_method(self):
        #':memory:'
        self.source = DataSource(self.settings)
        self.source.connect2db()

    def teardown_method(self):
        self.source.db.close()


    def test_setup(self):
        '''check settings have been read'''
        assert self.source.settings['UPLOAD_INTERVAL_SECS'] == 3600
        os.remove('./test_readings.db')



    def test_add_one_reading(self):
        ''' '''

        # check readings record written
        self.source.write_reading(self.gadget_id,**self.readings1)


        rec = self.source.read_last(self.gadget_id)

        assert rec['gadget_id'] == "TEST"
        assert rec['temp'] == self.readings1['temp']
        assert rec['rh'] == self.readings1['rh']
        assert rec['raw_data'] == self.readings1['raw_data']
예제 #5
0
    def test_use_existing_db(self):

        # using the existing db, write one record
        assert os.path.exists('./test_readings.db')
        self.source.write_reading("TEST", temp=1, rh=2, raw_data="3")
        sql = f'SELECT * FROM {self.source.db_table}'
        result = self.source.db.execute(sql)
        assert result.lastrowid == 1

        # now close and reopen and make sure it is the same file

        new_source = DataSource(
            settings_file="test_settings/test_settings.yaml")
        new_source.connect2db()

        assert os.path.exists('./test_readings.db')
        sql = f'SELECT * FROM {self.source.db_table}'
        result = self.source.db.execute(sql)
        assert result.lastrowid == 1
예제 #6
0
    def test_pass_settings_as_dict(self):

        settings = {
            'DBNAME': 'different_readings.db',
            'DB_TABLE': 'OtherReadings',
            'GADGET_ID': "OTHER"
        }
        sauce = DataSource(settings)

        assert sauce.settings['DBNAME'] == 'different_readings.db'
        assert sauce.settings['DB_TABLE'] == 'OtherReadings'
        assert sauce.settings['GADGET_ID'] == 'OTHER'
예제 #7
0
    def test_settings_dict_overrides_files(self):

        settings = {
            'DBNAME': 'different_readings.db',
            'DB_TABLE': 'OtherReadings',
            'GADGET_ID': "OTHER"
        }
        sauce = DataSource(settings,
                           settings_file="./test_settings/test_settings.yaml")

        assert sauce.settings['DBNAME'] == 'different_readings.db'
        assert sauce.settings['DB_TABLE'] == 'OtherReadings'
        assert sauce.settings['GADGET_ID'] == 'OTHER'
예제 #8
0
 def setup_method(self):
     #':memory:'
     self.source = DataSource(self.settings)
     self.source.connect2db()
예제 #9
0
    def test_missing_settings_file(self):

        with pytest.raises(ValueError):
            sauce = DataSource(settings_file="pepper.yaml")
예제 #10
0
    def test_default_settings_file_used(self):

        sauce = DataSource()

        assert sauce.settings['DBNAME'] == 'default.db'
        assert sauce.settings['DB_TABLE'] == 'DefaultReadings'
예제 #11
0
 def setup_method(self):
     #':memory:'
     self.source = DataSource(TEST_SETTINGS)
     self.source.connect2db()
예제 #12
0
class TestDataSource:

    source = None

    def setup_method(self):
        #':memory:'
        self.source = DataSource(TEST_SETTINGS)
        self.source.connect2db()

    def teardown_method(self):
        self.source.db.close()

    def test_setup(self):
        '''check settings have been read'''
        assert self.source.settings['GADGET_ID'] == TEST_SETTINGS['GADGET_ID']
        os.remove('./test_readings.db')

    def test_pass_settings_as_dict(self):

        settings = {
            'DBNAME': 'different_readings.db',
            'DB_TABLE': 'OtherReadings',
            'GADGET_ID': "OTHER"
        }
        sauce = DataSource(settings)

        assert sauce.settings['DBNAME'] == 'different_readings.db'
        assert sauce.settings['DB_TABLE'] == 'OtherReadings'
        assert sauce.settings['GADGET_ID'] == 'OTHER'

    def test_settings_dict_overrides_files(self):

        settings = {
            'DBNAME': 'different_readings.db',
            'DB_TABLE': 'OtherReadings',
            'GADGET_ID': "OTHER"
        }
        sauce = DataSource(settings,
                           settings_file="./test_settings/test_settings.yaml")

        assert sauce.settings['DBNAME'] == 'different_readings.db'
        assert sauce.settings['DB_TABLE'] == 'OtherReadings'
        assert sauce.settings['GADGET_ID'] == 'OTHER'

    def test_default_settings_file_used(self):

        sauce = DataSource()

        assert sauce.settings['DBNAME'] == 'default.db'
        assert sauce.settings['DB_TABLE'] == 'DefaultReadings'

    def test_missing_settings_file(self):

        with pytest.raises(ValueError):
            sauce = DataSource(settings_file="pepper.yaml")

    def test_create_db_if_not_exists(self):

        if os.path.exists('./test_readings.db'):
            os.remove('./test_readings.db')

        new_source = DataSource(
            settings_file="test_settings/test_settings.yaml")
        new_source.connect2db()

        assert os.path.exists('./test_readings.db')

        # check no records
        sql = f'SELECT * FROM {new_source.db_table}'

        result = new_source.db.execute(sql)

        assert result.lastrowid == 0

    def test_use_existing_db(self):

        # using the existing db, write one record
        assert os.path.exists('./test_readings.db')
        self.source.write_reading("TEST", temp=1, rh=2, raw_data="3")
        sql = f'SELECT * FROM {self.source.db_table}'
        result = self.source.db.execute(sql)
        assert result.lastrowid == 1

        # now close and reopen and make sure it is the same file

        new_source = DataSource(
            settings_file="test_settings/test_settings.yaml")
        new_source.connect2db()

        assert os.path.exists('./test_readings.db')
        sql = f'SELECT * FROM {self.source.db_table}'
        result = self.source.db.execute(sql)
        assert result.lastrowid == 1

    def test_add_one_reading(self):
        ''' '''

        # check readings record written
        json_data = json.dumps([{'1': 1, '2': '2'}])
        self.source.write_reading("TEST", temp=1.1, rh=2.2, raw_data=json_data)

        rec = self.source.read_last("TEST")

        assert rec['gadget_id'] == "TEST"
        assert rec['temp'] == 1.1
        assert rec['rh'] == 2.2
        assert rec['raw_data'] == json_data

        json_json = json.loads(rec['raw_data'])
        assert json_json[0]['1'] == 1