package meta import ( "context" "fmt" "path/filepath" "testing" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/internal/testutil" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode" "github.com/stretchr/testify/require" "go.etcd.io/bbolt" ) type epochState struct{ e uint64 } func (s epochState) CurrentEpoch() uint64 { return s.e } func TestResetDropsContainerBuckets(t *testing.T) { t.Parallel() db := New( []Option{ WithPath(filepath.Join(t.TempDir(), "metabase")), WithPermissions(0o600), WithEpochState(epochState{}), }..., ) require.NoError(t, db.Open(context.Background(), mode.ReadWrite)) require.NoError(t, db.Init()) defer func() { require.NoError(t, db.Close()) }() for idx := 0; idx < 100; idx++ { var putPrm PutPrm putPrm.SetObject(testutil.GenerateObject()) putPrm.SetStorageID([]byte(fmt.Sprintf("0/%d", idx))) _, err := db.Put(context.Background(), putPrm) require.NoError(t, err) } require.NoError(t, db.Reset()) var bucketCount int require.NoError(t, db.boltDB.Update(func(tx *bbolt.Tx) error { return tx.ForEach(func(name []byte, b *bbolt.Bucket) error { _, exists := mStaticBuckets[string(name)] require.True(t, exists, "unexpected bucket:"+string(name)) bucketCount++ return nil }) })) require.Equal(t, len(mStaticBuckets), bucketCount) }