(t *testing.T)
| 149 | } |
| 150 | |
| 151 | func TestMetrics_CompletionFlow(t *testing.T) { |
| 152 | setup := setupTest(t) |
| 153 | defer setup.cleanup() |
| 154 | |
| 155 | // Create a trace and push it |
| 156 | traceID := test.ValidTraceID(nil) |
| 157 | trace := test.MakeTrace(10, traceID) |
| 158 | traceData, err := trace.Marshal() |
| 159 | require.NoError(t, err) |
| 160 | |
| 161 | req := &tempopb.PushBytesRequest{ |
| 162 | Traces: []tempopb.PreallocBytes{{Slice: traceData}}, |
| 163 | Ids: [][]byte{traceID}, |
| 164 | } |
| 165 | setup.instance.pushBytes(t.Context(), time.Now(), req) |
| 166 | |
| 167 | // Cut traces to head block |
| 168 | drained, err := setup.instance.cutIdleTraces(t.Context(), true) |
| 169 | require.NoError(t, err) |
| 170 | require.True(t, drained, "should drain live traces in one iteration") |
| 171 | |
| 172 | // Cut block to prepare for completion |
| 173 | blockID, err := setup.instance.cutBlocks(t.Context(), true) |
| 174 | require.NoError(t, err) |
| 175 | assert.NotEqual(t, uuid.Nil, blockID, "should generate a valid block ID") |
| 176 | |
| 177 | // Record initial completion size histogram count |
| 178 | initialCompletionSize := getHistogramCount(t, metricCompletionSize) |
| 179 | |
| 180 | // Complete the block |
| 181 | _, err = setup.instance.completeBlock(t.Context(), blockID) |
| 182 | require.NoError(t, err) |
| 183 | |
| 184 | // Verify completion size metric was updated |
| 185 | finalCompletionSize := getHistogramCount(t, metricCompletionSize) |
| 186 | assert.Equal(t, initialCompletionSize+1, finalCompletionSize, |
| 187 | "completion size histogram should record one additional sample") |
| 188 | } |
| 189 | |
| 190 | func TestMetrics_EmptyPushBytesRequest(t *testing.T) { |
| 191 | setup := setupTest(t) |
nothing calls this directly
no test coverage detected