diff options
| author | 2023-04-28 01:36:44 +0800 | |
|---|---|---|
| committer | 2023-04-28 01:36:44 +0800 | |
| commit | dd84b9d64fb98746a230cd24233ff50a562c39c9 (patch) | |
| tree | b583261ef00b3afe72ec4d6dacb31e57779a6faf /cli/internal/server/server_test.go | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'cli/internal/server/server_test.go')
| -rw-r--r-- | cli/internal/server/server_test.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/cli/internal/server/server_test.go b/cli/internal/server/server_test.go new file mode 100644 index 0000000..b7dcf3a --- /dev/null +++ b/cli/internal/server/server_test.go @@ -0,0 +1,73 @@ +package server + +import ( + "context" + "testing" + "time" + + "github.com/hashicorp/go-hclog" + "google.golang.org/grpc" + "gotest.tools/v3/assert" + + turbofs "github.com/vercel/turbo/cli/internal/fs" + "github.com/vercel/turbo/cli/internal/turbodprotocol" +) + +type mockGrpc struct { + stopped chan struct{} +} + +func (m *mockGrpc) GracefulStop() { + close(m.stopped) +} + +func (m *mockGrpc) RegisterService(desc *grpc.ServiceDesc, impl interface{}) {} + +func TestDeleteRepoRoot(t *testing.T) { + logger := hclog.Default() + logger.SetLevel(hclog.Debug) + repoRootRaw := t.TempDir() + repoRoot := turbofs.AbsoluteSystemPathFromUpstream(repoRootRaw) + + grpcServer := &mockGrpc{ + stopped: make(chan struct{}), + } + + s, err := New("testServer", logger, repoRoot, "some-version", "/log/file/path") + assert.NilError(t, err, "New") + s.Register(grpcServer) + + // Delete the repo root, ensure that GracefulStop got called + err = repoRoot.Remove() + assert.NilError(t, err, "Remove") + + select { + case <-grpcServer.stopped: + case <-time.After(2 * time.Second): + t.Error("timed out waiting for graceful stop to be called") + } +} + +func TestShutdown(t *testing.T) { + logger := hclog.Default() + repoRootRaw := t.TempDir() + repoRoot := turbofs.AbsoluteSystemPathFromUpstream(repoRootRaw) + + grpcServer := &mockGrpc{ + stopped: make(chan struct{}), + } + + s, err := New("testServer", logger, repoRoot, "some-version", "/log/file/path") + assert.NilError(t, err, "New") + s.Register(grpcServer) + + ctx := context.Background() + _, err = s.Shutdown(ctx, &turbodprotocol.ShutdownRequest{}) + assert.NilError(t, err, "Shutdown") + // Ensure that graceful stop gets called + select { + case <-grpcServer.stopped: + case <-time.After(2 * time.Second): + t.Error("timed out waiting for graceful stop to be called") + } +} |
