MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / TestDB_DataStructureBTreeWriteRecordLimit

Function TestDB_DataStructureBTreeWriteRecordLimit

db_test.go:1677–1728  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1675}
1676
1677func TestDB_DataStructureBTreeWriteRecordLimit(t *testing.T) {
1678 opts := DefaultOptions
1679 limitCount := int64(1000)
1680 opts.MaxWriteRecordCount = limitCount
1681 bucket1 := "bucket1"
1682 bucket2 := "bucket2"
1683 // Iterate over different EntryIdxModes
1684 for _, idxMode := range []EntryIdxMode{HintKeyValAndRAMIdxMode, HintKeyAndRAMIdxMode} {
1685 opts.EntryIdxMode = idxMode
1686 runNutsDBTest(t, &opts, func(t *testing.T, db *DB) {
1687 txCreateBucket(t, db, DataStructureBTree, bucket1, nil)
1688 txCreateBucket(t, db, DataStructureBTree, bucket2, nil)
1689
1690 // Add limitCount records
1691 err := db.Update(func(tx *Tx) error {
1692 for i := 0; i < int(limitCount); i++ {
1693 key := []byte(strconv.Itoa(i))
1694 value := []byte(strconv.Itoa(i))
1695 err = tx.Put(bucket1, key, value, Persistent)
1696 AssertErr(t, err, nil)
1697 }
1698 return nil
1699 })
1700 require.NoError(t, err)
1701 // Trigger the limit
1702 txPut(t, db, bucket1, []byte("key1"), []byte("value1"), Persistent, nil, ErrTxnExceedWriteLimit)
1703 // Add a key that is within the limit
1704 txPut(t, db, bucket1, []byte("0"), []byte("000"), Persistent, nil, nil)
1705 // Delete and add one item
1706 txDel(t, db, bucket1, []byte("0"), nil)
1707 txPut(t, db, bucket1, []byte("key1"), []byte("value1"), Persistent, nil, nil)
1708 // Add an item to another bucket
1709 txPut(t, db, bucket2, []byte("key2"), []byte("value2"), Persistent, nil, ErrTxnExceedWriteLimit)
1710 // Delete bucket1
1711 txDeleteBucket(t, db, DataStructureBTree, bucket1, nil)
1712 // Add data to bucket2
1713 err = db.Update(func(tx *Tx) error {
1714 for i := 0; i < (int(limitCount) - 1); i++ {
1715 key := []byte(strconv.Itoa(i))
1716 value := []byte(strconv.Itoa(i))
1717 err = tx.Put(bucket2, key, value, Persistent)
1718 AssertErr(t, err, nil)
1719 }
1720 return nil
1721 })
1722 require.NoError(t, err)
1723 // Add items to bucket2
1724 txPut(t, db, bucket2, []byte("key1"), []byte("value1"), Persistent, nil, nil)
1725 txPut(t, db, bucket2, []byte("key2"), []byte("value2"), Persistent, nil, ErrTxnExceedWriteLimit)
1726 })
1727 }
1728}
1729
1730func TestDB_DataStructureListWriteRecordLimit(t *testing.T) {
1731 // Set options

Callers

nothing calls this directly

Calls 8

runNutsDBTestFunction · 0.85
txCreateBucketFunction · 0.85
txPutFunction · 0.85
txDelFunction · 0.85
txDeleteBucketFunction · 0.85
UpdateMethod · 0.80
AssertErrFunction · 0.70
PutMethod · 0.45

Tested by

no test coverage detected