alice-lg/pkg/store/sources_store_test.go
2022-02-09 11:56:03 +01:00

105 lines
1.7 KiB
Go

package store
import (
"testing"
"time"
)
func TestGetSourceIDsForRefreshSequential(t *testing.T) {
s := &SourcesStore{
refreshParallelism: 1,
status: map[string]*Status{
"src1": {
SourceID: "src1",
},
"src2": {
SourceID: "src2",
},
},
}
ids := s.GetSourceIDsForRefresh()
if len(ids) != 1 {
t.Error("expected 1 id")
}
if err := s.LockSource(ids[0]); err != nil {
t.Error(err)
}
lastID := ids[0]
ids = s.GetSourceIDsForRefresh()
if len(ids) != 0 {
t.Error("all concurrent refresh slots should be taken")
}
if err := s.RefreshSuccess(lastID); err != nil {
t.Error(err)
}
ids = s.GetSourceIDsForRefresh()
if len(ids) != 1 {
t.Error("expected 1 id")
}
if ids[0] == lastID {
t.Error("the next source should have been returned")
}
}
func TestGetSourceIDsForRefreshParallel(t *testing.T) {
s := &SourcesStore{
refreshParallelism: 2,
status: map[string]*Status{
"src1": {
SourceID: "src1",
},
"src2": {
SourceID: "src2",
},
"src3": {
SourceID: "src3",
lastRefreshStart: time.Now().UTC(),
},
},
}
ids := s.GetSourceIDsForRefresh()
if len(ids) != 2 {
t.Error("expected 2 ids")
}
for _, id := range ids {
if err := s.LockSource(id); err != nil {
t.Error(err)
}
if id == "src3" {
t.Error("unexpected src3")
}
}
nextIds := s.GetSourceIDsForRefresh()
if len(nextIds) != 0 {
t.Error("all concurrent refresh slots should be taken")
}
for _, id := range ids {
if err := s.RefreshSuccess(id); err != nil {
t.Error(err)
}
}
ids = s.GetSourceIDsForRefresh()
t.Log(ids)
t.Log(s.status["src1"])
if len(ids) != 2 {
t.Error("expected 2 id")
}
if ids[0] != "src3" {
t.Error("expected src3 to be least refreshed")
}
}