mirror of
https://github.com/cirruslabs/tart.git
synced 2026-09-29 18:51:19 +02:00
Wait for collector in OpenTelemetry integration test (#1335)
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"net/url"
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
|
semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
|
||||||
@@ -19,7 +20,7 @@ import (
|
|||||||
|
|
||||||
func TestOpenTelemetry(t *testing.T) {
|
func TestOpenTelemetry(t *testing.T) {
|
||||||
// Start a mock OpenTelemetry collector server
|
// Start a mock OpenTelemetry collector server
|
||||||
var traces []*tracepkg.ExportTraceServiceRequest
|
traces := make(chan *tracepkg.ExportTraceServiceRequest, 1)
|
||||||
|
|
||||||
server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
||||||
var trace tracepkg.ExportTraceServiceRequest
|
var trace tracepkg.ExportTraceServiceRequest
|
||||||
@@ -43,7 +44,11 @@ func TestOpenTelemetry(t *testing.T) {
|
|||||||
"we do not support %q yet", request.Header.Get("Content-Type"))
|
"we do not support %q yet", request.Header.Get("Content-Type"))
|
||||||
}
|
}
|
||||||
|
|
||||||
traces = append(traces, &trace)
|
select {
|
||||||
|
case traces <- &trace:
|
||||||
|
default:
|
||||||
|
t.Error("received an unexpected additional trace")
|
||||||
|
}
|
||||||
|
|
||||||
var response tracepkg.ExportTraceServiceResponse
|
var response tracepkg.ExportTraceServiceResponse
|
||||||
|
|
||||||
@@ -54,6 +59,7 @@ func TestOpenTelemetry(t *testing.T) {
|
|||||||
_, err = writer.Write(responseBytes)
|
_, err = writer.Write(responseBytes)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}))
|
}))
|
||||||
|
t.Cleanup(server.Close)
|
||||||
|
|
||||||
// Start a "tart list" command
|
// Start a "tart list" command
|
||||||
serverURL, err := url.Parse(server.URL)
|
serverURL, err := url.Parse(server.URL)
|
||||||
@@ -67,9 +73,16 @@ func TestOpenTelemetry(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Ensure that the mock OpenTelemetry collector received a trace from "tart list"
|
// Ensure that the mock OpenTelemetry collector received a trace from "tart list"
|
||||||
require.Len(t, traces, 1)
|
var trace *tracepkg.ExportTraceServiceRequest
|
||||||
|
select {
|
||||||
|
case trace = <-traces:
|
||||||
|
case <-time.After(5 * time.Second):
|
||||||
|
t.Fatal("timed out waiting for OpenTelemetry trace")
|
||||||
|
}
|
||||||
|
server.Close()
|
||||||
|
require.Empty(t, traces, "received an unexpected additional trace")
|
||||||
|
|
||||||
resourceSpans := traces[0].GetResourceSpans()
|
resourceSpans := trace.GetResourceSpans()
|
||||||
require.Len(t, resourceSpans, 1)
|
require.Len(t, resourceSpans, 1)
|
||||||
|
|
||||||
// Ensure that service name and version resources are set
|
// Ensure that service name and version resources are set
|
||||||
|
|||||||
Reference in New Issue
Block a user