Example #1
0
    def test_async_single_manager_tables_chained(self):
        columns = {"index": int, "num1": int, "num2": int}
        manager = PerspectiveManager()
        tbl = Table(columns, index="index")
        view = tbl.view()
        tbl2 = Table(view.to_arrow(), index=tbl.get_index())
        manager.host(tbl, "tbl")
        manager.host(tbl2, "tbl2")
        view.on_update(lambda port, delta: tbl2.update(delta), "row")
        manager.set_loop_callback(TestAsync.loop.add_callback)

        for i in range(1000):
            manager.call_loop(tbl.update, [{
                "index": i,
                "num1": i,
                "num2": 2 * i
            }])
            i += 1

        q = queue.Queue()
        manager.call_loop(q.put, True)
        q.get()

        @syncify
        def _tbl_task2():
            size = tbl2.size()
            return size

        assert _tbl_task2() == 1000
        view.delete()
        tbl.delete()
        tbl2.delete()
Example #2
0
    def test_async_call_loop(self):
        tbl = Table({"a": int, "b": float, "c": str})
        manager = PerspectiveManager()
        manager.set_loop_callback(TestAsync.loop.add_callback)
        manager.call_loop(tbl.update, data)
        manager.host(tbl)

        @syncify
        def _task():
            return tbl.size()

        assert _task() == 10
        tbl.delete()
Example #3
0
    def test_async_call_loop_error_if_no_loop(self):
        tbl = Table({"a": int, "b": float, "c": str})
        manager = PerspectiveManager()

        with raises(PerspectiveError):
            # loop not set - errors
            manager.call_loop(tbl.update, data)

        manager.set_loop_callback(TestAsync.loop.add_callback)
        manager.call_loop(tbl.update, data)
        manager.host(tbl)

        @syncify
        def _task():
            return tbl.size()

        # subsequent calls to call_loop will work if loop_callback is set.
        assert _task() == 10

        tbl.delete()