refactor!: separate runtime releases from panel source
This commit is contained in:
@@ -7,26 +7,19 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIntentReservationConcurrencyAndRestart(t *testing.T) {
|
||||
func TestInstanceReservationConcurrencyAndRestart(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "store.db")
|
||||
s, err := Open(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.EnsureIntents(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var wg sync.WaitGroup
|
||||
result := make(chan error, 30)
|
||||
for n := 0; n < 30; n++ {
|
||||
wg.Add(1)
|
||||
go func(n int) {
|
||||
defer wg.Done()
|
||||
if n%2 == 0 {
|
||||
result <- s.ReserveIntent(Intent{ID: ID(), UID: "u", Name: "test", Version: "1.2.3"})
|
||||
} else {
|
||||
result <- s.ReserveInstance(Instance{ID: ID(), UID: "u"})
|
||||
}
|
||||
result <- s.ReserveInstance(Instance{ID: ID(), UID: "u"})
|
||||
}(n)
|
||||
}
|
||||
wg.Wait()
|
||||
@@ -48,47 +41,26 @@ func TestIntentReservationConcurrencyAndRestart(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer s.Close()
|
||||
if err = s.ReserveIntent(Intent{ID: ID(), UID: "u"}); !errors.Is(err, ErrInstanceLimit) {
|
||||
if err = s.ReserveInstance(Instance{ID: ID(), UID: "u"}); !errors.Is(err, ErrInstanceLimit) {
|
||||
t.Fatalf("restart lost reservation: %v", err)
|
||||
}
|
||||
}
|
||||
func TestIntentClaimCancelAndVersion(t *testing.T) {
|
||||
|
||||
func TestRetiredIntentsDoNotReserveInstanceSlots(t *testing.T) {
|
||||
s, err := Open(filepath.Join(t.TempDir(), "store.db"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer s.Close()
|
||||
if err = s.EnsureIntents(); err != nil {
|
||||
if _, err := s.DB.Exec("CREATE TABLE creation_intents(uid TEXT,status TEXT); INSERT INTO creation_intents VALUES('u','waiting'),('u','creating')"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
in := Intent{ID: ID(), UID: "u", Version: "1.2.3"}
|
||||
if err = s.ReserveIntent(in); err != nil {
|
||||
t.Fatal(err)
|
||||
for n := 0; n < 2; n++ {
|
||||
if err := s.ReserveInstance(Instance{ID: ID(), UID: "u"}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
i := Instance{ID: ID(), UID: "u", Version: "1.2.4"}
|
||||
if err = s.ClaimIntent(in.ID, i); !errors.Is(err, ErrIntentState) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.CancelIntent(in.ID, "other"); !errors.Is(err, ErrIntentState) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
i.Version = in.Version
|
||||
if err = s.ClaimIntent(in.ID, i); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.CancelIntent(in.ID, in.UID); !errors.Is(err, ErrIntentState) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.ReserveIntent(Intent{ID: "second", UID: "u"}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.ReserveIntent(Intent{ID: "third", UID: "u"}); !errors.Is(err, ErrInstanceLimit) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.CancelIntent("second", "u"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = s.ReserveIntent(Intent{ID: "third", UID: "u"}); err != nil {
|
||||
if err := s.ReserveInstance(Instance{ID: ID(), UID: "u"}); !errors.Is(err, ErrInstanceLimit) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user