def test_poll_event_event_types(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") evts = [evt for evt in event.poll(connection)] assert len(evts) == 1 evt = evts.pop(0) assert evt.type == "INSERT" assert evt.schema_name == "public" assert evt.table_name == "settings" execute(client, "UPDATE public.settings SET value = 2 WHERE id = {row_id};".format(row_id=evt.row_id)) execute(client, "DELETE FROM public.settings WHERE id = {row_id};".format(row_id=evt.row_id)) evts = [evt for evt in event.poll(connection)] assert len(evts) == 2 evt = evts.pop(0) assert evt.type == "UPDATE" assert evt.schema_name == "public" assert evt.table_name == "settings" evt = evts.pop(0) assert evt.type == "DELETE" assert evt.schema_name == "public" assert evt.table_name == "settings"
def test_poll_timeout(self, connection): num_evts = 0 for evt in event.poll(connection): num_evts += 1 assert num_evts == 0
def query_db(self): if self.conn is not None: self.conn.autocommit = True install_trigger_function(self.conn) install_trigger(self.conn, self.table_name) register_event_channel(self.conn) try: print("LIStening for event...") while True: row_ids = [] for evt in poll(self.conn): print('New Event: {}'.format(evt)) row_id = vars(evt)['row_id'] row_ids.append(row_id) if len(row_ids) > 0: self.row_id = max(row_ids) self.query_db_basic() self.transform_and_scale() if self.img is not None: self.send(text_data=self.img.decode('utf-8')) except KeyboardInterrupt: print('User exit via Ctrl-C; Shutting down...') unregister_event_channel(connection) uninstall_trigger(connection, table_name) uninstall_trigger_function(connection) print('Shutdown complete.')
def test_poll_timeout(self, connection): num_events = 0 for event in poll(connection): num_events += 1 assert (num_events == 0)
def test_poll_custom_schema_table_event(self, connection, client): execute(client, "INSERT INTO pointofsale.orders(description) VALUES('bar');") evts = [evt for evt in event.poll(connection)] assert len(evts) == 1 evt = evts.pop(0) assert evt.type == "INSERT" assert evt.schema_name == "pointofsale" assert evt.table_name == "orders"
def test_poll_public_schema_table_event(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") evts = [evt for evt in event.poll(connection)] assert len(evts) == 1 evt = evts.pop(0) assert evt.type == "INSERT" assert evt.schema_name == "public" assert evt.table_name == "settings"
def test_poll_public_schema_table_event(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") events = [event for event in poll(connection)] assert (len(events) == 1) event = events.pop(0) assert (event.type == 'INSERT') assert (event.schema_name == 'public') assert (event.table_name == 'settings')
def test_poll_custom_schema_table_event(self, connection, client): execute(client, "INSERT INTO pointofsale.orders(description) VALUES('bar');") events = [event for event in poll(connection)] assert (len(events) == 1) event = events.pop(0) assert (event.type == 'INSERT') assert (event.schema_name == 'pointofsale') assert (event.table_name == 'orders')
def test_poll_event_event_types(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") events = [event for event in poll(connection)] assert (len(events) == 1) event = events.pop(0) assert (event.type == 'INSERT') assert (event.schema_name == 'public') assert (event.table_name == 'settings') execute( client, "UPDATE public.settings SET value = 2 WHERE id = {row_id};".format( row_id=event.row_id)) execute( client, "DELETE FROM public.settings WHERE id = {row_id};".format( row_id=event.row_id)) events = [event for event in poll(connection)] assert (len(events) == 2) event = events.pop(0) assert (event.type == 'UPDATE') assert (event.schema_name == 'public') assert (event.table_name == 'settings') event = events.pop(0) assert (event.type == 'DELETE') assert (event.schema_name == 'public') assert (event.table_name == 'settings')
def test_poll_multiple_table_evts(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") execute(client, "INSERT INTO pointofsale.orders(description) VALUES('bar');") evts = [evt for evt in event.poll(connection)] assert len(evts) == 2 evt = evts.pop(0) assert evt.type == "INSERT" assert evt.schema_name == "public" assert evt.table_name == "settings" evt = evts.pop(0) assert evt.type == "INSERT" assert evt.schema_name == "pointofsale" assert evt.table_name == "orders"
def test_poll_multiple_table_events(self, connection, client): execute(client, "INSERT INTO public.settings(key, value) VALUES('foo', 1);") execute(client, "INSERT INTO pointofsale.orders(description) VALUES('bar');") events = [event for event in poll(connection)] assert (len(events) == 2) event = events.pop(0) assert (event.type == 'INSERT') assert (event.schema_name == 'public') assert (event.table_name == 'settings') event = events.pop(0) assert (event.type == 'INSERT') assert (event.schema_name == 'pointofsale') assert (event.table_name == 'orders')