Пример #1
0
 def set_kv(self, cursor):
     cursor.set_key(key_populate(cursor, 10))
     if self.complex == 1:
         v = complex_value_populate(cursor, 10)
         cursor.set_value(v[0], v[1], v[2], v[3])
     else:
         cursor.set_value(value_populate(cursor, 10))
Пример #2
0
 def set_kv(self, cursor):
     cursor.set_key(key_populate(cursor, 10))
     if self.complex == 1:
         v = complex_value_populate(cursor, 10)
         cursor.set_value(v[0], v[1], v[2], v[3])
     else:
         cursor.set_value(value_populate(cursor, 10))
Пример #3
0
    def test_truncate_complex(self):

        # We only care about tables.
        if self.type == 'file:':
            return

        uri = self.type + self.name

        # list: truncation patterns
        #
        # begin and end: -1 means pass None for the cursor arg to truncate.  An
        # integer N, with 1 <= N < self.nentries, truncates from/to a cursor
        # positioned at that row.
        list = [
            (-1, self.nentries),  # begin to end, begin = None
            (1, -1),  # begin to end, end = None
            (1, self.nentries),  # begin to end
            (-1, self.nentries - self.skip),  # begin to middle, begin = None
            (1, self.nentries - self.skip),  # begin to middle
            (self.skip, -1),  # middle to end, end = None
            (self.skip, self.nentries),  # middle to end
            (
                self.skip,  # middle to different middle
                self.nentries - self.skip),
            (1, 1),  # begin to begin
            (self.nentries, self.nentries),  # end to end
            (self.skip, self.skip)  # middle to same middle
        ]

        # Build the layout we're going to test
        for begin, end in list:
            '''
            print '===== run:', uri
            print 'key:', self.keyfmt, 'begin:', begin, 'end:', end
            '''

            # Create the object.
            complex_populate(self, uri, self.config + self.keyfmt,
                             self.nentries)

            # Build a dictionary of what the object should look like for
            # later comparison
            cursor = self.session.open_cursor(uri, None)
            expected = {}
            for i in range(1, self.nentries + 1):
                expected[key_populate(cursor, i)] = \
                    complex_value_populate(cursor, i)
            cursor.close()

            # Optionally close and re-open the object to get a disk image
            # instead of a big insert list.
            if self.reopen:
                self.reopen_conn()

            self.truncateRangeAndCheck(uri, begin, end, expected)
            self.session.drop(uri, None)
Пример #4
0
    def test_truncate_complex(self):

        # We only care about tables.
        if self.type == 'file:':
                return

        uri = self.type + self.name

        # list: truncation patterns
        #
        # begin and end: -1 means pass None for the cursor arg to truncate.  An
        # integer N, with 1 <= N < self.nentries, truncates from/to a cursor
        # positioned at that row.
        list = [
            (-1, self.nentries),                # begin to end, begin = None
            (1, -1),                            # begin to end, end = None
            (1, self.nentries),                 # begin to end
            (-1, self.nentries - self.skip),    # begin to middle, begin = None
            (1, self.nentries - self.skip),     # begin to middle
            (self.skip, -1),                    # middle to end, end = None
            (self.skip, self.nentries),         # middle to end
            (self.skip,                         # middle to different middle
                self.nentries - self.skip),
            (1, 1),                             # begin to begin
            (self.nentries, self.nentries),     # end to end
            (self.skip, self.skip)              # middle to same middle
            ]

        # Build the layout we're going to test
        for begin,end in list:
            '''
            print '===== run:', uri
            print 'key:', self.keyfmt, 'begin:', begin, 'end:', end
            '''

            # Create the object.
            complex_populate(
                self, uri, self.config + self.keyfmt, self.nentries)

            # Build a dictionary of what the object should look like for
            # later comparison
            cursor = self.session.open_cursor(uri, None)
            expected = {}
            for i in range(1, self.nentries + 1):
                expected[key_populate(cursor, i)] = \
                    complex_value_populate(cursor, i)
            cursor.close()

            # Optionally close and re-open the object to get a disk image
            # instead of a big insert list.
            if self.reopen:
                self.reopen_conn()

            self.truncateRangeAndCheck(uri, begin, end, expected)
            self.session.drop(uri, None)
