(t *testing.T)
| 1968 | } |
| 1969 | |
| 1970 | func 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 | |
| 2026 | func txIncrement(t *testing.T, db *DB, bucket string, key []byte, expectErr error, finalExpectErr error) { |
| 2027 | err := db.Update(func(tx *Tx) error { |
nothing calls this directly
no test coverage detected