MCPcopy
hub / github.com/grafana/tempo / testFrontend

Function testFrontend

modules/frontend/mcp_tools_test.go:560–617  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

558}
559
560func testFrontend() (*MCPServer, func(t *testing.T, req mcp.CallToolRequest, handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error), expected expectedResult)) {
561 var lastRequest *http.Request
562
563 // Mock search handler that returns a successful response and stores the request
564 mockHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
565 lastRequest = r
566 w.WriteHeader(http.StatusOK)
567 })
568
569 server := &MCPServer{
570 frontend: &QueryFrontend{
571 SearchHandler: mockHandler,
572 TraceByIDHandlerV2: mockHandler,
573 SearchTagsV2Handler: mockHandler,
574 SearchTagsValuesV2Handler: mockHandler,
575 MetricsQueryInstantHandler: mockHandler,
576 MetricsQueryRangeHandler: mockHandler,
577 },
578 logger: log.NewNopLogger(),
579 pathPrefix: "",
580 }
581
582 callAndTestResults := func(t *testing.T, req mcp.CallToolRequest, handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error), expected expectedResult) {
583 ctx := context.Background()
584 result, err := handler(ctx, req)
585
586 require.NoError(t, err)
587 require.NotNil(t, result)
588
589 if expected.meta != nil {
590 require.Equal(t, expected.meta, result.Meta.AdditionalFields)
591 }
592
593 if expected.err != "" {
594 // Check if the result contains an error
595 require.True(t, result.IsError)
596 require.Len(t, result.Content, 1)
597 textContent, ok := result.Content[0].(mcp.TextContent)
598 require.True(t, ok)
599 require.Equal(t, expected.err, textContent.Text)
600 return
601 }
602
603 // For successful cases, verify we have text content
604 require.False(t, result.IsError)
605 require.NotEmpty(t, result.Content)
606
607 // Parse and verify the request URL
608 require.Equal(t, expected.path, lastRequest.URL.Path)
609
610 actualParams := lastRequest.URL.Query()
611 for key, expectedValue := range expected.params {
612 require.Equal(t, expectedValue, actualParams.Get(key), "parameter %s", key)
613 }
614 }
615
616 return server, callAndTestResults
617}

Callers 6

TestHandleSearchFunction · 0.85
TestHandleInstantQueryFunction · 0.85
TestHandleRangeQueryFunction · 0.85
TestHandleGetTraceFunction · 0.85

Calls 6

handlerStruct · 0.85
QueryMethod · 0.80
LenMethod · 0.65
GetMethod · 0.65
WriteHeaderMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected