@@ -284,30 +284,35 @@ func newClusterScenario() *clusterScenario {
284284 }
285285}
286286
287+ var clusterBench * clusterScenario
288+
287289func BenchmarkClusterPing (b * testing.B ) {
288290 if testing .Short () {
289291 b .Skip ("skipping in short mode" )
290292 }
291293
292294 ctx := context .Background ()
293- cluster := newClusterScenario ()
294- if err := startCluster (ctx , cluster ); err != nil {
295- b .Fatal (err )
295+ if clusterBench == nil {
296+ clusterBench = newClusterScenario ()
297+ if err := configureClusterTopology (ctx , clusterBench ); err != nil {
298+ b .Fatal (err )
299+ }
296300 }
297- defer cluster .Close ()
298301
299- client := cluster .newClusterClient (ctx , redisClusterOptions ())
302+ client := clusterBench .newClusterClient (ctx , redisClusterOptions ())
300303 defer client .Close ()
301304
302- b .ResetTimer ()
305+ b .Run ("cluster ping" , func (b * testing.B ) {
306+ b .ResetTimer ()
303307
304- b .RunParallel (func (pb * testing.PB ) {
305- for pb .Next () {
306- err := client .Ping (ctx ).Err ()
307- if err != nil {
308- b .Fatal (err )
308+ b .RunParallel (func (pb * testing.PB ) {
309+ for pb .Next () {
310+ err := client .Ping (ctx ).Err ()
311+ if err != nil {
312+ b .Fatal (err )
313+ }
309314 }
310- }
315+ })
311316 })
312317}
313318
@@ -317,23 +322,26 @@ func BenchmarkClusterDoInt(b *testing.B) {
317322 }
318323
319324 ctx := context .Background ()
320- cluster := newClusterScenario ()
321- if err := startCluster (ctx , cluster ); err != nil {
322- b .Fatal (err )
325+ if clusterBench == nil {
326+ clusterBench = newClusterScenario ()
327+ if err := configureClusterTopology (ctx , clusterBench ); err != nil {
328+ b .Fatal (err )
329+ }
323330 }
324- defer cluster .Close ()
325331
326- client := cluster .newClusterClient (ctx , redisClusterOptions ())
332+ client := clusterBench .newClusterClient (ctx , redisClusterOptions ())
327333 defer client .Close ()
328334
329- b .ResetTimer ()
330- b .RunParallel (func (pb * testing.PB ) {
331- for pb .Next () {
332- err := client .Do (ctx , "SET" , 10 , 10 ).Err ()
333- if err != nil {
334- b .Fatal (err )
335+ b .Run ("cluster do set int" , func (b * testing.B ) {
336+ b .ResetTimer ()
337+ b .RunParallel (func (pb * testing.PB ) {
338+ for pb .Next () {
339+ err := client .Do (ctx , "SET" , 10 , 10 ).Err ()
340+ if err != nil {
341+ b .Fatal (err )
342+ }
335343 }
336- }
344+ })
337345 })
338346}
339347
@@ -343,26 +351,29 @@ func BenchmarkClusterSetString(b *testing.B) {
343351 }
344352
345353 ctx := context .Background ()
346- cluster := newClusterScenario ()
347- if err := startCluster (ctx , cluster ); err != nil {
348- b .Fatal (err )
354+ if clusterBench == nil {
355+ clusterBench = newClusterScenario ()
356+ if err := configureClusterTopology (ctx , clusterBench ); err != nil {
357+ b .Fatal (err )
358+ }
349359 }
350- defer cluster .Close ()
351360
352- client := cluster .newClusterClient (ctx , redisClusterOptions ())
361+ client := clusterBench .newClusterClient (ctx , redisClusterOptions ())
353362 defer client .Close ()
354363
355364 value := string (bytes .Repeat ([]byte {'1' }, 10000 ))
356365
357- b .ResetTimer ()
366+ b .Run ("cluster set string" , func (b * testing.B ) {
367+ b .ResetTimer ()
358368
359- b .RunParallel (func (pb * testing.PB ) {
360- for pb .Next () {
361- err := client .Set (ctx , "key" , value , 0 ).Err ()
362- if err != nil {
363- b .Fatal (err )
369+ b .RunParallel (func (pb * testing.PB ) {
370+ for pb .Next () {
371+ err := client .Set (ctx , "key" , value , 0 ).Err ()
372+ if err != nil {
373+ b .Fatal (err )
374+ }
364375 }
365- }
376+ })
366377 })
367378}
368379
@@ -372,21 +383,6 @@ func BenchmarkExecRingSetAddrsCmd(b *testing.B) {
372383 ringShard2Name = "ringShardTwo"
373384 )
374385
375- for _ , port := range []string {ringShard1Port , ringShard2Port } {
376- if _ , err := startRedis (port ); err != nil {
377- b .Fatal (err )
378- }
379- }
380-
381- b .Cleanup (func () {
382- for _ , p := range processes {
383- if err := p .Close (); err != nil {
384- b .Errorf ("Failed to stop redis process: %v" , err )
385- }
386- }
387- processes = nil
388- })
389-
390386 ring := redis .NewRing (& redis.RingOptions {
391387 Addrs : map [string ]string {
392388 "ringShardOne" : ":" + ringShard1Port ,
0 commit comments