mirror of
https://github.com/luxfi/zapdb.git
synced 2026-07-26 22:46:36 +00:00
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
/*
|
|
* SPDX-FileCopyrightText: © 2017-2025 Istari Digital, Inc.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package badger
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDiscardStats(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "badger-test")
|
|
require.NoError(t, err)
|
|
defer removeDir(dir)
|
|
|
|
opt := DefaultOptions(dir)
|
|
ds, err := InitDiscardStats(opt)
|
|
require.NoError(t, err)
|
|
require.Zero(t, ds.nextEmptySlot)
|
|
fid, _ := ds.MaxDiscard()
|
|
require.Zero(t, fid)
|
|
|
|
for i := uint32(0); i < 20; i++ {
|
|
require.Equal(t, int64(i*100), ds.Update(i, int64(i*100)))
|
|
}
|
|
ds.Iterate(func(id, val uint64) {
|
|
require.Equal(t, id*100, val)
|
|
})
|
|
for i := uint32(0); i < 10; i++ {
|
|
require.Equal(t, 0, int(ds.Update(i, -1)))
|
|
}
|
|
ds.Iterate(func(id, val uint64) {
|
|
if id < 10 {
|
|
require.Zero(t, val)
|
|
return
|
|
}
|
|
require.Equal(t, int(id*100), int(val))
|
|
})
|
|
}
|
|
|
|
func TestReloadDiscardStats(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "badger-test")
|
|
require.NoError(t, err)
|
|
defer removeDir(dir)
|
|
|
|
opt := DefaultOptions(dir)
|
|
db, err := Open(opt)
|
|
require.NoError(t, err)
|
|
ds := db.vlog.discardStats
|
|
|
|
ds.Update(uint32(1), 1)
|
|
ds.Update(uint32(2), 1)
|
|
ds.Update(uint32(1), -1)
|
|
require.NoError(t, db.Close())
|
|
|
|
// Reopen the DB, discard stats should be same.
|
|
db2, err := Open(opt)
|
|
require.NoError(t, err)
|
|
ds2 := db2.vlog.discardStats
|
|
require.Zero(t, ds2.Update(uint32(1), 0))
|
|
require.Equal(t, 1, int(ds2.Update(uint32(2), 0)))
|
|
}
|