@@ -11,12 +11,14 @@ import (
11
11
"encoding/json"
12
12
"fmt"
13
13
"math/rand"
14
+ "slices"
14
15
"testing"
15
16
"time"
16
17
17
18
"github.com/cockroachdb/cockroach/pkg/base"
18
19
"github.com/cockroachdb/cockroach/pkg/kv"
19
20
"github.com/cockroachdb/cockroach/pkg/kv/kvserver"
21
+ "github.com/cockroachdb/cockroach/pkg/roachpb"
20
22
"github.com/cockroachdb/cockroach/pkg/sql/sem/eval"
21
23
"github.com/cockroachdb/cockroach/pkg/storage/enginepb"
22
24
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
@@ -157,27 +159,30 @@ func TestGetSSTableMetricsSingleNode(t *testing.T) {
157
159
ts , hostDB , _ := serverutils .StartServer (t , base.TestServerArgs {})
158
160
defer ts .Stopper ().Stop (ctx )
159
161
160
- nodeIDArg := 1
162
+ nodeIDArg := int ( ts . NodeID ())
161
163
storeIDArg := int (ts .GetFirstStoreID ())
162
164
163
165
r := sqlutils .MakeSQLRunner (hostDB )
164
- r .Exec (t , `CREATE TABLE t(k INT PRIMARY KEY, v INT)` )
165
- r .Exec (t , `INSERT INTO t SELECT i, i*10 FROM generate_series(1, 10000) AS g(i)` )
166
-
167
- r .Exec (t , fmt .Sprintf (`
168
- SELECT crdb_internal.compact_engine_span(
169
- %d, %d,
170
- (SELECT raw_start_key FROM [SHOW RANGES FROM TABLE t WITH KEYS] LIMIT 1),
171
- (SELECT raw_end_key FROM [SHOW RANGES FROM TABLE t WITH KEYS] LIMIT 1))` ,
172
- nodeIDArg , storeIDArg ))
173
-
174
- rows := r .Query (t , fmt .Sprintf (`
175
- SELECT * FROM crdb_internal.sstable_metrics(
176
- %d, %d,
177
- (SELECT raw_start_key FROM [SHOW RANGES FROM TABLE t WITH KEYS] LIMIT 1),
178
- (SELECT raw_end_key FROM [SHOW RANGES FROM TABLE t WITH KEYS] LIMIT 1))` ,
179
- nodeIDArg , storeIDArg ))
180
166
167
+ // Seed some data.
168
+ r .Exec (t , `CREATE TABLE t(k INT PRIMARY KEY, v STRING)` )
169
+ r .Exec (t , `INSERT INTO t SELECT i, CAST(gen_random_uuid() AS STRING) FROM generate_series(1, 10000) AS g(i)` )
170
+
171
+ // Construct min and max engine keys. We append a 0x00 byte to the end of
172
+ // each to make them valid engine keys (the last byte indicates the length
173
+ // of the version, in this case none).
174
+ minEngineKey := append (slices .Clone (roachpb .KeyMin ), 0x00 )
175
+ maxEngineKey := append (slices .Clone (roachpb .KeyMax ), 0x00 )
176
+
177
+ // Manually compact the entire user key space. This will trigger a memtable
178
+ // flush if needed, ensuring that the data written above has been flushed to
179
+ // sstables.
180
+ r .Exec (t , `SELECT crdb_internal.compact_engine_span($1, $2, $3, $4)` ,
181
+ nodeIDArg , storeIDArg , minEngineKey , maxEngineKey )
182
+
183
+ // Now there must exist at least one sstable.
184
+ rows := r .Query (t , `SELECT * FROM crdb_internal.sstable_metrics($1, $2, $3, $4)` ,
185
+ nodeIDArg , storeIDArg , minEngineKey , maxEngineKey )
181
186
count := 0
182
187
var nodeID int
183
188
var storeID int
@@ -195,6 +200,7 @@ func TestGetSSTableMetricsSingleNode(t *testing.T) {
195
200
require .NotEqual (t , approximateSpanBytes , 0 )
196
201
count ++
197
202
}
203
+ require .NoError (t , rows .Err ())
198
204
require .GreaterOrEqual (t , count , 1 )
199
205
}
200
206
0 commit comments