Files
lockx/lockx_test.go
T
2025-06-25 16:44:44 +08:00

62 lines
1.1 KiB
Go

package lockx_test
import (
"context"
"fmt"
"sync"
"testing"
"github.com/go-redis/redis/v8"
"github.com/yuninks/lockx"
)
var Redis *redis.Client
// func TestMain(m *testing.M) {
// client := redis.NewClient(&redis.Options{
// Addr: "127.0.0.1" + ":" + "6379",
// Password: "", // no password set
// DB: 0, // use default DB
// })
// if client == nil {
// fmt.Println("redis init error")
// return
// }
// // fmt.Println("ffff")
// Redis = client
// }
func TestLockx(t *testing.T) {
client := redis.NewClient(&redis.Options{
Addr: "127.0.0.1" + ":" + "6379",
Password: "123456", // no password set
DB: 0, // use default DB
})
if client == nil {
fmt.Println("redis init error")
return
}
fmt.Println("begin")
ctx := context.Background()
ctx, cancel := context.WithCancel(ctx)
defer cancel()
wg := sync.WaitGroup{}
for i := 0; i < 10000; i++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
lock := lockx.NewGlobalLock(ctx, client, "lockx:test")
defer lock.Unlock()
if !lock.Lock() {
fmt.Println("lock error", i)
return
}
fmt.Println("ssss", i)
}(i)
}
wg.Wait()
}