mirror of
https://github.com/git-pkgs/proxy.git
synced 2026-11-09 15:49:16 -05:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
|
|
package server
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/git-pkgs/proxy/internal/config"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestProjectPruningRemovesStaleProjects(t *testing.T) {
|
||
|
|
ts := newProjectsTestServer(t)
|
||
|
|
ts.server.cfg.Projects = config.ProjectsConfig{Enabled: true, Token: testProjectsToken, MaxAge: "30d"}
|
||
|
|
if err := ts.server.cfg.Projects.Validate(); err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if err := ts.db.SaveProject("acme/old", "", "", time.Now().Add(-31*24*time.Hour), nil); err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if err := ts.db.SaveProject("acme/new", "", "", time.Now(), nil); err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
ctx, cancel := context.WithCancel(context.Background())
|
||
|
|
ts.server.startProjectPruning(ctx)
|
||
|
|
defer func() {
|
||
|
|
cancel()
|
||
|
|
ts.server.background.Wait()
|
||
|
|
}()
|
||
|
|
|
||
|
|
deadline := time.Now().Add(5 * time.Second)
|
||
|
|
for {
|
||
|
|
old, err := ts.db.GetProject("acme/old")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if old == nil {
|
||
|
|
break
|
||
|
|
}
|
||
|
|
if time.Now().After(deadline) {
|
||
|
|
t.Fatal("acme/old was not pruned")
|
||
|
|
}
|
||
|
|
time.Sleep(10 * time.Millisecond)
|
||
|
|
}
|
||
|
|
if current, err := ts.db.GetProject("acme/new"); err != nil || current == nil {
|
||
|
|
t.Errorf("acme/new was pruned: %v, %v", current, err)
|
||
|
|
}
|
||
|
|
}
|