mirror of
https://github.com/sablierapp/sablier.git
synced 2025-12-30 09:45:13 +01:00
package test is failing - prob goroutine hanging
This commit is contained in:
1
pkg/sablier/autostop.go
Normal file
1
pkg/sablier/autostop.go
Normal file
@@ -0,0 +1 @@
|
||||
package sablier
|
||||
@@ -1,6 +1,7 @@
|
||||
package sablier
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/sablierapp/sablier/pkg/promise"
|
||||
"github.com/sablierapp/sablier/pkg/provider"
|
||||
"github.com/sablierapp/sablier/pkg/tinykv"
|
||||
@@ -24,6 +25,10 @@ func NewSablier(provider provider.Provider) *Sablier {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
log.Printf("instance [%s] expired - removing from promises", k)
|
||||
err := provider.Stop(context.Background(), k)
|
||||
if err != nil {
|
||||
log.Printf("error stopping instance [%s]: %v", k, err)
|
||||
}
|
||||
delete(promises, k)
|
||||
})
|
||||
return &Sablier{
|
||||
|
||||
@@ -31,7 +31,7 @@ func (s *Sablier) StartInstance(name string, opts StartOptions) *promise.Promise
|
||||
}
|
||||
|
||||
if ok && pr.Fulfilled() {
|
||||
log.Printf("request to start instance [%v] is already started, refreshing duration", name)
|
||||
log.Printf("instance [%s] will expire after [%v]", name, opts.ExpiresAfter)
|
||||
err := s.expirations.Put(name, name, opts.ExpiresAfter)
|
||||
if err != nil {
|
||||
log.Printf("failed to refresh instance [%v]: %v", name, err)
|
||||
|
||||
@@ -76,6 +76,7 @@ func TestStartExpires(t *testing.T) {
|
||||
DesiredReplicas: opts.DesiredReplicas,
|
||||
ConsiderReadyAfter: opts.ConsiderReadyAfter,
|
||||
}).Return(nil).Twice()
|
||||
m.EXPECT().Stop(mock.Anything, name).Return(nil).Once()
|
||||
|
||||
s := sablier.NewSablier(m)
|
||||
|
||||
@@ -125,6 +126,9 @@ func TestStartRefreshes(t *testing.T) {
|
||||
p3 := s.StartInstance(name, opts)
|
||||
|
||||
assert.Same(t, p1, p2, p3)
|
||||
|
||||
_, err := promise.AllSettled(context.Background(), p1, p2, p3).Await(context.Background())
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestStartAgainOnError(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user