(log *spanlogger.SpanLogger, tc Case, pairs []model.SamplePair, duration time.Duration, cfg CommonTestConfig)
| 153 | } |
| 154 | |
| 155 | func verifySamples(log *spanlogger.SpanLogger, tc Case, pairs []model.SamplePair, duration time.Duration, cfg CommonTestConfig) bool { |
| 156 | for _, pair := range pairs { |
| 157 | correct := timeEpsilonCorrect(tc.ExpectedValueAt, pair, cfg.testTimeEpsilon) || valueEpsilonCorrect(tc.ExpectedValueAt, pair, cfg.testEpsilon) |
| 158 | if correct { |
| 159 | sampleResult.WithLabelValues(tc.Name(), success).Inc() |
| 160 | } else { |
| 161 | sampleResult.WithLabelValues(tc.Name(), fail).Inc() |
| 162 | level.Error(log).Log("msg", "wrong value", "at", pair.Timestamp, "expected", tc.ExpectedValueAt(pair.Timestamp.Time()), "actual", pair.Value) |
| 163 | log.Error(fmt.Errorf("wrong value")) |
| 164 | return false |
| 165 | } |
| 166 | } |
| 167 | |
| 168 | // when verifying a deleted series we get samples for very short interval. As small as 1 or 2 missing/extra samples can cause test to fail. |
| 169 | if duration > 5*time.Minute { |
| 170 | expectedNumSamples := int(duration / cfg.ScrapeInterval) |
| 171 | if !epsilonCorrect(float64(len(pairs)), float64(expectedNumSamples), cfg.samplesEpsilon) { |
| 172 | level.Error(log).Log("msg", "wrong number of samples", "expected", expectedNumSamples, "actual", len(pairs)) |
| 173 | log.Error(fmt.Errorf("wrong number of samples")) |
| 174 | return false |
| 175 | } |
| 176 | } else { |
| 177 | expectedNumSamples := int(duration / cfg.ScrapeInterval) |
| 178 | if math.Abs(float64(expectedNumSamples-len(pairs))) > 2 { |
| 179 | level.Error(log).Log("msg", "wrong number of samples", "expected", expectedNumSamples, "actual", len(pairs)) |
| 180 | log.Error(fmt.Errorf("wrong number of samples")) |
| 181 | return false |
| 182 | } |
| 183 | } |
| 184 | |
| 185 | return true |
| 186 | } |
| 187 | |
| 188 | func timeEpsilonCorrect(f func(time.Time) float64, pair model.SamplePair, testTimeEpsilon time.Duration) bool { |
| 189 | minExpected := f(pair.Timestamp.Time().Add(-testTimeEpsilon)) |
no test coverage detected