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

Function TestDB_DataStructureListWriteRecordLimit

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

Source from the content-addressed store, hash-verified

1728}
1729
1730func TestDB_DataStructureListWriteRecordLimit(t *testing.T) {
1731 // Set options
1732 opts := DefaultOptions
1733 limitCount := int64(1000)
1734 opts.MaxWriteRecordCount = limitCount
1735 // Define bucket names
1736 bucket1 := "bucket1"
1737 bucket2 := "bucket2"
1738 // Iterate over EntryIdxMode options
1739 for _, idxMode := range []EntryIdxMode{HintKeyValAndRAMIdxMode, HintKeyAndRAMIdxMode} {
1740
1741 opts.EntryIdxMode = idxMode
1742 runNutsDBTest(t, &opts, func(t *testing.T, db *DB) {
1743 txCreateBucket(t, db, DataStructureList, bucket1, nil)
1744 txCreateBucket(t, db, DataStructureList, bucket2, nil)
1745 // Add limitCount records
1746 err := db.Update(func(tx *Tx) error {
1747 for i := 0; i < int(limitCount); i++ {
1748 key := []byte("0")
1749 value := []byte(strconv.Itoa(i))
1750 err = tx.LPush(bucket1, key, value)
1751 AssertErr(t, err, nil)
1752 }
1753 return nil
1754 })
1755 require.NoError(t, err)
1756 // Trigger the limit
1757 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, ErrTxnExceedWriteLimit)
1758 // Test LRem
1759 err = db.Update(func(tx *Tx) error {
1760 err := tx.LRem(bucket1, []byte("0"), 1, []byte("0"))
1761 AssertErr(t, err, nil)
1762 return nil
1763 })
1764 require.NoError(t, err)
1765 txPush(t, db, bucket1, []byte("0"), []byte("value1"), true, nil, nil)
1766 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, ErrTxnExceedWriteLimit)
1767 // Test for DataLPopFlag
1768 err = db.Update(func(tx *Tx) error {
1769 _, err := tx.LPop(bucket1, []byte("0"))
1770 AssertErr(t, err, nil)
1771 return nil
1772 })
1773 require.NoError(t, err)
1774 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, nil)
1775 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, ErrTxnExceedWriteLimit)
1776 // Test for DataLTrimFlag
1777 err = db.Update(func(tx *Tx) error {
1778 err := tx.LTrim(bucket1, []byte("0"), 0, 0)
1779 AssertErr(t, err, nil)
1780 return nil
1781 })
1782 require.NoError(t, err)
1783 err = db.Update(func(tx *Tx) error {
1784 for i := 0; i < int(limitCount)-2; i++ {
1785 key := []byte("0")
1786 value := []byte(strconv.Itoa(i))
1787 err = tx.RPush(bucket1, key, value)

Callers

nothing calls this directly

Calls 12

runNutsDBTestFunction · 0.85
txCreateBucketFunction · 0.85
txPushFunction · 0.85
txDeleteBucketFunction · 0.85
UpdateMethod · 0.80
AssertErrFunction · 0.70
LPushMethod · 0.45
LRemMethod · 0.45
LPopMethod · 0.45
LTrimMethod · 0.45
RPushMethod · 0.45
LRemByIndexMethod · 0.45

Tested by

no test coverage detected