1ad2ba7e3e
Adds graceful exit chore and worker for V3-2614
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
// Copyright (C) 2019 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package gracefulexit_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"storj.io/storj/internal/testcontext"
|
|
"storj.io/storj/internal/testplanet"
|
|
"storj.io/storj/satellite/overlay"
|
|
)
|
|
|
|
func TestChore(t *testing.T) {
|
|
testplanet.Run(t, testplanet.Config{
|
|
SatelliteCount: 1,
|
|
StorageNodeCount: 8,
|
|
UplinkCount: 1,
|
|
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
|
|
satellite1 := planet.Satellites[0]
|
|
exitingNode := planet.StorageNodes[0]
|
|
|
|
satellite1.GracefulExit.Chore.Loop.Pause()
|
|
exitingNode.GracefulExit.Chore.Loop.Pause()
|
|
|
|
exitStatus := overlay.ExitStatusRequest{
|
|
NodeID: exitingNode.ID(),
|
|
ExitInitiatedAt: time.Now(),
|
|
}
|
|
|
|
_, err := satellite1.Overlay.DB.UpdateExitStatus(ctx, &exitStatus)
|
|
require.NoError(t, err)
|
|
|
|
err = exitingNode.DB.Satellites().InitiateGracefulExit(ctx, satellite1.ID(), time.Now(), 10000)
|
|
require.NoError(t, err)
|
|
|
|
exitProgress, err := exitingNode.DB.Satellites().ListGracefulExits(ctx)
|
|
require.NoError(t, err)
|
|
require.Len(t, exitProgress, 1)
|
|
|
|
exitingNode.GracefulExit.Chore.Loop.TriggerWait()
|
|
|
|
exitProgress, err = exitingNode.DB.Satellites().ListGracefulExits(ctx)
|
|
require.NoError(t, err)
|
|
|
|
for _, progress := range exitProgress {
|
|
if progress.SatelliteID == satellite1.ID() {
|
|
require.NotNil(t, progress.FinishedAt)
|
|
}
|
|
}
|
|
})
|
|
}
|