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

Function TestDB_AllDsWriteRecordLimit

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

Source from the content-addressed store, hash-verified

1968}
1969
1970func TestDB_AllDsWriteRecordLimit(t *testing.T) {
1971 // Set up options
1972 opts := DefaultOptions
1973 limitCount := int64(1000)
1974 opts.MaxWriteRecordCount = limitCount
1975 // Set up bucket names and score
1976 bucket1 := "bucket1"
1977 bucket2 := "bucket2"
1978 score := 1.0
1979 // Iterate over EntryIdxMode options
1980 for _, idxMode := range []EntryIdxMode{HintKeyValAndRAMIdxMode, HintKeyAndRAMIdxMode} {
1981 opts.EntryIdxMode = idxMode
1982 runNutsDBTest(t, &opts, func(t *testing.T, db *DB) {
1983 txCreateBucket(t, db, DataStructureBTree, bucket1, nil)
1984 txCreateBucket(t, db, DataStructureList, bucket1, nil)
1985 txCreateBucket(t, db, DataStructureSet, bucket1, nil)
1986 txCreateBucket(t, db, DataStructureSortedSet, bucket1, nil)
1987 txCreateBucket(t, db, DataStructureList, bucket2, nil)
1988
1989 // Add limitCount records
1990 err := db.Update(func(tx *Tx) error {
1991 for i := 0; i < int(limitCount); i++ {
1992 key := []byte(strconv.Itoa(i))
1993 value := []byte(strconv.Itoa(i))
1994 err = tx.Put(bucket1, key, value, Persistent)
1995 AssertErr(t, err, nil)
1996 }
1997 return nil
1998 })
1999
2000 require.NoError(t, err)
2001 // Trigger the limit
2002 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, ErrTxnExceedWriteLimit)
2003 // Delete item and add one
2004 txDel(t, db, bucket1, []byte("0"), nil)
2005 txPush(t, db, bucket1, []byte("0"), []byte("value1"), false, nil, nil)
2006 // Trigger the limit
2007 txSAdd(t, db, bucket1, []byte("key1"), []byte("value1"), nil, ErrTxnExceedWriteLimit)
2008 // Delete item and add one
2009 txDel(t, db, bucket1, []byte("1"), nil)
2010 txSAdd(t, db, bucket1, []byte("key1"), []byte("value1"), nil, nil)
2011 // Trigger the limit
2012 txZAdd(t, db, bucket1, []byte("key1"), []byte("value1"), score, nil, ErrTxnExceedWriteLimit)
2013 // Delete item and add one
2014 txDel(t, db, bucket1, []byte("2"), nil)
2015 txZAdd(t, db, bucket1, []byte("key1"), []byte("value1"), score, nil, nil)
2016 // Delete bucket
2017 txDeleteBucket(t, db, DataStructureSortedSet, bucket1, nil)
2018 // Add data to another bucket
2019 txPush(t, db, bucket2, []byte("key1"), []byte("value1"), false, nil, nil)
2020 // Trigger the limit
2021 txPush(t, db, bucket2, []byte("key2"), []byte("value2"), false, nil, ErrTxnExceedWriteLimit)
2022 })
2023 }
2024}
2025
2026func txIncrement(t *testing.T, db *DB, bucket string, key []byte, expectErr error, finalExpectErr error) {
2027 err := db.Update(func(tx *Tx) error {

Callers

nothing calls this directly

Calls 10

runNutsDBTestFunction · 0.85
txCreateBucketFunction · 0.85
txPushFunction · 0.85
txDelFunction · 0.85
txSAddFunction · 0.85
txZAddFunction · 0.85
txDeleteBucketFunction · 0.85
UpdateMethod · 0.80
AssertErrFunction · 0.70
PutMethod · 0.45

Tested by

no test coverage detected