diff --git a/storage/local/storage_test.go b/storage/local/storage_test.go index 2ff4c2686..da6d49649 100644 --- a/storage/local/storage_test.go +++ b/storage/local/storage_test.go @@ -980,6 +980,28 @@ func testValueAtOrBeforeTime(t *testing.T, encoding chunk.Encoding) { if expected.Value != actual.Value { t.Errorf("3.2. Got %v; want %v", actual.Value, expected.Value) } + + // #4 Query alternatingly exactly on and just between timestamps. + // Exposes issue #2965. + for i, expected := range samples { + i *= 2 + actual := it.ValueAtOrBeforeTime(expected.Timestamp) + if expected.Timestamp != actual.Timestamp { + t.Errorf("4.%d. Got %v; want %v", i, actual.Timestamp, expected.Timestamp) + } + if expected.Value != actual.Value { + t.Errorf("4.%d. Got %v; want %v", i, actual.Value, expected.Value) + } + + i++ + actual = it.ValueAtOrBeforeTime(expected.Timestamp + 1) + if expected.Timestamp != actual.Timestamp { + t.Errorf("4.%d. Got %v; want %v", i, actual.Timestamp, expected.Timestamp) + } + if expected.Value != actual.Value { + t.Errorf("4.%d. Got %v; want %v", i, actual.Value, expected.Value) + } + } } func TestValueAtTimeChunkType0(t *testing.T) {