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

Method RunValidation

cmd/tempo-vulture/validation.go:158–245  ·  view source on GitHub ↗
(
	ctx context.Context,
	writer TraceWriter,
	querier TraceQuerier,
	searcher TraceSearcher,
)

Source from the content-addressed store, hash-verified

156}
157
158func (vs *ValidationService) RunValidation(
159 ctx context.Context,
160 writer TraceWriter,
161 querier TraceQuerier,
162 searcher TraceSearcher,
163) ValidationResult {
164 start := vs.clock.Now()
165
166 result := ValidationResult{
167 TotalTraces: vs.config.Cycles,
168 Failures: make([]ValidationFailure, 0),
169 }
170
171 traces := []traceInfo{}
172
173 // for each cycle: do the reads and writes right away, but wait a bit for the
174 // traces to be available to search
175 for i := 0; i < vs.config.Cycles; i++ {
176 // Write the traces
177 trace, actual, err := vs.writeValidationTrace(ctx, writer)
178 if err != nil {
179 result.Failures = append(result.Failures, ValidationFailure{
180 Phase: "write",
181 Error: err,
182 Timestamp: vs.clock.Now(),
183 })
184 result.Duration = vs.clock.Now().Sub(start)
185 result.SuccessCount = (result.TotalTraces) - len(result.Failures)
186 return result
187 }
188 vs.logger.Info("Wrote trace", zap.String("id", trace.HexID()))
189
190 traces = append(traces, traceInfo{
191 id: trace.HexID(),
192 timestamp: trace.Timestamp(),
193 actualTrace: actual,
194 })
195
196 // Validate that we can retrieve them by trace ID.
197 readErr := vs.validateTraceRetrieval(ctx, trace, querier)
198 if readErr != nil {
199 result.Failures = append(result.Failures, ValidationFailure{
200 Phase: "read",
201 Error: readErr,
202 Timestamp: vs.clock.Now(),
203 })
204 }
205
206 // sleep 1 sec to guarantee different timestamps on traces
207 if err := vs.sleepWithContext(ctx, 1*time.Second); err != nil {
208 // Context cancelled - add failure and return early
209 result.Failures = append(result.Failures, ValidationFailure{
210 Phase: "timeout",
211 Error: err,
212 Timestamp: vs.clock.Now(),
213 })
214 break
215 }

Callers 2

TestRunValidationFunction · 0.95
RunValidationModeFunction · 0.95

Calls 9

writeValidationTraceMethod · 0.95
sleepWithContextMethod · 0.95
validateTraceSearchMethod · 0.95
NewTraceInfoFunction · 0.92
HexIDMethod · 0.80
TimestampMethod · 0.80
NowMethod · 0.65
StringMethod · 0.45

Tested by 1

TestRunValidationFunction · 0.76