mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package repo
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"go.uber.org/zap/zaptest"
|
|
)
|
|
|
|
func TestHistoryCurrent(t *testing.T) {
|
|
var (
|
|
h = testHistory(t)
|
|
test = []byte("test")
|
|
b bytes.Buffer
|
|
)
|
|
err := h.Add(test)
|
|
require.NoError(t, err)
|
|
err = h.GetCurrent(&b)
|
|
require.NoError(t, err)
|
|
if !bytes.Equal(b.Bytes(), test) {
|
|
t.Fatalf("expected %q, got %q", string(test), b.String())
|
|
}
|
|
}
|
|
|
|
func TestHistoryCleanup(t *testing.T) {
|
|
h := testHistory(t)
|
|
for i := 0; i < 50; i++ {
|
|
err := h.Add([]byte(fmt.Sprint(i)))
|
|
require.NoError(t, err)
|
|
time.Sleep(time.Millisecond * 5)
|
|
}
|
|
err := h.cleanup()
|
|
require.NoError(t, err)
|
|
files, err := h.getHistory()
|
|
require.NoError(t, err)
|
|
|
|
// -1 for ignoring the current content backup file
|
|
if len(files)-1 != 2 {
|
|
t.Fatal("history too long", len(files), "instead of", 2)
|
|
}
|
|
}
|
|
|
|
func TestHistoryOrder(t *testing.T) {
|
|
h := testHistory(t)
|
|
h.historyDir = "testdata/order"
|
|
|
|
files, err := h.getHistory()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "testdata/order/contentserver-repo-current.json", files[0])
|
|
assert.Equal(t, "testdata/order/contentserver-repo-2017-10-23.json", files[1])
|
|
assert.Equal(t, "testdata/order/contentserver-repo-2017-10-22.json", files[2])
|
|
assert.Equal(t, "testdata/order/contentserver-repo-2017-10-21.json", files[3])
|
|
}
|
|
|
|
func TestGetFilesForCleanup(t *testing.T) {
|
|
h := testHistory(t)
|
|
h.historyDir = "testdata/order"
|
|
|
|
files, err := h.getFilesForCleanup(2)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "testdata/order/contentserver-repo-2017-10-21.json", files[0])
|
|
}
|
|
|
|
func testHistory(t *testing.T) *History {
|
|
t.Helper()
|
|
l := zaptest.NewLogger(t)
|
|
tempDir, err := os.MkdirTemp(os.TempDir(), "contentserver-history-test")
|
|
require.NoError(t, err)
|
|
return NewHistory(l, HistoryWithHistoryLimit(2), HistoryWithHistoryDir(tempDir))
|
|
}
|