contentserver/repo/history_test.go
Stefan Martinov 0e44ca809d
Deterministic Log Messaging & Refactoring (#26)
* feat: remove apex log from dependency list & upgrade deps

* chore: remove commented out code

* chore: remove high cardinality metric labels

* chore: add stack trace to failed repo requests

* chore: remove logging and return error instead

* chore: change log messages for contentserver

* chore: add constistent messages to content update routine

* feat: add runtime id, and multierr validator

* chore: rename history

* chore: golint fixes

* chore: simplify (golinter)

* chore: update go version

* chore: remove unused dependencies for new go

* chore: move content update to else statement

* chore: remove go-spew

* chore: bump go version to 1.18

* chore: remove alpine dep for updated deps

* chore: update go version and improve build

* chore: minor reformatting
2022-05-26 15:09:11 +02:00

93 lines
2.1 KiB
Go

package repo
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"testing"
"time"
)
func testHistory() *history {
tempDir, err := ioutil.TempDir(os.TempDir(), "contentserver-history-test")
if err != nil {
panic(err)
}
return newHistory(tempDir)
}
func TestHistoryCurrent(t *testing.T) {
var (
h = testHistory()
test = []byte("test")
b bytes.Buffer
)
err := h.add(test)
if err != nil {
t.Fatal("failed to add: ", err)
}
err = h.getCurrent(&b)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(b.Bytes(), test) {
t.Fatalf("expected %q, got %q", string(test), b.String())
}
}
func TestHistoryCleanup(t *testing.T) {
h := testHistory()
for i := 0; i < 50; i++ {
err := h.add([]byte(fmt.Sprint(i)))
if err != nil {
t.Fatal("failed to add: ", err)
}
time.Sleep(time.Millisecond * 5)
}
err := h.cleanup()
if err != nil {
t.Fatal("failed to run cleanup: ", err)
}
files, err := h.getHistory()
if err != nil {
t.Fatal(err)
}
// -1 for ignoring the current content backup file
if len(files)-1 != *flagMaxHistoryVersions {
t.Fatal("history too long", len(files), "instead of", *flagMaxHistoryVersions)
}
}
func TestHistoryOrder(t *testing.T) {
h := testHistory()
h.varDir = "testdata/order"
files, err := h.getHistory()
if err != nil {
t.Fatal("error not expected")
}
assertStringEqual(t, "testdata/order/contentserver-repo-current.json", files[0])
assertStringEqual(t, "testdata/order/contentserver-repo-2017-10-23.json", files[1])
assertStringEqual(t, "testdata/order/contentserver-repo-2017-10-22.json", files[2])
assertStringEqual(t, "testdata/order/contentserver-repo-2017-10-21.json", files[3])
}
func TestGetFilesForCleanup(t *testing.T) {
h := testHistory()
h.varDir = "testdata/order"
files, err := h.getFilesForCleanup(2)
if err != nil {
t.Fatal("error not expected")
}
assertStringEqual(t, "testdata/order/contentserver-repo-2017-10-21.json", files[0])
}
func assertStringEqual(t *testing.T, expected, actual string) {
if expected != actual {
t.Errorf("expected string %s differs from the actual %s", expected, actual)
}
}