From dd84b9d64fb98746a230cd24233ff50a562c39c9 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 01:36:44 +0800 Subject: --- cli/internal/server/server_test.go | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 cli/internal/server/server_test.go (limited to 'cli/internal/server/server_test.go') 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") + } +} -- cgit v1.2.3-70-g09d2