Skip to content

Commit e9c018b

Browse files
committed
plumb context to start
Signed-off-by: Jeremy Drouillard <jeremy@stacklok.com>
1 parent 11127e2 commit e9c018b

6 files changed

Lines changed: 21 additions & 13 deletions

File tree

cmd/vmcp/app/commands.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,12 @@ func runServe(cmd *cobra.Command, _ []string) error {
311311
if err != nil {
312312
return fmt.Errorf("failed to create telemetry provider: %w", err)
313313
}
314+
defer func() {
315+
err := telemetryProvider.Shutdown(ctx)
316+
if err != nil {
317+
logger.Errorf("failed to shutdown telemetry provider: %v", err)
318+
}
319+
}()
314320
}
315321

316322
serverCfg := &vmcpserver.Config{
@@ -333,7 +339,7 @@ func runServe(cmd *cobra.Command, _ []string) error {
333339
}
334340

335341
// Create server with discovery manager, backends, and workflow definitions
336-
srv, err := vmcpserver.New(serverCfg, rtr, backendClient, discoveryMgr, backends, workflowDefs)
342+
srv, err := vmcpserver.New(ctx, serverCfg, rtr, backendClient, discoveryMgr, backends, workflowDefs)
337343
if err != nil {
338344
return fmt.Errorf("failed to create Virtual MCP Server: %w", err)
339345
}

pkg/vmcp/server/health_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ func createTestServer(t *testing.T) *server.Server {
5959
// Mock Stop to be called during server shutdown
6060
mockDiscoveryMgr.EXPECT().Stop().AnyTimes()
6161

62-
srv, err := server.New(&server.Config{
62+
// Create context for server
63+
ctx, cancel := context.WithCancel(t.Context())
64+
65+
srv, err := server.New(ctx, &server.Config{
6366
Name: "test-vmcp",
6467
Version: "1.0.0",
6568
Host: "127.0.0.1",
@@ -68,9 +71,7 @@ func createTestServer(t *testing.T) *server.Server {
6871
require.NoError(t, err)
6972

7073
// Start server in background
71-
ctx, cancel := context.WithCancel(t.Context())
7274
t.Cleanup(cancel)
73-
7475
errCh := make(chan error, 1)
7576
go func() {
7677
if err := srv.Start(ctx); err != nil {
@@ -175,7 +176,7 @@ func TestServer_SessionManager(t *testing.T) {
175176
mockDiscoveryMgr := discoveryMocks.NewMockManager(ctrl)
176177
rt := router.NewDefaultRouter()
177178

178-
srv, err := server.New(&server.Config{
179+
srv, err := server.New(context.Background(), &server.Config{
179180
Name: "test-vmcp",
180181
Version: "1.0.0",
181182
SessionTTL: 10 * time.Minute,
@@ -198,7 +199,7 @@ func TestServer_SessionManager(t *testing.T) {
198199
rt := router.NewDefaultRouter()
199200

200201
customTTL := 15 * time.Minute
201-
srv, err := server.New(&server.Config{
202+
srv, err := server.New(context.Background(), &server.Config{
202203
Name: "test-vmcp",
203204
Version: "1.0.0",
204205
SessionTTL: customTTL,

pkg/vmcp/server/integration_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func TestIntegration_AggregatorToRouterToServer(t *testing.T) {
192192
// Mock Stop to be called during server shutdown
193193
mockDiscoveryMgr.EXPECT().Stop().Times(1)
194194

195-
srv, err := server.New(&server.Config{
195+
srv, err := server.New(ctx, &server.Config{
196196
Name: "test-vmcp",
197197
Version: "1.0.0",
198198
Host: "127.0.0.1",
@@ -322,7 +322,7 @@ func TestIntegration_HTTPRequestFlowWithRoutingTable(t *testing.T) {
322322
}
323323

324324
// Create and start server
325-
srv, err := server.New(&server.Config{
325+
srv, err := server.New(ctx, &server.Config{
326326
Name: "test-vmcp",
327327
Version: "1.0.0",
328328
Host: "127.0.0.1",

pkg/vmcp/server/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ type Server struct {
152152
//
153153
//nolint:gocyclo // Complexity from hook logic is acceptable
154154
func New(
155+
ctx context.Context,
155156
cfg *Config,
156157
rt router.Router,
157158
backendClient vmcp.BackendClient,
@@ -205,7 +206,7 @@ func New(
205206
if cfg.TelemetryProvider != nil {
206207
var err error
207208
backendClient, err = monitorBackends(
208-
context.Background(),
209+
ctx,
209210
cfg.TelemetryProvider.MeterProvider(),
210211
cfg.TelemetryProvider.TracerProvider(),
211212
backends,

pkg/vmcp/server/server_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func TestNew(t *testing.T) {
7676
mockBackendClient := mocks.NewMockBackendClient(ctrl)
7777
mockDiscoveryMgr := discoveryMocks.NewMockManager(ctrl)
7878

79-
s, err := server.New(tt.config, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
79+
s, err := server.New(context.Background(), tt.config, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
8080
require.NoError(t, err)
8181
require.NotNil(t, s)
8282

@@ -133,7 +133,7 @@ func TestServer_Address(t *testing.T) {
133133
mockBackendClient := mocks.NewMockBackendClient(ctrl)
134134
mockDiscoveryMgr := discoveryMocks.NewMockManager(ctrl)
135135

136-
s, err := server.New(tt.config, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
136+
s, err := server.New(context.Background(), tt.config, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
137137
require.NoError(t, err)
138138
addr := s.Address()
139139
assert.Equal(t, tt.expected, addr)
@@ -155,7 +155,7 @@ func TestServer_Stop(t *testing.T) {
155155
mockDiscoveryMgr := discoveryMocks.NewMockManager(ctrl)
156156
mockDiscoveryMgr.EXPECT().Stop().Times(1)
157157

158-
s, err := server.New(&server.Config{}, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
158+
s, err := server.New(context.Background(), &server.Config{}, mockRouter, mockBackendClient, mockDiscoveryMgr, []vmcp.Backend{}, nil)
159159
require.NoError(t, err)
160160
err = s.Stop(context.Background())
161161
require.NoError(t, err)

test/integration/vmcp/helpers/vmcp_server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func NewVMCPServer(
165165
rtr := router.NewDefaultRouter()
166166

167167
// Create vMCP server with test-specific defaults
168-
vmcpServer, err := vmcpserver.New(&vmcpserver.Config{
168+
vmcpServer, err := vmcpserver.New(ctx, &vmcpserver.Config{
169169
Name: "test-vmcp",
170170
Version: "1.0.0",
171171
Host: "127.0.0.1",

0 commit comments

Comments
 (0)