fleet/orbit/pkg/database/database_test.go
Tomas Touceda 3ac8494d23 Add 'orbit/' from commit 'ab3047bb39f1e2be331d1ff18b4eb768619033c4'
git-subtree-dir: orbit
git-subtree-mainline: d5974aad97
git-subtree-split: ab3047bb39
2021-08-04 16:58:25 -03:00

80 lines
1.6 KiB
Go

package database
import (
"io/ioutil"
"os"
"testing"
"github.com/dgraph-io/badger/v2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDatabase(t *testing.T) {
t.Parallel()
tmpDir, err := ioutil.TempDir("", "orbit-test")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
// Open and write
db, err := Open(tmpDir)
require.NoError(t, err)
err = db.Update(func(tx *badger.Txn) error {
require.NoError(t, tx.Set([]byte("key"), []byte("value")))
return nil
})
require.NoError(t, err)
require.NoError(t, db.Close())
// Reopen and read
db, err = Open(tmpDir)
require.NoError(t, err)
err = db.View(func(tx *badger.Txn) error {
item, err := tx.Get([]byte("key"))
require.NoError(t, err)
err = item.Value(func(val []byte) error {
assert.Equal(t, []byte("value"), val)
return nil
})
require.NoError(t, err)
return nil
})
require.NoError(t, err)
require.NoError(t, db.Close())
}
func TestCompactionPanic(t *testing.T) {
t.Parallel()
tmpDir, err := ioutil.TempDir("", "orbit-test")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
db, err := Open(tmpDir)
require.NoError(t, err)
// Try to start the compaction routine again
assert.Panics(t, func() { db.startBackgroundCompaction() })
}
func TestCompactionRestart(t *testing.T) {
t.Parallel()
tmpDir, err := ioutil.TempDir("", "orbit-test")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
db, err := Open(tmpDir)
require.NoError(t, err)
go func() {
require.NoError(t, db.Close())
}()
db.stopBackgroundCompaction()
assert.NotPanics(t, func() { db.startBackgroundCompaction() })
}