Beispiel #1
0
    def test_add_rows_rerun(self):
        rq = ReportQueue()
        self.assertTrue(rq.is_empty())

        rq.enqueue(INIT_MSG)

        # Simulate rerun
        for i in range(2):
            TEXT_DELTA_MSG1.delta.id = 0
            rq.enqueue(TEXT_DELTA_MSG1)

            DF_DELTA_MSG.delta.id = 1
            rq.enqueue(DF_DELTA_MSG)

            ADD_ROWS_MSG.delta.id = 1
            rq.enqueue(ADD_ROWS_MSG)

        queue = rq.flush()
        self.assertEqual(len(queue), 3)
        self.assertTrue(queue[0].initialize.config.sharing_enabled)
        self.assertEqual(queue[1].delta.id, 0)
        self.assertEqual(queue[1].delta.new_element.text.body, 'text1')
        self.assertEqual(queue[2].delta.id, 1)
        col0 = queue[2].delta.new_element.data_frame.data.cols[0].int64s.data
        col1 = queue[2].delta.new_element.data_frame.data.cols[1].int64s.data
        self.assertEqual(col0, [0, 1, 2, 3, 4, 5])
        self.assertEqual(col1, [10, 11, 12, 13, 14, 15])
Beispiel #2
0
    def test_simple_add_rows(self):
        rq = ReportQueue()
        self.assertTrue(rq.is_empty())

        rq.enqueue(INIT_MSG)

        TEXT_DELTA_MSG1.metadata.delta_id = 0
        rq.enqueue(TEXT_DELTA_MSG1)

        DF_DELTA_MSG.metadata.delta_id = 1
        rq.enqueue(DF_DELTA_MSG)

        ADD_ROWS_MSG.metadata.delta_id = 1
        rq.enqueue(ADD_ROWS_MSG)

        queue = rq.flush()
        self.assertEqual(len(queue), 3)
        self.assertTrue(queue[0].initialize.config.sharing_enabled)
        self.assertEqual(queue[1].metadata.delta_id, 0)
        self.assertEqual(queue[1].delta.new_element.text.body, "text1")
        self.assertEqual(queue[2].metadata.delta_id, 1)
        col0 = queue[2].delta.new_element.data_frame.data.cols[0].int64s.data
        col1 = queue[2].delta.new_element.data_frame.data.cols[1].int64s.data
        self.assertEqual(col0, [0, 1, 2, 3, 4, 5])
        self.assertEqual(col1, [10, 11, 12, 13, 14, 15])
Beispiel #3
0
    def test_multiple_containers(self):
        """Deltas should only be coalesced if they're in the same container"""
        rq = ReportQueue()
        self.assertTrue(rq.is_empty())

        rq.enqueue(INIT_MSG)

        def enqueue_deltas(container, path):
            # We deep-copy the protos because we mutate each one
            # multiple times.
            msg = copy.deepcopy(TEXT_DELTA_MSG1)
            msg.delta.id = 0
            msg.delta.parent_block.container = container
            msg.delta.parent_block.path[:] = path
            rq.enqueue(msg)

            msg = copy.deepcopy(DF_DELTA_MSG)
            msg.delta.id = 1
            msg.delta.parent_block.container = container
            msg.delta.parent_block.path[:] = path
            rq.enqueue(msg)

            msg = copy.deepcopy(ADD_ROWS_MSG)
            msg.delta.id = 1
            msg.delta.parent_block.container = container
            msg.delta.parent_block.path[:] = path
            rq.enqueue(msg)

        enqueue_deltas(BlockPath.MAIN, [])
        enqueue_deltas(BlockPath.SIDEBAR, [0, 0, 1])

        def assert_deltas(container, path, idx):
            self.assertEqual(0, queue[idx].delta.id)
            self.assertEqual(container,
                             queue[idx].delta.parent_block.container)
            self.assertEqual(path, queue[idx].delta.parent_block.path)
            self.assertEqual('text1', queue[idx].delta.new_element.text.body)

            self.assertEqual(1, queue[idx + 1].delta.id)
            self.assertEqual(container,
                             queue[idx + 1].delta.parent_block.container)
            self.assertEqual(path, queue[idx + 1].delta.parent_block.path)
            col0 = queue[idx + 1] \
                .delta.new_element.data_frame.data.cols[0].int64s.data
            col1 = queue[idx + 1] \
                .delta.new_element.data_frame.data.cols[1].int64s.data
            self.assertEqual([0, 1, 2, 3, 4, 5], col0)
            self.assertEqual([10, 11, 12, 13, 14, 15], col1)

        queue = rq.flush()
        self.assertEqual(5, len(queue))
        self.assertTrue(queue[0].initialize.config.sharing_enabled)

        assert_deltas(BlockPath.MAIN, [], 1)
        assert_deltas(BlockPath.SIDEBAR, [0, 0, 1], 3)
Beispiel #4
0
    def test_replace_element(self):
        rq = ReportQueue()
        self.assertTrue(rq.is_empty())

        rq.enqueue(INIT_MSG)

        TEXT_DELTA_MSG1.metadata.delta_id = 0
        rq.enqueue(TEXT_DELTA_MSG1)

        TEXT_DELTA_MSG2.metadata.delta_id = 0
        rq.enqueue(TEXT_DELTA_MSG2)

        queue = rq.flush()
        self.assertEqual(len(queue), 2)
        self.assertTrue(queue[0].initialize.config.sharing_enabled)
        self.assertEqual(queue[1].metadata.delta_id, 0)
        self.assertEqual(queue[1].delta.new_element.text.body, "text2")