(t *testing.T)
| 1675 | } |
| 1676 | |
| 1677 | func 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 | |
| 1730 | func TestDB_DataStructureListWriteRecordLimit(t *testing.T) { |
| 1731 | // Set options |
nothing calls this directly
no test coverage detected