Example #1
0
    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"
Example #2
0
    def test_poll_timeout(self, connection):
        num_evts = 0

        for evt in event.poll(connection):
            num_evts += 1

        assert num_evts == 0
Example #3
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)
Example #5
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"
Example #6
0
    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')
Example #10
0
    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')