mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-29 21:41:02 +00:00 
			
		
		
		
	(cherry picked from commite1bbfa3619) (cherry picked from commit91245ca917) (cherry picked from commit705d0558be) (cherry picked from commit9247594970) (cherry picked from commit9db1158a48) (cherry picked from commit3b36b77d87) (cherry picked from commit162fa1d8ae) (cherry picked from commitd03d0afbb5)
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2023 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package queue
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"os"
 | |
| 	"os/exec"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/nosql"
 | |
| 	"code.gitea.io/gitea/modules/setting"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func waitRedisReady(conn string, dur time.Duration) (ready bool) {
 | |
| 	ctxTimed, cancel := context.WithTimeout(context.Background(), time.Second*5)
 | |
| 	defer cancel()
 | |
| 	for t := time.Now(); ; time.Sleep(50 * time.Millisecond) {
 | |
| 		ret := nosql.GetManager().GetRedisClient(conn).Ping(ctxTimed)
 | |
| 		if ret.Err() == nil {
 | |
| 			return true
 | |
| 		}
 | |
| 		if time.Since(t) > dur {
 | |
| 			return false
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func redisServerCmd(t *testing.T) *exec.Cmd {
 | |
| 	redisServerProg, err := exec.LookPath("redis-server")
 | |
| 	if err != nil {
 | |
| 		return nil
 | |
| 	}
 | |
| 	c := &exec.Cmd{
 | |
| 		Path:   redisServerProg,
 | |
| 		Args:   []string{redisServerProg, "--bind", "127.0.0.1", "--port", "6379"},
 | |
| 		Dir:    t.TempDir(),
 | |
| 		Stdin:  os.Stdin,
 | |
| 		Stdout: os.Stdout,
 | |
| 		Stderr: os.Stderr,
 | |
| 	}
 | |
| 	return c
 | |
| }
 | |
| 
 | |
| func TestBaseRedis(t *testing.T) {
 | |
| 	var redisServer *exec.Cmd
 | |
| 	defer func() {
 | |
| 		if redisServer != nil {
 | |
| 			_ = redisServer.Process.Signal(os.Interrupt)
 | |
| 			_ = redisServer.Wait()
 | |
| 		}
 | |
| 	}()
 | |
| 	if !waitRedisReady("redis://127.0.0.1:6379/0", 0) {
 | |
| 		redisServer = redisServerCmd(t)
 | |
| 		if true {
 | |
| 			t.Skip("redis-server not found in Forgejo test yet")
 | |
| 			return
 | |
| 		}
 | |
| 		assert.NoError(t, redisServer.Start())
 | |
| 		if !assert.True(t, waitRedisReady("redis://127.0.0.1:6379/0", 5*time.Second), "start redis-server") {
 | |
| 			return
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	testQueueBasic(t, newBaseRedisSimple, toBaseConfig("baseRedis", setting.QueueSettings{Length: 10}), false)
 | |
| 	testQueueBasic(t, newBaseRedisUnique, toBaseConfig("baseRedisUnique", setting.QueueSettings{Length: 10}), true)
 | |
| }
 |