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)
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
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
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']
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_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 setup_method(self): #':memory:' self.source = DataSource(self.settings) self.source.connect2db()
def test_missing_settings_file(self): with pytest.raises(ValueError): sauce = DataSource(settings_file="pepper.yaml")
def test_default_settings_file_used(self): sauce = DataSource() assert sauce.settings['DBNAME'] == 'default.db' assert sauce.settings['DB_TABLE'] == 'DefaultReadings'
def setup_method(self): #':memory:' self.source = DataSource(TEST_SETTINGS) self.source.connect2db()
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