Пример #5
0
    def test_cursor09(self):
        uri = self.type + "cursor09"

        if self.complex:
            complex_populate(self, uri, self.config, 100)
        else:
            simple_populate(self, uri, self.config, 100)

        cursor = self.session.open_cursor(uri, None, None)
        cursor[key_populate(cursor, 10)] = (
            tuple(complex_value_populate(cursor, 10)) if self.complex else value_populate(cursor, 10)
        )
        msg = "/requires key be set/"
        self.assertRaisesWithMessage(wiredtiger.WiredTigerError, cursor.search, msg)
Пример #6
0
 def test_stat_cursor_size(self):
     self.pop(self, self.uri, 'key_format=S' + self.cfg, 100)
     self.openAndWalkStatCursor()
     cursor = self.session.open_cursor(self.uri, None)
     for i in range(100, 40000 + 1):
         if i % 100 == 0:
             self.openAndWalkStatCursor()
         if self.pop == simple_populate:
             cursor[key_populate(cursor, i)] = value_populate(cursor, i)
         else:
             cursor[key_populate(cursor, i)] = \
                     tuple(complex_value_populate(cursor, i))
     cursor.close()
     self.openAndWalkStatCursor()
Пример #7
0
 def test_stat_cursor_size(self):
     self.pop(self, self.uri, 'key_format=S' + self.cfg, 100)
     self.openAndWalkStatCursor()
     cursor = self.session.open_cursor(self.uri, None)
     for i in range(100, 40000 + 1):
         if i % 100 == 0:
             self.openAndWalkStatCursor()
         if self.pop == simple_populate:
             cursor[key_populate(cursor, i)] = value_populate(cursor, i)
         else:
             cursor[key_populate(cursor, i)] = \
                     tuple(complex_value_populate(cursor, i))
     cursor.close()
     self.openAndWalkStatCursor()
Пример #8
0
    def test_cursor09(self):
        uri = self.type + 'cursor09'

        if self.complex:
            complex_populate(self, uri, self.config, 100)
        else:
            simple_populate(self, uri, self.config, 100)

        cursor = self.session.open_cursor(uri, None, None)
        cursor[key_populate(cursor, 10)] = \
            tuple(complex_value_populate(cursor, 10)) if self.complex \
            else value_populate(cursor, 10)
        msg = '/requires key be set/'
        self.assertRaisesWithMessage(wiredtiger.WiredTigerError, cursor.search,
                                     msg)
Пример #9
0
    def test_stat_cursor_reset(self):
        # The number of btree_entries reported is influenced by the
        # number of column groups and indices.  Each insert will have
        # a multiplied effect.
        if self.pop == simple_populate:
            multiplier = 1   # no declared colgroup is like one big colgroup
        else:
            multiplier = complex_populate_colgroup_count() + \
                         complex_populate_index_count()
        n = 100
        self.pop(self, self.uri, 'key_format=S', n)
        statc = self.stat_cursor(self.uri)
        self.assertEqual(statc[stat.dsrc.btree_entries][2], n * multiplier)

        c = self.session.open_cursor(self.uri)
        c.set_key(key_populate(c, 200))
        if self.pop == simple_populate:
            c.set_value(value_populate(c, 200))
        else:
            v = complex_value_populate(c, 200)
            c.set_value(v[0], v[1], v[2], v[3])
        c.insert()

        # Test that cursor reset re-loads the values.
        self.assertEqual(statc[stat.dsrc.btree_entries][2], n * multiplier)
        statc.reset()
        n += 1
        self.assertEqual(statc[stat.dsrc.btree_entries][2], n * multiplier)

        # For applications with indices and/or column groups, verify
        # that there is a way to count the base number of entries.
        if self.pop != simple_populate:
            statc.close()
            statc = self.stat_cursor(
                complex_populate_index_name(self, self.uri))
            self.assertEqual(statc[stat.dsrc.btree_entries][2], n)
            statc.close()
            statc = self.stat_cursor(
                complex_populate_colgroup_name(self, self.uri))
            self.assertEqual(statc[stat.dsrc.btree_entries][2], n)
        statc.close()
Пример #10
0
 def set_kv(self, cursor):
     cursor.set_key(key_populate(cursor, 10))
     if self.complex:
         cursor.set_value(tuple(complex_value_populate(cursor, 10)))
     else:
         cursor.set_value(value_populate(cursor, 10))
Пример #11
0
 def set_kv(self, cursor):
     cursor.set_key(key_populate(cursor, 10))
     if self.complex:
         cursor.set_value(tuple(complex_value_populate(cursor, 10)))
     else:
         cursor.set_value(value_populate(cursor, 10))