24
}
25
26
>
func StartMemoryCollector(tb testing.TB) (*MemoryCollector, error) {
collector.go
27
>
grpcServer := grpc.NewServer()
28
>
l := &MemoryCollector{
29
>
addr: fmt.Sprintf("localhost:%d", freeport.MustGetFreePort()),
30
>
}
31
>
ctrace.RegisterTraceServiceServer(grpcServer, l)
32
>
33
>
listener, err := net.Listen("tcp", l.addr)
34
>
if err != nil {
35
return nil, err
36
}
37
39
>
if err := grpcServer.Serve(listener); err != nil {
40
tb.Errorf("OTEL logger failed to start: %v", err)
41
}
42
}()
43
45
>
<-tb.Context().Done()
46
>
grpcServer.Stop()
47
>
}()
48
50
}
51
53
>
return "http://" + l.addr
54
>
}
55
56
>
func (l *MemoryCollector) Spans() []*trace.ResourceSpans {
collector.go
57
>
l.spansLock.RLock()
58
>
defer l.spansLock.RUnlock()
59
>
60
>
return l.spans
61
>
}
62
63
func (l *MemoryCollector) Export(
64
ctx context.Context,
65
request *ctrace.ExportTraceServiceRequest,
66
>
) (*ctrace.ExportTraceServiceResponse, error) {
collector.go
67
>
l.spansLock.Lock()
68
>
defer l.spansLock.Unlock()
69
>
70
>
l.spans = append(l.spans, request.ResourceSpans...)
71
>
return &ctrace.ExportTraceServiceResponse{}, nil
72
>
}