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))
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)
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)
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)
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()
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)
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()
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))