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

Function TestDB_DataStructureSortedSetWriteRecordLimit

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

Source from the content-addressed store, hash-verified

1896}
1897
1898func TestDB_DataStructureSortedSetWriteRecordLimit(t *testing.T) {
1899 // Set up options
1900 opts := DefaultOptions
1901 limitCount := int64(1000)
1902 opts.MaxWriteRecordCount = limitCount
1903 // Set up bucket names and score
1904 bucket1 := "bucket1"
1905 bucket2 := "bucket2"
1906 score := 1.0
1907 // Iterate over EntryIdxMode options
1908 for _, idxMode := range []EntryIdxMode{HintKeyValAndRAMIdxMode, HintKeyAndRAMIdxMode} {
1909 opts.EntryIdxMode = idxMode
1910 runNutsDBTest(t, &opts, func(t *testing.T, db *DB) {
1911 txCreateBucket(t, db, DataStructureSortedSet, bucket1, nil)
1912 // Add limitCount records
1913 err := db.Update(func(tx *Tx) error {
1914 for i := 0; i < int(limitCount); i++ {
1915 key := []byte("0")
1916 value := []byte(strconv.Itoa(i))
1917 err := tx.ZAdd(bucket1, key, score+float64(i), value)
1918 AssertErr(t, err, nil)
1919 }
1920 return nil
1921 })
1922 require.NoError(t, err)
1923 // Trigger the limit
1924 txZAdd(t, db, bucket1, []byte("key1"), []byte("value1"), score, nil, ErrTxnExceedWriteLimit)
1925 // Delete and add one item
1926 txZRem(t, db, bucket1, []byte("0"), []byte("0"), nil)
1927 txZAdd(t, db, bucket1, []byte("key1"), []byte("value1"), score, nil, nil)
1928 // Add some data is ok
1929 txZAdd(t, db, bucket1, []byte("key1"), []byte("value1"), score, nil, nil)
1930 // Trigger the limit
1931 txZAdd(t, db, bucket1, []byte("key2"), []byte("value2"), score, nil, ErrTxnExceedWriteLimit)
1932 // Test for ZRemRangeByRank
1933 err = db.Update(func(tx *Tx) error {
1934 err := tx.ZRemRangeByRank(bucket1, []byte("0"), 1, 3)
1935 assert.NoError(t, err)
1936 return nil
1937 })
1938 assert.NoError(t, err)
1939 txZAdd(t, db, bucket1, []byte("0"), []byte("value1"), score, nil, nil)
1940 txZAdd(t, db, bucket1, []byte("0"), []byte("value2"), score, nil, nil)
1941 txZAdd(t, db, bucket1, []byte("0"), []byte("value3"), score+float64(1000), nil, nil)
1942 // Trigger the limit
1943 txZAdd(t, db, bucket1, []byte("0"), []byte("value4"), score, nil, ErrTxnExceedWriteLimit)
1944 // Test for ZPop
1945 txZPop(t, db, bucket1, []byte("0"), true, []byte("value3"), score+float64(1000), nil)
1946 txZAdd(t, db, bucket1, []byte("key3"), []byte("value3"), score, nil, nil)
1947 // Delete bucket
1948 txDeleteBucket(t, db, DataStructureSortedSet, bucket1, nil)
1949 // Add data to another bucket
1950 txCreateBucket(t, db, DataStructureSortedSet, bucket1, nil)
1951 txCreateBucket(t, db, DataStructureSortedSet, bucket2, nil)
1952 txZAdd(t, db, bucket2, []byte("key1"), []byte("value1"), score, nil, nil)
1953 // Add data to bucket1
1954 err = db.Update(func(tx *Tx) error {
1955 for i := 0; i < int(limitCount)-1; i++ {

Callers

nothing calls this directly

Calls 10

runNutsDBTestFunction · 0.85
txCreateBucketFunction · 0.85
txZAddFunction · 0.85
txZRemFunction · 0.85
txZPopFunction · 0.85
txDeleteBucketFunction · 0.85
UpdateMethod · 0.80
AssertErrFunction · 0.70
ZAddMethod · 0.45
ZRemRangeByRankMethod · 0.45

Tested by

no test coverage detected