TestPopulateWithDelSeriesIterator_WithST tests that ST (start time) values are correctly preserved when iterating through chunks with ST support.
(t *testing.T)
| 2063 | // TestPopulateWithDelSeriesIterator_WithST tests that ST (start time) values are |
| 2064 | // correctly preserved when iterating through chunks with ST support. |
| 2065 | func TestPopulateWithDelSeriesIterator_WithST(t *testing.T) { |
| 2066 | // Samples with non-zero ST values to test ST preservation. |
| 2067 | samplesWithST := [][]chunks.Sample{ |
| 2068 | { |
| 2069 | sample{st: 100, t: 1000, f: 1.0}, |
| 2070 | sample{st: 200, t: 2000, f: 2.0}, |
| 2071 | sample{st: 300, t: 3000, f: 3.0}, |
| 2072 | }, |
| 2073 | } |
| 2074 | |
| 2075 | // Samples with varying ST patterns. |
| 2076 | samplesVaryingST := [][]chunks.Sample{ |
| 2077 | { |
| 2078 | sample{st: 0, t: 1000, f: 1.0}, // st=0 |
| 2079 | sample{st: 1500, t: 1500, f: 1.5}, // st=t |
| 2080 | sample{st: 1900, t: 2000, f: 2.0}, // st=t-100 |
| 2081 | sample{st: 500, t: 3000, f: 3.0}, // st < t |
| 2082 | }, |
| 2083 | } |
| 2084 | |
| 2085 | cases := []struct { |
| 2086 | name string |
| 2087 | samples [][]chunks.Sample |
| 2088 | expected []chunks.Sample |
| 2089 | }{ |
| 2090 | { |
| 2091 | name: "all samples have non-zero ST", |
| 2092 | samples: samplesWithST, |
| 2093 | expected: []chunks.Sample{ |
| 2094 | sample{st: 100, t: 1000, f: 1.0}, |
| 2095 | sample{st: 200, t: 2000, f: 2.0}, |
| 2096 | sample{st: 300, t: 3000, f: 3.0}, |
| 2097 | }, |
| 2098 | }, |
| 2099 | { |
| 2100 | name: "samples with varying ST patterns", |
| 2101 | samples: samplesVaryingST, |
| 2102 | expected: []chunks.Sample{ |
| 2103 | sample{st: 0, t: 1000, f: 1.0}, |
| 2104 | sample{st: 1500, t: 1500, f: 1.5}, |
| 2105 | sample{st: 1900, t: 2000, f: 2.0}, |
| 2106 | sample{st: 500, t: 3000, f: 3.0}, |
| 2107 | }, |
| 2108 | }, |
| 2109 | } |
| 2110 | |
| 2111 | for _, tc := range cases { |
| 2112 | t.Run(tc.name, func(t *testing.T) { |
| 2113 | // Test with chunks (not iterables). |
| 2114 | t.Run("chunks", func(t *testing.T) { |
| 2115 | f, chkMetas := createFakeReaderAndNotPopulatedChunks(tc.samples...) |
| 2116 | it := &populateWithDelSeriesIterator{} |
| 2117 | it.reset(ulid.ULID{}, f, chkMetas, nil) |
| 2118 | |
| 2119 | var result []chunks.Sample |
| 2120 | for it.Next() != chunkenc.ValNone { |
| 2121 | st := it.AtST() |
| 2122 | ts, v := it.At() |
nothing calls this directly
no test coverage detected
searching dependent graphs…